📄 frmcsdnreader.cs
字号:
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 + -