Kaynağa Gözat

refactor(media): 调整媒体文件排序逻辑和异步处理

- 修改MediaTable中排序类型的映射关系,统一按艺术家、专辑、名称顺序排列
- 将LocalMusic中所有排序操作改为异步处理方式
- 移除多余的列表数据更新调用
- 简化排序菜单项的点击事件处理逻辑
- 优化排序操作的执行顺序和性能表现
chendeben 7 ay önce
ebeveyn
işleme
945f21ef24

+ 7 - 7
entry/src/main/ets/common/util/MediaTable.ets

@@ -1120,28 +1120,28 @@ export default  class MediaTable {
 
 
   /**
   /**
    * 应用排序条件到查询谓词
    * 应用排序条件到查询谓词
-   * sortType: 0-文件名升序 1-文件名降序 2-艺术家升序 3-艺术家降序 4-专辑升序 5-专辑降序
+   * sortType: 0-艺术家升序 1-艺术家降序 2-专辑升序 3-专辑降序 4-名称升序 5-名称降序
    */
    */
   private applySortConditions(predicates: relationalStore.RdbPredicates, sortType?: number): void {
   private applySortConditions(predicates: relationalStore.RdbPredicates, sortType?: number): void {
     const type = sortType !== undefined ? sortType : 4;
     const type = sortType !== undefined ? sortType : 4;
     switch (type) {
     switch (type) {
       case 0:
       case 0:
-        predicates.orderByAsc(DB_COLUMNS.NAME);
+        predicates.orderByAsc(DB_COLUMNS.ARTIST);
         break;
         break;
       case 1:
       case 1:
-        predicates.orderByDesc(DB_COLUMNS.NAME);
+        predicates.orderByDesc(DB_COLUMNS.ARTIST);
         break;
         break;
       case 2:
       case 2:
-        predicates.orderByAsc(DB_COLUMNS.ARTIST);
+        predicates.orderByAsc(DB_COLUMNS.ALBUM);
         break;
         break;
       case 3:
       case 3:
-        predicates.orderByDesc(DB_COLUMNS.ARTIST);
+        predicates.orderByDesc(DB_COLUMNS.ALBUM);
         break;
         break;
       case 4:
       case 4:
-        predicates.orderByAsc(DB_COLUMNS.ALBUM);
+        predicates.orderByAsc(DB_COLUMNS.NAME);
         break;
         break;
       case 5:
       case 5:
-        predicates.orderByDesc(DB_COLUMNS.ALBUM);
+        predicates.orderByDesc(DB_COLUMNS.NAME);
         break;
         break;
       default:
       default:
         predicates.orderByAsc(DB_COLUMNS.NAME);
         predicates.orderByAsc(DB_COLUMNS.NAME);

+ 12 - 33
entry/src/main/ets/view/LocalMusic.ets

@@ -2054,63 +2054,49 @@ export struct LocalMusic {
         content: "按艺术家升序"
         content: "按艺术家升序"
       })
       })
         .onClick(async () => {
         .onClick(async () => {
-          this.doSortType(0)
-          PreferencesUtil.put(SettingPage.SORT_TYPE, 0)
-          this.updateListData(this.videoLocalList, true)
+          await this.doSortType(0)
         })
         })
       MenuItem({
       MenuItem({
         symbolStartIcon: new SymbolGlyphModifier($r('sys.symbol.text_and_arrow_down')),
         symbolStartIcon: new SymbolGlyphModifier($r('sys.symbol.text_and_arrow_down')),
         content: "按艺术家降序"
         content: "按艺术家降序"
       })
       })
         .onClick(async () => {
         .onClick(async () => {
-          this.doSortType(1)
-          PreferencesUtil.put(SettingPage.SORT_TYPE, 1)
-          this.updateListData(this.videoLocalList, true)
+          await this.doSortType(1)
         })
         })
       MenuItem({
       MenuItem({
         symbolStartIcon: new SymbolGlyphModifier($r('sys.symbol.textformat_size_square')),
         symbolStartIcon: new SymbolGlyphModifier($r('sys.symbol.textformat_size_square')),
         content: "按专辑升序"
         content: "按专辑升序"
       })
       })
         .onClick(async () => {
         .onClick(async () => {
-          this.doSortType(2)
-          PreferencesUtil.put(SettingPage.SORT_TYPE, 2)
-          this.updateListData(this.videoLocalList, true)
+          await this.doSortType(2)
         })
         })
       MenuItem({
       MenuItem({
         symbolStartIcon: new SymbolGlyphModifier($r('sys.symbol.character_arrow_clockwise')),
         symbolStartIcon: new SymbolGlyphModifier($r('sys.symbol.character_arrow_clockwise')),
         content: "按专辑降序"
         content: "按专辑降序"
       })
       })
         .onClick(async () => {
         .onClick(async () => {
-          this.doSortType(3)
-          PreferencesUtil.put(SettingPage.SORT_TYPE, 3)
-          this.updateListData(this.videoLocalList, true)
+          await this.doSortType(3)
         })
         })
       MenuItem({
       MenuItem({
         symbolStartIcon: new SymbolGlyphModifier($r('sys.symbol.text_and_arrow_up')),
         symbolStartIcon: new SymbolGlyphModifier($r('sys.symbol.text_and_arrow_up')),
         content: $r('app.string.sort_by_name')
         content: $r('app.string.sort_by_name')
       })
       })
         .onClick(async () => {
         .onClick(async () => {
-          this.doSortType(4)
-          PreferencesUtil.put(SettingPage.SORT_TYPE, 4)
-          this.updateListData(this.videoLocalList, true)
+          await this.doSortType(4)
         })
         })
       MenuItem({
       MenuItem({
         symbolStartIcon: new SymbolGlyphModifier($r('sys.symbol.text_and_arrow_down')),
         symbolStartIcon: new SymbolGlyphModifier($r('sys.symbol.text_and_arrow_down')),
         content: '按名称降序'
         content: '按名称降序'
       })
       })
         .onClick(async () => {
         .onClick(async () => {
-          this.doSortType(5)
-          PreferencesUtil.put(SettingPage.SORT_TYPE, 5)
-          this.updateListData(this.videoLocalList, true)
+          await this.doSortType(5)
         })
         })
       MenuItem({
       MenuItem({
         symbolStartIcon: new SymbolGlyphModifier($r('sys.symbol.clock')),
         symbolStartIcon: new SymbolGlyphModifier($r('sys.symbol.clock')),
         content: $r('app.string.sort_by_time')
         content: $r('app.string.sort_by_time')
       })
       })
         .onClick(async () => {
         .onClick(async () => {
-          this.doSortType(6)
-          PreferencesUtil.put(SettingPage.SORT_TYPE, 6)
-          this.updateListData(this.videoLocalList, true)
+          await this.doSortType(6)
         })
         })
 
 
       MenuItem({
       MenuItem({
@@ -2118,9 +2104,7 @@ export struct LocalMusic {
         content: '按添加时间降序'
         content: '按添加时间降序'
       })
       })
         .onClick(async () => {
         .onClick(async () => {
-          this.doSortType(7)
-          PreferencesUtil.put(SettingPage.SORT_TYPE, 7)
-          this.updateListData(this.videoLocalList, true)
+          await this.doSortType(7)
         })
         })
     }.attributeModifier(new MenuModifier())
     }.attributeModifier(new MenuModifier())
   }
   }
