chore: allow dragging focus overlay

This commit is contained in:
talksik
2026-02-01 13:47:41 -08:00
parent 9e68c554f4
commit ca3478f51e
3 changed files with 114 additions and 34 deletions
+28 -1
View File
@@ -2,10 +2,12 @@
#include "ui_focusoverlay.h"
#include <QScreen>
#include <QGuiApplication>
#include <QMouseEvent>
FocusOverlay::FocusOverlay(QWidget *parent)
: QWidget(parent),
ui(new Ui::FocusOverlay)
ui(new Ui::FocusOverlay),
m_dragging(false)
{
ui->setupUi(this);
@@ -71,3 +73,28 @@ void FocusOverlay::positionAtBottomCenter()
move(x, y);
}
void FocusOverlay::mousePressEvent(QMouseEvent *event)
{
if (event->button() == Qt::LeftButton) {
m_dragging = true;
m_dragStartPosition = event->globalPosition().toPoint() - frameGeometry().topLeft();
event->accept();
}
}
void FocusOverlay::mouseMoveEvent(QMouseEvent *event)
{
if (m_dragging && (event->buttons() & Qt::LeftButton)) {
move(event->globalPosition().toPoint() - m_dragStartPosition);
event->accept();
}
}
void FocusOverlay::mouseReleaseEvent(QMouseEvent *event)
{
if (event->button() == Qt::LeftButton) {
m_dragging = false;
event->accept();
}
}
+9
View File
@@ -26,9 +26,18 @@ private slots:
void onResetButtonClicked();
void onEndButtonClicked();
protected:
void mousePressEvent(QMouseEvent *event) override;
void mouseMoveEvent(QMouseEvent *event) override;
void mouseReleaseEvent(QMouseEvent *event) override;
private:
Ui::FocusOverlay *ui;
void positionAtBottomCenter();
// For dragging
bool m_dragging;
QPoint m_dragStartPosition;
};
#endif // FOCUSOVERLAY_H
+77 -33
View File
@@ -6,10 +6,28 @@
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>120</height>
<width>350</width>
<height>102</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>350</width>
<height>80</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>350</width>
<height>102</height>
</size>
</property>
<property name="windowTitle">
<string>Focus Session</string>
</property>
@@ -41,7 +59,7 @@ QPushButton:pressed {
background-color: rgba(60, 60, 60, 255);
}</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<property name="spacing">
<number>10</number>
</property>
@@ -58,44 +76,70 @@ QPushButton:pressed {
<number>15</number>
</property>
<item>
<widget class="QLabel" name="onelinerLabel">
<property name="font">
<font>
<pointsize>14</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Session Oneliner</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<widget class="QWidget" name="widget" native="true">
<layout class="QVBoxLayout" name="verticalLayout_2">
<property name="spacing">
<number>2</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QLabel" name="onelinerLabel">
<property name="font">
<font>
<pointsize>14</pointsize>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Session Oneliner</string>
</property>
<property name="alignment">
<set>Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignVCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="elapsedLabel">
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string>Elapsed: 00:00:00</string>
</property>
<property name="alignment">
<set>Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignVCenter</set>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QLabel" name="elapsedLabel">
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string>Elapsed: 00:00:00</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QPushButton" name="resetButton">
<property name="text">
<string>Reset</string>
</property>
<property name="default">
<bool>true</bool>
</property>
<property name="flat">
<bool>false</bool>
</property>
</widget>
</item>
<item>