fantasia-archive/src/components/appHeader/AppWindowButtons.vue

149 lines
3.1 KiB
Vue
Raw Normal View History

2021-02-26 14:50:46 +13:00
<template>
<q-btn-group
flat
2021-02-28 06:00:57 +13:00
class="appWindowButtons bg-dark"
2021-02-26 14:50:46 +13:00
>
<projectCloseCheckDialog
:dialog-trigger="projectCloseCheckDialogTrigger"
:dialog-mode="'appClose'"
@trigger-dialog-close="projectCloseCheckDialogClose"
/>
<!-- Minimize button-->
<q-btn
flat
:ripple="false"
:class="{'minimize': osSystem === 'darwin'}"
dark
size='sm'
2021-04-03 12:33:49 +13:00
@click="minimizeWindow">
2021-02-26 14:50:46 +13:00
<q-icon name="mdi-window-minimize"></q-icon>
</q-btn>
<!-- MinMax button-->
<q-btn
flat
:ripple="false"
:class="{'minMax': osSystem === 'darwin'}"
dark
size='sm'
2021-04-03 12:33:49 +13:00
@click="resizeWindow">
2021-02-26 14:50:46 +13:00
<q-icon :name="(isMaximized)? 'mdi-window-restore' : 'mdi-window-maximize'"></q-icon>
</q-btn>
<!-- Close button-->
<q-btn
flat
:ripple="false"
dark
size='sm'
@click="projectCloseCheckDialogAssignUID"
:class="[{'close': osSystem === 'darwin'}]"
>
<q-icon name="mdi-window-close"></q-icon>
</q-btn>
</q-btn-group>
</template>
<script lang="ts">
import { Component } from "vue-property-decorator"
import { remote } from "electron"
import BaseClass from "src/BaseClass"
import projectCloseCheckDialog from "src/components/dialogs/ProjectCloseCheck.vue"
@Component({
components: { projectCloseCheckDialog }
})
export default class AppWindowButtons extends BaseClass {
2021-04-03 12:33:49 +13:00
/****************************************************************/
// Basic component functionality
/****************************************************************/
/**
* Determines if the window is maximed or not
*/
2021-02-26 14:50:46 +13:00
isMaximized = false
2021-04-03 12:33:49 +13:00
/**
* Gets the currently used OS
*/
2021-02-26 14:50:46 +13:00
osSystem = remote.process.platform
2021-04-03 12:33:49 +13:00
/**
* Currently opened window
*/
currentWindow = remote.getCurrentWindow()
2021-02-26 14:50:46 +13:00
2021-04-03 12:33:49 +13:00
/**
* Checks if the window is currently maximized or not
*/
checkIfMaximized () {
this.isMaximized = this.currentWindow.isMaximized()
2021-02-26 14:50:46 +13:00
}
2021-04-03 12:33:49 +13:00
/**
* Minimizes the current window
*/
minimizeWindow () {
this.currentWindow.minimize()
2021-02-26 14:50:46 +13:00
}
2021-04-03 12:33:49 +13:00
/**
* Resizes the window to either smaller or maximized
*/
resizeWindow () {
if (this.currentWindow.isMaximized()) {
this.currentWindow.unmaximize()
2021-02-26 14:50:46 +13:00
}
else {
2021-04-03 12:33:49 +13:00
this.currentWindow.maximize()
2021-02-26 14:50:46 +13:00
}
}
2021-04-03 12:33:49 +13:00
created () {
window.addEventListener("resize", this.checkIfMaximized)
this.checkIfMaximized()
}
destroyed () {
window.addEventListener("resize", this.checkIfMaximized)
}
/****************************************************************/
// Close project dialog
/****************************************************************/
2021-02-26 14:50:46 +13:00
projectCloseCheckDialogTrigger: string | false = false
projectCloseCheckDialogClose () {
this.projectCloseCheckDialogTrigger = false
}
projectCloseCheckDialogAssignUID () {
this.projectCloseCheckDialogTrigger = this.generateUID()
}
}
</script>
<style lang="scss" scoped>
.appWindowButtons {
2021-02-28 06:00:57 +13:00
border-radius: 0;
2021-02-26 14:50:46 +13:00
position: fixed;
right: 0;
top: 0;
height: 40px;
z-index: 99999999;
color: #fff;
2021-02-28 06:00:57 +13:00
-webkit-app-region: no-drag;
2021-02-26 14:50:46 +13:00
}
</style>
<style lang="scss" >
</style>