Просмотр исходного кода

优化书籍详情页;优化分组长SQL (#4596)

* 书籍详情页书名和分组信息过长时可滑动查看

* 书籍分组SQL优化
niuhb 1 год назад
Родитель
Сommit
d7afa81841

+ 22 - 19
app/src/main/java/io/legado/app/data/dao/BookGroupDao.kt

@@ -26,26 +26,29 @@ interface BookGroupDao {
     @get:Query(
         """
         with const as (SELECT sum(groupId) sumGroupId FROM book_groups where groupId > 0)
-        SELECT book_groups.* FROM book_groups, const 
-        where (groupId >= 0 and show > 0 and exists (select 1 from books where `group` & book_groups.groupId > 0))
-        or (groupId = -1 and show > 0)
-        or (groupId = -2 and show > 0 and exists (select 1 from books where type & ${BookType.local} > 0))
-        or (groupId = -3 and show > 0 and exists (select 1 from books where type & ${BookType.audio} > 0))
-        or (groupId = -11 and show > 0 and exists (select 1 from books where type & ${BookType.updateError} > 0))
-        or (groupId = -4 and show > 0 
-            and exists (
-                select 1 from books 
-                where type & ${BookType.audio} = 0
-                and type & ${BookType.local} = 0
-                and const.sumGroupId & `group` = 0
+        SELECT book_groups.* FROM book_groups join const 
+        where show > 0 
+        and (
+            (groupId >= 0  and exists (select 1 from books where `group` & book_groups.groupId > 0))
+            or groupId = -1
+            or (groupId = -2 and exists (select 1 from books where type & ${BookType.local} > 0))
+            or (groupId = -3 and exists (select 1 from books where type & ${BookType.audio} > 0))
+            or (groupId = -11 and exists (select 1 from books where type & ${BookType.updateError} > 0))
+            or (groupId = -4 
+                and exists (
+                    select 1 from books 
+                    where type & ${BookType.audio} = 0
+                    and type & ${BookType.local} = 0
+                    and const.sumGroupId & `group` = 0
+                )
             )
-        )
-        or (groupId = -5 and show > 0 
-            and exists (
-                select 1 from books 
-                where type & ${BookType.audio} = 0
-                and type & ${BookType.local} > 0
-                and const.sumGroupId & `group` = 0
+            or (groupId = -5
+                and exists (
+                    select 1 from books 
+                    where type & ${BookType.audio} = 0
+                    and type & ${BookType.local} > 0
+                    and const.sumGroupId & `group` = 0
+                )
             )
         )
         ORDER BY `order`"""

+ 30 - 19
app/src/main/res/layout/activity_book_info.xml

@@ -105,27 +105,38 @@
                             android:paddingRight="10dp"
                             android:paddingBottom="3dp">
 
-                            <TextView
-                                android:id="@+id/tv_name"
+                            <HorizontalScrollView
                                 android:layout_width="match_parent"
-                                android:layout_height="wrap_content"
-                                android:layout_marginBottom="6dp"
-                                android:gravity="center"
-                                android:includeFontPadding="false"
-                                android:singleLine="true"
-                                android:text="@string/book_name"
-                                android:textColor="@color/primaryText"
-                                android:textSize="18sp"
-                                tools:ignore="RtlHardcoded" />
-
-                            <io.legado.app.ui.widget.LabelsBar
-                                android:id="@+id/lb_kind"
+                                android:layout_height="match_parent"
+                                android:scrollbars="none">
+                                <TextView
+                                    android:id="@+id/tv_name"
+                                    android:layout_width="wrap_content"
+                                    android:layout_height="wrap_content"
+                                    android:layout_marginBottom="6dp"
+                                    android:gravity="center"
+                                    android:layout_gravity="center"
+                                    android:includeFontPadding="false"
+                                    android:singleLine="true"
+                                    android:text="@string/book_name"
+                                    android:textColor="@color/primaryText"
+                                    android:textSize="18sp"
+                                    tools:ignore="RtlHardcoded" />
+                            </HorizontalScrollView>
+
+                            <HorizontalScrollView
                                 android:layout_width="match_parent"
-                                android:layout_height="wrap_content"
-                                android:layout_gravity="center"
-                                android:layout_marginBottom="6dp"
-                                android:gravity="center"
-                                android:visibility="gone" />
+                                android:layout_height="match_parent"
+                                android:scrollbars="none">
+                                <io.legado.app.ui.widget.LabelsBar
+                                    android:id="@+id/lb_kind"
+                                    android:layout_width="wrap_content"
+                                    android:layout_height="wrap_content"
+                                    android:layout_gravity="center"
+                                    android:gravity="center"
+                                    android:layout_marginBottom="6dp"
+                                    android:visibility="gone" />
+                            </HorizontalScrollView>
 
                         </LinearLayout>