Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

サムネイル画像をクリックしたときにプレビューウインドウを表示する #116

Closed
wants to merge 2 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions OpenTween/OpenTween.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -198,6 +198,12 @@
<DependentUpon>TweetDetailsView.cs</DependentUpon>
</Compile>
<Compile Include="TweetExtractor.cs" />
<Compile Include="TweetThumbnailWindow.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="TweetThumbnailWindow.Designer.cs">
<DependentUpon>TweetThumbnailWindow.cs</DependentUpon>
</Compile>
<Compile Include="WaitingDialog.cs">
<SubType>Form</SubType>
</Compile>
Expand Down
10 changes: 10 additions & 0 deletions OpenTween/Setting/Panel/PreviewPanel.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions OpenTween/Setting/Panel/PreviewPanel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,8 @@ public void LoadConfig(SettingCommon settingCommon)
this.chkTabIconDisp.Checked = settingCommon.TabIconDisp;
this.CheckMonospace.Checked = settingCommon.IsMonospace;
this.CheckPreviewEnable.Checked = settingCommon.PreviewEnable;
this.CheckPreviewWindowEnable.Enabled = this.CheckPreviewEnable.Checked;
this.CheckPreviewWindowEnable.Checked = settingCommon.PreviewWindowEnable;
this.CheckStatusAreaAtBottom.Checked = settingCommon.StatusAreaAtBottom;
this.ReplyIconStateCombo.SelectedIndex = settingCommon.ReplyIconState switch
{
Expand Down Expand Up @@ -99,6 +101,7 @@ public void SaveConfig(SettingCommon settingCommon)
settingCommon.TabIconDisp = this.chkTabIconDisp.Checked;
settingCommon.IsMonospace = this.CheckMonospace.Checked;
settingCommon.PreviewEnable = this.CheckPreviewEnable.Checked;
settingCommon.PreviewWindowEnable = this.CheckPreviewWindowEnable.Checked;
settingCommon.StatusAreaAtBottom = this.CheckStatusAreaAtBottom.Checked;
settingCommon.ReplyIconState = this.ReplyIconStateCombo.SelectedIndex switch
{
Expand All @@ -115,5 +118,10 @@ public void SaveConfig(SettingCommon settingCommon)
_ => "en",
};
}

