update allow to pass a time to smart-punch

master
Maximilian Zettler 2 years ago
parent 5cbb1355fb
commit 242a3be1c0
  1. 114
      timebot.ui
  2. 24
      timebot/gui.py
  3. 90
      timebot/ui/timebot.py

@ -10,13 +10,25 @@
<x>0</x>
<y>0</y>
<width>300</width>
<height>300</height>
<height>320</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>300</width>
<height>300</height>
<height>320</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>300</width>
<height>320</height>
</size>
</property>
<property name="baseSize">
@ -40,7 +52,10 @@
<item>
<widget class="QLabel" name="statusLabel">
<property name="text">
<string>TextLabel</string>
<string>Status</string>
</property>
<property name="textInteractionFlags">
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
</property>
</widget>
</item>
@ -112,19 +127,108 @@
</widget>
</item>
<item>
<widget class="QPushButton" name="refreshStatusButton">
<widget class="QWidget" name="smartPunchWidget" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QLabel" name="smartPunchTimeLineLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>129</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>129</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>Refresh Status</string>
<string>Smart Punch Time:</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="smartPunchTimeLineEdit">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>129</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>129</width>
<height>16777215</height>
</size>
</property>
<property name="focusPolicy">
<enum>Qt::StrongFocus</enum>
</property>
<property name="text">
<string/>
</property>
<property name="maxLength">
<number>30</number>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QWidget" name="buttonWidget" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QPushButton" name="smartPunchButton">
<property name="focusPolicy">
<enum>Qt::StrongFocus</enum>
</property>
<property name="text">
<string>Smart Punch</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="refreshStatusButton">
<property name="text">
<string>Refresh Status</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</widget>

