Fifth week of coding phase, GSoC'18

The week was totally involved in developing the GUI for QML Plugins. The follwoing APIs are developed:

  • BrowserAction API: to add a GUI popup button to navigation tool bar and status bar
  • SideBar API: to add a side bar widget to the browser

Below are the screeshots of the Hello QML plugin from my working branch

BrowserAction Button

Browser Action Button can be added to either Navigation Tool Bar or Status Bar or both. Browser<em>Action</em>Button

BrowserAction Popup

The popup for Browser Action Button is in form of QML Window. This part took much time to develop because:

  • To show the GUI, QQuickWidget (QWidget) or QQucikWindow (QWindow) can be used.
  • Now popup property is a QQmlComponent thus the source Url is not known. Also QQuickWidget uses url - thus only solution left is to use QQuickWindow (by casting object created using QQmlComponent::create)
  • Now to show popup the Qt::Popup flag is needed for QQuickWindow.

Everything is fine upto this until I found that this didn't worked. My Mentor (David Rosca) explained that this is because the QWindow is not grabing mouse and keyboard events - which means that the window is not activated - so I added QWindow::requestActivate and It works like a charm! Browser<em>Action</em>Popup

SideBar Menu

SideBar_Menu

SideBar

Again SideBar menu is a QQuickWindow which is embeded into the browser using QWidget::createWindowContainer. SideBar


Again, a great thanks to my mentor David Rosca to help me in developing the APIs for GUI.

Happy Fathers Day!