feat: unify picker island style
This commit is contained in:
@@ -136,6 +136,31 @@ FloatBallAppWM.prototype.addSettingsHomeDashedDivider = function(parent) {
|
|||||||
parent.addView(line, lp);
|
parent.addView(line, lp);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
FloatBallAppWM.prototype.getIslandPickerTheme = function() {
|
||||||
|
var isDark = this.isDarkTheme();
|
||||||
|
var C = this.ui.colors;
|
||||||
|
var T = this.getAnimalIslandTheme();
|
||||||
|
var cfgTpl = null;
|
||||||
|
try { cfgTpl = this.state.pendingUserCfg ? this.state.pendingUserCfg : this.config; } catch(eCfg) { cfgTpl = this.config; }
|
||||||
|
try { this.applySettingsTheme(T, isDark, C, cfgTpl); } catch(eTheme) {}
|
||||||
|
return {
|
||||||
|
isDark: isDark,
|
||||||
|
C: C,
|
||||||
|
T: T,
|
||||||
|
bg: T.bg,
|
||||||
|
card: T.card,
|
||||||
|
card2: T.card2,
|
||||||
|
text: T.text,
|
||||||
|
sub: T.sub,
|
||||||
|
primary: T.primary,
|
||||||
|
primaryDeep: T.primaryDeep,
|
||||||
|
primarySoft: T.primarySoft,
|
||||||
|
stroke: T.stroke,
|
||||||
|
onPrimary: T.onPrimary
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
FloatBallAppWM.prototype.createSettingsHomeEntry = function(parent, title, desc, actionText, onClick) {
|
FloatBallAppWM.prototype.createSettingsHomeEntry = function(parent, title, desc, actionText, onClick) {
|
||||||
var self = this;
|
var self = this;
|
||||||
var isDark = this.isDarkTheme();
|
var isDark = this.isDarkTheme();
|
||||||
@@ -4221,12 +4246,14 @@ FloatBallAppWM.prototype.showPopupOverlay = function(opts) {
|
|||||||
var onDismiss = (typeof opt.onDismiss === "function") ? opt.onDismiss : null;
|
var onDismiss = (typeof opt.onDismiss === "function") ? opt.onDismiss : null;
|
||||||
var builder = (typeof opt.builder === "function") ? opt.builder : null;
|
var builder = (typeof opt.builder === "function") ? opt.builder : null;
|
||||||
|
|
||||||
var isDark = this.isDarkTheme();
|
var PT = this.getIslandPickerTheme ? this.getIslandPickerTheme() : null;
|
||||||
|
var isDark = PT ? PT.isDark : this.isDarkTheme();
|
||||||
var C = this.ui.colors;
|
var C = this.ui.colors;
|
||||||
|
var T = PT ? PT.T : this.getAnimalIslandTheme();
|
||||||
var wm = this.state.wm;
|
var wm = this.state.wm;
|
||||||
|
|
||||||
var root = new android.widget.FrameLayout(context);
|
var root = new android.widget.FrameLayout(context);
|
||||||
root.setBackgroundColor(self.withAlpha(isDark ? 0xFF000000 : 0xFFFFFFFF, 0.55));
|
root.setBackgroundColor(self.withAlpha(isDark ? 0xFF000000 : 0xFFFFFFFF, isDark ? 0.58 : 0.42));
|
||||||
root.setClickable(true);
|
root.setClickable(true);
|
||||||
|
|
||||||
var card = new android.widget.LinearLayout(context);
|
var card = new android.widget.LinearLayout(context);
|
||||||
@@ -4236,27 +4263,32 @@ FloatBallAppWM.prototype.showPopupOverlay = function(opts) {
|
|||||||
);
|
);
|
||||||
cardLp.gravity = android.view.Gravity.CENTER;
|
cardLp.gravity = android.view.Gravity.CENTER;
|
||||||
card.setLayoutParams(cardLp);
|
card.setLayoutParams(cardLp);
|
||||||
card.setBackground(self.ui.createRoundDrawable(isDark ? C.cardDark : C.cardLight, self.dp(16)));
|
card.setBackground(self.ui.createStrokeDrawable(T.card, self.withAlpha(T.primaryDeep, isDark ? 0.28 : 0.22), self.dp(1), self.dp(24)));
|
||||||
card.setPadding(self.dp(12), self.dp(12), self.dp(12), self.dp(12));
|
card.setPadding(self.dp(14), self.dp(12), self.dp(14), self.dp(12));
|
||||||
|
try { card.setElevation(self.dp(10)); } catch(eCardElev) {}
|
||||||
|
|
||||||
var header = new android.widget.LinearLayout(context);
|
var header = new android.widget.LinearLayout(context);
|
||||||
header.setOrientation(android.widget.LinearLayout.HORIZONTAL);
|
header.setOrientation(android.widget.LinearLayout.HORIZONTAL);
|
||||||
header.setGravity(android.view.Gravity.CENTER_VERTICAL);
|
header.setGravity(android.view.Gravity.CENTER_VERTICAL);
|
||||||
var titleTv = new android.widget.TextView(context);
|
var titleTv = new android.widget.TextView(context);
|
||||||
titleTv.setText(title);
|
titleTv.setText("❧ " + title + " ❧");
|
||||||
titleTv.setTextColor(isDark ? C.textPriDark : C.textPriLight);
|
titleTv.setTextColor(T.text);
|
||||||
titleTv.setTextSize(android.util.TypedValue.COMPLEX_UNIT_SP, 16);
|
titleTv.setTextSize(android.util.TypedValue.COMPLEX_UNIT_SP, 16);
|
||||||
titleTv.setTypeface(null, android.graphics.Typeface.BOLD);
|
titleTv.setTypeface(null, android.graphics.Typeface.BOLD);
|
||||||
header.addView(titleTv, new android.widget.LinearLayout.LayoutParams(0, android.widget.LinearLayout.LayoutParams.WRAP_CONTENT, 1));
|
header.addView(titleTv, new android.widget.LinearLayout.LayoutParams(0, android.widget.LinearLayout.LayoutParams.WRAP_CONTENT, 1));
|
||||||
|
|
||||||
var closeBtn = self.ui.createFlatButton(self, "关闭", C.primary, function() {
|
var closeBtn = self.ui.createFlatButton(self, "✕", T.primaryDeep, function() {
|
||||||
closePopup();
|
closePopup();
|
||||||
});
|
});
|
||||||
header.addView(closeBtn);
|
closeBtn.setTextSize(android.util.TypedValue.COMPLEX_UNIT_SP, 18);
|
||||||
|
closeBtn.setTypeface(null, android.graphics.Typeface.BOLD);
|
||||||
|
try { closeBtn.setBackground(self.ui.createStrokeDrawable(T.primarySoft, self.withAlpha(T.primaryDeep, isDark ? 0.30 : 0.22), self.dp(1), self.dp(18))); } catch(eCloseBg) {}
|
||||||
|
header.addView(closeBtn, new android.widget.LinearLayout.LayoutParams(self.dp(42), self.dp(38)));
|
||||||
card.addView(header);
|
card.addView(header);
|
||||||
|
|
||||||
var content = new android.widget.LinearLayout(context);
|
var content = new android.widget.LinearLayout(context);
|
||||||
content.setOrientation(android.widget.LinearLayout.VERTICAL);
|
content.setOrientation(android.widget.LinearLayout.VERTICAL);
|
||||||
|
content.setPadding(0, self.dp(8), 0, 0);
|
||||||
var contentLp = new android.widget.LinearLayout.LayoutParams(
|
var contentLp = new android.widget.LinearLayout.LayoutParams(
|
||||||
android.widget.LinearLayout.LayoutParams.MATCH_PARENT,
|
android.widget.LinearLayout.LayoutParams.MATCH_PARENT,
|
||||||
android.widget.LinearLayout.LayoutParams.MATCH_PARENT
|
android.widget.LinearLayout.LayoutParams.MATCH_PARENT
|
||||||
@@ -4280,11 +4312,12 @@ FloatBallAppWM.prototype.showPopupOverlay = function(opts) {
|
|||||||
android.view.WindowManager.LayoutParams.FLAG_DIM_BEHIND,
|
android.view.WindowManager.LayoutParams.FLAG_DIM_BEHIND,
|
||||||
android.graphics.PixelFormat.TRANSLUCENT
|
android.graphics.PixelFormat.TRANSLUCENT
|
||||||
);
|
);
|
||||||
lp.dimAmount = 0.5;
|
lp.dimAmount = isDark ? 0.55 : 0.38;
|
||||||
lp.gravity = android.view.Gravity.TOP | android.view.Gravity.START;
|
lp.gravity = android.view.Gravity.TOP | android.view.Gravity.START;
|
||||||
lp.x = 0;
|
lp.x = 0;
|
||||||
lp.y = 0;
|
lp.y = 0;
|
||||||
lp.softInputMode = android.view.WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE;
|
lp.softInputMode = android.view.WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING
|
||||||
|
| android.view.WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN;
|
||||||
|
|
||||||
try { wm.addView(root, lp); } catch(eAdd) { safeLog(self.L, 'e', "popup addView fail: " + String(eAdd)); return null; }
|
try { wm.addView(root, lp); } catch(eAdd) { safeLog(self.L, 'e', "popup addView fail: " + String(eAdd)); return null; }
|
||||||
|
|
||||||
@@ -4321,12 +4354,14 @@ FloatBallAppWM.prototype.showShortXIconPickerPopup = function(opts) {
|
|||||||
|
|
||||||
var selectedName = currentName;
|
var selectedName = currentName;
|
||||||
var popupState = { currentPage: 0 };
|
var popupState = { currentPage: 0 };
|
||||||
var isDark = self.isDarkTheme();
|
var PT = self.getIslandPickerTheme ? self.getIslandPickerTheme() : null;
|
||||||
|
var isDark = PT ? PT.isDark : self.isDarkTheme();
|
||||||
var C = self.ui.colors;
|
var C = self.ui.colors;
|
||||||
var textColor = isDark ? C.textPriDark : C.textPriLight;
|
var T = PT ? PT.T : self.getAnimalIslandTheme();
|
||||||
var subTextColor = isDark ? C.textSecDark : C.textSecLight;
|
var textColor = PT ? PT.text : (isDark ? C.textPriDark : C.textPriLight);
|
||||||
var cardColor = isDark ? C.cardDark : C.cardLight;
|
var subTextColor = PT ? PT.sub : (isDark ? C.textSecDark : C.textSecLight);
|
||||||
var bgColor = isDark ? C.bgDark : C.bgLight;
|
var cardColor = PT ? PT.card2 : (isDark ? C.cardDark : C.cardLight);
|
||||||
|
var bgColor = PT ? PT.bg : (isDark ? C.bgDark : C.bgLight);
|
||||||
var wm = self.state.wm;
|
var wm = self.state.wm;
|
||||||
|
|
||||||
function filterCatalog(q) {
|
function filterCatalog(q) {
|
||||||
@@ -4386,14 +4421,14 @@ FloatBallAppWM.prototype.showShortXIconPickerPopup = function(opts) {
|
|||||||
var pageSize = colCount * rowCount;
|
var pageSize = colCount * rowCount;
|
||||||
|
|
||||||
var rootOverlay = new android.widget.FrameLayout(context);
|
var rootOverlay = new android.widget.FrameLayout(context);
|
||||||
try { rootOverlay.setBackgroundColor(android.graphics.Color.parseColor("#33000000")); }
|
try { rootOverlay.setBackgroundColor(self.withAlpha(isDark ? 0xFF000000 : 0xFFFFFFFF, isDark ? 0.58 : 0.42)); }
|
||||||
catch(eOverlayBg) { rootOverlay.setBackgroundColor(0x33000000); }
|
catch(eOverlayBg) { rootOverlay.setBackgroundColor(0x33000000); }
|
||||||
rootOverlay.setClickable(true);
|
rootOverlay.setClickable(true);
|
||||||
|
|
||||||
var card = new android.widget.LinearLayout(context);
|
var card = new android.widget.LinearLayout(context);
|
||||||
card.setOrientation(android.widget.LinearLayout.VERTICAL);
|
card.setOrientation(android.widget.LinearLayout.VERTICAL);
|
||||||
card.setPadding(padH, padV, padH, padV);
|
card.setPadding(padH, padV, padH, padV);
|
||||||
card.setBackground(self.ui.createRoundDrawable(bgColor, self.dp(18)));
|
card.setBackground(self.ui.createStrokeDrawable(T.card, self.withAlpha(T.primaryDeep, isDark ? 0.28 : 0.22), self.dp(1), self.dp(24)));
|
||||||
try { card.setElevation(self.dp(10)); } catch(eCardElev) { safeLog(null, 'e', "catch " + String(eCardElev)); }
|
try { card.setElevation(self.dp(10)); } catch(eCardElev) { safeLog(null, 'e', "catch " + String(eCardElev)); }
|
||||||
|
|
||||||
// 与 ToolHub 设置页外壳保持同款宽高、圆角、居中方式。
|
// 与 ToolHub 设置页外壳保持同款宽高、圆角、居中方式。
|
||||||
@@ -4439,15 +4474,17 @@ FloatBallAppWM.prototype.showShortXIconPickerPopup = function(opts) {
|
|||||||
header.setOrientation(android.widget.LinearLayout.HORIZONTAL);
|
header.setOrientation(android.widget.LinearLayout.HORIZONTAL);
|
||||||
header.setGravity(android.view.Gravity.CENTER_VERTICAL);
|
header.setGravity(android.view.Gravity.CENTER_VERTICAL);
|
||||||
var titleTv = new android.widget.TextView(context);
|
var titleTv = new android.widget.TextView(context);
|
||||||
titleTv.setText("\u9009\u62e9 ShortX \u56fe\u6807");
|
titleTv.setText("❧ 岛上图标库 ❧");
|
||||||
titleTv.setTextColor(textColor);
|
titleTv.setTextColor(textColor);
|
||||||
titleTv.setTextSize(android.util.TypedValue.COMPLEX_UNIT_SP, 16);
|
titleTv.setTextSize(android.util.TypedValue.COMPLEX_UNIT_SP, 16);
|
||||||
titleTv.setTypeface(null, android.graphics.Typeface.BOLD);
|
titleTv.setTypeface(null, android.graphics.Typeface.BOLD);
|
||||||
header.addView(titleTv, new android.widget.LinearLayout.LayoutParams(0, android.widget.LinearLayout.LayoutParams.WRAP_CONTENT, 1));
|
header.addView(titleTv, new android.widget.LinearLayout.LayoutParams(0, android.widget.LinearLayout.LayoutParams.WRAP_CONTENT, 1));
|
||||||
|
|
||||||
var closeBtn = self.ui.createFlatButton(self, "✕", subTextColor, function() { dismiss(); });
|
var closeBtn = self.ui.createFlatButton(self, "✕", T.primaryDeep, function() { dismiss(); });
|
||||||
closeBtn.setTextSize(android.util.TypedValue.COMPLEX_UNIT_SP, 18);
|
closeBtn.setTextSize(android.util.TypedValue.COMPLEX_UNIT_SP, 18);
|
||||||
|
closeBtn.setTypeface(null, android.graphics.Typeface.BOLD);
|
||||||
closeBtn.setPadding(self.dp(8), 0, self.dp(8), 0);
|
closeBtn.setPadding(self.dp(8), 0, self.dp(8), 0);
|
||||||
|
try { closeBtn.setBackground(self.ui.createStrokeDrawable(T.primarySoft, self.withAlpha(T.primaryDeep, isDark ? 0.30 : 0.22), self.dp(1), self.dp(18))); } catch(eCloseBg) {}
|
||||||
header.addView(closeBtn, new android.widget.LinearLayout.LayoutParams(self.dp(42), self.dp(38)));
|
header.addView(closeBtn, new android.widget.LinearLayout.LayoutParams(self.dp(42), self.dp(38)));
|
||||||
card.addView(header);
|
card.addView(header);
|
||||||
|
|
||||||
@@ -4456,12 +4493,12 @@ FloatBallAppWM.prototype.showShortXIconPickerPopup = function(opts) {
|
|||||||
searchEt.setTextSize(android.util.TypedValue.COMPLEX_UNIT_SP, 13);
|
searchEt.setTextSize(android.util.TypedValue.COMPLEX_UNIT_SP, 13);
|
||||||
searchEt.setTextColor(textColor);
|
searchEt.setTextColor(textColor);
|
||||||
try { searchEt.setHintTextColor(subTextColor); } catch(e) { safeLog(null, 'e', "catch " + String(e)); }
|
try { searchEt.setHintTextColor(subTextColor); } catch(e) { safeLog(null, 'e', "catch " + String(e)); }
|
||||||
searchEt.setHint("\u641c\u7d22\u56fe\u6807\u540d\uff0c\u5982 share / home");
|
searchEt.setHint("寻找岛上图标,如 share / home");
|
||||||
searchEt.setSingleLine(true);
|
searchEt.setSingleLine(true);
|
||||||
searchEt.setFocusable(true);
|
searchEt.setFocusable(true);
|
||||||
searchEt.setFocusableInTouchMode(true);
|
searchEt.setFocusableInTouchMode(true);
|
||||||
searchEt.setPadding(self.dp(10), self.dp(8), self.dp(10), self.dp(8));
|
searchEt.setPadding(self.dp(10), self.dp(8), self.dp(10), self.dp(8));
|
||||||
searchEt.setBackground(self.ui.createStrokeDrawable(isDark ? C.inputBgDark : C.inputBgLight, isDark ? C.dividerDark : C.dividerLight, self.dp(1), self.dp(8)));
|
searchEt.setBackground(self.ui.createStrokeDrawable(T.card2, self.withAlpha(T.primaryDeep, isDark ? 0.24 : 0.18), self.dp(1), self.dp(16)));
|
||||||
var searchLp = new android.widget.LinearLayout.LayoutParams(android.widget.LinearLayout.LayoutParams.MATCH_PARENT, android.widget.LinearLayout.LayoutParams.WRAP_CONTENT);
|
var searchLp = new android.widget.LinearLayout.LayoutParams(android.widget.LinearLayout.LayoutParams.MATCH_PARENT, android.widget.LinearLayout.LayoutParams.WRAP_CONTENT);
|
||||||
searchLp.setMargins(0, self.dp(8), 0, self.dp(6));
|
searchLp.setMargins(0, self.dp(8), 0, self.dp(6));
|
||||||
searchEt.setLayoutParams(searchLp);
|
searchEt.setLayoutParams(searchLp);
|
||||||
@@ -4490,7 +4527,7 @@ FloatBallAppWM.prototype.showShortXIconPickerPopup = function(opts) {
|
|||||||
pageBar.setGravity(android.view.Gravity.CENTER_VERTICAL);
|
pageBar.setGravity(android.view.Gravity.CENTER_VERTICAL);
|
||||||
pageBar.setPadding(self.dp(8), 0, self.dp(8), self.dp(6));
|
pageBar.setPadding(self.dp(8), 0, self.dp(8), self.dp(6));
|
||||||
|
|
||||||
var btnPrev = self.ui.createFlatButton(self, "\u4e0a\u4e00\u9875", subTextColor, function() {
|
var btnPrev = self.ui.createFlatButton(self, "上一页", T.primaryDeep, function() {
|
||||||
if (popupState.currentPage > 0) { popupState.currentPage--; renderGrid(); }
|
if (popupState.currentPage > 0) { popupState.currentPage--; renderGrid(); }
|
||||||
});
|
});
|
||||||
pageBar.addView(btnPrev);
|
pageBar.addView(btnPrev);
|
||||||
@@ -4503,7 +4540,7 @@ FloatBallAppWM.prototype.showShortXIconPickerPopup = function(opts) {
|
|||||||
pageInfo.setLayoutParams(new android.widget.LinearLayout.LayoutParams(0, android.widget.LinearLayout.LayoutParams.WRAP_CONTENT, 1));
|
pageInfo.setLayoutParams(new android.widget.LinearLayout.LayoutParams(0, android.widget.LinearLayout.LayoutParams.WRAP_CONTENT, 1));
|
||||||
pageBar.addView(pageInfo);
|
pageBar.addView(pageInfo);
|
||||||
|
|
||||||
var btnNext = self.ui.createFlatButton(self, "\u4e0b\u4e00\u9875", C.primary, function() {
|
var btnNext = self.ui.createFlatButton(self, "下一页", T.primaryDeep, function() {
|
||||||
popupState.currentPage++; renderGrid();
|
popupState.currentPage++; renderGrid();
|
||||||
});
|
});
|
||||||
pageBar.addView(btnNext);
|
pageBar.addView(btnNext);
|
||||||
@@ -4538,7 +4575,7 @@ FloatBallAppWM.prototype.showShortXIconPickerPopup = function(opts) {
|
|||||||
selectNameTv.setLayoutParams(new android.widget.LinearLayout.LayoutParams(0, android.widget.LinearLayout.LayoutParams.WRAP_CONTENT, 1));
|
selectNameTv.setLayoutParams(new android.widget.LinearLayout.LayoutParams(0, android.widget.LinearLayout.LayoutParams.WRAP_CONTENT, 1));
|
||||||
selectRow.addView(selectNameTv);
|
selectRow.addView(selectNameTv);
|
||||||
|
|
||||||
var selectConfirm = self.ui.createSolidButton(self, "\u786e\u5b9a", C.primary, android.graphics.Color.WHITE, function() {
|
var selectConfirm = self.ui.createSolidButton(self, "带回小岛", T.primary, T.onPrimary, function() {
|
||||||
self.touchActivity();
|
self.touchActivity();
|
||||||
try {
|
try {
|
||||||
if (typeof onSelect === "function") onSelect(selectedName);
|
if (typeof onSelect === "function") onSelect(selectedName);
|
||||||
@@ -4559,7 +4596,7 @@ FloatBallAppWM.prototype.showShortXIconPickerPopup = function(opts) {
|
|||||||
if (dr) selectPreview.setImageDrawable(dr);
|
if (dr) selectPreview.setImageDrawable(dr);
|
||||||
else selectPreview.setImageDrawable(null);
|
else selectPreview.setImageDrawable(null);
|
||||||
} else {
|
} else {
|
||||||
selectNameTv.setText("\u672a\u9009\u62e9");
|
selectNameTv.setText("还没选图标");
|
||||||
selectPreview.setImageDrawable(null);
|
selectPreview.setImageDrawable(null);
|
||||||
}
|
}
|
||||||
} catch(e) { safeLog(null, 'e', "catch " + String(e)); }
|
} catch(e) { safeLog(null, 'e', "catch " + String(e)); }
|
||||||
@@ -4578,14 +4615,14 @@ FloatBallAppWM.prototype.showShortXIconPickerPopup = function(opts) {
|
|||||||
var start = popupState.currentPage * pageSize;
|
var start = popupState.currentPage * pageSize;
|
||||||
var pageItems = matched.slice(start, start + pageSize);
|
var pageItems = matched.slice(start, start + pageSize);
|
||||||
|
|
||||||
statusTv.setText("\u5171 " + matched.length + " \u4e2a\uff0c\u7b2c " + (popupState.currentPage + 1) + "/" + totalPages + " \u9875\uff0c\u6bcf\u9875 " + pageSize + " \u4e2a");
|
statusTv.setText("共 " + matched.length + " 个图标 · 第 " + (popupState.currentPage + 1) + "/" + totalPages + " 页");
|
||||||
pageInfo.setText((popupState.currentPage + 1) + " / " + totalPages);
|
pageInfo.setText((popupState.currentPage + 1) + " / " + totalPages);
|
||||||
btnPrev.setEnabled(popupState.currentPage > 0);
|
btnPrev.setEnabled(popupState.currentPage > 0);
|
||||||
btnNext.setEnabled(popupState.currentPage < totalPages - 1);
|
btnNext.setEnabled(popupState.currentPage < totalPages - 1);
|
||||||
|
|
||||||
if (pageItems.length === 0) {
|
if (pageItems.length === 0) {
|
||||||
var emptyTv = new android.widget.TextView(context);
|
var emptyTv = new android.widget.TextView(context);
|
||||||
emptyTv.setText("\u672a\u627e\u5230\u5339\u914d\u7684\u56fe\u6807");
|
emptyTv.setText("没有找到这枚小图标");
|
||||||
emptyTv.setTextColor(subTextColor);
|
emptyTv.setTextColor(subTextColor);
|
||||||
emptyTv.setTextSize(android.util.TypedValue.COMPLEX_UNIT_SP, 14);
|
emptyTv.setTextSize(android.util.TypedValue.COMPLEX_UNIT_SP, 14);
|
||||||
emptyTv.setGravity(android.view.Gravity.CENTER);
|
emptyTv.setGravity(android.view.Gravity.CENTER);
|
||||||
@@ -4604,9 +4641,9 @@ FloatBallAppWM.prototype.showShortXIconPickerPopup = function(opts) {
|
|||||||
cell.setPadding(self.dp(4), self.dp(6), self.dp(4), self.dp(6));
|
cell.setPadding(self.dp(4), self.dp(6), self.dp(4), self.dp(6));
|
||||||
cell.setClickable(true);
|
cell.setClickable(true);
|
||||||
|
|
||||||
var bgColor = cardColor;
|
var cellBg = cardColor;
|
||||||
try { bgColor = self.withAlpha(cardColor, 0.96); } catch(e) { safeLog(null, 'e', "catch " + String(e)); }
|
try { cellBg = self.withAlpha(cardColor, 0.96); } catch(e) { safeLog(null, 'e', "catch " + String(e)); }
|
||||||
cell.setBackground(self.ui.createRoundDrawable(bgColor, self.dp(10)));
|
cell.setBackground(self.ui.createStrokeDrawable(cellBg, self.withAlpha(T.primaryDeep, isDark ? 0.18 : 0.12), self.dp(1), self.dp(14)));
|
||||||
|
|
||||||
var iv = new android.widget.ImageView(context);
|
var iv = new android.widget.ImageView(context);
|
||||||
iv.setLayoutParams(new android.widget.LinearLayout.LayoutParams(iconSize, iconSize));
|
iv.setLayoutParams(new android.widget.LinearLayout.LayoutParams(iconSize, iconSize));
|
||||||
@@ -4627,8 +4664,8 @@ FloatBallAppWM.prototype.showShortXIconPickerPopup = function(opts) {
|
|||||||
cell.addView(tv);
|
cell.addView(tv);
|
||||||
|
|
||||||
if (selectedName === item.name) {
|
if (selectedName === item.name) {
|
||||||
try { cell.setBackground(self.ui.createRoundDrawable(self.withAlpha(C.primary, 0.2), self.dp(10))); } catch(e) { safeLog(null, 'e', "catch " + String(e)); }
|
try { cell.setBackground(self.ui.createStrokeDrawable(T.primarySoft, self.withAlpha(T.primaryDeep, isDark ? 0.42 : 0.34), self.dp(2), self.dp(14))); } catch(e) { safeLog(null, 'e', "catch " + String(e)); }
|
||||||
try { tv.setTextColor(C.primary); } catch(e) { safeLog(null, 'e', "catch " + String(e)); }
|
try { tv.setTextColor(T.primaryDeep); } catch(e) { safeLog(null, 'e', "catch " + String(e)); }
|
||||||
} else {
|
} else {
|
||||||
try { tv.setTextColor(subTextColor); } catch(e) { safeLog(null, 'e', "catch " + String(e)); }
|
try { tv.setTextColor(subTextColor); } catch(e) { safeLog(null, 'e', "catch " + String(e)); }
|
||||||
}
|
}
|
||||||
@@ -4682,10 +4719,12 @@ FloatBallAppWM.prototype.showColorPickerPopup = function(opts) {
|
|||||||
var onSelect = (typeof opt.onSelect === "function") ? opt.onSelect : null;
|
var onSelect = (typeof opt.onSelect === "function") ? opt.onSelect : null;
|
||||||
var onDismiss = (typeof opt.onDismiss === "function") ? opt.onDismiss : null;
|
var onDismiss = (typeof opt.onDismiss === "function") ? opt.onDismiss : null;
|
||||||
|
|
||||||
var isDark = this.isDarkTheme();
|
var PT = this.getIslandPickerTheme ? this.getIslandPickerTheme() : null;
|
||||||
|
var isDark = PT ? PT.isDark : this.isDarkTheme();
|
||||||
var C = this.ui.colors;
|
var C = this.ui.colors;
|
||||||
var textColor = isDark ? C.textPriDark : C.textPriLight;
|
var T = PT ? PT.T : this.getAnimalIslandTheme();
|
||||||
var subTextColor = isDark ? C.textSecDark : C.textSecLight;
|
var textColor = PT ? PT.text : (isDark ? C.textPriDark : C.textPriLight);
|
||||||
|
var subTextColor = PT ? PT.sub : (isDark ? C.textSecDark : C.textSecLight);
|
||||||
|
|
||||||
function getThemeTintHex() {
|
function getThemeTintHex() {
|
||||||
try {
|
try {
|
||||||
@@ -4782,14 +4821,15 @@ FloatBallAppWM.prototype.showColorPickerPopup = function(opts) {
|
|||||||
var currentAlphaByte = extractTintAlphaByte(currentColor);
|
var currentAlphaByte = extractTintAlphaByte(currentColor);
|
||||||
|
|
||||||
var popupResult = self.showPopupOverlay({
|
var popupResult = self.showPopupOverlay({
|
||||||
title: "选择颜色",
|
title: "换颜色",
|
||||||
onDismiss: onDismiss,
|
onDismiss: onDismiss,
|
||||||
builder: function(content, closePopup) {
|
builder: function(content, closePopup) {
|
||||||
// 图标预览区
|
// 图标预览区
|
||||||
var previewRow = new android.widget.LinearLayout(context);
|
var previewRow = new android.widget.LinearLayout(context);
|
||||||
previewRow.setOrientation(android.widget.LinearLayout.HORIZONTAL);
|
previewRow.setOrientation(android.widget.LinearLayout.HORIZONTAL);
|
||||||
previewRow.setGravity(android.view.Gravity.CENTER_VERTICAL);
|
previewRow.setGravity(android.view.Gravity.CENTER_VERTICAL);
|
||||||
previewRow.setPadding(self.dp(12), self.dp(8), self.dp(12), self.dp(8));
|
previewRow.setPadding(self.dp(12), self.dp(10), self.dp(12), self.dp(10));
|
||||||
|
previewRow.setBackground(self.ui.createStrokeDrawable(T.primarySoft, self.withAlpha(T.primaryDeep, isDark ? 0.24 : 0.18), self.dp(1), self.dp(18)));
|
||||||
|
|
||||||
var previewIv = new android.widget.ImageView(context);
|
var previewIv = new android.widget.ImageView(context);
|
||||||
previewIv.setLayoutParams(new android.widget.LinearLayout.LayoutParams(self.dp(48), self.dp(48)));
|
previewIv.setLayoutParams(new android.widget.LinearLayout.LayoutParams(self.dp(48), self.dp(48)));
|
||||||
@@ -4797,7 +4837,7 @@ FloatBallAppWM.prototype.showColorPickerPopup = function(opts) {
|
|||||||
previewRow.addView(previewIv);
|
previewRow.addView(previewIv);
|
||||||
|
|
||||||
var previewLabel = new android.widget.TextView(context);
|
var previewLabel = new android.widget.TextView(context);
|
||||||
previewLabel.setText("图标预览");
|
previewLabel.setText("小图标试衣间");
|
||||||
previewLabel.setTextColor(subTextColor);
|
previewLabel.setTextColor(subTextColor);
|
||||||
previewLabel.setTextSize(android.util.TypedValue.COMPLEX_UNIT_SP, 12);
|
previewLabel.setTextSize(android.util.TypedValue.COMPLEX_UNIT_SP, 12);
|
||||||
previewLabel.setPadding(self.dp(12), 0, 0, 0);
|
previewLabel.setPadding(self.dp(12), 0, 0, 0);
|
||||||
@@ -4830,7 +4870,7 @@ FloatBallAppWM.prototype.showColorPickerPopup = function(opts) {
|
|||||||
|
|
||||||
// ========== 最近使用颜色 ==========
|
// ========== 最近使用颜色 ==========
|
||||||
var recentTitle = new android.widget.TextView(context);
|
var recentTitle = new android.widget.TextView(context);
|
||||||
recentTitle.setText("最近使用");
|
recentTitle.setText("最近用过的小颜色");
|
||||||
recentTitle.setTextColor(subTextColor);
|
recentTitle.setTextColor(subTextColor);
|
||||||
recentTitle.setTextSize(android.util.TypedValue.COMPLEX_UNIT_SP, 12);
|
recentTitle.setTextSize(android.util.TypedValue.COMPLEX_UNIT_SP, 12);
|
||||||
recentTitle.setPadding(self.dp(12), self.dp(8), self.dp(12), self.dp(4));
|
recentTitle.setPadding(self.dp(12), self.dp(8), self.dp(12), self.dp(4));
|
||||||
@@ -4842,7 +4882,7 @@ FloatBallAppWM.prototype.showColorPickerPopup = function(opts) {
|
|||||||
content.addView(recentGrid);
|
content.addView(recentGrid);
|
||||||
|
|
||||||
var recentEmptyTv = new android.widget.TextView(context);
|
var recentEmptyTv = new android.widget.TextView(context);
|
||||||
recentEmptyTv.setText("暂无最近颜色");
|
recentEmptyTv.setText("还没有最近颜色");
|
||||||
recentEmptyTv.setTextColor(subTextColor);
|
recentEmptyTv.setTextColor(subTextColor);
|
||||||
recentEmptyTv.setTextSize(android.util.TypedValue.COMPLEX_UNIT_SP, 11);
|
recentEmptyTv.setTextSize(android.util.TypedValue.COMPLEX_UNIT_SP, 11);
|
||||||
recentEmptyTv.setPadding(self.dp(12), self.dp(4), self.dp(12), self.dp(8));
|
recentEmptyTv.setPadding(self.dp(12), self.dp(4), self.dp(12), self.dp(8));
|
||||||
@@ -4885,7 +4925,7 @@ FloatBallAppWM.prototype.showColorPickerPopup = function(opts) {
|
|||||||
var border = new android.graphics.drawable.GradientDrawable();
|
var border = new android.graphics.drawable.GradientDrawable();
|
||||||
border.setColor(android.graphics.Color.TRANSPARENT);
|
border.setColor(android.graphics.Color.TRANSPARENT);
|
||||||
border.setCornerRadius(self.dp(5));
|
border.setCornerRadius(self.dp(5));
|
||||||
border.setStroke(self.dp(2), C.primary);
|
border.setStroke(self.dp(2), T.primaryDeep);
|
||||||
cell.setForeground(border);
|
cell.setForeground(border);
|
||||||
} catch(e) { safeLog(null, 'e', "catch " + String(e)); }
|
} catch(e) { safeLog(null, 'e', "catch " + String(e)); }
|
||||||
}
|
}
|
||||||
@@ -4913,7 +4953,7 @@ FloatBallAppWM.prototype.showColorPickerPopup = function(opts) {
|
|||||||
|
|
||||||
// 21 色常用颜色
|
// 21 色常用颜色
|
||||||
var commonTitle = new android.widget.TextView(context);
|
var commonTitle = new android.widget.TextView(context);
|
||||||
commonTitle.setText("常用颜色");
|
commonTitle.setText("糖果常用色");
|
||||||
commonTitle.setTextColor(subTextColor);
|
commonTitle.setTextColor(subTextColor);
|
||||||
commonTitle.setTextSize(android.util.TypedValue.COMPLEX_UNIT_SP, 12);
|
commonTitle.setTextSize(android.util.TypedValue.COMPLEX_UNIT_SP, 12);
|
||||||
commonTitle.setPadding(self.dp(12), self.dp(8), self.dp(12), self.dp(4));
|
commonTitle.setPadding(self.dp(12), self.dp(8), self.dp(12), self.dp(4));
|
||||||
@@ -4950,7 +4990,7 @@ FloatBallAppWM.prototype.showColorPickerPopup = function(opts) {
|
|||||||
var border = new android.graphics.drawable.GradientDrawable();
|
var border = new android.graphics.drawable.GradientDrawable();
|
||||||
border.setColor(android.graphics.Color.TRANSPARENT);
|
border.setColor(android.graphics.Color.TRANSPARENT);
|
||||||
border.setCornerRadius(self.dp(6));
|
border.setCornerRadius(self.dp(6));
|
||||||
border.setStroke(self.dp(3), C.primary);
|
border.setStroke(self.dp(3), T.primaryDeep);
|
||||||
cell.setForeground(border);
|
cell.setForeground(border);
|
||||||
} catch(e) { safeLog(null, 'e', "catch " + String(e)); }
|
} catch(e) { safeLog(null, 'e', "catch " + String(e)); }
|
||||||
}
|
}
|
||||||
@@ -4991,7 +5031,7 @@ FloatBallAppWM.prototype.showColorPickerPopup = function(opts) {
|
|||||||
var border = new android.graphics.drawable.GradientDrawable();
|
var border = new android.graphics.drawable.GradientDrawable();
|
||||||
border.setColor(android.graphics.Color.TRANSPARENT);
|
border.setColor(android.graphics.Color.TRANSPARENT);
|
||||||
border.setCornerRadius(self.dp(6));
|
border.setCornerRadius(self.dp(6));
|
||||||
border.setStroke(self.dp(3), C.primary);
|
border.setStroke(self.dp(3), T.primaryDeep);
|
||||||
matchedCell.setForeground(border);
|
matchedCell.setForeground(border);
|
||||||
} catch(e) { safeLog(null, 'e', "catch " + String(e)); }
|
} catch(e) { safeLog(null, 'e', "catch " + String(e)); }
|
||||||
}
|
}
|
||||||
@@ -5007,7 +5047,7 @@ FloatBallAppWM.prototype.showColorPickerPopup = function(opts) {
|
|||||||
content.addView(valueTv);
|
content.addView(valueTv);
|
||||||
|
|
||||||
function updateValueTv() {
|
function updateValueTv() {
|
||||||
valueTv.setText(isFollowTheme ? "当前:跟随主题" : ("当前:" + (selectedColor || "无")));
|
valueTv.setText(isFollowTheme ? "当前:跟随岛屿主题" : ("当前:" + (selectedColor || "无")));
|
||||||
}
|
}
|
||||||
updateValueTv();
|
updateValueTv();
|
||||||
|
|
||||||
@@ -5136,7 +5176,7 @@ FloatBallAppWM.prototype.showColorPickerPopup = function(opts) {
|
|||||||
actionRow.setGravity(android.view.Gravity.CENTER);
|
actionRow.setGravity(android.view.Gravity.CENTER);
|
||||||
actionRow.setPadding(self.dp(12), self.dp(8), self.dp(12), self.dp(8));
|
actionRow.setPadding(self.dp(12), self.dp(8), self.dp(12), self.dp(8));
|
||||||
|
|
||||||
var btnClear = self.ui.createFlatButton(self, "清空", subTextColor, function() {
|
var btnClear = self.ui.createFlatButton(self, "恢复默认", T.primaryDeep, function() {
|
||||||
self.touchActivity();
|
self.touchActivity();
|
||||||
isFollowTheme = true;
|
isFollowTheme = true;
|
||||||
selectedColor = "";
|
selectedColor = "";
|
||||||
@@ -5151,7 +5191,7 @@ FloatBallAppWM.prototype.showColorPickerPopup = function(opts) {
|
|||||||
});
|
});
|
||||||
actionRow.addView(btnClear);
|
actionRow.addView(btnClear);
|
||||||
|
|
||||||
var btnOk = self.ui.createSolidButton(self, "确定", C.primary, android.graphics.Color.WHITE, function() {
|
var btnOk = self.ui.createSolidButton(self, "保存颜色", T.primary, T.onPrimary, function() {
|
||||||
self.touchActivity();
|
self.touchActivity();
|
||||||
try {
|
try {
|
||||||
var finalColor = isFollowTheme ? "" : String(selectedColor || "");
|
var finalColor = isFollowTheme ? "" : String(selectedColor || "");
|
||||||
|
|||||||
@@ -54,8 +54,8 @@
|
|||||||
"size": 21198
|
"size": 21198
|
||||||
},
|
},
|
||||||
"th_14_panels.js": {
|
"th_14_panels.js": {
|
||||||
"sha256": "b2608e3cbedfb44a64480883ddb512deea19de778606277d382db04f18aa136b",
|
"sha256": "7474fd1183106968094089ca7198d5f280524735ca5b9d72e2e9e32a438381e7",
|
||||||
"size": 252391
|
"size": 254684
|
||||||
},
|
},
|
||||||
"th_15_extra.js": {
|
"th_15_extra.js": {
|
||||||
"sha256": "7db6431ad246c63e99c4c96dcf5903d38036efd6eed5c0da88bcfa0a0cd62ee0",
|
"sha256": "7db6431ad246c63e99c4c96dcf5903d38036efd6eed5c0da88bcfa0a0cd62ee0",
|
||||||
@@ -68,5 +68,5 @@
|
|||||||
},
|
},
|
||||||
"keyId": "toolhub-targets-2026-rsa3072",
|
"keyId": "toolhub-targets-2026-rsa3072",
|
||||||
"schema": 2,
|
"schema": 2,
|
||||||
"version": 20260518061951
|
"version": 20260518062836
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
SCSz9J3f9/Ip5QEZufhaJQ/HmBJe7Ljknk71sbbvPZlOUQ/sWJZ2PbdPKWYrM28yX5LMe83e5c9a1O1ew+28GqzkvRsHclx0Sm2rAjhgu+/074nkaB0eJ6WTAv6ikhD/aG5Gc8LgsJGwwzt6EZc2IuVLD0ODCXhyhsDkNUTVBSqQa1J6gix68ZoUduzfoJzoCqk0UFyXinP7mkAYRyBSquDLDwzpHNLY8iuP9bSboLIWye+2IQhB0yu8ZZq85PQLxzavzvyp976AovVcKD8ADZg/16rlaRllnyQMY3W1ess7byWj4t30hMJUjVpHrissfgiO07ic3cx0kYIiQscUsQe8cKL16uAiy5Br+eaBSvADE25T+Zl2u8tVMPKAshCebYl7pPnNa6jcj1vwq4OnVPVX4gtYrzos71pOpcleumZCNfR9YXG3HDQmFpVmE/nx8C2WD9X5hBXAFQlWHeY41YVEzWYpzijCQiKB5Yh9w7jAkyH0Yxj7Su7nvh/RuUo1
|
aUPEaBVu2Alkv5v7ppGNnytWLPktFvar7RD5OlD4VCy+QMIFv/ZRQ7sGLXWzQLa2qewCNbLsDKJKzoxflxW+5pW/VnQWv0S1HjWTCo6NDYrFmy9SuiM+Q1UfWSMhPlvmjYwQwZ/QjTqkFZb5K+ie76M7/3oBCOP0Sk1GIoSwg8vst7bkCJjTP00PypGOSFPCm1i3tPq2nvm6vBCo4Oj6L5KWqscVu6k7vp+q3j6upW0xuHtdZl/vzhBAc0Jh5018GRTQTYBUJFT+xMag0ADebOxazxylE54yiaBhG3RNcNRTKXgeQqeltxRHBXgF+PNVam4pNhv+Prrl0+cS55WzjL8LTHumc6SgJIhuLAeZUrUBSYdlLwpwB+3EgYKL9QROkcJoe5lRUvwlv854Y+nc6VV6ckb5y7OMbfrCbYXYI4Uh317mLMq4NweYbVG2kgei8Oc8VT7YY7QJtHxcEJZXF5BdR0K4C478w0c/43e6N+KNFMVIoZbHJ1YRc3xINMz+
|
||||||
|
|||||||
Reference in New Issue
Block a user