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); }
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); } }
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; } }
// 채널에 입장하겠다고 서버에 알리고 결과를 받아 처리한다. private void EnterChannel() { ChannelListItem info = (ChannelListItem)list_ChannelList.SelectedItem; if (info == null) { return; } MessageHandler.SendToServer(CustomProtocolManager.MakeChannelEnterRequestPacket(info.index)); }
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); }
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); }
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(); } } }
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); }
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); }
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); } }
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; } }
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; }
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(); }
private void Dialog_JoinChannelClick(ChannelListItem item) { JoinChannel(item.Channel); MainPage.instance.SwitchChannel(Server.Name, item.Channel, true); }
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; } }); }
public JSChannel(ObjectInstance prototype, ChannelListItem item) : base(prototype.Engine, ((ClrFunction)prototype.Engine.Global["Channel"]).InstancePrototype) { this.Item = item; this.PopulateFunctions(); }