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

📄 frmcsdnreader.cs

📁 是一款式CSDN阅读器,可以方便CSDN用户阅读自己感兴趣的内容!
💻 CS
📖 第 1 页 / 共 2 页
字号:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

using feiyun0112.cnblogs.com.CSDNReader.Model;
using feiyun0112.cnblogs.com.CSDNReader.Controls;
using feiyun0112.cnblogs.com.CSDNReader.Functions;
 

namespace feiyun0112.cnblogs.com.CSDNReader
{
    public partial class frmCSDNReader : Form
    {

        private Icon _CSDNIcon;        
        private Icon _CSDNNewIcon;

        public frmCSDNReader()
        {
            InitializeComponent();
            
            //任务栏上的图标
            this._CSDNIcon = Properties.Resources.CSDN;
            this._CSDNNewIcon = Properties.Resources.CSDNNew;
            
            InitEvents();

            InitTree();

            
        }

        private void frmCSDNReader_Load(object sender, EventArgs e)
        {
            timerRefresh.Interval = 1;
            timerRefresh.Enabled = true;

            timerMessage.Interval = 1;
            timerMessage.Enabled = true;

            timerHideInfo.Interval = 1;
            timerHideInfo.Enabled = true;

            this.Text = "CSDN Reader   V " + Setting.Version;
        }

        /// <summary>
        /// 初始化事件
        /// </summary>
        private void InitEvents()
        {
            //有新帖子
            DelegateFunc.RefreshTopicsEvent += new RefreshTopicsDelegate(this.RefreshRoom);
            //登陆成功
            DelegateFunc.LoginEvent += new LoginDelegate(this.RefreshUser);
            //刷新状态栏上的信息
            DelegateFunc.RefreshInfoEvent += new RefreshInfoDelegate(this.RefreshInfo);
        }

        /// <summary>
        /// 卸载事件
        /// </summary>
        /// <param name="strInfo"></param>
        private void UnloadEvents()
        {
            //有新帖子
            DelegateFunc.RefreshTopicsEvent -= new RefreshTopicsDelegate(this.RefreshRoom);
            //登陆成功
            DelegateFunc.LoginEvent -= new LoginDelegate(this.RefreshUser);
            //刷新状态栏上的信息
            DelegateFunc.RefreshInfoEvent -= new RefreshInfoDelegate(this.RefreshInfo);
        }


        private void RefreshInfo(string strInfo)
        {

            if (this.InvokeRequired)
            {
                RefreshInfoDelegate d = new RefreshInfoDelegate(RefreshInfo);
                this.Invoke(d, new object[] { strInfo });

            }
            else
            {
                stuInfo.Text = strInfo;
                timerHideInfo.Enabled = true;
            }
        }

        private void RefreshUser()
        {

            if (this.InvokeRequired)
            {
                LoginDelegate d = new LoginDelegate(RefreshUser);
                this.Invoke(d, new object[] { null });

            }
            else
            {
                if (Variant.CurrentUser == null)
                {
                    this.stuUser.Text = "未登录";
                }
                else
                {
                    this.stuUser.Text = Variant.CurrentUser.Name;
                }
            }
        }

        private void RefreshRoom(int intRoomID, bool blnNoRead, bool blnCountChanged)
        {
            if (this.InvokeRequired)
            {
                RefreshTopicsDelegate d = new RefreshTopicsDelegate(RefreshRoom);
                this.Invoke(d, new object[] { intRoomID, blnNoRead, blnCountChanged });

            }
            else            
            {
                if (blnNoRead)
                {
                    this.TrayIcon.Icon = this._CSDNNewIcon;
                }
                Room r = listTopics.Tag as Room;
                if (r != null && r.ID == intRoomID)
                {
                    ListViewFunc l = new ListViewFunc(listTopics);
                    l.RefreshListView(intRoomID);
                }


                TreeviewFunc t = new TreeviewFunc(TreeRoom);
                t.RefreshTreeview(TreeRoom.Nodes, intRoomID,   blnNoRead,   blnCountChanged);

                
            }
        }

        private void InitTree()
        {
            Functions.TreeviewFunc tFunc = new Functions.TreeviewFunc(TreeRoom);
            tFunc.FillNode();
        }


        #region 社区
        #region 添加
        private void mnuRoom_Add_Click(object sender, EventArgs e)
        {
            AddRoom();
        }

        private void tnRoom_Add_Click(object sender, EventArgs e)
        {
            AddRoom();
        }

        private void AddRoom()
        {
            Functions.RoomFunc func = new Functions.RoomFunc(null);
            Model.Room room = func.AddRoom();
            if(room!=null)
            {
                Functions.TreeviewFunc tFunc = new Functions.TreeviewFunc(TreeRoom);
                tFunc.AddRoom(room);
            }
        }
        #endregion 添加

        #region 修改
        private void btnRoom_Edit_Click(object sender, EventArgs e)
        {
            EditRoom();
        }

        private void mnuRoom_Edit_Click(object sender, EventArgs e)
        {
            EditRoom();
        }