@@ -2134,25 +2118,21 @@ export struct LocalMusic {
         content: $r('app.string.sort_by_name')
         content: $r('app.string.sort_by_name')
       })
       })
         .onClick(async () => {
         .onClick(async () => {
-          this.doSortType(4)
-          // PreferencesUtil.put(SettingPage.SORT_TYPE, 2)
-          this.updateListData(this.videoLocalList, true)
+          await this.doSortType(4)
         })
         })
       MenuItem({
       MenuItem({
         symbolStartIcon: new SymbolGlyphModifier($r('sys.symbol.text_and_arrow_down')),
         symbolStartIcon: new SymbolGlyphModifier($r('sys.symbol.text_and_arrow_down')),
         content: '按名称降序'
         content: '按名称降序'
       })
       })
         .onClick(async () => {
         .onClick(async () => {
-          this.doSortType(5)
-          this.updateListData(this.videoLocalList, true)
+          await this.doSortType(5)
         })
         })
       MenuItem({
       MenuItem({
         symbolStartIcon: new SymbolGlyphModifier($r('sys.symbol.clock')),
         symbolStartIcon: new SymbolGlyphModifier($r('sys.symbol.clock')),
         content: '按数量升序'
         content: '按数量升序'
       })
       })
         .onClick(async () => {
         .onClick(async () => {
-          this.doSortType(8)
-          this.updateListData(this.videoLocalList, true)
+          await this.doSortType(8)
         })
         })
 
 
       MenuItem({
       MenuItem({
@@ -2160,8 +2140,7 @@ export struct LocalMusic {
         content: '按数量降序'
         content: '按数量降序'
       })
       })
         .onClick(async () => {
         .onClick(async () => {
-          this.doSortType(9)
-          this.updateListData(this.videoLocalList, true)
+          await this.doSortType(9)
         })
         })
     }.attributeModifier(new MenuModifier())
     }.attributeModifier(new MenuModifier())
   }
   }