private void CheckPreviewEnable_CheckedChanged(object sender, EventArgs e)
{
this.CheckPreviewWindowEnable.Enabled = this.CheckPreviewEnable.Checked;
}
}
}
3 changes: 3 additions & 0 deletions OpenTween/Setting/Panel/PreviewPanel.en.resx
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@
<data name="CheckPreviewEnable.Size" type="System.Drawing.Size, System.Drawing"><value>138, 16</value></data>
<data name="CheckPreviewEnable.Text"><value>Show image thumbnail</value></data>
<data name="CheckPreviewEnable.ToolTip"><value /></data>
<data name="CheckPreviewWindowEnable.Size" type="System.Drawing.Size, System.Drawing"><value>138, 16</value></data>
<data name="CheckPreviewWindowEnable.Text"><value>Open image thumbnail window on click</value></data>
<data name="CheckPreviewWindowEnable.ToolTip"><value /></data>
<data name="CheckStatusAreaAtBottom.Size" type="System.Drawing.Size, System.Drawing"><value>278, 16</value></data>
<data name="CheckStatusAreaAtBottom.Text"><value>Locate tweet detail and input area at the bottom</value></data>
<data name="CheckStatusAreaAtBottom.ToolTip"><value /></data>
Expand Down
22 changes: 16 additions & 6 deletions OpenTween/Setting/Panel/PreviewPanel.resx
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,10 @@
<data name="&gt;&gt;CheckPreviewEnable.Parent"><value>$this</value></data>
<data name="&gt;&gt;CheckPreviewEnable.Type"><value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value></data>
<data name="&gt;&gt;CheckPreviewEnable.ZOrder"><value>3</value></data>
<data name="&gt;&gt;CheckPreviewWindowEnable.Name"><value>CheckPreviewEnable</value></data>
<data name="&gt;&gt;CheckPreviewWindowEnable.Parent"><value>$this</value></data>
<data name="&gt;&gt;CheckPreviewWindowEnable.Type"><value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value></data>
<data name="&gt;&gt;CheckPreviewWindowEnable.ZOrder"><value>3</value></data>
<data name="&gt;&gt;CheckStatusAreaAtBottom.Name"><value>CheckStatusAreaAtBottom</value></data>
<data name="&gt;&gt;CheckStatusAreaAtBottom.Parent"><value>$this</value></data>
<data name="&gt;&gt;CheckStatusAreaAtBottom.Type"><value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value></data>
Expand Down Expand Up @@ -70,7 +74,7 @@
<data name="&gt;&gt;ReplyIconStateCombo.ZOrder"><value>0</value></data>
<data name="CheckAlwaysTop.AutoSize" type="System.Boolean, mscorlib"><value>True</value></data>
<data name="CheckAlwaysTop.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"><value>NoControl</value></data>
<data name="CheckAlwaysTop.Location" type="System.Drawing.Point, System.Drawing"><value>23, 227</value></data>
<data name="CheckAlwaysTop.Location" type="System.Drawing.Point, System.Drawing"><value>23, 252</value></data>
<data name="CheckAlwaysTop.Size" type="System.Drawing.Size, System.Drawing"><value>133, 16</value></data>
<data name="CheckAlwaysTop.TabIndex" type="System.Int32, mscorlib"><value>32</value></data>
<data name="CheckAlwaysTop.Text"><value>常に最前面に表示する</value></data>
Expand All @@ -88,7 +92,7 @@
<data name="CheckDispUsername.Text"><value>タイトルバーとツールチップにユーザー名を表示</value></data>
<data name="CheckMonospace.AutoSize" type="System.Boolean, mscorlib"><value>True</value></data>
<data name="CheckMonospace.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"><value>NoControl</value></data>
<data name="CheckMonospace.Location" type="System.Drawing.Point, System.Drawing"><value>23, 202</value></data>
<data name="CheckMonospace.Location" type="System.Drawing.Point, System.Drawing"><value>23, 227</value></data>
<data name="CheckMonospace.Size" type="System.Drawing.Size, System.Drawing"><value>343, 16</value></data>
<data name="CheckMonospace.TabIndex" type="System.Int32, mscorlib"><value>31</value></data>
<data name="CheckMonospace.Text"><value>発言詳細を等幅フォントで表示(AA対応、フォント適用不具合あり)</value></data>
Expand All @@ -98,9 +102,15 @@
<data name="CheckPreviewEnable.Size" type="System.Drawing.Size, System.Drawing"><value>243, 16</value></data>
<data name="CheckPreviewEnable.TabIndex" type="System.Int32, mscorlib"><value>29</value></data>
<data name="CheckPreviewEnable.Text"><value>画像リンクがあった場合にサムネイルを表示する</value></data>
<data name="CheckPreviewWindowEnable.AutoSize" type="System.Boolean, mscorlib"><value>True</value></data>
<data name="CheckPreviewWindowEnable.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"><value>NoControl</value></data>
<data name="CheckPreviewWindowEnable.Location" type="System.Drawing.Point, System.Drawing"><value>50, 180</value></data>
<data name="CheckPreviewWindowEnable.Size" type="System.Drawing.Size, System.Drawing"><value>243, 16</value></data>
<data name="CheckPreviewWindowEnable.TabIndex" type="System.Int32, mscorlib"><value>29</value></data>
<data name="CheckPreviewWindowEnable.Text"><value>サムネイルクリック時に画像プレビューウインドウを表示する</value></data>
<data name="CheckStatusAreaAtBottom.AutoSize" type="System.Boolean, mscorlib"><value>True</value></data>
<data name="CheckStatusAreaAtBottom.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"><value>NoControl</value></data>
<data name="CheckStatusAreaAtBottom.Location" type="System.Drawing.Point, System.Drawing"><value>23, 177</value></data>
<data name="CheckStatusAreaAtBottom.Location" type="System.Drawing.Point, System.Drawing"><value>23, 202</value></data>
<data name="CheckStatusAreaAtBottom.Size" type="System.Drawing.Size, System.Drawing"><value>257, 16</value></data>
<data name="CheckStatusAreaAtBottom.TabIndex" type="System.Int32, mscorlib"><value>30</value></data>
<data name="CheckStatusAreaAtBottom.Text"><value>発言詳細部・入力欄を発言一覧の下に配置する</value></data>
Expand All @@ -123,7 +133,7 @@
<data name="ComboDispTitle.TabIndex" type="System.Int32, mscorlib"><value>24</value></data>
<data name="Label13.AutoSize" type="System.Boolean, mscorlib"><value>True</value></data>
<data name="Label13.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"><value>NoControl</value></data>
<data name="Label13.Location" type="System.Drawing.Point, System.Drawing"><value>23, 255</value></data>
<data name="Label13.Location" type="System.Drawing.Point, System.Drawing"><value>23, 280</value></data>
<data name="Label13.Size" type="System.Drawing.Size, System.Drawing"><value>53, 12</value></data>
<data name="Label13.TabIndex" type="System.Int32, mscorlib"><value>33</value></data>
<data name="Label13.Text"><value>Language</value></data>
Expand All @@ -141,14 +151,14 @@
<data name="Label72.Text"><value>未読Mentions通知アイコン</value></data>
<data name="Label81.AutoSize" type="System.Boolean, mscorlib"><value>True</value></data>
<data name="Label81.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"><value>NoControl</value></data>
<data name="Label81.Location" type="System.Drawing.Point, System.Drawing"><value>92, 255</value></data>
<data name="Label81.Location" type="System.Drawing.Point, System.Drawing"><value>92, 280</value></data>
<data name="Label81.Size" type="System.Drawing.Size, System.Drawing"><value>115, 12</value></data>
<data name="Label81.TabIndex" type="System.Int32, mscorlib"><value>34</value></data>
<data name="Label81.Text"><value>Apply after restarting</value></data>
<data name="LanguageCombo.Items"><value>OS Default</value></data>
<data name="LanguageCombo.Items1"><value>Japanese</value></data>
<data name="LanguageCombo.Items2"><value>English</value></data>
<data name="LanguageCombo.Location" type="System.Drawing.Point, System.Drawing"><value>276, 252</value></data>
<data name="LanguageCombo.Location" type="System.Drawing.Point, System.Drawing"><value>276, 277</value></data>
<data name="LanguageCombo.Size" type="System.Drawing.Size, System.Drawing"><value>136, 20</value></data>
<data name="LanguageCombo.TabIndex" type="System.Int32, mscorlib"><value>35</value></data>
<data name="ReplyIconStateCombo.Items"><value>通知なし</value></data>
Expand Down
1 change: 1 addition & 0 deletions OpenTween/Setting/SettingCommon.cs
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,7 @@ private string Decrypt(string password)
public bool HashIsHead = false;
public bool HashIsNotAddToAtReply = true;
public bool PreviewEnable = true;
public bool PreviewWindowEnable = true;
public bool StatusAreaAtBottom = true;

