Skip to content

feat: Add badge icon functionality to ToolButton for AI Assistant#759

Merged
deepin-bot[bot] merged 2 commits into
linuxdeepin:develop/snipefrom
dengzhongyuan365-dev:develop/snipe
Nov 26, 2025
Merged

feat: Add badge icon functionality to ToolButton for AI Assistant#759
deepin-bot[bot] merged 2 commits into
linuxdeepin:develop/snipefrom
dengzhongyuan365-dev:develop/snipe

Conversation

@dengzhongyuan365-dev

Copy link
Copy Markdown
Member

feat: Add badge icon functionality to ToolButton for AI Assistant

  • Introduced badge icon support in ToolButton, allowing for visual indicators on AI Assistant buttons.
  • Updated SubToolWidget to set badge icons for AI Assistant buttons, enhancing user feedback.
  • Added new AI badge icon to resource file for consistent UI representation.

This enhancement improves the visual interaction of the AI Assistant features, providing users with clear indicators of functionality.

fix: Optimize button states and fix toolbar display issues

  • Fix scrollshot/OCR/pin buttons triggering unexpected sidebar display by removing them from QButtonGroup and using direct clicked signal handling
  • Change signal parameter from "scroll" to "scrollShot" to match MainWindow::changeShotToolEvent condition
  • Add clicked signal connection for OCR and pin buttons after removing from button group
  • Add icon highlight color on button press state in ToolButton, matching SaveButton behavior
  • Disable hover effect for ToolButton when button is disabled (e.g., undo button with no content to undo)
  • Update ToolButton hover/press background colors according to design spec:
    • Light mode: hover #000000 10%, press #000000 20%
    • Dark mode: hover #FFFFFF 10%, press #000000 15%
  • Adjust SaveButton color logic to prioritize press state over hover state

修复: 优化按钮状态和修复工具栏显示问题

  • 修复滚动截图/OCR/贴图按钮触发意外侧边栏显示的问题,将其从QButtonGroup移除并使用直接的clicked信号处理
  • 将信号参数从"scroll"改为"scrollShot"以匹配MainWindow::changeShotToolEvent的判断条件
  • 为OCR和贴图按钮添加clicked信号连接
  • 为ToolButton添加按下状态时图标变为活动色的功能,与SaveButton行为一致
  • 禁用状态的ToolButton不显示hover效果(如无可撤销内容时的撤销按钮)
  • 按照设计规范更新ToolButton的hover/press背景色:
    • 浅色模式: hover #000000 10%, press #000000 20%
    • 深色模式: hover #FFFFFF 10%, press #000000 15%
  • 调整SaveButton颜色逻辑,press状态优先于hover状态

- Introduced badge icon support in ToolButton, allowing for visual indicators on AI Assistant buttons.
- Updated SubToolWidget to set badge icons for AI Assistant buttons, enhancing user feedback.
- Added new AI badge icon to resource file for consistent UI representation.

This enhancement improves the visual interaction of the AI Assistant features, providing users with clear indicators of functionality.

@lzwind lzwind left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

需要处理文件的开源规范

- Fix scrollshot/OCR/pin buttons triggering unexpected sidebar display by removing them from QButtonGroup and using direct clicked signal handling
- Change signal parameter from "scroll" to "scrollShot" to match MainWindow::changeShotToolEvent condition
- Add clicked signal connection for OCR and pin buttons after removing from button group
- Add icon highlight color on button press state in ToolButton, matching SaveButton behavior
- Disable hover effect for ToolButton when button is disabled (e.g., undo button with no content to undo)
- Update ToolButton hover/press background colors according to design spec:
  - Light mode: hover #000000 10%, press #000000 20%
  - Dark mode: hover #FFFFFF 10%, press #000000 15%
- Adjust SaveButton color logic to prioritize press state over hover state

修复: 优化按钮状态和修复工具栏显示问题

