Source: main-ui/main-ui.js

/**
 * @namespace qui.mainui
 */

import $ from '$qui/lib/jquery.module.js'

import URL               from '$qui/utils/url.js'
import VisibilityManager from '$qui/utils/visibility-manager.js'
import * as Window       from '$qui/window.js'

import * as MenuBar    from './menu-bar.js'
import * as OptionsBar from './options-bar.js'
import * as TopBar     from './top-bar.js'


let mainContainer = null
let mainContainerGlass = null
let mainContainerGlassVisibilityManager = null

let messageContainer = null


function initMainContainer() {
    mainContainer = $('<div></div>', {class: 'qui-main-container'})
    mainContainer.append($('<div></div>', {class: 'qui-pages-container'}))

    mainContainerGlass = $('<div></div>', {class: 'qui-main-container-glass', style: 'display: none;'})
    mainContainerGlassVisibilityManager = new VisibilityManager({element: mainContainerGlass})
    mainContainer.append(mainContainerGlass)

    messageContainer = $('div.qui-toast-message-container')

    /* Close menu and option bars when clicking on main container glass */
    mainContainer.find('div.qui-main-container-glass').on('click', function () {
        MenuBar.close()
        OptionsBar.close()
    })

    Window.$body.append(mainContainer)
}

function adjustRelativeLinks() {
    /* Set absolute paths on links before the window location changes */
    $('link[rel=icon], link[rel=apple-touch-icon], link[theme]').each(function () {
        this.href = URL.parse(this.href).toString()
    })
}

export function showMainContainerGlass() {
    mainContainerGlassVisibilityManager.showElement()
}

export function hideMainContainerGlass() {
    mainContainerGlassVisibilityManager.hideElement()
}

export function init() {
    initMainContainer()
    adjustRelativeLinks()

    TopBar.init()
    MenuBar.init()
    OptionsBar.init()
}