SimpleNotes-aar/main.aardio
2023-12-11 22:57:36 +08:00

291 lines
9.9 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//无边框窗口
import win.ui;
/*DSG{{*/
var winform = win.form(text="Edge 浏览器控件 - web.view";right=759;bottom=469;border="none")
winform.add()
/*}}*/
import fsys.update.simpleMain;
if( fsys.update.simpleMain(
"SimpleNotes-aar",
"https://begin2019.com:3000/OTAHub/SimpleNotes-aar/raw/branch/main/.update-files/version.txt", /*网址也可以改用目录名并使用服务端代码动态返回version.txt*/
"/download/update-files", /*绿色软件建议改为 io.appData("/软件厂商名/软件名字/update-files") */
function(version,description,status){
/*
version参数包含最新版本号
description包含最新版本更新说明
status参数值见下面的列表
"ready": 下载已完成并准备更新,
"updated": 已更新到新版本并准备启动新版
"complete": 当前已更新并已启动新版本主程序,所有操作已完成
"latest": 已经是最新版不需要更新
"failed": 出错了,description参数为错误信息
这个回调函数不是必须的,
在此检测更新代码之前或之后都可以在界面线程调用
fsys.update.simpleMain.onStatusChanged 订阅更新状态变更信息。
该认阅回调函数的参数与上面的回调参数相同。
*/
winform.msgbox(version);
winform.msgbox(description);
winform.msgbox(status);
} )){
return 0; //必须退出 main.aardio 以启动更新
}
import web.view;
var wb = web.view(winform);
//导出为 Javascript 中的 aardio 对象
wb.external = {
close = function(){
winform.close();
};
hitCaption = function(){
winform.hitCaption();
};
hitMin = function(){
winform.hitMin();
};
hitMax = function(){
return winform.hitMax();
};
upgrade = function(){
fsys.update.simpleMain.checkUpdate(true);
}
}
// wb.go("/res/index.html"); //直接打开资源目录下的文件
wb.html = /**
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<style type="text/css">
#title-bar {
height: 32px;
padding: 0px;
margin: 0px;
}
#title-bar .caption {
position: fixed;
top: 0px;
left: 0px;
width: 100%;
padding-left: 10px;
color: #ADADAD;
line-height: 32px;
font-size: 14px;
cursor: default;
user-select: none;
}
#title-bar .buttons {
position: fixed;
top: 1px;
right: 1px;
}
#title-bar button {
font: 14px Marlett;
color: #000000; /* 改为黑色 */
background-color: transparent;
border: none;
height: 28px;
width: 28px;
vertical-align: middle;
}
#update-btn {
background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAACxMAAAsTAQCanBgAAAPsSURBVEhL3VR9aJVlFD/ned93970f3SBBJlQ6SZIwolZGm7E7qdTRH11ifUiYN2tSRNlWrdYgd0cSOKcrKBqFZU6SPkSIW1nJbk2lbLZQRDJiEEp/JIyw3O593uf0e9691K5bi/yvfvBw33PO757znHOec+g/D45+p+HSdeYSx6c1JLQM4sWgnmKRj+bP5feLXawnWf+MGQMsXm+yhuhJo+hVFfCoJ+KVHNJgL1OGmjzhh47184mIPiumBbjuQXO7FlrnMr1sDOUN00mwTiGTJQ6RIHAPaD1eQHd986b66apHJBUbl/S3l/HP1MUwV6IiQG2LJLxx+RzKdmHqBrvdNbQWrA8O7lD7rl9rbnCF+oS4Q4l0QH8OnJgQjSF4jRLadWAHvwS3UE1CRb8h0mflDj+gd+KGnotpak9q6kWANw7W8GfWjhsfjmvalihLY5Who46mZ796S61MaTqUNNTlGapuXC0bQ2cRKgLA+Y2+oRFfU5AKaFU8oPwXA+rw1NR/TfIeP+CG4k7VNjSgjlsdUtjvlWl1okzH8f+6FVkzLyQDFQHgMI5zxmduxe12JTQVI9OfGO7nMm6/IRJDJErUCuev4YIPIMMPL3KoPjL91YPmZnGqStKLiJ+8vVcVIvW/xn1Z8xgacHpgj3rPymEGLU1mZfqcDCE91zE0bnUXCmSQRTZVeHDh5fnRVcam00mGNimmh7Xi1lcKeHIXgJZa8bxqWQ5fKxyhhU6K7uWnbjMFtDCPeJs1U27rPvVDxA/xfINUj7u0OBIrEGg60VOcvEzHcrNUO7TFvk+UZQRD+rUKaImKlyiJtOrQoN5pzpeatCjZi6eamekkYLMcy8V8bImXOLv5U3VzleYzyQkqxQwmH85d3/BZ1G1O6HUK/Cq6P16meWktDTMda7Mcy4Uf6iryL/Y7FciRWECXwx7AOY1Smb5HXt19dYbSHu/MFTlsNN77HOjXPDHEg1Y+H1vrJYN6Z+w3KjDSd5NsVCxHNIYU/WzDqrnF9YQ6XJHdTomf0a4sGvuNfPDDAJgDQi1DPP2lWc+KwwHC8zj9Yj33YyAJyy/E2K38+NyPpRlL4kqsjTY0OW8cjKg1vn6tmY/ltgnCApxS+I9JLAiYc7lhHuzbb7pd4k6rLLO8sKFRdW6vlYwjsh2qUau3ECEn3FFM+dywOhAG+DvsvhopKxps/o4HCwUTw64ZtvqyotqmJjXx7jWSQRkydx/liv0zFRWr4nzYEtkyWFiHNRN0jz322+qszXJmw6wB/EACvyy2JyGuuFMdsycSydosJxJnxKwlOrTQLNKKtoGUiFQVwFD9HmDxZX5UJyPV/w5EfwA9C5hdvKK2PgAAAABJRU5ErkJggg==');
background-size: cover; /* 让图片填充整个按钮 */
}
#update-btn:hover {
opacity: 0.8; /* 在悬停时使图片稍微透明 */
}
#update-btn:active {
opacity: 0.6; /* 在点击时使图片更透明 */
}
#min-btn:hover {
background-color: #b6b4b4; /* 蓝色 */
}
#min-btn:active {
background-color: #979696; /* 深蓝色 */
}
#max-btn:hover {
background-color: #b6b4b4; /* 红色 */
}
#max-btn:active {
background-color: #979696/* 深红色 */
}
#close-btn:hover {
background-color: #f44336; /* 灰色 */
}
#close-btn:active {
background-color: #d32f2f; /* 深灰色 */
}
body {
font-family: 'Microsoft YaHei', Arial, sans-serif;
background-color: rgb(255, 255, 255);
margin: 0;
padding: 0;
height: 100vh;
width: 100vw;
overflow: hidden;
}
.note-container {
background-color: #fff;
box-shadow: 0 0 10px rgba(255, 255, 255, 0.5);
width: 100vw;
height: 100vh;
padding: 20px;
border-radius: 8px;
box-sizing: border-box;
overflow-y: auto; /* 当内容超出容器时,显示纵向滚动条 */
}
.note-input {
width: 100%;
padding: 10px;
margin-bottom: 10px;
box-sizing: border-box;
border: 1px solid #ddd;
border-radius: 4px;
font-size: 16px;
resize: vertical;
font-family: 'Microsoft YaHei', Arial, sans-serif;
}
.note-list {
list-style: none;
padding: 0;
margin: 0;
}
.note-item {
background-color: #f9f9f9;
padding: 10px;
margin-bottom: 10px;
border-radius: 4px;
box-sizing: border-box;
word-wrap: break-word;
white-space: pre-line;
}
.delete-btn {
background-color: #ff5858;
color: #fff;
border: none;
padding: 5px 10px;
border-radius: 4px;
cursor: pointer;
}
.note-date {
color: #888;
font-size: 12px;
}
</style>
<script type="text/javascript">
</script>
</head>
<body>
<div id="title-bar">
<div class="caption" onmousedown="aardio.hitCaption()">SimpleNotes</div>
<div class="buttons">
<button id="update-btn" onclick="aardio.upgrade()"></button>
<button id="min-btn" onclick="aardio.hitMin()">0</button>
<button id="max-btn" onclick="aardio.hitMax()">1</button>
<button id="close-btn" onclick="aardio.close()">r</button>
</div>
</div>
<div id="main">
<div class="note-container">
<textarea id="noteInput" class="note-input" placeholder="添加便签..."></textarea>
<ul id="noteList" class="note-list"></ul>
</div>
</div>
<script>
document.addEventListener('DOMContentLoaded', function () {
const noteInput = document.getElementById('noteInput');
const noteList = document.getElementById('noteList');
noteInput.addEventListener('keydown', function (event) {
if (event.key === 'Enter' && !event.shiftKey && noteInput.value.trim() !== '') {
addNote();
event.preventDefault();
}
});
function addNote() {
const noteText = noteInput.value.trim();
const listItem = document.createElement('li');
listItem.className = 'note-item';
// 获取当前日期和时间
const now = new Date();
const dateTime = now.toLocaleString();
// 获取星期
const weekDays = ['周日', '周一', '周二', '周三', '周四', '周五', '周六'];
const weekDay = weekDays[now.getDay()];
// 获取第几周
const start = new Date(now.getFullYear(), 0, 0);
const diff = (now - start) + ((start.getTimezoneOffset() - now.getTimezoneOffset()) * 60 * 1000);
const oneDay = 1000 * 60 * 60 * 24;
const day = Math.floor(diff / oneDay);
const week = Math.ceil(day / 7);
listItem.innerHTML = `<div class="note-date">w${week} ${weekDay} ${dateTime}</div> <!-- 添加日期、时间、星期和第几周 -->
<div>${noteText}</div>
<button class="delete-btn" onclick="deleteNote(this)">删除</button>
`;
noteList.prepend(listItem);
noteInput.value = '';
}
window.deleteNote = function (btn) {
const listItem = btn.parentNode;
noteList.removeChild(listItem);
};
});
</script>
</body>
</html>
**/
//添加阴影边框
import win.ui.shadow;
win.ui.shadow(winform);
//设置窗口缩放范围
import win.ui.minmax;
win.ui.minmax(winform);
//切换最大化、还原按钮
winform.adjust = function( cx,cy,wParam ) {
if( wParam == 0x2/*_SIZE_MAXIMIZED*/ ){
wb.doScript(`document.getElementById("max-btn").innerText="2";`)
}
elseif( wParam == 0x0/*_SIZE_RESTORED*/ ){
wb.doScript(`document.getElementById("max-btn").innerText="1";`)
}
};
winform.show();
win.loopMessage();