@ -7,7 +7,7 @@ from PySide6.QtWidgets import QWidget, QLabel, QMessageBox, QLineEdit, QHBoxLayo
QFormLayout, QDialog, QMainWindow
from pytimeparse.timeparse import timeparse
from timebot.timebot import TimeBot, TimebotObtainPasswordError
from timebot.timebot import TimeBot, TimebotObtainPasswordError, parse_user_time_input
from timebot.ui.timebot import Ui_MainWindow
package_logger = logging.getLogger(__name__)
@ -39,22 +39,6 @@ class MyPasswordDialog(QDialog):
return False, "", False
class HoursPresentLabelArea(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.text_box_hours_present_label = QLabel()
self.text_box_hours_present_label.setText("Hours present:")
self.text_box_hours_present = QLabel()
self.text_box_hours_present.setStyleSheet("background : #E0E0E0")
self.text_box_hours_present.setAlignment(Qt.AlignCenter)
layout = QHBoxLayout()
layout.addWidget(self.text_box_hours_present_label)
layout.addWidget(self.text_box_hours_present)
self.setLayout(layout)
class MainWindow(QMainWindow, Ui_MainWindow):
def __init__(self, timebot: TimeBot, refresh_interval="1m"):
super(MainWindow, self).__init__()
@ -68,6 +52,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.threadpool = QThreadPool()
self.refreshStatusButton.clicked.connect(self.update_status)
self.refreshStatusButton.setFocus()
self.smartPunchButton.clicked.connect(self.smart_punch)
self.status_timer_time = timeparse(refresh_interval) * 1000
@ -109,8 +94,13 @@ class MainWindow(QMainWindow, Ui_MainWindow):
def smart_punch(self):
try:
date = self.smartPunchTimeLineEdit.text()
if date:
self.timebot.smart_punch(parse_user_time_input(date))
else:
self.timebot.smart_punch()
self.update_status()
self.smartPunchTimeLineEdit.setText("")
except Exception as e:
self.error_msg_show(str(e))

@ -16,16 +16,22 @@ from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
QImage, QKeySequence, QLinearGradient, QPainter,
QPalette, QPixmap, QRadialGradient, QTransform)
from PySide6.QtWidgets import (QApplication, QFrame, QHBoxLayout, QLabel,
QLayout, QMainWindow, QPushButton, QSizePolicy,
QVBoxLayout, QWidget)
QLayout, QLineEdit, QMainWindow, QPushButton,
QSizePolicy, QVBoxLayout, QWidget)
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
if not MainWindow.objectName():
MainWindow.setObjectName(u"MainWindow")
MainWindow.setEnabled(True)
MainWindow.resize(300, 300)
MainWindow.setMinimumSize(QSize(300, 300))
MainWindow.resize(300, 320)
sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(MainWindow.sizePolicy().hasHeightForWidth())
MainWindow.setSizePolicy(sizePolicy)
MainWindow.setMinimumSize(QSize(300, 320))
MainWindow.setMaximumSize(QSize(300, 320))
MainWindow.setBaseSize(QSize(300, 300))
MainWindow.setAcceptDrops(False)
icon = QIcon()
@ -42,24 +48,25 @@ class Ui_MainWindow(object):
self.verticalLayout.setObjectName(u"verticalLayout")
self.statusLabel = QLabel(self.centralwidget)
self.statusLabel.setObjectName(u"statusLabel")
self.statusLabel.setTextInteractionFlags(Qt.LinksAccessibleByMouse|Qt.TextSelectableByMouse)
self.verticalLayout.addWidget(self.statusLabel)
self.hoursPresentWidget = QWidget(self.centralwidget)
self.hoursPresentWidget.setObjectName(u"hoursPresentWidget")
sizePolicy = QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.hoursPresentWidget.sizePolicy().hasHeightForWidth())
self.hoursPresentWidget.setSizePolicy(sizePolicy)
sizePolicy1 = QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Fixed)
sizePolicy1.setHorizontalStretch(0)
sizePolicy1.setVerticalStretch(0)
sizePolicy1.setHeightForWidth(self.hoursPresentWidget.sizePolicy().hasHeightForWidth())
self.hoursPresentWidget.setSizePolicy(sizePolicy1)
self.horizontalLayout = QHBoxLayout(self.hoursPresentWidget)
self.horizontalLayout.setObjectName(u"horizontalLayout")
self.horizontalLayout.setSizeConstraint(QLayout.SetDefaultConstraint)
self.label_2 = QLabel(self.hoursPresentWidget)
self.label_2.setObjectName(u"label_2")
self.label_2.setEnabled(True)
sizePolicy.setHeightForWidth(self.label_2.sizePolicy().hasHeightForWidth())
self.label_2.setSizePolicy(sizePolicy)
sizePolicy1.setHeightForWidth(self.label_2.sizePolicy().hasHeightForWidth())
self.label_2.setSizePolicy(sizePolicy1)
self.label_2.setMinimumSize(QSize(0, 0))
font = QFont()
font.setUnderline(False)
@ -70,8 +77,8 @@ class Ui_MainWindow(object):
self.label_3 = QLabel(self.hoursPresentWidget)
self.label_3.setObjectName(u"label_3")
sizePolicy.setHeightForWidth(self.label_3.sizePolicy().hasHeightForWidth())
self.label_3.setSizePolicy(sizePolicy)
sizePolicy1.setHeightForWidth(self.label_3.sizePolicy().hasHeightForWidth())
self.label_3.setSizePolicy(sizePolicy1)
self.label_3.setAutoFillBackground(False)
self.label_3.setFrameShape(QFrame.NoFrame)
self.label_3.setAlignment(Qt.AlignCenter)
@ -81,15 +88,56 @@ class Ui_MainWindow(object):
self.verticalLayout.addWidget(self.hoursPresentWidget)
self.refreshStatusButton = QPushButton(self.centralwidget)
self.smartPunchWidget = QWidget(self.centralwidget)
self.smartPunchWidget.setObjectName(u"smartPunchWidget")
sizePolicy1.setHeightForWidth(self.smartPunchWidget.sizePolicy().hasHeightForWidth())
self.smartPunchWidget.setSizePolicy(sizePolicy1)
self.horizontalLayout_2 = QHBoxLayout(self.smartPunchWidget)
self.horizontalLayout_2.setObjectName(u"horizontalLayout_2")
self.smartPunchTimeLineLabel = QLabel(self.smartPunchWidget)
self.smartPunchTimeLineLabel.setObjectName(u"smartPunchTimeLineLabel")
sizePolicy1.setHeightForWidth(self.smartPunchTimeLineLabel.sizePolicy().hasHeightForWidth())
self.smartPunchTimeLineLabel.setSizePolicy(sizePolicy1)
self.smartPunchTimeLineLabel.setMinimumSize(QSize(129, 0))
self.smartPunchTimeLineLabel.setMaximumSize(QSize(129, 16777215))
self.smartPunchTimeLineLabel.setAlignment(Qt.AlignCenter)
self.horizontalLayout_2.addWidget(self.smartPunchTimeLineLabel)
self.smartPunchTimeLineEdit = QLineEdit(self.smartPunchWidget)
self.smartPunchTimeLineEdit.setObjectName(u"smartPunchTimeLineEdit")
sizePolicy1.setHeightForWidth(self.smartPunchTimeLineEdit.sizePolicy().hasHeightForWidth())
self.smartPunchTimeLineEdit.setSizePolicy(sizePolicy1)
self.smartPunchTimeLineEdit.setMinimumSize(QSize(129, 0))
self.smartPunchTimeLineEdit.setMaximumSize(QSize(129, 16777215))
self.smartPunchTimeLineEdit.setFocusPolicy(Qt.StrongFocus)
self.smartPunchTimeLineEdit.setMaxLength(30)
self.smartPunchTimeLineEdit.setAlignment(Qt.AlignCenter)
self.horizontalLayout_2.addWidget(self.smartPunchTimeLineEdit)
self.verticalLayout.addWidget(self.smartPunchWidget)
self.buttonWidget = QWidget(self.centralwidget)
self.buttonWidget.setObjectName(u"buttonWidget")
sizePolicy1.setHeightForWidth(self.buttonWidget.sizePolicy().hasHeightForWidth())
self.buttonWidget.setSizePolicy(sizePolicy1)
self.horizontalLayout_3 = QHBoxLayout(self.buttonWidget)
self.horizontalLayout_3.setObjectName(u"horizontalLayout_3")
self.smartPunchButton = QPushButton(self.buttonWidget)
self.smartPunchButton.setObjectName(u"smartPunchButton")
self.smartPunchButton.setFocusPolicy(Qt.StrongFocus)
self.horizontalLayout_3.addWidget(self.smartPunchButton)
self.refreshStatusButton = QPushButton(self.buttonWidget)
self.refreshStatusButton.setObjectName(u"refreshStatusButton")
self.verticalLayout.addWidget(self.refreshStatusButton)
self.horizontalLayout_3.addWidget(self.refreshStatusButton)
self.smartPunchButton = QPushButton(self.centralwidget)
self.smartPunchButton.setObjectName(u"smartPunchButton")
self.verticalLayout.addWidget(self.smartPunchButton)
self.verticalLayout.addWidget(self.buttonWidget)
MainWindow.setCentralWidget(self.centralwidget)
@ -100,10 +148,12 @@ class Ui_MainWindow(object):
def retranslateUi(self, MainWindow):
MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"Timebot", None))
self.statusLabel.setText(QCoreApplication.translate("MainWindow", u"TextLabel", None))
self.statusLabel.setText(QCoreApplication.translate("MainWindow", u"Status", None))
self.label_2.setText(QCoreApplication.translate("MainWindow", u"Hours present:", None))
self.label_3.setText(QCoreApplication.translate("MainWindow", u"00:00:00", None))
self.refreshStatusButton.setText(QCoreApplication.translate("MainWindow", u"Refresh Status", None))
self.smartPunchTimeLineLabel.setText(QCoreApplication.translate("MainWindow", u"Smart Punch Time:", None))
self.smartPunchTimeLineEdit.setText("")
self.smartPunchButton.setText(QCoreApplication.translate("MainWindow", u"Smart Punch", None))
self.refreshStatusButton.setText(QCoreApplication.translate("MainWindow", u"Refresh Status", None))
# retranslateUi

Loading…
Cancel
Save