Skip to content

Commit ca513e0

Browse files
committed
✨ add overlay widget
1 parent b5d907b commit ca513e0

4 files changed

Lines changed: 30 additions & 1 deletion

File tree

src/buttons/ioverlaybutton.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ IOverlayButton::IOverlayButton(QWidget *parent) : QPushButton(parent) {
99
}
1010

1111
void IOverlayButton::addSubButton(QIcon icon) {
12-
auto button = new QPushButton;
12+
QPushButton* button = new ISubButton;
1313
button->setIcon(icon);
1414
m_mainLayout->addWidget(button);
1515
button->hide(); // Initially hide the button
@@ -39,6 +39,7 @@ bool IOverlayButton::event(QEvent *e) {
3939
void IOverlayButton::showSubButtons() {
4040
for (auto button : m_subButtons) {
4141
button->show();
42+
button->setDisabled(true);
4243
}
4344
}
4445

src/buttons/ioverlaybutton.h

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,25 @@
77
#include <QEvent>
88
#include <QList>
99

10+
class ISubButton : public QPushButton {
11+
Q_OBJECT
12+
public:
13+
ISubButton(QWidget *parent = nullptr) : QPushButton(parent) {
14+
setStyleSheet("border: none;"); // Remove border
15+
}
16+
17+
protected:
18+
void enterEvent(QEnterEvent *event) override {
19+
QPushButton::enterEvent(event);
20+
setEnabled(true); // Enable the button on hover enter
21+
}
22+
23+
void leaveEvent(QEvent *event) override {
24+
QPushButton::leaveEvent(event);
25+
setEnabled(false); // Disable the button on hover leave
26+
}
27+
};
28+
1029
class IOverlayButton : public QPushButton {
1130
Q_OBJECT
1231

src/pages/isidearea.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ void ISideArea::setupConnections() {
3131
&SignalHub::onNewChatButtonClicked);
3232
connect(m_modelButton, &QPushButton::clicked, &SignalHub::instance(),
3333
&SignalHub::onNewChatButtonClicked);
34+
connect(m_newChatSubButton, &QPushButton::clicked, &SignalHub::instance(),
35+
&SignalHub::onNewChatButtonClicked);
3436
}
3537

3638
void ISideArea::setupTitleBar(QVBoxLayout *layout) {
@@ -142,6 +144,10 @@ IOverlayButton *ISideArea::createOverlayButton(QWidget *parent,
142144
button->setFont(font);
143145
button->setFocusPolicy(Qt::NoFocus);
144146
button->setLayoutDirection(Qt::LeftToRight);
147+
148+
button->addSubButton(QIcon(":/icon/create-new.svg"));
149+
150+
m_newChatSubButton = button->getSubButtons().first();
145151
return button;
146152
}
147153

src/pages/isidearea.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,9 @@ class ISideArea : public IWidget {
4242
IOverlayButton *m_modelButton;
4343
QPushButton *m_exploreButton;
4444
QPushButton *m_settingButton;
45+
46+
QPushButton* m_newChatSubButton;
47+
4548
IHistoryList *m_historyList;
4649
};
4750

0 commit comments

Comments
 (0)