Преглед на файлове

添加webdav账号功能

onecold преди 9 месеца
родител
ревизия
dd84fb01ad
променени са 3 файла, в които са добавени 51 реда и са изтрити 46 реда
  1. 12 8
      entry/src/main/ets/common/util/WebdavManager.ets
  2. 4 3
      entry/src/main/ets/dialog/WebDavAccountDialog.ets
  3. 35 35
      entry/src/main/ets/pages/NewIndex.ets

+ 12 - 8
entry/src/main/ets/common/util/WebdavManager.ets

@@ -110,10 +110,10 @@ export class WebdavManager {
 
   public notifyObservers(event: string): void {
     Logger.info(TAG, '通知观察者:', event);
-    Logger.info(TAG, '观察者数量:', this.observers.length.toString());
+    Logger.debug(TAG, '观察者数量:', this.observers.length.toString());
     for (let i = 0; i < this.observers.length; i++) {
       const observer = this.observers[i];
-      Logger.info(TAG, '调用观察者', i.toString(), ',事件:', event);
+      Logger.debug(TAG, '调用观察者', i.toString(), ',事件:', event);
       observer(event);
     }
   }
@@ -150,7 +150,7 @@ export class WebdavManager {
   }
 
   // 从数据库查询所有账户
-  public async queryWebDavAccountsFromDB(): Promise<void> {
+  public async queryWebDavAccountsFromDB(notify: boolean = true): Promise<void> {
     try {
       const predicates = new relationalStore.RdbPredicates(this.webDavTable);
       const columns = ['id', 'name', 'isActivate', 'host', 'localHost', 'isUseLocalHost',
@@ -182,11 +182,15 @@ export class WebdavManager {
       resultSet.close();
 
       Logger.info(TAG, '从数据库加载了', this.webDavAccounts.length.toString(), '个WebDAV账户');
-      this.notifyObservers(WebdavManagerStates.QueryAccountsSucceed);
+      if (notify) {
+        this.notifyObservers(WebdavManagerStates.QueryAccountsSucceed);
+      }
     } catch (err) {
       const error = err as Error;
       Logger.error(TAG, '查询WebDAV账户失败:', error.message);
-      this.notifyObservers(WebdavManagerStates.QueryAccountsFailed);
+      if (notify) {
+        this.notifyObservers(WebdavManagerStates.QueryAccountsFailed);
+      }
       throw error;
     }
   }
@@ -226,7 +230,7 @@ export class WebdavManager {
       await this.dataBaseUtil.insertData(this.webDavTable, values);
       Logger.info(TAG, '插入WebDAV账户成功:', name);
 
-      await this.queryWebDavAccountsFromDB();
+      await this.queryWebDavAccountsFromDB(false); // 不通知观察者,避免循环
       this.notifyObservers(WebdavManagerStates.InsertAccountSucceed);
     } catch (err) {
       const error = err as Error;
@@ -261,7 +265,7 @@ export class WebdavManager {
       await this.dataBaseUtil.updateData(this.webDavTable, values, predicates);
       Logger.info(TAG, '更新WebDAV账户成功:', account.name);
 
-      await this.queryWebDavAccountsFromDB();
+      await this.queryWebDavAccountsFromDB(false); // 不通知观察者,避免循环
       this.notifyObservers(WebdavManagerStates.EditAccountSucceed);
     } catch (err) {
       const error = err as Error;
@@ -280,7 +284,7 @@ export class WebdavManager {
       await this.dataBaseUtil.deleteData(predicates);
       Logger.info(TAG, '删除WebDAV账户成功:', account.name);
 
-      await this.queryWebDavAccountsFromDB();
+      await this.queryWebDavAccountsFromDB(false); // 不通知观察者,避免循环
       this.notifyObservers(WebdavManagerStates.RemoveAccountSucceed);
     } catch (err) {
       const error = err as Error;

+ 4 - 3
entry/src/main/ets/dialog/WebDavAccountDialog.ets

@@ -160,7 +160,9 @@ export struct WebDavAccountDialog {
             }
 
             const updatedAccount = new WebDavAccount();
-            updatedAccount.id = this.account.id;
+            if(this.isEditMode){
+              updatedAccount.id = this.account.id;
+            }
             updatedAccount.name = this.accountName;
             updatedAccount.host = this.host;
             updatedAccount.port = this.port;
@@ -174,9 +176,8 @@ export struct WebDavAccountDialog {
             updatedAccount.lyricFilePath = '';
             updatedAccount.uploadFilePath = '';
             updatedAccount.imageFilePath = '';
-
             this.onConfirm?.(updatedAccount);
-            // this.controller.close();
+
           })
       }
       .width('100%')

+ 35 - 35
entry/src/main/ets/pages/NewIndex.ets

@@ -1065,7 +1065,7 @@ struct NewIndex {
           
           Text('创建歌单')
             .margin({ left: 10, right: 20 })
-            .fontSize(15)
+            .fontSize(14)
             .fontColor($r('app.color.index_tab_font_color'))
             .fontWeight(480)
           
@@ -1165,7 +1165,41 @@ struct NewIndex {
   buildCloudStorageTab() {
     // 当前只支持WebDAV账户,将来可以在这里添加其他类型的网盘账户
     // 例如:OneDrive, Google Drive, Dropbox等
+    // 添加新账户按钮
+    ListItem() {
+      Button({ type: ButtonType.Capsule, stateEffect: true }) {
+        Row() {
+          SymbolGlyph($r('sys.symbol.plus_circle'))
+            .fontSize(22)
+            .fontColor([this.themeColor])
+            .effectStrategy(SymbolEffectStrategy.HIERARCHICAL)
+            .alignSelf(ItemAlign.Center)
+            .margin({ left: 25 })
+
+          Text('添加WebDAV账户')
+            .margin({ left: 10, right: 20 })
+            .fontSize(14)
+            .fontColor($r('app.color.index_tab_font_color'))
+            .fontWeight(480)
+
+          Blank()
 
+          Image($r('app.media.arrow_right'))
+            .width(22)
+            .height(22)
+            .margin({ left: 20, right: 0 })
+            .align(Alignment.Center)
+        }
+        .width('100%')
+        .height(55)
+      }
+      .backgroundColor(Color.Transparent)
+      .clickEffect({ level: ClickEffectLevel.MIDDLE, scale: 0.6 })
+      .onClick(() => {
+        console.info('heanup', '点击添加WebDAV账户')
+        this.showAddWebDavAccountDialog(false)
+      })
+    }
     // 显示所有WebDAV账户
     ForEach(this.webDavAccounts, (account: WebDavAccount) => {
       ListItem() {
@@ -1239,41 +1273,7 @@ struct NewIndex {
       }
     })
 
-    // 添加新账户按钮
-    ListItem() {
-      Button({ type: ButtonType.Capsule, stateEffect: true }) {
-        Row() {
-          SymbolGlyph($r('sys.symbol.plus_circle'))
-            .fontSize(22)
-            .fontColor([this.themeColor])
-            .effectStrategy(SymbolEffectStrategy.HIERARCHICAL)
-            .alignSelf(ItemAlign.Center)
-            .margin({ left: 25 })
-
-          Text('添加WebDAV账户')
-            .margin({ left: 10, right: 20 })
-            .fontSize(15)
-            .fontColor($r('app.color.index_tab_font_color'))
-            .fontWeight(480)
-
-          Blank()
 
-          Image($r('app.media.arrow_right'))
-            .width(22)
-            .height(22)
-            .margin({ left: 20, right: 0 })
-            .align(Alignment.Center)
-        }
-        .width('100%')
-        .height(55)
-      }
-      .backgroundColor(Color.Transparent)
-      .clickEffect({ level: ClickEffectLevel.MIDDLE, scale: 0.6 })
-      .onClick(() => {
-        console.info('heanup', '点击添加WebDAV账户')
-        this.showAddWebDavAccountDialog(false)
-      })
-    }
 
     // 如果没有账户,显示提示信息
     if (this.webDavAccounts.length === 0) {