- 修复滚动截图/OCR/贴图按钮触发意外侧边栏显示的问题,将其从QButtonGroup移除并使用直接的clicked信号处理
- 将信号参数从"scroll"改为"scrollShot"以匹配MainWindow::changeShotToolEvent的判断条件
- 为OCR和贴图按钮添加clicked信号连接
- 为ToolButton添加按下状态时图标变为活动色的功能,与SaveButton行为一致
- 禁用状态的ToolButton不显示hover效果(如无可撤销内容时的撤销按钮)
- 按照设计规范更新ToolButton的hover/press背景色:
  - 浅色模式: hover #000000 10%, press #000000 20%
  - 深色模式: hover #FFFFFF 10%, press #000000 15%
- 调整SaveButton颜色逻辑,press状态优先于hover状态
@deepin-ci-robot

Copy link
Copy Markdown

deepin pr auto review

我来对这个代码变更进行详细审查:

  1. 语法逻辑:
  • 代码整体语法正确,符合Qt/C++规范
  • 新增的AI badge图标和功能实现逻辑合理
  • 按钮状态管理和事件处理逻辑清晰
  • 坐标转换计算正确
  1. 代码质量:
  • 优点:
    • 增加了详细的SPDX许可证声明
    • 代码结构清晰,职责分离明确
    • 添加了合适的注释
    • 使用了const和引用来优化代码
  • 需要改进:
    • 部分硬编码的数值(如badgeSize)可以考虑定义为常量
    • 一些重复的绘制逻辑可以抽取为公共方法
  1. 代码性能:
  • 优点:
    • 使用了QPainter的save/restore来优化绘制状态
    • 合理使用update()来触发重绘
  • 建议:
    • badge图标可以考虑使用缓存机制
    • 大量的坐标转换计算可以考虑缓存结果
  1. 代码安全:
  • 优点:
    • 对空指针和边界情况有适当处理
    • 使用了Qt的类型安全机制
  • 建议:
    • 对外部传入的iconPath应该做有效性检查
    • 坐标计算应该增加边界检查
  1. 具体改进建议:

a) 在toolbutton.h中:

// 建议添加常量定义
namespace {
    const QSize DEFAULT_BADGE_SIZE = QSize(10, 7);
    const int MIN_ICON_SIZE = 16;
}

b) 在toolbutton.cpp的setBadgeIcon方法中:

void ToolButton::setBadgeIcon(const QString &iconPath)
{
    if (QFile::exists(iconPath)) {  // 添加文件存在性检查
        m_badgeIcon = QIcon(iconPath);
    } else {
        qWarning() << "Badge icon file not found:" << iconPath;
        m_badgeIcon = QIcon();
    }
    update();
}

c) 在paintEvent方法中:

// 建议将绘制逻辑抽取为单独的方法
void ToolButton::drawBackground(QPainter &painter, const QStyleOptionToolButton &opt)
{
    // 将背景绘制逻辑移到这里
}

void ToolButton::drawIcon(QPainter &painter, const QStyleOptionToolButton &opt)
{
    // 将图标绘制逻辑移到这里
}

d) 在main_window.cpp中:

// 建议添加边界检查
int finalLeft = aiBtnXInMainWindow - (aiPanelWidth / 2);
finalLeft = qBound(0, finalLeft, m_backgroundRect.width() - aiPanelWidth);  // 使用qBound替代max/min组合

e) 在savebutton.cpp中:

// 建议将颜色计算抽取为方法
QColor SaveButton::getThemeColor(qreal alpha) const
{
    QColor windowColor = palette().color(QPalette::Window);
    bool isLightTheme = windowColor.lightness() > 128;
    return isLightTheme ? QColor(0, 0, 0, alpha * 255) 
                       : QColor(255, 255, 255, alpha * 255);
}

这些改进将使代码更加健壮、可维护和高效。总体来说,这次变更实现了所需的功能,代码质量良好,但在细节处理上还有优化空间。

@deepin-ci-robot

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: dengzhongyuan365-dev, lzwind

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@dengzhongyuan365-dev

Copy link
Copy Markdown
Member Author

/forcemerge

@deepin-bot

deepin-bot Bot commented Nov 26, 2025

Copy link
Copy Markdown
Contributor

This pr force merged! (status: unstable)

@deepin-bot deepin-bot Bot merged commit 778cd73 into linuxdeepin:develop/snipe Nov 26, 2025
7 of 9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants