perf: smooth UI animations and reduce repaint overhead
Batch of performance and animation work: shared FadeHelper/MotionPrefs primitives, hover animators, shadow pixmap caching, smooth scrolling, seek time bubble, and widespread component repaint reductions.
This commit is contained in:
@@ -1,13 +1,21 @@
|
||||
/* =========================================================
|
||||
全局基础设定 & Tailwind Dark 色板映射
|
||||
Primary Blue: #3B82F6, Hover: #2563EB
|
||||
Danger Red: #EF4444, Hover: #DC2626
|
||||
Slate-900 (主背景): #0F172A
|
||||
Slate-800 (卡片/侧边栏): #1E293B
|
||||
Slate-700 (边框/悬浮): #334155
|
||||
Slate-400 (次要文字): #94A3B8
|
||||
Slate-300 (正文文字): #CBD5E1
|
||||
Slate-50 (标题文字): #F8FAFC
|
||||
qEmby Dark Theme — QSS Style Sheet
|
||||
Design tokens: see src/qEmbyApp/tokens/DesignTokens.h
|
||||
Animation tokens: see src/qEmbyApp/tokens/AnimationTokens.h
|
||||
|
||||
Border-radius scale: 2(kXs) 4(kSm) 6(kMd) 8(kLg) 14(kXl)
|
||||
Spacing scale: 4(kXs) 8(kSm) 12(kMd) 16(kLg) 24(kXl)
|
||||
Font scale: 10 11 12 13 14 16 20 24 28
|
||||
|
||||
Color palette (Tailwind Dark):
|
||||
Primary Blue: #3B82F6, Hover: #2563EB
|
||||
Danger Red: #EF4444, Hover: #DC2626
|
||||
Slate-900 (主背景): #0F172A
|
||||
Slate-800 (卡片/侧边栏): #1E293B
|
||||
Slate-700 (边框/悬浮): #334155
|
||||
Slate-400 (次要文字): #94A3B8
|
||||
Slate-300 (正文文字): #CBD5E1
|
||||
Slate-50 (标题文字): #F8FAFC
|
||||
========================================================= */
|
||||
|
||||
/* =========================================
|
||||
@@ -252,7 +260,7 @@ QListView#SearchCompleterPopup,
|
||||
QListView#SearchHistoryCompleterPopup {
|
||||
background-color: #0F172A;
|
||||
border: 1px solid rgba(148, 163, 184, 0.20);
|
||||
border-radius: 20px;
|
||||
border-radius: 14px;
|
||||
padding: 0px;
|
||||
outline: none;
|
||||
}
|
||||
@@ -450,7 +458,7 @@ QMenu::separator {
|
||||
QMenu#AppTextContextMenu {
|
||||
background-color: #0F172A;
|
||||
border: 1px solid #334155;
|
||||
border-radius: 12px;
|
||||
border-radius: 14px;
|
||||
padding: 8px 0px;
|
||||
}
|
||||
|
||||
@@ -532,7 +540,7 @@ QWidget#login-add-page QLineEdit:focus {
|
||||
QWidget#login-add-page QWidget#login-ssl-card {
|
||||
background-color: rgba(255, 255, 255, 0.04);
|
||||
border: 1px solid rgba(255, 255, 255, 0.10);
|
||||
border-radius: 12px;
|
||||
border-radius: 14px;
|
||||
}
|
||||
|
||||
QWidget#login-add-page QWidget#login-ssl-card:hover {
|
||||
@@ -558,7 +566,7 @@ QWidget#login-add-page QLabel#login-ssl-description {
|
||||
QWidget#server-card {
|
||||
background-color: #1E293B;
|
||||
border: 1px solid #334155;
|
||||
border-radius: 12px;
|
||||
border-radius: 14px;
|
||||
}
|
||||
|
||||
QWidget#server-card:hover {
|
||||
@@ -578,7 +586,7 @@ QLabel#server-url-label {
|
||||
QLabel#server-fallback-icon {
|
||||
background-color: #1E3A8A;
|
||||
color: #60A5FA;
|
||||
border-radius: 20px;
|
||||
border-radius: 14px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
@@ -613,7 +621,7 @@ QPushButton#add-server-btn {
|
||||
qproperty-iconSize: 16px 16px;
|
||||
background-color: transparent;
|
||||
border: 2px dashed #334155;
|
||||
border-radius: 12px;
|
||||
border-radius: 14px;
|
||||
color: #60A5FA;
|
||||
font-size: 14px;
|
||||
font-weight: 600;
|
||||
@@ -999,7 +1007,7 @@ ModernMessageBox {
|
||||
QWidget[playerDialogSurface="true"] {
|
||||
background-color: rgba(15, 23, 42, 0.94);
|
||||
border: 1px solid rgba(71, 85, 105, 0.88);
|
||||
border-radius: 18px;
|
||||
border-radius: 14px;
|
||||
}
|
||||
|
||||
QWidget#dialog-titlebar {
|
||||
@@ -1168,7 +1176,7 @@ QWidget#playerDanmakuSettingsDialog {
|
||||
}
|
||||
|
||||
#playerDanmakuSettingsDialog QLabel#playerDanmakuTileIcon[compactIcon="true"] {
|
||||
border-radius: 11px;
|
||||
border-radius: 14px;
|
||||
}
|
||||
|
||||
#playerDanmakuSettingsDialog QLabel#playerDanmakuTileTitle {
|
||||
@@ -1489,7 +1497,7 @@ QListWidget#modernComboEmbeddedList QScrollBar:vertical {
|
||||
|
||||
QListWidget#modernComboEmbeddedList QScrollBar::handle:vertical {
|
||||
background-color: rgba(255, 255, 255, 0.15);
|
||||
border-radius: 3px;
|
||||
border-radius: 4px;
|
||||
min-height: 30px;
|
||||
}
|
||||
|
||||
@@ -2312,7 +2320,7 @@ QLabel#identify-preview-label {
|
||||
QLabel#identify-preview-label[media-image-editor="true"] {
|
||||
background-color: rgba(15, 23, 42, 0.84);
|
||||
border: 1px solid rgba(255, 255, 255, 0.08);
|
||||
border-radius: 12px;
|
||||
border-radius: 14px;
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
@@ -2377,13 +2385,13 @@ QProgressBar#detail-progress-bar {
|
||||
background-color: rgba(255, 255, 255, 0.12);
|
||||
border: 1px solid transparent;
|
||||
/* 核心:用透明边框强制覆盖原生样式引擎 */
|
||||
border-radius: 1px;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
QProgressBar#detail-progress-bar::chunk {
|
||||
background-color: #3B82F6;
|
||||
/* 如果你要苹果绿,请替换为 #30D158 */
|
||||
border-radius: 1px;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
/* =========================================
|
||||
@@ -2470,7 +2478,7 @@ QPushButton#hud-close-btn:hover {
|
||||
QPushButton.player-hud-btn {
|
||||
background: transparent;
|
||||
border: none;
|
||||
border-radius: 12px;
|
||||
border-radius: 14px;
|
||||
}
|
||||
|
||||
QPushButton.player-hud-btn:hover {
|
||||
@@ -2516,7 +2524,7 @@ QPushButton#playerSpeedBtn {
|
||||
/* 彻底抹除边框 */
|
||||
outline: none;
|
||||
/* 彻底抹除焦点虚线 */
|
||||
border-radius: 12px;
|
||||
border-radius: 14px;
|
||||
padding: 0 10px;
|
||||
}
|
||||
|
||||
@@ -2524,7 +2532,7 @@ QPushButton#playerMediaSwitchBtn {
|
||||
min-width: 0px;
|
||||
padding: 0px;
|
||||
border: none;
|
||||
border-radius: 12px;
|
||||
border-radius: 14px;
|
||||
}
|
||||
|
||||
QPushButton#playerMediaSwitchBtn:hover {
|
||||
@@ -2749,7 +2757,7 @@ QPushButton#immersive-stream-btn {
|
||||
border: none;
|
||||
padding: 4px 10px;
|
||||
/* 【调优】上下内边距收紧,打造细长的精致胶囊 */
|
||||
border-radius: 5px;
|
||||
border-radius: 6px;
|
||||
/* 圆角微调,配合更小的高度 */
|
||||
text-align: left;
|
||||
}
|
||||
@@ -2774,7 +2782,7 @@ QLineEdit#detail-episode-jump-edit {
|
||||
font-weight: 500;
|
||||
border: none;
|
||||
padding: 4px 8px;
|
||||
border-radius: 5px;
|
||||
border-radius: 6px;
|
||||
selection-background-color: rgba(59, 130, 246, 0.55);
|
||||
selection-color: #FFFFFF;
|
||||
}
|
||||
@@ -2814,7 +2822,7 @@ QMenu#immersive-stream-menu {
|
||||
QMenu#immersive-stream-menu::item {
|
||||
color: #E0E0E0;
|
||||
padding: 6px 28px 6px 14px;
|
||||
border-radius: 5px;
|
||||
border-radius: 6px;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
@@ -2850,7 +2858,7 @@ QWidget#stream-menu-item-host {
|
||||
|
||||
QWidget#stream-menu-item {
|
||||
background: transparent;
|
||||
border-radius: 5px;
|
||||
border-radius: 6px;
|
||||
}
|
||||
|
||||
QWidget#stream-menu-item:hover,
|
||||
@@ -2915,15 +2923,24 @@ QLabel#osdSeekTimeLabel {
|
||||
border: 1px solid rgba(255, 255, 255, 28);
|
||||
}
|
||||
|
||||
/* 进度条悬停时间气泡(面板底色由 SeekTimeBubble 自绘) */
|
||||
QLabel#seekBubbleTime {
|
||||
background: transparent;
|
||||
color: #F8FAFC;
|
||||
font-family: "Segoe UI", "Microsoft YaHei UI", "Microsoft YaHei", sans-serif;
|
||||
font-size: 12px;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
QWidget#osdSeekStem {
|
||||
background-color: rgba(96, 165, 250, 180);
|
||||
border-radius: 1px;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
QWidget#osdSeekMarker {
|
||||
background-color: rgba(248, 250, 252, 220);
|
||||
border: 1px solid rgba(96, 165, 250, 230);
|
||||
border-radius: 3px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
QWidget#osdVolumePanel {
|
||||
@@ -2961,7 +2978,7 @@ QLabel#osdVolumeLabel {
|
||||
QWidget#playerMouseEdgeIndicator {
|
||||
background-color: rgba(255, 255, 255, 18);
|
||||
border: 1px solid rgba(255, 255, 255, 52);
|
||||
border-radius: 22px;
|
||||
border-radius: 14px;
|
||||
}
|
||||
|
||||
QWidget#playerMouseEdgeIndicator[gestureActive="true"] {
|
||||
@@ -3053,7 +3070,7 @@ QScrollBar#modernMenuScrollBar:vertical {
|
||||
|
||||
QScrollBar#modernMenuScrollBar::handle:vertical {
|
||||
background: rgba(255, 255, 255, 0.45);
|
||||
border-radius: 3px;
|
||||
border-radius: 4px;
|
||||
min-height: 28px;
|
||||
/* 显式归零,覆盖全局规则的 margin: 0px 3px,否则会被压缩成 0 宽不可见 */
|
||||
margin: 0px;
|
||||
@@ -3155,7 +3172,7 @@ LoadingOverlay {
|
||||
#SettingsCard {
|
||||
background-color: rgba(255, 255, 255, 0.04);
|
||||
border: 1px solid rgba(255, 255, 255, 0.06);
|
||||
border-radius: 12px;
|
||||
border-radius: 14px;
|
||||
}
|
||||
|
||||
#SettingsCard:hover {
|
||||
@@ -3546,7 +3563,7 @@ QLineEdit#TagInputInlineEdit {
|
||||
QToolButton#TagInputClearBtn {
|
||||
background: transparent;
|
||||
border: none;
|
||||
border-radius: 3px;
|
||||
border-radius: 4px;
|
||||
qproperty-icon: url(":/svg/dark/close.svg");
|
||||
qproperty-iconSize: 8px 8px;
|
||||
}
|
||||
@@ -3595,7 +3612,7 @@ QMenu#TagPresetMenu::indicator {
|
||||
background: rgba(255, 255, 255, 0.025);
|
||||
border: 1px solid rgba(255, 255, 255, 0.06);
|
||||
border-left: 3px solid #3B82F6;
|
||||
border-radius: 12px;
|
||||
border-radius: 14px;
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
@@ -3801,7 +3818,7 @@ QLabel#AboutThanksAvatar {
|
||||
color: #FFFFFF;
|
||||
background: qlineargradient(x1:0, y1:0, x2:1, y2:1,
|
||||
stop:0 #F97316, stop:0.48 #DB2777, stop:1 #2563EB);
|
||||
border-radius: 11px;
|
||||
border-radius: 14px;
|
||||
font-size: 10px;
|
||||
font-weight: 700;
|
||||
font-family: "Segoe UI", "Microsoft YaHei", sans-serif;
|
||||
@@ -3965,7 +3982,7 @@ QLabel#SettingsPageTitle {
|
||||
/* 左右宽阔的热区,保证不拥挤 */
|
||||
margin: 2px 6px;
|
||||
/* 【核心】:让 hover 高亮区不贴边,形成独立胶囊 */
|
||||
border-radius: 5px;
|
||||
border-radius: 6px;
|
||||
/* 胶囊状内圆角 */
|
||||
font-size: 13px;
|
||||
}
|
||||
@@ -3997,14 +4014,14 @@ QLabel#SettingsPageTitle {
|
||||
#ManageInfoCard {
|
||||
background-color: rgba(30, 41, 59, 0.5);
|
||||
border: 1px solid rgba(71, 85, 105, 0.4);
|
||||
border-radius: 12px;
|
||||
border-radius: 14px;
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
#ManageActivityCard {
|
||||
background-color: rgba(30, 41, 59, 0.5);
|
||||
border: 1px solid rgba(71, 85, 105, 0.4);
|
||||
border-radius: 12px;
|
||||
border-radius: 14px;
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
@@ -4062,7 +4079,7 @@ QFrame#TranscodingGroupBlock,
|
||||
QFrame#TranscodingCodecItem {
|
||||
background-color: rgba(30, 41, 59, 0.6);
|
||||
border: 1px solid rgba(71, 85, 105, 0.28);
|
||||
border-radius: 12px;
|
||||
border-radius: 14px;
|
||||
}
|
||||
|
||||
QFrame#TranscodingCodecItem[dragging="true"] {
|
||||
@@ -4295,12 +4312,12 @@ QProgressBar#NowPlayingProgressBar {
|
||||
max-height: 2px;
|
||||
background-color: rgba(255, 255, 255, 0.25);
|
||||
border: 1px solid transparent;
|
||||
border-radius: 1px;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
QProgressBar#NowPlayingProgressBar::chunk {
|
||||
background-color: #3B82F6;
|
||||
border-radius: 1px;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
QLabel#NowPlayingUser {
|
||||
@@ -4756,7 +4773,7 @@ QCheckBox#LibraryMetadataLockCheck::indicator:checked {
|
||||
QLineEdit#PlaylistSearchEdit {
|
||||
background-color: rgba(255, 255, 255, 0.05);
|
||||
border: 1px solid rgba(255, 255, 255, 0.09);
|
||||
border-radius: 7px;
|
||||
border-radius: 6px;
|
||||
color: #CBD5E1;
|
||||
font-size: 12px;
|
||||
font-family: "Segoe UI", "Microsoft YaHei", sans-serif;
|
||||
@@ -5286,12 +5303,12 @@ QProgressBar#ManageLibScanProgress {
|
||||
max-height: 2px;
|
||||
background-color: rgba(255, 255, 255, 0.12);
|
||||
border: 1px solid transparent;
|
||||
border-radius: 1px;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
QProgressBar#ManageLibScanProgress::chunk {
|
||||
background-color: #3B82F6;
|
||||
border-radius: 1px;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
/* 取消扫描按钮 */
|
||||
@@ -5383,7 +5400,7 @@ QToolButton#TagInputClearBtn {
|
||||
border: none;
|
||||
qproperty-icon: url(:/svg/dark/close.svg);
|
||||
qproperty-iconSize: 10px 10px;
|
||||
border-radius: 5px;
|
||||
border-radius: 6px;
|
||||
}
|
||||
|
||||
QToolButton#TagInputClearBtn:hover {
|
||||
@@ -5441,7 +5458,7 @@ QLineEdit#TagPresetSearchEdit:focus {
|
||||
/* 弹出面板内复选框 */
|
||||
QFrame#TagPresetOptionRow {
|
||||
background-color: transparent;
|
||||
border-radius: 5px;
|
||||
border-radius: 6px;
|
||||
}
|
||||
|
||||
QFrame#TagPresetOptionRow:hover {
|
||||
@@ -5464,7 +5481,7 @@ QCheckBox#TagPresetCheckbox {
|
||||
font-family: "Segoe UI", "Microsoft YaHei", sans-serif;
|
||||
spacing: 8px;
|
||||
padding: 3px 6px;
|
||||
border-radius: 5px;
|
||||
border-radius: 6px;
|
||||
}
|
||||
|
||||
QCheckBox#TagPresetCheckbox:hover {
|
||||
@@ -5606,7 +5623,7 @@ QPushButton#ManageTabBtn:checked:hover {
|
||||
QFrame#ManageUserCard {
|
||||
background-color: rgba(30, 41, 59, 0.5);
|
||||
border: 1px solid rgba(71, 85, 105, 0.4);
|
||||
border-radius: 12px;
|
||||
border-radius: 14px;
|
||||
}
|
||||
|
||||
QFrame#ManageUserCard:hover {
|
||||
@@ -5618,7 +5635,7 @@ QFrame#ManageUserCard:hover {
|
||||
QLabel#ManageUserAvatar {
|
||||
background-color: rgba(59, 130, 246, 0.2);
|
||||
border: 1px solid rgba(59, 130, 246, 0.35);
|
||||
border-radius: 24px;
|
||||
border-radius: 14px;
|
||||
color: #93C5FD;
|
||||
font-size: 18px;
|
||||
font-weight: 700;
|
||||
@@ -5813,7 +5830,7 @@ QPlainTextEdit#ManageLogViewer {
|
||||
QFrame#UserEditNavCard {
|
||||
background-color: rgba(30, 41, 59, 0.62);
|
||||
border: 1px solid rgba(148, 163, 184, 0.12);
|
||||
border-radius: 12px;
|
||||
border-radius: 14px;
|
||||
}
|
||||
|
||||
QTabBar#UserEditTabBar {
|
||||
@@ -5846,7 +5863,7 @@ QTabBar#UserEditTabBar::tab:hover:!selected {
|
||||
QFrame#UserEditSectionCard {
|
||||
background-color: rgba(30, 41, 59, 0.58);
|
||||
border: 1px solid rgba(148, 163, 184, 0.10);
|
||||
border-radius: 12px;
|
||||
border-radius: 14px;
|
||||
}
|
||||
|
||||
QLabel#UserEditSectionTitle {
|
||||
@@ -5875,7 +5892,7 @@ QWidget#UserEditFolderListContainer {
|
||||
QFrame#UserEditFooterBar {
|
||||
background-color: rgba(15, 23, 42, 0.78);
|
||||
border: 1px solid rgba(148, 163, 184, 0.12);
|
||||
border-radius: 12px;
|
||||
border-radius: 14px;
|
||||
}
|
||||
|
||||
/* UserEdit 滚动区 */
|
||||
@@ -6056,7 +6073,7 @@ QScrollArea#DownloadRecordsArea QScrollBar:vertical {
|
||||
QScrollArea#DownloadRecordsArea QScrollBar::handle:vertical {
|
||||
background-color: rgba(148, 163, 184, 0.28);
|
||||
border: none;
|
||||
border-radius: 3px;
|
||||
border-radius: 4px;
|
||||
min-height: 28px;
|
||||
}
|
||||
|
||||
@@ -6148,7 +6165,7 @@ QLabel#DownloadSectionTitle {
|
||||
QLabel#DownloadLocationValue {
|
||||
background-color: rgba(15, 23, 42, 0.52);
|
||||
border: 1px solid rgba(100, 116, 139, 0.14);
|
||||
border-radius: 12px;
|
||||
border-radius: 14px;
|
||||
color: #F8FAFC;
|
||||
padding: 10px 12px;
|
||||
font-size: 12px;
|
||||
@@ -6180,7 +6197,7 @@ QLabel#DownloadEmptyHint {
|
||||
QPushButton#DownloadIconButton {
|
||||
background-color: rgba(15, 23, 42, 0.76);
|
||||
border: 1px solid rgba(100, 116, 139, 0.24);
|
||||
border-radius: 11px;
|
||||
border-radius: 14px;
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
@@ -6252,7 +6269,7 @@ QPushButton#DownloadIconButton:disabled {
|
||||
#webdav-sync-dialog QLineEdit {
|
||||
background-color: rgba(255, 255, 255, 0.06);
|
||||
border: 1px solid rgba(255, 255, 255, 0.10);
|
||||
border-radius: 7px;
|
||||
border-radius: 6px;
|
||||
padding: 6px 10px;
|
||||
font-size: 13px;
|
||||
color: #F8FAFC;
|
||||
|
||||
@@ -1,5 +1,13 @@
|
||||
/* =========================================================
|
||||
全局基础设定 & Tailwind 色板变量映射 (供参考)
|
||||
qEmby Light Theme — QSS Style Sheet
|
||||
Design tokens: see src/qEmbyApp/tokens/DesignTokens.h
|
||||
Animation tokens: see src/qEmbyApp/tokens/AnimationTokens.h
|
||||
|
||||
Border-radius scale: 2(kXs) 4(kSm) 6(kMd) 8(kLg) 14(kXl)
|
||||
Spacing scale: 4(kXs) 8(kSm) 12(kMd) 16(kLg) 24(kXl)
|
||||
Font scale: 10 11 12 13 14 16 20 24 28
|
||||
|
||||
Color palette (Tailwind Light):
|
||||
Primary Blue: #3B82F6, Hover: #2563EB
|
||||
Danger Red: #EF4444, Hover: #DC2626
|
||||
Gray-800 (标题): #1F2937
|
||||
@@ -257,7 +265,7 @@ QListView#SearchCompleterPopup,
|
||||
QListView#SearchHistoryCompleterPopup {
|
||||
background-color: #FFFFFF;
|
||||
border: 1px solid #E4EBF3;
|
||||
border-radius: 20px;
|
||||
border-radius: 14px;
|
||||
padding: 0px;
|
||||
outline: none;
|
||||
}
|
||||
@@ -458,7 +466,7 @@ QMenu::separator {
|
||||
QMenu#AppTextContextMenu {
|
||||
background-color: #FFFFFF;
|
||||
border: 1px solid #E2E8F0;
|
||||
border-radius: 12px;
|
||||
border-radius: 14px;
|
||||
padding: 8px 0px;
|
||||
}
|
||||
|
||||
@@ -542,7 +550,7 @@ QWidget#login-add-page QLineEdit:focus {
|
||||
QWidget#login-add-page QWidget#login-ssl-card {
|
||||
background-color: #FFFFFF;
|
||||
border: 1px solid #E2E8F0;
|
||||
border-radius: 12px;
|
||||
border-radius: 14px;
|
||||
}
|
||||
|
||||
QWidget#login-add-page QWidget#login-ssl-card:hover {
|
||||
@@ -568,7 +576,7 @@ QWidget#login-add-page QLabel#login-ssl-description {
|
||||
QWidget#server-card {
|
||||
background-color: #FFFFFF;
|
||||
border: 1px solid #E5E7EB;
|
||||
border-radius: 12px;
|
||||
border-radius: 14px;
|
||||
}
|
||||
|
||||
QWidget#server-card:hover {
|
||||
@@ -588,7 +596,7 @@ QLabel#server-url-label {
|
||||
QLabel#server-fallback-icon {
|
||||
background-color: #EFF6FF;
|
||||
color: #3B82F6;
|
||||
border-radius: 20px;
|
||||
border-radius: 14px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
@@ -623,7 +631,7 @@ QPushButton#add-server-btn {
|
||||
qproperty-iconSize: 16px 16px;
|
||||
background-color: transparent;
|
||||
border: 2px dashed #BFDBFE;
|
||||
border-radius: 12px;
|
||||
border-radius: 14px;
|
||||
color: #3B82F6;
|
||||
font-size: 14px;
|
||||
font-weight: 600;
|
||||
@@ -1014,7 +1022,7 @@ ModernMessageBox {
|
||||
QWidget[playerDialogSurface="true"] {
|
||||
background-color: rgba(255, 255, 255, 0.96);
|
||||
border: 1px solid #D1D5DB;
|
||||
border-radius: 18px;
|
||||
border-radius: 14px;
|
||||
}
|
||||
|
||||
QWidget#dialog-titlebar {
|
||||
@@ -1190,7 +1198,7 @@ QWidget#playerDanmakuSettingsDialog {
|
||||
}
|
||||
|
||||
#playerDanmakuSettingsDialog QLabel#playerDanmakuTileIcon[compactIcon="true"] {
|
||||
border-radius: 11px;
|
||||
border-radius: 14px;
|
||||
}
|
||||
|
||||
#playerDanmakuSettingsDialog QLabel#playerDanmakuTileTitle {
|
||||
@@ -1512,7 +1520,7 @@ QListWidget#modernComboEmbeddedList QScrollBar:vertical {
|
||||
|
||||
QListWidget#modernComboEmbeddedList QScrollBar::handle:vertical {
|
||||
background-color: rgba(255, 255, 255, 0.15);
|
||||
border-radius: 3px;
|
||||
border-radius: 4px;
|
||||
min-height: 30px;
|
||||
}
|
||||
|
||||
@@ -2411,7 +2419,7 @@ QLabel#identify-preview-label {
|
||||
QLabel#identify-preview-label[media-image-editor="true"] {
|
||||
background-color: #EEF2F7;
|
||||
border: 1px solid #D8E0EA;
|
||||
border-radius: 12px;
|
||||
border-radius: 14px;
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
@@ -2451,13 +2459,13 @@ QProgressBar#detail-progress-bar {
|
||||
background-color: rgba(0, 0, 0, 0.12);
|
||||
border: 1px solid transparent;
|
||||
/* 核心:用透明边框强制覆盖原生样式引擎 */
|
||||
border-radius: 1px;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
QProgressBar#detail-progress-bar::chunk {
|
||||
background-color: #3B82F6;
|
||||
/* 主题蓝 */
|
||||
border-radius: 1px;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
/* =========================================
|
||||
@@ -2544,7 +2552,7 @@ QPushButton#hud-close-btn:hover {
|
||||
QPushButton.player-hud-btn {
|
||||
background: transparent;
|
||||
border: none;
|
||||
border-radius: 12px;
|
||||
border-radius: 14px;
|
||||
}
|
||||
|
||||
QPushButton.player-hud-btn:hover {
|
||||
@@ -2590,7 +2598,7 @@ QPushButton#playerSpeedBtn {
|
||||
/* 彻底抹除边框 */
|
||||
outline: none;
|
||||
/* 彻底抹除焦点虚线 */
|
||||
border-radius: 12px;
|
||||
border-radius: 14px;
|
||||
padding: 0 10px;
|
||||
}
|
||||
|
||||
@@ -2598,7 +2606,7 @@ QPushButton#playerMediaSwitchBtn {
|
||||
min-width: 0px;
|
||||
padding: 0px;
|
||||
border: none;
|
||||
border-radius: 12px;
|
||||
border-radius: 14px;
|
||||
}
|
||||
|
||||
QPushButton#playerMediaSwitchBtn:hover {
|
||||
@@ -2822,7 +2830,7 @@ QPushButton#immersive-stream-btn {
|
||||
border: none;
|
||||
padding: 4px 10px;
|
||||
/* 【调优】上下内边距收紧,打造细长的精致胶囊 */
|
||||
border-radius: 5px;
|
||||
border-radius: 6px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
@@ -2846,7 +2854,7 @@ QLineEdit#detail-episode-jump-edit {
|
||||
font-weight: 500;
|
||||
border: none;
|
||||
padding: 4px 8px;
|
||||
border-radius: 5px;
|
||||
border-radius: 6px;
|
||||
selection-background-color: rgba(59, 130, 246, 0.22);
|
||||
selection-color: #1D4ED8;
|
||||
}
|
||||
@@ -2884,7 +2892,7 @@ QMenu#immersive-stream-menu {
|
||||
QMenu#immersive-stream-menu::item {
|
||||
color: #333333;
|
||||
padding: 6px 28px 6px 14px;
|
||||
border-radius: 5px;
|
||||
border-radius: 6px;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
@@ -2921,7 +2929,7 @@ QWidget#stream-menu-item-host {
|
||||
QWidget#stream-menu-item {
|
||||
background: transparent;
|
||||
border: 1px solid transparent;
|
||||
border-radius: 5px;
|
||||
border-radius: 6px;
|
||||
}
|
||||
|
||||
QWidget#stream-menu-item:hover {
|
||||
@@ -2999,15 +3007,24 @@ QLabel#osdSeekTimeLabel {
|
||||
border: 1px solid rgba(255, 255, 255, 28);
|
||||
}
|
||||
|
||||
/* 进度条悬停时间气泡(播放器恒暗,与 dark 一致;面板底色由 SeekTimeBubble 自绘) */
|
||||
QLabel#seekBubbleTime {
|
||||
background: transparent;
|
||||
color: #F8FAFC;
|
||||
font-family: "Segoe UI", "Microsoft YaHei UI", "Microsoft YaHei", sans-serif;
|
||||
font-size: 12px;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
QWidget#osdSeekStem {
|
||||
background-color: rgba(96, 165, 250, 180);
|
||||
border-radius: 1px;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
QWidget#osdSeekMarker {
|
||||
background-color: rgba(248, 250, 252, 220);
|
||||
border: 1px solid rgba(96, 165, 250, 230);
|
||||
border-radius: 3px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
QWidget#osdVolumePanel {
|
||||
@@ -3045,7 +3062,7 @@ QLabel#osdVolumeLabel {
|
||||
QWidget#playerMouseEdgeIndicator {
|
||||
background-color: rgba(255, 255, 255, 18);
|
||||
border: 1px solid rgba(255, 255, 255, 52);
|
||||
border-radius: 22px;
|
||||
border-radius: 14px;
|
||||
}
|
||||
|
||||
QWidget#playerMouseEdgeIndicator[gestureActive="true"] {
|
||||
@@ -3140,7 +3157,7 @@ QScrollBar#modernMenuScrollBar:vertical {
|
||||
|
||||
QScrollBar#modernMenuScrollBar::handle:vertical {
|
||||
background: rgba(255, 255, 255, 0.45);
|
||||
border-radius: 3px;
|
||||
border-radius: 4px;
|
||||
min-height: 28px;
|
||||
/* 显式归零,覆盖全局规则的 margin: 0px 3px,否则会被压缩成 0 宽不可见 */
|
||||
margin: 0px;
|
||||
@@ -3343,7 +3360,7 @@ QLabel#AboutThanksAvatar {
|
||||
color: #FFFFFF;
|
||||
background: qlineargradient(x1:0, y1:0, x2:1, y2:1,
|
||||
stop:0 #FB923C, stop:0.48 #DB2777, stop:1 #2563EB);
|
||||
border-radius: 11px;
|
||||
border-radius: 14px;
|
||||
font-size: 10px;
|
||||
font-weight: 700;
|
||||
font-family: "Segoe UI", "Microsoft YaHei", sans-serif;
|
||||
@@ -3488,7 +3505,7 @@ QLabel#SettingsPageTitle {
|
||||
#SettingsCard {
|
||||
background-color: #FFFFFF;
|
||||
border: 1px solid #E2E8F0;
|
||||
border-radius: 12px;
|
||||
border-radius: 14px;
|
||||
}
|
||||
|
||||
#SettingsCard:hover {
|
||||
@@ -3874,7 +3891,7 @@ QLineEdit#TagInputInlineEdit {
|
||||
QToolButton#TagInputClearBtn {
|
||||
background: transparent;
|
||||
border: none;
|
||||
border-radius: 3px;
|
||||
border-radius: 4px;
|
||||
qproperty-icon: url(":/svg/light/close.svg");
|
||||
qproperty-iconSize: 8px 8px;
|
||||
}
|
||||
@@ -3923,7 +3940,7 @@ QMenu#TagPresetMenu::indicator {
|
||||
background: rgba(0, 0, 0, 0.018);
|
||||
border: 1px solid rgba(0, 0, 0, 0.06);
|
||||
border-left: 3px solid #4A90D9;
|
||||
border-radius: 12px;
|
||||
border-radius: 14px;
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
@@ -4030,7 +4047,7 @@ QLabel#SettingsSubTitle {
|
||||
/* Tailwind Gray 700 */
|
||||
padding: 6px 32px 6px 14px;
|
||||
margin: 2px 6px;
|
||||
border-radius: 5px;
|
||||
border-radius: 6px;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
@@ -4060,14 +4077,14 @@ QLabel#SettingsSubTitle {
|
||||
#ManageInfoCard {
|
||||
background-color: #FFFFFF;
|
||||
border: 1px solid #E2E8F0;
|
||||
border-radius: 12px;
|
||||
border-radius: 14px;
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
#ManageActivityCard {
|
||||
background-color: #FFFFFF;
|
||||
border: 1px solid #E2E8F0;
|
||||
border-radius: 12px;
|
||||
border-radius: 14px;
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
@@ -4125,7 +4142,7 @@ QFrame#TranscodingGroupBlock,
|
||||
QFrame#TranscodingCodecItem {
|
||||
background-color: #F8FAFC;
|
||||
border: 1px solid #E2E8F0;
|
||||
border-radius: 12px;
|
||||
border-radius: 14px;
|
||||
}
|
||||
|
||||
QFrame#TranscodingCodecItem[dragging="true"] {
|
||||
@@ -4358,12 +4375,12 @@ QProgressBar#NowPlayingProgressBar {
|
||||
max-height: 2px;
|
||||
background-color: rgba(0, 0, 0, 0.12);
|
||||
border: 1px solid transparent;
|
||||
border-radius: 1px;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
QProgressBar#NowPlayingProgressBar::chunk {
|
||||
background-color: #3B82F6;
|
||||
border-radius: 1px;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
QLabel#NowPlayingUser {
|
||||
@@ -4818,7 +4835,7 @@ QCheckBox#LibraryMetadataLockCheck::indicator:checked {
|
||||
QLineEdit#PlaylistSearchEdit {
|
||||
background-color: #F8FAFC;
|
||||
border: 1px solid #E2E8F0;
|
||||
border-radius: 7px;
|
||||
border-radius: 6px;
|
||||
color: #334155;
|
||||
font-size: 12px;
|
||||
font-family: "Segoe UI", "Microsoft YaHei", sans-serif;
|
||||
@@ -5347,12 +5364,12 @@ QProgressBar#ManageLibScanProgress {
|
||||
max-height: 2px;
|
||||
background-color: rgba(0, 0, 0, 0.12);
|
||||
border: 1px solid transparent;
|
||||
border-radius: 1px;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
QProgressBar#ManageLibScanProgress::chunk {
|
||||
background-color: #3B82F6;
|
||||
border-radius: 1px;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
/* 取消扫描按钮 */
|
||||
@@ -5444,7 +5461,7 @@ QToolButton#TagInputClearBtn {
|
||||
border: none;
|
||||
qproperty-icon: url(:/svg/light/close.svg);
|
||||
qproperty-iconSize: 10px 10px;
|
||||
border-radius: 5px;
|
||||
border-radius: 6px;
|
||||
}
|
||||
|
||||
QToolButton#TagInputClearBtn:hover {
|
||||
@@ -5502,7 +5519,7 @@ QLineEdit#TagPresetSearchEdit:focus {
|
||||
/* 弹出面板内复选框 */
|
||||
QFrame#TagPresetOptionRow {
|
||||
background-color: transparent;
|
||||
border-radius: 5px;
|
||||
border-radius: 6px;
|
||||
}
|
||||
|
||||
QFrame#TagPresetOptionRow:hover {
|
||||
@@ -5525,7 +5542,7 @@ QCheckBox#TagPresetCheckbox {
|
||||
font-family: "Segoe UI", "Microsoft YaHei", sans-serif;
|
||||
spacing: 8px;
|
||||
padding: 3px 6px;
|
||||
border-radius: 5px;
|
||||
border-radius: 6px;
|
||||
}
|
||||
|
||||
QCheckBox#TagPresetCheckbox:hover {
|
||||
@@ -5667,7 +5684,7 @@ QPushButton#ManageTabBtn:checked:hover {
|
||||
QFrame#ManageUserCard {
|
||||
background-color: #FFFFFF;
|
||||
border: 1px solid #E2E8F0;
|
||||
border-radius: 12px;
|
||||
border-radius: 14px;
|
||||
}
|
||||
|
||||
QFrame#ManageUserCard:hover {
|
||||
@@ -5679,7 +5696,7 @@ QFrame#ManageUserCard:hover {
|
||||
QLabel#ManageUserAvatar {
|
||||
background-color: rgba(59, 130, 246, 0.1);
|
||||
border: 1px solid rgba(59, 130, 246, 0.25);
|
||||
border-radius: 24px;
|
||||
border-radius: 14px;
|
||||
color: #2563EB;
|
||||
font-size: 18px;
|
||||
font-weight: 700;
|
||||
@@ -5875,7 +5892,7 @@ QPlainTextEdit#ManageLogViewer {
|
||||
QFrame#UserEditNavCard {
|
||||
background-color: rgba(248, 250, 252, 0.88);
|
||||
border: 1px solid rgba(148, 163, 184, 0.14);
|
||||
border-radius: 12px;
|
||||
border-radius: 14px;
|
||||
}
|
||||
|
||||
QTabBar#UserEditTabBar {
|
||||
@@ -5908,7 +5925,7 @@ QTabBar#UserEditTabBar::tab:hover:!selected {
|
||||
QFrame#UserEditSectionCard {
|
||||
background-color: #FFFFFF;
|
||||
border: 1px solid rgba(148, 163, 184, 0.14);
|
||||
border-radius: 12px;
|
||||
border-radius: 14px;
|
||||
}
|
||||
|
||||
QLabel#UserEditSectionTitle {
|
||||
@@ -5937,7 +5954,7 @@ QWidget#UserEditFolderListContainer {
|
||||
QFrame#UserEditFooterBar {
|
||||
background-color: rgba(255, 255, 255, 0.96);
|
||||
border: 1px solid rgba(148, 163, 184, 0.16);
|
||||
border-radius: 12px;
|
||||
border-radius: 14px;
|
||||
}
|
||||
|
||||
/* UserEdit 滚动区 */
|
||||
@@ -6118,7 +6135,7 @@ QScrollArea#DownloadRecordsArea QScrollBar:vertical {
|
||||
QScrollArea#DownloadRecordsArea QScrollBar::handle:vertical {
|
||||
background-color: rgba(148, 163, 184, 0.42);
|
||||
border: none;
|
||||
border-radius: 3px;
|
||||
border-radius: 4px;
|
||||
min-height: 28px;
|
||||
}
|
||||
|
||||
@@ -6210,7 +6227,7 @@ QLabel#DownloadSectionTitle {
|
||||
QLabel#DownloadLocationValue {
|
||||
background-color: rgba(248, 250, 252, 0.72);
|
||||
border: 1px solid rgba(148, 163, 184, 0.10);
|
||||
border-radius: 12px;
|
||||
border-radius: 14px;
|
||||
color: #0F172A;
|
||||
padding: 10px 12px;
|
||||
font-size: 12px;
|
||||
@@ -6242,7 +6259,7 @@ QLabel#DownloadEmptyHint {
|
||||
QPushButton#DownloadIconButton {
|
||||
background-color: rgba(255, 255, 255, 0.92);
|
||||
border: 1px solid rgba(148, 163, 184, 0.18);
|
||||
border-radius: 11px;
|
||||
border-radius: 14px;
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
@@ -6303,7 +6320,7 @@ QPushButton#DownloadIconButton:disabled {
|
||||
#webdav-sync-dialog QLineEdit {
|
||||
background-color: #FFFFFF;
|
||||
border: 1px solid #CBD5E1;
|
||||
border-radius: 7px;
|
||||
border-radius: 6px;
|
||||
padding: 6px 10px;
|
||||
font-size: 13px;
|
||||
color: #1F2937;
|
||||
|
||||
Reference in New Issue
Block a user