⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 slider_pane.cs

📁 破解的飞信源代码
💻 CS
📖 第 1 页 / 共 4 页
字号:
namespace Imps.Client.Pc.BizControls
{
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Drawing;
    using System.Drawing.Drawing2D;
    using System.Drawing.Text;
    using System.Runtime.CompilerServices;
    using System.Windows.Forms;

    public class slider_pane : Control
    {
        public const bool default_dock_pos = true;
        public const int default_item_height = 0x1a;
        public const bool default_style = true;
        private Color m_clr_background = Color.White;
        private Color m_clr_frame = Color.FromArgb(0xff, 0xc3, 0xcf, 0xdd);
        private Color m_clr_hotitem_bottom = Color.FromArgb(0xff, 0xff, 0xff, 0xff);
        private Color m_clr_hotitem_top = Color.FromArgb(0xff, 0xe0, 0xea, 0xf4);
        private Color m_clr_hottext = Color.Black;
        private Color m_clr_item_bottom = Color.FromArgb(0xff, 0xff, 0xff, 0xff);
        private Color m_clr_item_top = Color.FromArgb(0xff, 0xff, 0xff, 0xff);
        private Color m_clr_selecteditem_bottom = Color.FromArgb(0xff, 0xff, 0xff, 0xff);
        private Color m_clr_selecteditem_top = Color.FromArgb(0xff, 0xe0, 0xea, 0xf4);
        private Color m_clr_selectedtext = Color.Black;
        private Color m_clr_text = Color.Black;
        private Color m_clr_toggleditem_bottom = Color.FromArgb(0xff, 0xf7, 0xda, 0x7c);
        private Color m_clr_toggleditem_top = Color.FromArgb(0xff, 0xe8, 0x7f, 8);
        protected int m_focus_index = -1;
        protected int m_hot_index = -1;
        private bool m_is_qqstyle;
        private int m_item_padding = 2;
        private Rectangle m_item_window_rect = new Rectangle(0, 0, 0, 0);
        private bool m_items_dock_bottom = true;
        protected int m_selected_index = -1;
        protected List<slider_item> m_slider_items = new List<slider_item>();
        private bool m_slider_style = true;
        protected int m_toggled_index = -1;
        public const int no_match = -1;

        public event selected_index_changed_handler selected_index_changed;

        public event selected_index_changing_handler selected_index_changing;

        public int add_slider(string name, string prompt, object img, Control window)
        {
            slider_item _item = new slider_item(name, prompt, img, window);
            _item.m_host = this;
            int index = this.m_slider_items.get_Count();
            this.m_slider_items.Add(_item);
            this.select_slider(index);
            return index;
        }

        public int add_slider(string name, string prompt, object img, Control window, int pane_height)
        {
            slider_item _item = new slider_item(name, prompt, img, window, pane_height);
            _item.m_host = this;
            int index = this.m_slider_items.get_Count();
            this.m_slider_items.Add(_item);
            this.select_slider(index);
            return index;
        }

        public void addrange(slider_item[] array)
        {
            foreach (slider_item _item in array)
            {
                _item.m_host = this;
                this.m_slider_items.Add(_item);
                if (_item.window != null)
                {
                    _item.window.Visible = false;
                }
            }
            this.select_slider(this.m_slider_items.get_Count() - 1);
        }

