5 changed files with 794 additions and 628 deletions
@ -1,77 +1,91 @@ |
|||||||
const { ipcRenderer } = require('electron'); |
const { ipcRenderer } = require("electron"); |
||||||
|
|
||||||
let sourceList, contentList, typeButtons, shareButton, cancelButton, activeItem, activeTab = 'screen'; |
let sourceList, |
||||||
|
contentList, |
||||||
|
typeButtons, |
||||||
|
shareButton, |
||||||
|
cancelButton, |
||||||
|
activeItem, |
||||||
|
activeTab = "screen"; |
||||||
|
|
||||||
const getItemDOM = item => { |
const getItemDOM = (item) => { |
||||||
const li = document.createElement('li'); |
const li = document.createElement("li"); |
||||||
li.setAttribute('data-id', item.id); |
li.setAttribute("data-id", item.id); |
||||||
li.innerHTML = `<div class="content"><div class="img-wrapper"><img src="${item.thumbnail}" /></div><span>${item.name}</span></div>`; |
li.innerHTML = `<div class="content"><div class="img-wrapper"><img src="${item.thumbnail}" /></div><span>${item.name}</span></div>`; |
||||||
li.addEventListener('click', onItemClick, false); |
li.addEventListener("click", onItemClick, false); |
||||||
return li; |
return li; |
||||||
}; |
}; |
||||||
|
|
||||||
const updateTab = () => { |
const updateTab = () => { |
||||||
const sources = sourceList.filter(it => it.id.indexOf(activeTab) === 0); |
const sources = sourceList.filter((it) => it.id.indexOf(activeTab) === 0); |
||||||
contentList.innerHTML = ''; |
contentList.innerHTML = ""; |
||||||
sources.forEach(source => contentList.appendChild(getItemDOM(source))); |
sources.forEach((source) => contentList.appendChild(getItemDOM(source))); |
||||||
}; |
}; |
||||||
|
|
||||||
const bindTypeClick = () => { |
const bindTypeClick = () => { |
||||||
typeButtons.forEach(it => it.addEventListener('click', onChangeType, false)); |
typeButtons.forEach((it) => |
||||||
|
it.addEventListener("click", onChangeType, false) |
||||||
|
); |
||||||
}; |
}; |
||||||
|
|
||||||
const bindActionsClick = () => { |
const bindActionsClick = () => { |
||||||
shareButton.addEventListener('click', onShareClick, false); |
shareButton.addEventListener("click", onShareClick, false); |
||||||
cancelButton.addEventListener('click', onCancelClick, false); |
cancelButton.addEventListener("click", onCancelClick, false); |
||||||
}; |
}; |
||||||
|
|
||||||
const onChangeType = event => { |
const onChangeType = (event) => { |
||||||
event.preventDefault(); |
event.preventDefault(); |
||||||
if (!event.target.classList.contains('active')) { |
if (!event.target.classList.contains("active")) { |
||||||
activeTab = event.target.dataset.type; |
activeTab = event.target.dataset.type; |
||||||
typeButtons.forEach(it => it.classList.remove('active')); |
typeButtons.forEach((it) => it.classList.remove("active")); |
||||||
event.target.classList.add('active'); |
event.target.classList.add("active"); |
||||||
updateTab(); |
updateTab(); |
||||||
} |
} |
||||||
}; |
}; |
||||||
|
|
||||||
const onItemClick = event => { |
const onItemClick = (event) => { |
||||||
event.preventDefault(); |
event.preventDefault(); |
||||||
if (!event.currentTarget.classList.contains('active')) { |
if (!event.currentTarget.classList.contains("active")) { |
||||||
activeItem = event.currentTarget.dataset.id; |
activeItem = event.currentTarget.dataset.id; |
||||||
document.querySelectorAll('.preview li').forEach(it => it.classList.remove('active')); |
document |
||||||
event.currentTarget.classList.add('active'); |
.querySelectorAll(".preview li") |
||||||
|
.forEach((it) => it.classList.remove("active")); |
||||||
|
event.currentTarget.classList.add("active"); |
||||||
changeShareState(); |
changeShareState(); |
||||||
} |
} |
||||||
}; |
}; |
||||||
|
|
||||||
const onCancelClick = event => { |
const onCancelClick = (event) => { |
||||||
event.preventDefault(); |
event.preventDefault(); |
||||||
ipcRenderer.send('screenShare:cancelSelection'); |
ipcRenderer.send("screenShare:cancelSelection"); |
||||||
}; |
}; |
||||||
|
|
||||||
const onShareClick = event => { |
const onShareClick = (event) => { |
||||||
event.preventDefault(); |
event.preventDefault(); |
||||||
if (activeItem) { |
if (activeItem) { |
||||||
ipcRenderer.send('screenShare:selectScreen', activeItem); |
ipcRenderer.send("screenShare:selectScreen", activeItem); |
||||||
} |
} |
||||||
}; |
}; |
||||||
|
|
||||||
const changeShareState = () => { |
const changeShareState = () => { |
||||||
if (shareButton.getAttribute('disabled') !== null) { |
if (shareButton.getAttribute("disabled") !== null) { |
||||||
shareButton.removeAttribute('disabled'); |
shareButton.removeAttribute("disabled"); |
||||||
} |
} |
||||||
}; |
}; |
||||||
|
|
||||||
window.addEventListener('load', async () => { |
window.addEventListener( |
||||||
sourceList = await ipcRenderer.invoke('screenShare:getSources'); |
"load", |
||||||
|
async () => { |
||||||
|
sourceList = await ipcRenderer.invoke("screenShare:getSources"); |
||||||
|
|
||||||
contentList = document.querySelector('.preview'); |
contentList = document.querySelector(".preview"); |
||||||
typeButtons = document.querySelectorAll('.type li'); |
typeButtons = document.querySelectorAll(".type li"); |
||||||
shareButton = document.querySelector('#share'); |
shareButton = document.querySelector("#share"); |
||||||
cancelButton = document.querySelector('#cancel'); |
cancelButton = document.querySelector("#cancel"); |
||||||
|
|
||||||
bindTypeClick(); |
bindTypeClick(); |
||||||
bindActionsClick(); |
bindActionsClick(); |
||||||
updateTab(); |
updateTab(); |
||||||
}, false); |
}, |
||||||
|
false |
||||||
|
); |
||||||
|
@ -1,22 +1,22 @@ |
|||||||
<!DOCTYPE html> |
<!DOCTYPE html> |
||||||
<html lang="en"> |
<html lang="en"> |
||||||
<head> |
<head> |
||||||
<link rel="stylesheet" href="resources/css/screenselector.css" /> |
<link rel="stylesheet" href="resources/css/screenselector.css" /> |
||||||
</head> |
</head> |
||||||
<body> |
<body> |
||||||
<div class="screen-selector"> |
<div class="screen-selector"> |
||||||
<ul class="type"> |
<ul class="type"> |
||||||
<li class="active" data-type="screen">Entire Screen</li> |
<li class="active" data-type="screen">Entire Screen</li> |
||||||
<li data-type="window">Window</li> |
<li data-type="window">Window</li> |
||||||
</ul> |
</ul> |
||||||
<div class="content"> |
<div class="content"> |
||||||
<ul class="preview"></ul> |
<ul class="preview"></ul> |
||||||
|
</div> |
||||||
|
<div class="footer"> |
||||||
|
<button id="share" disabled>Share</button> |
||||||
|
<button id="cancel">Cancel</button> |
||||||
|
</div> |
||||||
</div> |
</div> |
||||||
<div class="footer"> |
<script src="resources/js/screenselector.js"></script> |
||||||
<button id="share" disabled>Share</button> |
</body> |
||||||
<button id="cancel">Cancel</button> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
<script src="resources/js/screenselector.js"></script> |
|
||||||
</body> |
|
||||||
</html> |
</html> |
||||||
|
Loading…
Reference in new issue