diff --git a/code/th_14_panels.js b/code/th_14_panels.js index a690c3c..76f5f48 100644 --- a/code/th_14_panels.js +++ b/code/th_14_panels.js @@ -3684,12 +3684,12 @@ FloatBallAppWM.prototype.showPopupOverlay = function(opts) { var card = new android.widget.LinearLayout(context); card.setOrientation(android.widget.LinearLayout.VERTICAL); var cardLp = new android.widget.FrameLayout.LayoutParams( - self.dp(340), self.dp(520) + self.dp(400), self.dp(640) ); cardLp.gravity = android.view.Gravity.CENTER; card.setLayoutParams(cardLp); card.setBackground(self.ui.createRoundDrawable(isDark ? C.cardDark : C.cardLight, self.dp(16))); - card.setPadding(self.dp(12), self.dp(12), self.dp(12), self.dp(12)); + card.setPadding(self.dp(16), self.dp(16), self.dp(16), self.dp(16)); var header = new android.widget.LinearLayout(context); header.setOrientation(android.widget.LinearLayout.HORIZONTAL); @@ -3888,7 +3888,6 @@ FloatBallAppWM.prototype.showShortXIconPickerPopup = function(opts) { title: "\u9009\u62e9 ShortX \u56fe\u6807", onDismiss: onDismiss, builder: function(content, closePopup) { - // \u5b89\u5168\u83b7\u53d6\u989c\u8272\uff0c\u907f\u514d undefined var safeSubTextColor = subTextColor || 0xFF5F6368; var safeTextColor = textColor || 0xFF202124; var safePrimary = C.primary || 0xFF006C5F; @@ -3910,6 +3909,35 @@ FloatBallAppWM.prototype.showShortXIconPickerPopup = function(opts) { statusTv.setPadding(self.dp(8), self.dp(4), self.dp(8), self.dp(4)); content.addView(statusTv); + var pageBar = new android.widget.LinearLayout(context); + pageBar.setOrientation(android.widget.LinearLayout.HORIZONTAL); + pageBar.setGravity(android.view.Gravity.CENTER_VERTICAL); + pageBar.setPadding(self.dp(8), 0, self.dp(8), self.dp(6)); + + var btnPrev = self.ui.createFlatButton(self, "\u4e0a\u4e00\u9875", safeSubTextColor, function() { + if (popupState.currentPage > 0) { + popupState.currentPage--; + renderGrid(); + } + }); + pageBar.addView(btnPrev); + + var pageInfo = new android.widget.TextView(context); + pageInfo.setTextColor(safeTextColor); + pageInfo.setTextSize(android.util.TypedValue.COMPLEX_UNIT_SP, 12); + pageInfo.setGravity(android.view.Gravity.CENTER); + pageInfo.setPadding(self.dp(8), 0, self.dp(8), 0); + var pageInfoLp = new android.widget.LinearLayout.LayoutParams(0, android.widget.LinearLayout.LayoutParams.WRAP_CONTENT, 1); + pageInfo.setLayoutParams(pageInfoLp); + pageBar.addView(pageInfo); + + var btnNext = self.ui.createFlatButton(self, "\u4e0b\u4e00\u9875", safePrimary, function() { + popupState.currentPage++; + renderGrid(); + }); + pageBar.addView(btnNext); + content.addView(pageBar); + var gridScroll = new android.widget.ScrollView(context); var gridScrollLp = new android.widget.LinearLayout.LayoutParams(android.widget.LinearLayout.LayoutParams.MATCH_PARENT, 0); gridScrollLp.weight = 1; @@ -3965,10 +3993,12 @@ FloatBallAppWM.prototype.showShortXIconPickerPopup = function(opts) { grid.removeAllViews(); var q = String(searchEt.getText() || ""); var matched = filterCatalog(q, "all"); - - statusTv.setText("\u5171 " + matched.length + " \u4e2a\u56fe\u6807"); - + if (matched.length === 0) { + statusTv.setText("\u672a\u627e\u5230\u5339\u914d\u7684\u56fe\u6807"); + pageInfo.setText("0 / 0"); + btnPrev.setEnabled(false); + btnNext.setEnabled(false); var emptyTv = new android.widget.TextView(context); emptyTv.setText("\u672a\u627e\u5230\u5339\u914d\u7684\u56fe\u6807"); emptyTv.setTextColor(safeSubTextColor); @@ -3979,22 +4009,42 @@ FloatBallAppWM.prototype.showShortXIconPickerPopup = function(opts) { return; } - var cols = 4; + // \u81ea\u9002\u5e94\u5e03\u5c40\uff1a\u6839\u636e\u5f39\u7a97\u5bbd\u5ea6\u8ba1\u7b97\u5217\u6570\n var gridW = grid.getWidth(); + var gridH = grid.getHeight(); + if (gridW <= 0) gridW = self.dp(368); // 400 - 16*2 - 8*2 + if (gridH <= 0) gridH = self.dp(480); // 640 - 16*2 - \u5176\u4ed6UI\u7ea6180dp + resolvePageSize(gridW, gridH); + + var size = popupState.pageSize; + var cols = popupState.pageCols; + if (size < 1) size = 12; + if (cols < 1) cols = 4; + + var totalPages = Math.ceil(matched.length / size); + if (popupState.currentPage >= totalPages) popupState.currentPage = totalPages - 1; + if (popupState.currentPage < 0) popupState.currentPage = 0; + + var start = popupState.currentPage * size; + var pageItems = matched.slice(start, start + size); + + statusTv.setText("\u5171 " + matched.length + " \u4e2a\uff0c\u7b2c " + (popupState.currentPage + 1) + "/" + totalPages + " \u9875\uff0c\u6bcf\u9875 " + size + " \u4e2a"); + pageInfo.setText((popupState.currentPage + 1) + " / " + totalPages); + btnPrev.setEnabled(popupState.currentPage > 0); + btnNext.setEnabled(popupState.currentPage < totalPages - 1); + grid.setColumnCount(cols); var idx; - for (idx = 0; idx < matched.length; idx++) { + for (idx = 0; idx < pageItems.length; idx++) { (function(item) { var cell = new android.widget.LinearLayout(context); cell.setOrientation(android.widget.LinearLayout.VERTICAL); cell.setGravity(android.view.Gravity.CENTER_HORIZONTAL); cell.setPadding(self.dp(4), self.dp(6), self.dp(4), self.dp(6)); cell.setClickable(true); - + var bgColor = safeCard; - try { - bgColor = self.withAlpha(safeCard, 0.96); - } catch(e) {} + try { bgColor = self.withAlpha(safeCard, 0.96); } catch(e) {} cell.setBackground(self.ui.createRoundDrawable(bgColor, self.dp(10))); var iv = new android.widget.ImageView(context); @@ -4025,10 +4075,10 @@ FloatBallAppWM.prototype.showShortXIconPickerPopup = function(opts) { cell.addView(tv); if (selectedName === item.name) { - try { + try { var selBg = 0x33006C5F; try { selBg = self.withAlpha(safePrimary, 0.2); } catch(e) {} - cell.setBackground(self.ui.createRoundDrawable(selBg, self.dp(10))); + cell.setBackground(self.ui.createRoundDrawable(selBg, self.dp(10))); } catch(e) {} try { tv.setTextColor(safePrimary); } catch(e) {} } else { @@ -4045,11 +4095,11 @@ FloatBallAppWM.prototype.showShortXIconPickerPopup = function(opts) { })); var cellLp = new android.widget.GridLayout.LayoutParams(); - cellLp.width = self.dp(72); + cellLp.width = popupState.cellWidthPx || self.dp(72); cellLp.height = android.widget.GridLayout.LayoutParams.WRAP_CONTENT; cell.setLayoutParams(cellLp); grid.addView(cell); - })(matched[idx]); + })(pageItems[idx]); } } catch(eRender) { safeLog(self.L, 'e', "renderGrid err=" + String(eRender)); @@ -4066,7 +4116,6 @@ FloatBallAppWM.prototype.showShortXIconPickerPopup = function(opts) { afterTextChanged: function() {} })); - // 直接渲染,不依赖分页 renderGrid(); } });