/// <summary> /// 絵文字一覧の表示しているタブを変更する /// </summary> /// <param name="direction">ChangeCurrentDirection</param> public void ChangeEmojiGroupSelection(ChangeCurrentDirection direction) { System.Diagnostics.Debug.Assert(direction == ChangeCurrentDirection.Left || direction == ChangeCurrentDirection.Right); if (this.tabControlEmojiList.TabCount == 0) { return; } int step; switch (direction) { case ChangeCurrentDirection.Left: step = -1; break; case ChangeCurrentDirection.Right: default: step = 1; break; } int tabCount = this.tabControlEmojiList.TabCount; int tabIndexCurrent = this.tabControlEmojiList.SelectedIndex; int tabIndexNext = tabIndexCurrent + step; if (tabIndexNext < 0) { tabIndexNext = tabCount - 1; } else if (tabCount <= tabIndexNext) { tabIndexNext = 0; } this.tabControlEmojiList.SelectedIndex = tabIndexNext; }
/// <summary> /// 絵文字一覧の現在表示しているタブ上の絵文字選択を変更する /// </summary> /// <param name="direction">ChangeCurrentDirection</param> public void ChangeEmojiSelectionOnCurrentGroup(ChangeCurrentDirection direction) { if (this.tabControlEmojiList.TabCount == 0) { return; } int tabIndexCurrent = this.tabControlEmojiList.SelectedIndex; int emojiGroupNo = tabIndexCurrent + 1; List <int> emojiGroupJiscodeMap = this.emojiGroupJiscodeMaps[emojiGroupNo]; int emojiIdCurrent = this.currentEmojiIds[emojiGroupNo]; if (emojiIdCurrent < 0) { return; } int emojiCount = emojiGroupJiscodeMap.Count; if (emojiCount == 0) { return; } int cols = DataBags.Config.MaxEmojiListCols; int rows = this.GetGroupRows(emojiCount); int fullCount = cols * rows; int step; switch (direction) { case ChangeCurrentDirection.Up: step = -DataBags.Config.MaxEmojiListCols; break; case ChangeCurrentDirection.Down: step = DataBags.Config.MaxEmojiListCols; break; case ChangeCurrentDirection.Left: step = -1; break; case ChangeCurrentDirection.Right: default: step = 1; break; } int limit; if (direction == ChangeCurrentDirection.Left || direction == ChangeCurrentDirection.Right) { limit = emojiCount; } else { limit = rows; } int emojiIdNext = emojiIdCurrent; for (int i = 0; i < limit; ++i) { emojiIdNext += step; if (emojiIdNext < 0) { if (direction == ChangeCurrentDirection.Left) { emojiIdNext = emojiCount - 1; } else { emojiIdNext = emojiIdNext + fullCount; } } else if (emojiCount <= emojiIdNext) { if (direction == ChangeCurrentDirection.Right) { emojiIdNext = 0; } else { emojiIdNext = emojiIdNext - fullCount; } } if (0 <= emojiIdNext && emojiIdNext < emojiCount) { int jiscode = emojiGroupJiscodeMap[emojiIdNext]; if (jiscode != 0) { break; } } } this.ChangeEmojiSelection(emojiGroupNo, emojiIdNext); }