        protected int browse_animated_item_by_pos(browse_item_handler handler, object context, Graphics g)
        {
            int num = -1;
            int index = 0;
            if (this.m_items_dock_bottom)
            {
                Rectangle rectangle = new Rectangle(0, base.ClientRectangle.Height - 1, base.ClientRectangle.Width - 1, base.ClientRectangle.Height - 1);
                List<slider_item>.Enumerator enumerator = this.m_slider_items.GetEnumerator();
                try
                {
                    while (enumerator.MoveNext())
                    {
                        enumerator.get_Current();
                        MeasureItemEventArgs e = new MeasureItemEventArgs(g, index, 0x1a);
                        this.on_measure_item(e);
                        rectangle.Height = e.ItemHeight;
                        rectangle.Offset(0, -rectangle.Height);
                        browse_item_helper_arg _arg = new browse_item_helper_arg();
                        _arg.cancel = false;
                        _arg.context = context;
                        _arg.item_rect = rectangle;
                        _arg.index = index;
                        _arg.hitted = false;
                        handler(_arg);
                        if (index == this.m_selected_index)
                        {
                            rectangle.Offset(0, -this.m_item_window_rect.Height - 2);
                        }
                        if (_arg.hitted)
                        {
                            num = index;
                        }
                        if (_arg.cancel)
                        {
                            return num;
                        }
                        index++;
                    }
                    return num;
                }
                finally
                {
                    enumerator.Dispose();
                }
            }
            Rectangle rectangle2 = new Rectangle(0, 0, base.ClientRectangle.Width - 1, 0);
            List<slider_item>.Enumerator enumerator2 = this.m_slider_items.GetEnumerator();
            try
            {
                while (enumerator2.MoveNext())
                {
                    enumerator2.get_Current();
                    MeasureItemEventArgs args2 = new MeasureItemEventArgs(g, index, 0x1a);
                    this.on_measure_item(args2);
                    rectangle2.Height = args2.ItemHeight;
                    browse_item_helper_arg _arg2 = new browse_item_helper_arg();
                    _arg2.cancel = false;
                    _arg2.context = context;
                    _arg2.item_rect = rectangle2;
                    _arg2.index = index;
                    _arg2.hitted = false;
                    handler(_arg2);
                    if (index == this.m_selected_index)
                    {
                        rectangle2.Offset(0, this.m_item_window_rect.Height + 2);
                    }
                    if (_arg2.hitted)
                    {
                        num = index;
                    }
                    if (_arg2.cancel)
                    {
                        return index;
                    }
                    rectangle2.Offset(0, rectangle2.Height);
                    index++;
                }
            }
            finally
            {
                enumerator2.Dispose();
            }
            return num;
        }

        protected int browse_item_by_pos(browse_item_handler handler, object context, Graphics g)
        {
            if (this.m_slider_style)
            {
                return this.browse_animated_item_by_pos(handler, context, g);
            }
            int num = -1;
            int index = 0;
            if (this.m_items_dock_bottom)
            {
                Rectangle rectangle = new Rectangle(0, base.ClientRectangle.Height - 1, base.ClientRectangle.Width - 1, base.ClientRectangle.Height - 1);
                List<slider_item>.Enumerator enumerator = this.m_slider_items.GetEnumerator();
                try
                {
                    while (enumerator.MoveNext())
                    {
                        enumerator.get_Current();
                        MeasureItemEventArgs e = new MeasureItemEventArgs(g, index, 0x1a);
                        this.on_measure_item(e);
                        rectangle.Height = e.ItemHeight;
                        rectangle.Offset(0, -rectangle.Height);
                        browse_item_helper_arg _arg = new browse_item_helper_arg();
                        _arg.cancel = false;
                        _arg.context = context;
                        _arg.item_rect = rectangle;
                        _arg.index = index;
                        _arg.hitted = false;
                        handler(_arg);
                        if (_arg.hitted)
                        {
                            num = index;
                        }
                        if (_arg.cancel)
                        {
                            return num;
                        }
                        index++;
                    }
                    return num;
                }
                finally
                {
                    enumerator.Dispose();
                }
            }
            Rectangle rectangle2 = new Rectangle(0, 0, base.ClientRectangle.Width - 1, 0);
            List<slider_item>.Enumerator enumerator2 = this.m_slider_items.GetEnumerator();
            try
            {
                while (enumerator2.MoveNext())
                {
                    enumerator2.get_Current();
                    MeasureItemEventArgs args2 = new MeasureItemEventArgs(g, index, 0x1a);
                    this.on_measure_item(args2);
                    rectangle2.Height = args2.ItemHeight;
                    browse_item_helper_arg _arg2 = new browse_item_helper_arg();
                    _arg2.cancel = false;
                    _arg2.context = context;
                    _arg2.item_rect = rectangle2;
                    _arg2.index = index;
                    _arg2.hitted = false;
                    handler(_arg2);
                    if (_arg2.hitted)
                    {
                        num = index;
                    }
                    if (_arg2.cancel)
                    {
                        return index;
                    }
                    rectangle2.Offset(0, rectangle2.Height);
                    index++;
                }
            }
            finally
            {
                enumerator2.Dispose();
            }
            return num;
        }

