minibrowserwnd.cpp 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. #include <precomp.h>
  2. #include <api/skin/widgets/mb/minibrowserwnd.h>
  3. #include <api/skin/widgets/mb/minibrowser.h>
  4. #include <api/service/svcs/svc_minibrowser.h>
  5. #include <api/service/svc_enum.h>
  6. MiniBrowserWnd::MiniBrowserWnd(GUID mb_provider) {
  7. mb = NULL;
  8. mbsvc = MiniBrowserSvcEnum(mb_provider).getFirst();
  9. }
  10. MiniBrowserWnd::~MiniBrowserWnd() {
  11. if (mbsvc) {
  12. if (mb) mbsvc->destroyMiniBrowser(mb);
  13. WASABI_API_SVC->service_release(mbsvc);
  14. }
  15. }
  16. int MiniBrowserWnd::onInit() {
  17. int r = MBWND_PARENT::onInit();
  18. if (mb) {
  19. mb->minibrowser_getRootWnd()->setStartHidden(1);
  20. mb->minibrowser_getRootWnd()->setParent(this);
  21. r &= mb->minibrowser_getRootWnd()->init(this);
  22. }
  23. onSetVisible(1);
  24. return r;
  25. }
  26. void MiniBrowserWnd::onSetVisible(int i) {
  27. MBWND_PARENT::onSetVisible(i);
  28. if (i) {
  29. if (!mb && mbsvc) {
  30. mb = mbsvc->createMiniBrowser();
  31. if (mb) {
  32. mb->minibrowser_addCB(this);
  33. mb->minibrowser_getRootWnd()->setStartHidden(1);
  34. mb->minibrowser_getRootWnd()->setParent(this);
  35. mb->minibrowser_getRootWnd()->init(this);
  36. if (isPostOnInit())
  37. onResize();
  38. }
  39. }
  40. } else {
  41. if (mb) {
  42. mbsvc->destroyMiniBrowser(mb);
  43. mb = NULL;
  44. }
  45. }
  46. if (mb && mb->minibrowser_getRootWnd()) {
  47. mb->minibrowser_getRootWnd()->setVisible(i);
  48. }
  49. }
  50. int MiniBrowserWnd::onResize() {
  51. int r = MBWND_PARENT::onResize();
  52. if (mb && mb->minibrowser_getRootWnd()) {
  53. RECT r;
  54. getClientRect(&r);
  55. mb->minibrowser_getRootWnd()->resize(r.left, r.top, r.right-r.left, r.bottom-r.top);
  56. }
  57. return r;
  58. }
  59. int MiniBrowserWnd::handleDesktopAlpha() {
  60. if (mb && mb->minibrowser_getRootWnd()) return mb->minibrowser_getRootWnd()->handleDesktopAlpha();
  61. return 0;
  62. }
  63. int MiniBrowserWnd::handleRatio() {
  64. if (mb && mb->minibrowser_getRootWnd()) return mb->minibrowser_getRootWnd()->handleRatio();
  65. return 0;
  66. }
  67. int MiniBrowserWnd::navigateUrl(const wchar_t *url) {
  68. if (mb) return mb->minibrowser_navigateUrl(url);
  69. return 0;
  70. }
  71. int MiniBrowserWnd::back() {
  72. if (mb) return mb->minibrowser_back();
  73. return 0;
  74. }
  75. int MiniBrowserWnd::forward() {
  76. if (mb) return mb->minibrowser_forward();
  77. return 0;
  78. }
  79. int MiniBrowserWnd::home() {
  80. if (mb) return mb->minibrowser_home();
  81. return 0;
  82. }
  83. int MiniBrowserWnd::refresh() {
  84. if (mb) return mb->minibrowser_refresh();
  85. return 0;
  86. }
  87. int MiniBrowserWnd::stop() {
  88. if (mb) return mb->minibrowser_stop();
  89. return 0;
  90. }
  91. void MiniBrowserWnd::setTargetName(const wchar_t *name) {
  92. if (mb) mb->minibrowser_setTargetName(name);
  93. }
  94. const wchar_t *MiniBrowserWnd::getTargetName() {
  95. if (mb) return mb->minibrowser_getTargetName();
  96. return NULL;
  97. }
  98. const wchar_t *MiniBrowserWnd::getCurrentUrl() {
  99. if (mb) return mb->minibrowser_getCurrentUrl();
  100. return NULL;
  101. }
  102. int MiniBrowserWnd::onBeforeNavigate(const wchar_t *url, int flags, const wchar_t *frame) {
  103. return 0; // return 1 to cancel navigation
  104. }
  105. void MiniBrowserWnd::onDocumentComplete(const wchar_t *url) {
  106. }
  107. void MiniBrowserWnd::onDocumentReady(const wchar_t *url) {
  108. }
  109. void MiniBrowserWnd::onNavigateError(const wchar_t *url, int status) {
  110. }
  111. void MiniBrowserWnd::onMediaLink(const wchar_t *url) {
  112. }
  113. const wchar_t* MiniBrowserWnd::messageToMaki(wchar_t* str1, wchar_t* str2, int i1, int i2, int i3)
  114. {
  115. return 0;
  116. }
  117. int MiniBrowserWnd::minibrowsercb_onBeforeNavigate(const wchar_t *url, int flags, const wchar_t *frame) {
  118. return onBeforeNavigate(url, flags, frame);
  119. }
  120. void MiniBrowserWnd::minibrowsercb_onDocumentComplete(const wchar_t *url) {
  121. onDocumentComplete(url);
  122. }
  123. void MiniBrowserWnd::minibrowsercb_onDocumentReady(const wchar_t *url) {
  124. onDocumentReady(url);
  125. }
  126. void MiniBrowserWnd::minibrowsercb_onMediaLink(const wchar_t *url) {
  127. onMediaLink(url);
  128. }
  129. void MiniBrowserWnd::minibrowsercb_onNavigateError(const wchar_t *url, int status) {
  130. onNavigateError(url, status);
  131. }
  132. const wchar_t* MiniBrowserWnd::minibrowsercb_messageToMaki(wchar_t* str1, wchar_t* str2, int i1, int i2, int i3)
  133. {
  134. return messageToMaki(str1, str2, i1, i2, i3);
  135. }
  136. void MiniBrowserWnd::setScrollbarsFlag(int a) {
  137. if (mb) mb->minibrowser_setScrollbarsFlag(a);
  138. }
  139. MiniBrowser *MiniBrowserWnd::getBrowser() {
  140. return mb;
  141. }