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

📄 frmcsdnreader.cs

📁 定义社区节点
💻 CS
📖 第 1 页 / 共 2 页
字号:
                e.Node.ImageKey = "folderopen";
            }
        }

        private void TreeRoom_AfterCollapse(object sender, TreeViewEventArgs e)
        {
            if (e.Node.Nodes.Count > 0)
            {
                e.Node.SelectedImageKey = "folder";
                e.Node.ImageKey = "folder";
            }
        }

        private void TreeRoom_AfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e)
        {
           
            
            //将前一个打开的社区的全部帖子设为只读
            if (Setting.MarkAllReaded && Variant.CurrentRoom != null)
            {
                MarkRoomReaded();
            }

            //保存当前打开的社区信息
            SelectRoom(e.Node);

        }

        

        private void SelectRoom(TreeNode node)
        {
            
            
            
            Room r = null;
            if (node != null)
            {
                r = node.Tag as Room;
            }
            if (r != null)
            {
                Variant.CurrentRoom = r;

                node.Expand();
                node.EnsureVisible();
                
                if (r.IsGroup)
                {
                    node =  TreeviewFunc.SelectNode(node);
                    if (node != null)
                    {
                        r = node.Tag as Room;
                    }
                }
                else
                {
                    this.TreeRoom.ContextMenu = this.treeviewPopupMenu;
                }
                listTopics.Tag = r;
                tpTopics.Text = r.Name;                
                ListViewFunc.RefreshListView(r.ID );

                tabTopics.SelectedIndex = 0;
            
            }
            else
            {
                ListViewFunc.Clear();

                Variant.CurrentRoom = null;

                TreeRoom.ContextMenu = null;
            }
        }

        private void MarkRoomReaded()
        {
            this.TrayIcon.Icon = this._CSDNIcon;


            foreach (ListViewItem item1 in listTopics.Items)
            {
                Topic t = item1.Tag as Topic;
                if ((t != null) && !t.HaveRead)
                {
                    t.HaveRead = true;


                    ListViewFunc.setListviewItemFont(item1, t);
                }
            }
            Room r = listTopics.Tag as Room;
            if (r != null)
            {
                r.UnreadItems = -1;
                r.Items = -1;

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

        private void tpopmnuRefresh_Click(object sender, EventArgs e)
        {
            if (Variant.CurrentRoom != null)
            {               
              
                Variant.CurrentRoom.ManuleRefresh = true;

                Variant.CurrentRoom.RefreshRoom();
            
            }
        }

        private void tpopmnuMarkAll_Click(object sender, EventArgs e)
        {
            if (Variant.CurrentRoom != null)
            {
                MarkRoomReaded();
            }
        }
        #endregion TreeRoom event

        #region Tray
        private void mnuTray_OpenForm_Click(object sender, EventArgs e)
        {
            this.ShowForm();
        }

        private void ShowForm()
        {
            if (!base.Visible)
            {
                base.Show();
            }
            if (base.WindowState == FormWindowState.Minimized)
            {
               Win32API.SendMessage(base.Handle, 0x112, 0xf120, 0);
            }
            base.Activate();
            
        }

        private void TrayIcon_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            this.ShowForm();
        }

        private void mnuTray_RefrashAll_Click(object sender, EventArgs e)
        {
            this.RefreshAllRooms();
        }

        private void RefreshAllRooms()
        {
            GC.Collect();
            TreeviewFunc.RefreRooms(TreeRoom.Nodes);
        }

        

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

        #endregion tray

        #region timer
        private void timerRefresh_Tick(object sender, EventArgs e)
        {
            timerRefresh.Enabled = false;
            timerRefresh.Interval = Setting.RefreshInterval;


            this.RefreshAllRooms();

            timerRefresh.Enabled = true;
        }

        
        /// <summary>
        /// 将当前打开的帖子设为只读
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void timerMarkRead_Tick(object sender, EventArgs e)
        {            
            this.timerMarkRead.Stop();
            MarkTopicReaded();
        }

        private void MarkTopicReaded()
        {
            this.TrayIcon.Icon = this._CSDNIcon;

            Room r = listTopics.Tag as Room;
            ListViewItem item1 = this.listTopics.FocusedItem;
            if (item1 != null && r!=null )
            {

                Topic t = item1.Tag as Topic;
                if ((t != null) && !t.HaveRead)
                {
                    t.HaveRead = true;
                    r.UnreadItems--;



                    ListViewFunc.setListviewItemFont(item1, t);

                    TreeviewFunc.MarkRoomReaded(TreeRoom.Nodes, r.ID);                    
                }
            }
        }
        
        /// <summary>
        /// 打开当前选中的帖子
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void timerShowTopic_Tick(object sender, EventArgs e)
        {
            timerShowTopic.Stop();
            ListViewItem item1 = this.listTopics.FocusedItem;
            if (item1 != null)
            {
                Topic t = item1.Tag as Topic;
                if (t != null)
                {
                    TopicTabPage tpTopic = t.TabPage;
                    if (tpTopic == null)
                    {
                        tpTopic = new TopicTabPage();
                        
                        tabTopics.TabPages.Add(tpTopic);
                    }

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

                    if(Setting.ShowTopicTab)
                    {
                        tabTopics.SelectedTab = tpTopic;
                    }
                    

                }
            }
        }

        #endregion timer

        #region listTopics events
        private void listTopics_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (listTopics.FocusedItem.Tag as Topic != null)
                listTopics.ContextMenuStrip =mnuPopTopic ;
            else
                listTopics.ContextMenuStrip = null;
        }

        private void listTopics_DoubleClick(object sender, EventArgs e)
        {
            this.ShowTopic();
        }
        #endregion listTopics events




        protected override void WndProc(ref   Message m)
        {
            const int WM_SYSCOMMAND = 0x0112;
            const int SC_CLOSE = 0xF060;
            const int SC_MINIMIZE = 0xF020;

            if (m.Msg == WM_SYSCOMMAND && ((int)m.WParam == SC_MINIMIZE || (int)m.WParam == SC_CLOSE))
            {
                //最小化到系统栏 
                base.WindowState = FormWindowState.Minimized;
                base.Hide();
                return;
            }
            base.WndProc(ref   m);
        }

        #region tabTopics
        private void tabTopics_DoubleClick(object sender, EventArgs e)
        {
            TopicTabPage tpTopic = tabTopics.SelectedTab as TopicTabPage ;
            if (tpTopic != null)
            {

                
                tpTopic.Dispose( );

            }

        }
        #endregion tabTopics

        private void mnuRoom_Login_Click(object sender, EventArgs e)
        {
            new frmLogin().ShowDialog();
        }

        /// <summary>
        /// 判断是否有新消息
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void timerMessage_Tick(object sender, EventArgs e)
        {
            timerMessage.Enabled = false;
            timerMessage.Interval =  Setting.NewMessageInterval;


            
            WEBFunc.Get(new RequestInfo("http://hi.csdn.net/my.html"), new RequestCompleteCallback(this.CheckMessageComplete), null, null, RequestStatePriority.ManualRefresh);
            
            timerMessage.Enabled = true;
        }
        private void CheckMessageComplete(byte[] dataBuffer)
        {
            string strHtml = Variant.encoding.GetString(dataBuffer);
            if (strHtml.IndexOf("UserLogin.aspx") > 0)
            {
                Variant.CurrentUser.Name=string.Empty;
            }
            if (strHtml.IndexOf("webimPopup.hideItem") >= 0)
            {
                stuMsg.Text = "您有新的短消息!";
            }
            else
            {
                stuMsg.Text = "";
            }
        }

        private void stuMsg_DoubleClick(object sender, EventArgs e)
        {
            string URL;
            URL = "http://webim.csdn.net/UserAdmin/MsgControlPanel/?Action=AllNoRead";
            System.Diagnostics.Process.Start(URL);
        }

        private void mnuTool_Setting_Click(object sender, EventArgs e)
        {
            frmSettings frm = new frmSettings();
            frm.ShowDialog();
        }

        private void mnuAbout_Blog_Click(object sender, EventArgs e)
        {
            string URL;
            URL = "http://feiyun0112.cnblogs.com";
            System.Diagnostics.Process.Start(URL);
        }

        private void mnuAbout_CsdnReader_Click(object sender, EventArgs e)
        {
            frmAbout frm = new frmAbout();
            frm.ShowDialog();
        }

        private void timerHideInfo_Tick(object sender, EventArgs e)
        {
            timerHideInfo.Enabled = false;
            timerHideInfo.Interval = Setting.HideInfoInterval;
            
            stuInfo.Text = "";

            //timerHideInfo.Enabled = true;
        }

        private void mnuAbout_Email_Click(object sender, EventArgs e)
        {
            string URL;
            URL = "mailto:feiyun0112@gmail.com?subject=CSDN Reader";
            System.Diagnostics.Process.Start(URL);
        }

        private void mnuAbout_Help_Click(object sender, EventArgs e)
        {
            string URL;
            URL = "http://feiyun0112.cnblogs.com/";
            System.Diagnostics.Process.Start(URL);
        }

        private void mnuAbout_Download_Click(object sender, EventArgs e)
        {
            string URL;
            URL = "http://feiyun0112.cnblogs.com/";
            System.Diagnostics.Process.Start(URL);
        }

        

        
        
    }
}

⌨️ 快捷键说明

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