TTKMusicPlayer  4.2.0.0
TTKMusicPlayer imitates Kugou UI, the music player uses of qmmp core library based on Qt for windows and linux
miniblink.cpp
Go to the documentation of this file.
1 #include "miniblink.h"
2 #include "wke.h"
3 #include "ttkqtobject.h"
4 #include "ttkdesktopscreen.h"
5 
6 #include <QFile>
7 
8 static void onLoadingFinish(wkeWebView, void *param, const wkeString, wkeLoadingResult result, const wkeString)
9 {
10  //0 = WKE_LOADING_SUCCEEDED
11  //1 = WKE_LOADING_FAILED
12  //2 = WKE_LOADING_CANCELED
13  ((Miniblink *)param)->finish(result == WKE_LOADING_SUCCEEDED);
14 }
15 
16 int Miniblink::m_ref = 0;
17 
18 Miniblink::Miniblink(QWidget *parent)
19  : QWidget(parent)
20 {
21  m_webView = wkeCreateWebWindow(WKE_WINDOW_TYPE_CONTROL, (HWND)winId(), 0, 0, width(), height());
22  wkeOnLoadingFinish(m_webView, onLoadingFinish, this);
23  wkeShowWindow(m_webView, TRUE);
24 }
25 
27 {
28  wkeDestroyWebWindow(m_webView);
29  //
30  if(--m_ref == 0)
31  {
32  wkeFinalize();
33  }
34 }
35 
37 {
38  static bool loaded = false;
39  if(!loaded)
40  {
41  const QString &dll = TTK::applicationPath() + "GPlugins/node.dll";
42  if(QFile(dll).exists())
43  {
44  wkeSetWkeDllPath(reinterpret_cast<const wchar_t *>(dll.utf16()));
45  wkeInitialize();
46  loaded = true;
47  }
48  }
49 
50  if(loaded)
51  {
52  ++m_ref;
53  }
54  return loaded;
55 }
56 
57 void Miniblink::load(const QString& url)
58 {
59  wkeLoadURL(m_webView, url.toUtf8().constData());
60 }
61 
62 void Miniblink::setHtml(const QString& html)
63 {
64  wkeLoadFile(m_webView, html.toUtf8().constData());
65 }
66 
67 void Miniblink::setUrl(const QString &url)
68 {
69  wkeLoadURL(m_webView, url.toUtf8().constData());
70 }
71 
72 QString Miniblink::url() const
73 {
74  return wkeGetURL(m_webView);
75 }
76 
77 void Miniblink::finish(bool ok)
78 {
79  Q_EMIT loadFinished(ok);
80 }
81 
83 {
84  wkeStopLoading(m_webView);
85 }
86 
88 {
89  if(wkeCanGoBack(m_webView))
90  {
91  wkeGoBack(m_webView);
92  }
93 }
94 
96 {
97  if(wkeCanGoForward(m_webView))
98  {
99  wkeGoForward(m_webView);
100  }
101 }
102 
104 {
105  wkeReload(m_webView);
106 }
107 
108 void Miniblink::resizeEvent(QResizeEvent *event)
109 {
110  Q_UNUSED(event);
111  const double dpi = TTKDesktopScreen::logicDotsPerInch() / 96.0;
112  wkeResize(m_webView, width() * dpi, height() * dpi);
113 }
wkeLoadingResult
Definition: wke.h:395
struct _tagWkeWebView * wkeWebView
Definition: wke.h:82
void wkeSetWkeDllPath(const wchar_t *dllPath)
Definition: wke.h:1057
struct _tagWkeString * wkeString
Definition: wke.h:85
static int logicDotsPerInch()
static QString applicationPath()
Definition: ttkqtobject.h:44
void wkeInitialize()
Definition: wke.h:1081