Skip to content

Commit

Permalink
MediaViewerWebBrowserDialogに軽量ビューアー版と同様のキーバインドを追加
Browse files Browse the repository at this point in the history
  • Loading branch information
upsilon committed May 1, 2018
1 parent cf624f4 commit e255c40
Show file tree
Hide file tree
Showing 4 changed files with 58 additions and 2 deletions.
3 changes: 3 additions & 0 deletions OpenTween/MediaHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,10 @@ public void OpenMediaInWebBrowserViewer(IWin32Window owner, ThumbnailInfo[] thum
viewer.SelectMedia(displayIndex);

using (var viewerDialog = new MediaViewerWebBrowserDialog(viewer))
{
viewerDialog.OpenInBrowser = this.OpenInBrowser;
viewerDialog.ShowDialog(owner);
}
}
}
}
2 changes: 1 addition & 1 deletion OpenTween/MediaViewerWebBrowserDialog.Designer.cs

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

37 changes: 36 additions & 1 deletion OpenTween/MediaViewerWebBrowserDialog.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,17 @@
// Boston, MA 02110-1301, USA.

using OpenTween.Models;
using System;
using System.ComponentModel;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace OpenTween
{
public partial class MediaViewerWebBrowserDialog : OTBaseForm
{
public Func<string, Task> OpenInBrowser;

private readonly MediaViewerWebBrowser model;

public MediaViewerWebBrowserDialog(MediaViewerWebBrowser model)
Expand Down Expand Up @@ -81,6 +86,36 @@ private void UpdateTitle()
}

private void UpdateHTML()
=> this.webBrowser.DocumentText = this.model.DisplayHTML;
{
using (ControlTransaction.Update(this.webBrowser))
this.webBrowser.DocumentText = this.model.DisplayHTML;
}

private async void WebBrowser_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
e.IsInputKey = true;

switch (e.KeyData)
{
case Keys.Up:
case Keys.Left:
this.model.SelectPreviousMedia();
break;
case Keys.Down:
case Keys.Right:
this.model.SelectNextMedia();
break;
case Keys.Enter:
this.Close();
await this.OpenInBrowser?.Invoke(this.model.DisplayMedia.MediaPageUrl);
break;
case Keys.Escape:
this.Close();
break;
default:
e.IsInputKey = false;
break;
}
}
}
}
18 changes: 18 additions & 0 deletions OpenTween/Models/MediaViewerWebBrowser.cs
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,24 @@ public void SelectMedia(int displayIndex)
this.DisplayHTML = this.CreateDocument();
}

public void SelectPreviousMedia()
{
var currentIndex = this.DisplayMediaIndex;
if (currentIndex == 0)
return;

this.SelectMedia(currentIndex - 1);
}

public void SelectNextMedia()
{
var currentIndex = this.DisplayMediaIndex;
if (currentIndex == this.MediaItems.Length - 1)
return;

this.SelectMedia(currentIndex + 1);
}

public void SetBackColor(ColorRGB color)
{
this.BackColor = color;
Expand Down

0 comments on commit e255c40

Please sign in to comment.