update allow to pass a time to smart-punch

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

@ -10,13 +10,25 @@
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>300</width> <width>300</width>
<height>300</height> <height>320</height>
</rect> </rect>
</property> </property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>300</width> <width>300</width>
<height>300</height> <height>320</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>300</width>
<height>320</height>
</size> </size>
</property> </property>
<property name="baseSize"> <property name="baseSize">
@ -40,7 +52,10 @@
<item> <item>
<widget class="QLabel" name="statusLabel"> <widget class="QLabel" name="statusLabel">
<property name="text"> <property name="text">
<string>TextLabel</string> <string>Status</string>
</property>
<property name="textInteractionFlags">
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
</property> </property>
</widget> </widget>
</item> </item>
@ -112,17 +127,106 @@
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QPushButton" name="refreshStatusButton"> <widget class="QWidget" name="smartPunchWidget" native="true">
<property name="text"> <property name="sizePolicy">
<string>Refresh Status</string> <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property> </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>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> </widget>
</item> </item>
<item> <item>
<widget class="QPushButton" name="smartPunchButton"> <widget class="QWidget" name="buttonWidget" native="true">
<property name="text"> <property name="sizePolicy">
<string>Smart Punch</string> <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property> </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> </widget>
</item> </item>
</layout> </layout>

@ -7,7 +7,7 @@ from PySide6.QtWidgets import QWidget, QLabel, QMessageBox, QLineEdit, QHBoxLayo
QFormLayout, QDialog, QMainWindow QFormLayout, QDialog, QMainWindow
from pytimeparse.timeparse import timeparse 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 from timebot.ui.timebot import Ui_MainWindow
package_logger = logging.getLogger(__name__) package_logger = logging.getLogger(__name__)
@ -39,22 +39,6 @@ class MyPasswordDialog(QDialog):
return False, "", False 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): class MainWindow(QMainWindow, Ui_MainWindow):
def __init__(self, timebot: TimeBot, refresh_interval="1m"): def __init__(self, timebot: TimeBot, refresh_interval="1m"):
super(MainWindow, self).__init__() super(MainWindow, self).__init__()
@ -68,6 +52,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.threadpool = QThreadPool() self.threadpool = QThreadPool()
self.refreshStatusButton.clicked.connect(self.update_status) self.refreshStatusButton.clicked.connect(self.update_status)
self.refreshStatusButton.setFocus()
self.smartPunchButton.clicked.connect(self.smart_punch) self.smartPunchButton.clicked.connect(self.smart_punch)
self.status_timer_time = timeparse(refresh_interval) * 1000 self.status_timer_time = timeparse(refresh_interval) * 1000
@ -109,8 +94,13 @@ class MainWindow(QMainWindow, Ui_MainWindow):
def smart_punch(self): def smart_punch(self):
try: try:
self.timebot.smart_punch() date = self.smartPunchTimeLineEdit.text()
if date:
self.timebot.smart_punch(parse_user_time_input(date))
else:
self.timebot.smart_punch()
self.update_status() self.update_status()
self.smartPunchTimeLineEdit.setText("")
except Exception as e: except Exception as e:
self.error_msg_show(str(e)) self.error_msg_show(str(e))

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

Loading…
Cancel
Save