1.增加了重力感应,也就是横屏响应式布局。
2.修改了沉浸式布局。 3.修改了添加日程和编辑日程页面,增加了重复、提醒等功能。 4.修改了权限问题,如果日历本是只读,则有删除线做标识。同时,对于只读的日程,点击后将不再进入编辑页面,而是展示详情。 5.系统日历的处理。给用户两个选择,第一个选择就是只显示系统日历。第二种选择,用户可以选择一个caldav账户中的某一个日历本,把系统日历中的日程,包括日历日程和应用创建的日程,都读取出来,然后加入到这个日历本下,最后同步到caldav的服务器上,这样的好处是,手机丢失了,或者换了手机品牌型号,手机上的日程仍然在自己的caldav服务器上有一个备份。当然,系统日历中的caldav日历,就不会再读取了。
This commit is contained in:
@@ -25,6 +25,7 @@ export class DisplayEvent {
|
||||
color: string = '#007DFF';
|
||||
completed: boolean = false; // 仅待办使用
|
||||
recurring: boolean = false; // 是否为重复日程展开出的发生
|
||||
writable: boolean = true; // 所属日历本是否可写(只读时点击显示详情而非编辑)
|
||||
}
|
||||
|
||||
export class CalendarDataService {
|
||||
@@ -53,6 +54,7 @@ export class CalendarDataService {
|
||||
/** 收集全部日历来源:DAV 日历本 + 本机 + 系统日历账户 */
|
||||
static async loadSources(context: common.Context): Promise<CalSource[]> {
|
||||
const sources: CalSource[] = [];
|
||||
const manualKeys: string[] = await AppSettings.getManualReadonlyKeys(context);
|
||||
try {
|
||||
const accounts: DavAccount[] = await AccountStore.loadAll(context);
|
||||
for (const acc of accounts) {
|
||||
@@ -69,6 +71,10 @@ export class CalendarDataService {
|
||||
s.color = color !== '' ? color : BookPalette.colorFor(i);
|
||||
s.source = 'dav';
|
||||
s.visible = true;
|
||||
// 写权限:服务器探测结果 + 手动标记(部分服务器不在 CalDAV 层拒绝写入)
|
||||
const detected: boolean = acc.calendarWritable.length > i
|
||||
? acc.calendarWritable[i] !== '0' : true;
|
||||
s.writable = detected && !manualKeys.includes(s.calKey);
|
||||
sources.push(s);
|
||||
}
|
||||
}
|
||||
@@ -142,6 +148,10 @@ export class CalendarDataService {
|
||||
const found = sources.find((s: CalSource): boolean => s.calKey === key);
|
||||
return found !== undefined ? found.name : '';
|
||||
};
|
||||
const writableOf = (key: string): boolean => {
|
||||
const found = sources.find((s: CalSource): boolean => s.calKey === key);
|
||||
return found !== undefined ? found.writable : true;
|
||||
};
|
||||
|
||||
// 1) 本地库(DAV + 本机);重复日程(RRULE)按规则展开为窗口内的多次发生
|
||||
try {
|
||||
@@ -202,6 +212,7 @@ export class CalendarDataService {
|
||||
d.calName = baseName;
|
||||
d.color = baseColor;
|
||||
d.recurring = e.rrule !== '';
|
||||
d.writable = writableOf(e.calKey);
|
||||
result.push(d);
|
||||
occTotal++;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user