        protected void calculate_animated_item_window_rect()
        {
            int index = 0;
            if (this.m_items_dock_bottom)
            {
                int num2 = 0;
                int num3 = 0;
                Rectangle rectangle = new Rectangle(0, base.ClientRectangle.Height - 1, base.ClientRectangle.Width - 1, base.ClientRectangle.Height - 1);
                List<slider_item>.Enumerator enumerator = this.m_slider_items.GetEnumerator();
                try
                {
                    while (enumerator.MoveNext())
                    {
                        enumerator.get_Current();
                        MeasureItemEventArgs e = new MeasureItemEventArgs(null, index, 0x1a);
                        this.on_measure_item(e);
                        if (index <= this.m_selected_index)
                        {
                            num3 += e.ItemHeight;
                        }
                        num2 += e.ItemHeight;
                        rectangle.Height = e.ItemHeight;
                        rectangle.Offset(0, -rectangle.Height);
                        index++;
                    }
                }
                finally
                {
                    enumerator.Dispose();
                }
                this.m_item_window_rect.Location = new Point((base.Location.X + base.ClientRectangle.Left) + 1, (base.Location.Y + 1) + (num2 - num3));
                this.m_item_window_rect.Size = new Size(base.ClientRectangle.Width - 2, (num2 < (base.ClientRectangle.Height - 2)) ? ((base.ClientRectangle.Height - 2) - num2) : 0);
                if ((((0 <= this.m_selected_index) && (this.m_slider_items.get_Count() > this.m_selected_index)) && (this.m_is_qqstyle && (0 < this.m_slider_items.get_Item(this.m_selected_index).pane_height))) && (this.m_slider_items.get_Item(this.m_selected_index).pane_height < this.m_item_window_rect.Height))
                {
                    this.m_item_window_rect.Y += this.m_item_window_rect.Height - this.m_slider_items.get_Item(this.m_selected_index).pane_height;
                    this.m_item_window_rect.Height = this.m_slider_items.get_Item(this.m_selected_index).pane_height;
                }
            }
            else
            {
                int num4 = 0;
                int num5 = 0;
                Rectangle rectangle2 = new Rectangle(0, 0, base.ClientRectangle.Width - 1, 0);
                List<slider_item>.Enumerator enumerator2 = this.m_slider_items.GetEnumerator();
                try
                {
                    while (enumerator2.MoveNext())
                    {
                        enumerator2.get_Current();
                        MeasureItemEventArgs args2 = new MeasureItemEventArgs(null, index, 0x1a);
                        this.on_measure_item(args2);
                        if (index <= this.m_selected_index)
                        {
                            num5 += args2.ItemHeight;
                        }
                        num4 += args2.ItemHeight;
                        rectangle2.Height = args2.ItemHeight;
                        rectangle2.Offset(0, rectangle2.Height);
                        index++;
                    }
                }
                finally
                {
                    enumerator2.Dispose();
                }
                this.m_item_window_rect.Location = new Point((base.Location.X + base.ClientRectangle.Left) + 1, ((base.Location.Y + base.ClientRectangle.Top) + 1) + num5);
                this.m_item_window_rect.Size = new Size(base.ClientRectangle.Width - 2, (num4 < (base.ClientRectangle.Height - 2)) ? ((base.ClientRectangle.Height - 2) - num4) : 0);
                if ((((0 <= this.m_selected_index) && (this.m_slider_items.get_Count() > this.m_selected_index)) && (this.m_is_qqstyle && (0 < this.m_slider_items.get_Item(this.m_selected_index).pane_height))) && (this.m_slider_items.get_Item(this.m_selected_index).pane_height < this.m_item_window_rect.Height))
                {
                    this.m_item_window_rect.Height = this.m_slider_items.get_Item(this.m_selected_index).pane_height;
                }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -