mirror of
https://github.com/Kuingsmile/PicList.git
synced 2025-02-02 11:08:13 -05:00
Added: mini window upload progress
This commit is contained in:
parent
8785218b0d
commit
abcd7b848d
@ -20,6 +20,7 @@ if (process.env.DEBUG_ENV === 'debug') {
|
|||||||
|
|
||||||
let window
|
let window
|
||||||
let settingWindow
|
let settingWindow
|
||||||
|
let miniWindow
|
||||||
let tray
|
let tray
|
||||||
let menu
|
let menu
|
||||||
let contextMenu
|
let contextMenu
|
||||||
@ -29,6 +30,9 @@ const winURL = process.env.NODE_ENV === 'development'
|
|||||||
const settingWinURL = process.env.NODE_ENV === 'development'
|
const settingWinURL = process.env.NODE_ENV === 'development'
|
||||||
? `http://localhost:9080/#setting/upload`
|
? `http://localhost:9080/#setting/upload`
|
||||||
: `file://${__dirname}/index.html#setting/upload`
|
: `file://${__dirname}/index.html#setting/upload`
|
||||||
|
const miniWinURL = process.env.NODE_ENV === 'development'
|
||||||
|
? `http://localhost:9080/#mini-page`
|
||||||
|
: `file://${__dirname}/index.html#mini-page`
|
||||||
|
|
||||||
const uploadFailed = () => {
|
const uploadFailed = () => {
|
||||||
const notification = new Notification({
|
const notification = new Notification({
|
||||||
@ -71,6 +75,7 @@ function createTray () {
|
|||||||
} else {
|
} else {
|
||||||
settingWindow.show()
|
settingWindow.show()
|
||||||
settingWindow.focus()
|
settingWindow.focus()
|
||||||
|
miniWindow.show()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -190,6 +195,27 @@ const createWindow = () => {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const createMiniWidow = () => {
|
||||||
|
miniWindow = new BrowserWindow({
|
||||||
|
height: 64,
|
||||||
|
width: 64, // 196
|
||||||
|
show: true,
|
||||||
|
frame: false,
|
||||||
|
fullscreenable: false,
|
||||||
|
resizable: false,
|
||||||
|
transparent: true,
|
||||||
|
webPreferences: {
|
||||||
|
backgroundThrottling: false
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
miniWindow.loadURL(miniWinURL)
|
||||||
|
|
||||||
|
miniWindow.on('closed', () => {
|
||||||
|
miniWindow = null
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
const createSettingWindow = () => {
|
const createSettingWindow = () => {
|
||||||
const options = {
|
const options = {
|
||||||
height: 450,
|
height: 450,
|
||||||
@ -212,7 +238,7 @@ const createSettingWindow = () => {
|
|||||||
options.frame = false
|
options.frame = false
|
||||||
options.backgroundColor = '#3f3c37'
|
options.backgroundColor = '#3f3c37'
|
||||||
options.transparent = false
|
options.transparent = false
|
||||||
options.icon = `${__static}/256x256.png`
|
options.icon = `${__static}/logo.png`
|
||||||
}
|
}
|
||||||
settingWindow = new BrowserWindow(options)
|
settingWindow = new BrowserWindow(options)
|
||||||
|
|
||||||
@ -222,6 +248,7 @@ const createSettingWindow = () => {
|
|||||||
settingWindow = null
|
settingWindow = null
|
||||||
})
|
})
|
||||||
createMenu()
|
createMenu()
|
||||||
|
createMiniWidow()
|
||||||
}
|
}
|
||||||
|
|
||||||
const createMenu = () => {
|
const createMenu = () => {
|
||||||
@ -340,7 +367,7 @@ ipcMain.on('uploadClipboardFilesFromUploadPage', () => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
ipcMain.on('uploadChoosedFiles', async (evt, files) => {
|
ipcMain.on('uploadChoosedFiles', async (evt, files) => {
|
||||||
const imgs = await uploader(files, 'imgFromUploader', settingWindow.webContents)
|
const imgs = await uploader(files, 'imgFromUploader', evt.sender)
|
||||||
if (imgs !== false) {
|
if (imgs !== false) {
|
||||||
const pasteStyle = db.read().get('picBed.pasteStyle').value() || 'markdown'
|
const pasteStyle = db.read().get('picBed.pasteStyle').value() || 'markdown'
|
||||||
let pasteText = ''
|
let pasteText = ''
|
||||||
|
115
src/renderer/components/MiniPage.vue
Normal file
115
src/renderer/components/MiniPage.vue
Normal file
@ -0,0 +1,115 @@
|
|||||||
|
<template>
|
||||||
|
<div id="mini-page"
|
||||||
|
:style="{ 'backgroundImage': 'url(' + logo + ')' }"
|
||||||
|
>
|
||||||
|
<!-- <i class="el-icon-upload2"></i> -->
|
||||||
|
<div
|
||||||
|
id="upload-area"
|
||||||
|
:class="{ 'is-dragover': dragover, 'uploading': showProgress }" @drop.prevent="onDrop" @dragover.prevent="dragover = true" @dragleave.prevent="dragover = false"
|
||||||
|
:style="{ backgroundPosition: '0 ' + progress + '%'}"
|
||||||
|
>
|
||||||
|
<div id="upload-dragger" @dblclick="openUplodWindow">
|
||||||
|
<input type="file" id="file-uploader" @change="onChange" multiple>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import mixin from './mixin'
|
||||||
|
export default {
|
||||||
|
name: 'mini-page',
|
||||||
|
mixins: [mixin],
|
||||||
|
data () {
|
||||||
|
return {
|
||||||
|
logo: 'static/logo.png',
|
||||||
|
dragover: false,
|
||||||
|
progress: 0,
|
||||||
|
showProgress: false,
|
||||||
|
showError: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted () {
|
||||||
|
this.$electron.ipcRenderer.on('uploadProgress', (event, progress) => {
|
||||||
|
if (progress !== -1) {
|
||||||
|
this.showProgress = true
|
||||||
|
this.progress = progress
|
||||||
|
} else {
|
||||||
|
this.progress = 100
|
||||||
|
this.showError = true
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
progress (val) {
|
||||||
|
if (val === 100) {
|
||||||
|
setTimeout(() => {
|
||||||
|
this.showProgress = false
|
||||||
|
this.showError = false
|
||||||
|
}, 1000)
|
||||||
|
setTimeout(() => {
|
||||||
|
this.progress = 0
|
||||||
|
}, 1200)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
onDrop (e) {
|
||||||
|
this.dragover = false
|
||||||
|
this.ipcSendFiles(e.dataTransfer.files)
|
||||||
|
},
|
||||||
|
openUplodWindow () {
|
||||||
|
document.getElementById('file-uploader').click()
|
||||||
|
},
|
||||||
|
onChange (e) {
|
||||||
|
this.ipcSendFiles(e.target.files)
|
||||||
|
document.getElementById('file-uploader').value = ''
|
||||||
|
},
|
||||||
|
ipcSendFiles (files) {
|
||||||
|
let sendFiles = []
|
||||||
|
Array.from(files).forEach((item, index) => {
|
||||||
|
let obj = {
|
||||||
|
name: item.name,
|
||||||
|
path: item.path
|
||||||
|
}
|
||||||
|
sendFiles.push(obj)
|
||||||
|
})
|
||||||
|
this.$electron.ipcRenderer.send('uploadChoosedFiles', sendFiles)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
beforeDestroy () {
|
||||||
|
this.$electron.ipcRenderer.removeAllListeners('uploadProgress')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style lang='stylus'>
|
||||||
|
#mini-page
|
||||||
|
background #409EFF
|
||||||
|
color #FFF
|
||||||
|
height 100vh
|
||||||
|
width 100vw
|
||||||
|
-webkit-app-region: drag
|
||||||
|
border-radius 50%
|
||||||
|
text-align center
|
||||||
|
line-height 100vh
|
||||||
|
font-size 40px
|
||||||
|
background-size 90vh 90vw
|
||||||
|
background-position center center
|
||||||
|
background-repeat no-repeat
|
||||||
|
position relative
|
||||||
|
border 4px solid #fff
|
||||||
|
box-sizing border-box
|
||||||
|
#upload-area
|
||||||
|
height 100%
|
||||||
|
width 100%
|
||||||
|
border-radius 50%
|
||||||
|
transition all .2s ease-in-out
|
||||||
|
&.uploading
|
||||||
|
background: linear-gradient(to top, #409EFF 50%, #fff 51%)
|
||||||
|
background-size 200%
|
||||||
|
#upload-dragger
|
||||||
|
height 100%
|
||||||
|
&.is-dragover
|
||||||
|
background rgba(0,0,0,0.3)
|
||||||
|
#file-uploader
|
||||||
|
display none
|
||||||
|
</style>
|
@ -15,6 +15,11 @@ export default new Router({
|
|||||||
name: 'rename-page',
|
name: 'rename-page',
|
||||||
component: require('@/components/RenamePage').default
|
component: require('@/components/RenamePage').default
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
path: '/mini-page',
|
||||||
|
name: 'mini-page',
|
||||||
|
component: require('@/components/MiniPage').default
|
||||||
|
},
|
||||||
{
|
{
|
||||||
path: '/setting',
|
path: '/setting',
|
||||||
name: 'setting-page',
|
name: 'setting-page',
|
||||||
|
BIN
static/logo.png
Normal file
BIN
static/logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 14 KiB |
Loading…
Reference in New Issue
Block a user