Exemple #1
0
        /// <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;
        }
Exemple #2
0
        /// <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);
        }