        private void EditRoom()
        {
            if (Model.Variant.CurrentRoom != null)
            {
                Functions.RoomFunc func = new Functions.RoomFunc( Model.Variant.CurrentRoom);
                
                Model.Room room = func.EditRoom();
                if (room != null)
                {
                    Functions.TreeviewFunc tFunc = new Functions.TreeviewFunc(TreeRoom);
                    tFunc.EditRoom(Model.Variant.CurrentRoom,room);

                    tpTopics.Text = room.Name;
                }
            }
        }
        #endregion 修改

        #region 删除
        private void btnRoom_Del_Click(object sender, EventArgs e)
        {
            DelRoom();
        }

        private void mnuRoom_Del_Click(object sender, EventArgs e)
        {
            DelRoom();
        }

        private void DelRoom()
        {
            if (Model.Variant.CurrentRoom != null)
            {
                if (MsgFunc.ShowQuestion(string.Format("确定删除 {0} 吗?", Model.Variant.CurrentRoom.Name)) == DialogResult.Yes)
                {
                    Functions.TreeviewFunc tFunc = new Functions.TreeviewFunc(TreeRoom);
                    tFunc.DelRoom(Model.Variant.CurrentRoom);
                }
            }
        }
        #endregion 删除

        private void mnuRoom_Exit_Click(object sender, EventArgs e)
        {
            this.ExitApplication();
        }

        private void ExitApplication()
        {
            UnloadEvents();
            this.TrayIcon.Visible = false;
            base.Hide();
          

            Application.Exit();
        }

       

        #endregion 社区

        #region 帖子
        private void mnuTopic_Open_Click(object sender, EventArgs e)
        {
            this.ShowTopic();
        }

        private void ShowTopic()
        {
            MakeReaded();
            timerShowTopic.Stop();
            timerShowTopic.Start();
        }

        private void mnuTopic_OpenAll_Click(object sender, EventArgs e)
        {
            bool blnReaded = false;
            
            ListViewFunc lFunc = new ListViewFunc(listTopics);
            foreach (ListViewItem item1 in listTopics.Items)
            {
                Topic t = item1.Tag as Topic;
                if ((t != null) && !t.HaveRead)
                {
                    if (!t.HaveRead && !t.ReadAgain)
                    {
                        blnReaded = true;

                        TopicTabPage tpTopic = t.TabPage;
                        if (tpTopic == null)
                        {
                            tpTopic = new TopicTabPage();

                            tabTopics.TabPages.Add(tpTopic);
                        }

                        t.TabPage = tpTopic;
                        tpTopic.Topic = t;
                    }

                    t.HaveRead = true;
                    

                    lFunc.setListviewItemFont(item1, t);
                }
            }

            if (blnReaded) this.TrayIcon.Icon = this._CSDNIcon;

            Room r = listTopics.Tag as Room;
            if (r != null)
            {
                r.UnreadItems = -1;
                r.Items = -1;

                TreeviewFunc tFunc = new TreeviewFunc(TreeRoom);
                tFunc.MarkRoomReaded(TreeRoom.Nodes, r.ID);
            }
        }

        private void mnuTopic_OpenIE_Click(object sender, EventArgs e)
        {
            this.ShowTopic2();
        }

        private void ShowTopic2()
        {
            ListViewItem item1 = this.listTopics.FocusedItem;
            if (item1 != null)
            {
                Topic t = item1.Tag as Topic;
                if ((t != null))
                {
                    string URL;
                    URL = "http://community.csdn.net/Expert/TopicView1.asp?id=" + t.Id;
                    System.Diagnostics.Process.Start(URL);

                }
            }
        }
        /// <summary>
        /// 获得打开帖子的最新内容
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void mnuTopic_Refresh_Click(object sender, EventArgs e)
        {
            foreach (TabPage  tab in tabTopics.TabPages )
            {
                if (tab is TopicTabPage)
                {
                    ((TopicTabPage)tab).Topic = ((TopicTabPage)tab).Topic;
                }
            }
        }
       
        private void mnuTopic_Readed_Click(object sender, EventArgs e)
        {
            MakeReaded();
        }

        private void MakeReaded()
        {
            timerMarkRead.Stop();
            timerMarkRead.Start();
        }

        private void mnuPopTopic_Readed_Click(object sender, EventArgs e)
        {
            MakeReaded();
        }

        private void mnuPopTopic_OpenIE_Click(object sender, EventArgs e)
        {
            this.ShowTopic2();
        }
        #endregion 帖子

        #region TreeRoom event
        private void TreeRoom_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Right)
            {
                TreeNode node1 = this.TreeRoom.GetNodeAt(e.X, e.Y);
                this.TreeRoom.SelectedNode = node1;
            }
        }

        /// <summary>
        /// TreeViewEX控件需要的事件,用来显示帖子数(未读/总数)
        /// </summary>
        /// <param name="node"></param>
        /// <returns></returns>
        private string TreeRoom_GetNodeInfo(System.Windows.Forms.TreeNode node)
        {
            Room r = (Room)node.Tag;
            if (r == null  || r.IsGroup )
            {
                return "";
            }
            int num1 = r.UnreadItems;
            
            ////int num2 = r.Items;
            ////return (num1 + "/" + num2);
            return num1.ToString();
        }

        private void TreeRoom_AfterExpand(object sender, TreeViewEventArgs e)
        {
            if (e.Node.Nodes.Count > 0)

⌨️ 快捷键说明

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