public MyCommon.UrlConverter AutoShortUrlFirst = MyCommon.UrlConverter.Uxnu;
Expand Down
53 changes: 43 additions & 10 deletions OpenTween/TweetThumbnail.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,23 +21,19 @@

#nullable enable

using OpenTween.Models;
using OpenTween.Setting;
using OpenTween.Thumbnail;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics.CodeAnalysis;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Text;
using System.Windows.Forms;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using OpenTween.Thumbnail;
using System.Threading;
using OpenTween.Models;
using System.Runtime.InteropServices;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace OpenTween
{
Expand All @@ -50,6 +46,11 @@ public partial class TweetThumbnail : UserControl
public event EventHandler<ThumbnailDoubleClickEventArgs>? ThumbnailDoubleClick;
public event EventHandler<ThumbnailImageSearchEventArgs>? ThumbnailImageSearchClick;

private TweetThumbnailWindow? _thumbWindow;
private TweetThumbnailWindow ThumbnailWindow
=> _thumbWindow ??= CreateTweetThumbnailWindow();


public ThumbnailInfo Thumbnail
=> (ThumbnailInfo)this.pictureBox[this.scrollBar.Value].Tag;

Expand Down Expand Up @@ -142,6 +143,7 @@ protected void SetThumbnailCount(int count)

picbox.MouseWheel -= this.pictureBox_MouseWheel;
picbox.DoubleClick -= this.pictureBox_DoubleClick;
picbox.MouseClick -= this.pictureBox_MouseClick;
picbox.Dispose();

memoryImage?.Dispose();
Expand All @@ -160,6 +162,7 @@ protected void SetThumbnailCount(int count)
picbox.Visible = (i == 0);
picbox.MouseWheel += this.pictureBox_MouseWheel;
picbox.DoubleClick += this.pictureBox_DoubleClick;
picbox.MouseClick += this.pictureBox_MouseClick;

filter.Register(picbox);

Expand Down Expand Up @@ -231,6 +234,36 @@ private void pictureBox_MouseWheel(object sender, MouseEventArgs e)
this.ScrollDown();
}

private void pictureBox_MouseClick(object sender, MouseEventArgs e)
{
if (SettingManager.Common.PreviewWindowEnable
&& sender is PictureBox picBox
&& picBox.Tag is ThumbnailInfo thumb
&& !thumb.IsPlayable)
{
this.ShowThubWindow(picBox.Image);
}
}

private void ShowThubWindow(Image image)
{
var thumbWindow = this.ThumbnailWindow;
if (thumbWindow.Image == image)
{
ThumbnailWindow.HideAndClear();
return;
}

thumbWindow.Image = image;
thumbWindow.Show();
}
private TweetThumbnailWindow CreateTweetThumbnailWindow()
{
var window = new TweetThumbnailWindow(this.ParentForm);
this.components.Add(window);
return window;
}

private void pictureBox_DoubleClick(object sender, EventArgs e)
{
if (((PictureBox)sender).Tag is ThumbnailInfo thumb)
Expand Down
73 changes: 73 additions & 0 deletions OpenTween/TweetThumbnailWindow.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading