diff --git a/tagstudio/src/qt/ui/home_ui.py b/tagstudio/src/qt/ui/home_ui.py index 93b83a0..db39a8c 100644 --- a/tagstudio/src/qt/ui/home_ui.py +++ b/tagstudio/src/qt/ui/home_ui.py @@ -3,96 +3,59 @@ ################################################################################ ## Form generated from reading UI file 'home.ui' ## -## Created by: Qt User Interface Compiler version 6.5.1 +## Created by: Qt User Interface Compiler version 6.6.3 ## ## WARNING! All changes made in this file will be lost when recompiling UI file! ################################################################################ -from PySide6.QtCore import ( - QCoreApplication, - QDate, - QDateTime, - QLocale, - QMetaObject, - QObject, - QPoint, - QRect, - QSize, - QTime, - QUrl, - Qt, -) -from PySide6.QtGui import ( - QBrush, - QColor, - QConicalGradient, - QCursor, - QFont, - QFontDatabase, - QGradient, - QIcon, - QImage, - QKeySequence, - QLinearGradient, - QPainter, - QPalette, - QPixmap, - QRadialGradient, - QTransform, -) -from PySide6.QtWidgets import ( - QApplication, - QComboBox, - QFrame, - QGridLayout, - QHBoxLayout, - QLayout, - QLineEdit, - QMainWindow, - QMenuBar, - QPushButton, - QScrollArea, - QSizePolicy, - QStatusBar, - QWidget, -) - +from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale, + QMetaObject, QObject, QPoint, QRect, + QSize, QTime, QUrl, Qt) +from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor, + QFont, QFontDatabase, QGradient, QIcon, + QImage, QKeySequence, QLinearGradient, QPainter, + QPalette, QPixmap, QRadialGradient, QTransform) +from PySide6.QtWidgets import (QApplication, QComboBox, QFrame, QGridLayout, + QHBoxLayout, QLayout, QLineEdit, QMainWindow, + QMenuBar, QPushButton, QScrollArea, QSizePolicy, + QStatusBar, QWidget) class Ui_MainWindow(object): def setupUi(self, MainWindow): if not MainWindow.objectName(): - MainWindow.setObjectName("MainWindow") + MainWindow.setObjectName(u"MainWindow") MainWindow.resize(1280, 720) self.centralwidget = QWidget(MainWindow) - self.centralwidget.setObjectName("centralwidget") + self.centralwidget.setObjectName(u"centralwidget") self.gridLayout = QGridLayout(self.centralwidget) - self.gridLayout.setObjectName("gridLayout") + self.gridLayout.setObjectName(u"gridLayout") self.horizontalLayout = QHBoxLayout() - self.horizontalLayout.setObjectName("horizontalLayout") + self.horizontalLayout.setObjectName(u"horizontalLayout") self.scrollArea = QScrollArea(self.centralwidget) - self.scrollArea.setObjectName("scrollArea") + self.scrollArea.setObjectName(u"scrollArea") self.scrollArea.setFocusPolicy(Qt.WheelFocus) self.scrollArea.setFrameShape(QFrame.NoFrame) self.scrollArea.setFrameShadow(QFrame.Plain) self.scrollArea.setWidgetResizable(True) self.scrollAreaWidgetContents = QWidget() - self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents") + self.scrollAreaWidgetContents.setObjectName(u"scrollAreaWidgetContents") self.scrollAreaWidgetContents.setGeometry(QRect(0, 0, 1260, 590)) self.gridLayout_2 = QGridLayout(self.scrollAreaWidgetContents) self.gridLayout_2.setSpacing(8) - self.gridLayout_2.setObjectName("gridLayout_2") + self.gridLayout_2.setObjectName(u"gridLayout_2") self.gridLayout_2.setContentsMargins(0, 0, 0, 8) self.scrollArea.setWidget(self.scrollAreaWidgetContents) self.horizontalLayout.addWidget(self.scrollArea) + self.gridLayout.addLayout(self.horizontalLayout, 5, 0, 1, 1) self.horizontalLayout_2 = QHBoxLayout() - self.horizontalLayout_2.setObjectName("horizontalLayout_2") + self.horizontalLayout_2.setObjectName(u"horizontalLayout_2") self.horizontalLayout_2.setSizeConstraint(QLayout.SetMinimumSize) self.backButton = QPushButton(self.centralwidget) - self.backButton.setObjectName("backButton") + self.backButton.setObjectName(u"backButton") self.backButton.setMinimumSize(QSize(0, 32)) self.backButton.setMaximumSize(QSize(32, 16777215)) font = QFont() @@ -103,7 +66,7 @@ class Ui_MainWindow(object): self.horizontalLayout_2.addWidget(self.backButton) self.forwardButton = QPushButton(self.centralwidget) - self.forwardButton.setObjectName("forwardButton") + self.forwardButton.setObjectName(u"forwardButton") self.forwardButton.setMinimumSize(QSize(0, 32)) self.forwardButton.setMaximumSize(QSize(32, 16777215)) font1 = QFont() @@ -115,7 +78,7 @@ class Ui_MainWindow(object): self.horizontalLayout_2.addWidget(self.forwardButton) self.searchField = QLineEdit(self.centralwidget) - self.searchField.setObjectName("searchField") + self.searchField.setObjectName(u"searchField") self.searchField.setMinimumSize(QSize(0, 32)) font2 = QFont() font2.setPointSize(11) @@ -125,17 +88,18 @@ class Ui_MainWindow(object): self.horizontalLayout_2.addWidget(self.searchField) self.searchButton = QPushButton(self.centralwidget) - self.searchButton.setObjectName("searchButton") + self.searchButton.setObjectName(u"searchButton") self.searchButton.setMinimumSize(QSize(0, 32)) self.searchButton.setFont(font2) self.horizontalLayout_2.addWidget(self.searchButton) + self.gridLayout.addLayout(self.horizontalLayout_2, 3, 0, 1, 1) self.comboBox = QComboBox(self.centralwidget) - self.comboBox.setObjectName("comboBox") - sizePolicy = QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Fixed) + self.comboBox.setObjectName(u"comboBox") + sizePolicy = QSizePolicy(QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.comboBox.sizePolicy().hasHeightForWidth()) @@ -147,12 +111,12 @@ class Ui_MainWindow(object): MainWindow.setCentralWidget(self.centralwidget) self.menubar = QMenuBar(MainWindow) - self.menubar.setObjectName("menubar") + self.menubar.setObjectName(u"menubar") self.menubar.setGeometry(QRect(0, 0, 1280, 22)) MainWindow.setMenuBar(self.menubar) self.statusbar = QStatusBar(MainWindow) - self.statusbar.setObjectName("statusbar") - sizePolicy1 = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Maximum) + self.statusbar.setObjectName(u"statusbar") + sizePolicy1 = QSizePolicy(QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Maximum) sizePolicy1.setHorizontalStretch(0) sizePolicy1.setVerticalStretch(0) sizePolicy1.setHeightForWidth(self.statusbar.sizePolicy().hasHeightForWidth()) @@ -162,24 +126,15 @@ class Ui_MainWindow(object): self.retranslateUi(MainWindow) QMetaObject.connectSlotsByName(MainWindow) - # setupUi def retranslateUi(self, MainWindow): - MainWindow.setWindowTitle( - QCoreApplication.translate("MainWindow", "MainWindow", None) - ) - self.backButton.setText(QCoreApplication.translate("MainWindow", "<", None)) - self.forwardButton.setText(QCoreApplication.translate("MainWindow", ">", None)) - self.searchField.setPlaceholderText( - QCoreApplication.translate("MainWindow", "Search Entries", None) - ) - self.searchButton.setText( - QCoreApplication.translate("MainWindow", "Search", None) - ) + MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"MainWindow", None)) + self.backButton.setText(QCoreApplication.translate("MainWindow", u"<", None)) + self.forwardButton.setText(QCoreApplication.translate("MainWindow", u">", None)) + self.searchField.setPlaceholderText(QCoreApplication.translate("MainWindow", u"Search Entries", None)) + self.searchButton.setText(QCoreApplication.translate("MainWindow", u"Search", None)) self.comboBox.setCurrentText("") - self.comboBox.setPlaceholderText( - QCoreApplication.translate("MainWindow", "Thumbnail Size", None) - ) - + self.comboBox.setPlaceholderText(QCoreApplication.translate("MainWindow", u"Thumbnail Size", None)) # retranslateUi + diff --git a/tagstudio/src/qt/widgets/preview_panel.py b/tagstudio/src/qt/widgets/preview_panel.py index 876558a..fe6196a 100644 --- a/tagstudio/src/qt/widgets/preview_panel.py +++ b/tagstudio/src/qt/widgets/preview_panel.py @@ -121,7 +121,8 @@ class PreviewPanel(QWidget): ) self.file_label.setStyleSheet("font-weight: bold; font-size: 12px") - self.dimensions_label = QLabel("Dimensions") + self.dimensions_label = QLabel("dimensionsLabel") + self.date_label = QLabel("dateLabel") self.dimensions_label.setWordWrap(True) # self.dim_label.setTextInteractionFlags( # Qt.TextInteractionFlag.TextSelectableByMouse) @@ -139,6 +140,7 @@ class PreviewPanel(QWidget): ) self.dimensions_label.setStyleSheet(properties_style) + self.date_label.setStyleSheet(properties_style) self.scroll_layout = QVBoxLayout() self.scroll_layout.setAlignment(Qt.AlignmentFlag.AlignTop) @@ -176,6 +178,7 @@ class PreviewPanel(QWidget): info_layout.addWidget(self.file_label) info_layout.addWidget(self.dimensions_label) + info_layout.addWidget(self.date_label) info_layout.addWidget(scroll_area) # keep list of rendered libraries to avoid needless re-rendering @@ -425,6 +428,24 @@ class PreviewPanel(QWidget): self.lib.add_field_to_entry(item_pair[1], field_id) added.add(item_pair[1]) + def update_date_label(self, filepath: Path | None = None) -> None: + """ + Updates the "Date Created" and "Date Modified" file property labels. + """ + if filepath and filepath.is_file(): + created: dt = dt.fromtimestamp(filepath.stat().st_ctime) + modified: dt = dt.fromtimestamp(filepath.stat().st_mtime) + self.date_label.setText( + f"Created: {dt.strftime(created, "%a, %b %m, %Y - %r")}\n" + f"Modified: {dt.strftime(modified, "%a, %b %m, %Y - %r")}" + ) + self.date_label.setHidden(False) + elif filepath: + self.date_label.setText("Created: N/A\nModified: N/A") + self.date_label.setHidden(False) + else: + self.date_label.setHidden(True) + # def update_widgets(self, item: Union[Entry, Collation, Tag]): def update_widgets(self): """ @@ -446,6 +467,7 @@ class PreviewPanel(QWidget): self.file_label.setCursor(Qt.CursorShape.ArrowCursor) self.dimensions_label.setText("") + self.update_date_label() self.preview_img.setContextMenuPolicy( Qt.ContextMenuPolicy.NoContextMenu ) @@ -554,6 +576,7 @@ class PreviewPanel(QWidget): self.dimensions_label.setText( f"{filepath.suffix.upper()[1:]} • {format_size(filepath.stat().st_size)}" ) + self.update_date_label(filepath) if not filepath.is_file(): raise FileNotFoundError @@ -563,12 +586,14 @@ class PreviewPanel(QWidget): logging.info( f"[PreviewPanel][ERROR] Couldn't Render thumbnail for {filepath} (because of {e})" ) + self.update_date_label() except (FileNotFoundError, cv2.error) as e: self.dimensions_label.setText(f"{filepath.suffix.upper()}") logging.info( f"[PreviewPanel][ERROR] Couldn't Render thumbnail for {filepath} (because of {e})" ) + self.update_date_label() except ( UnidentifiedImageError, DecompressionBombError, @@ -579,6 +604,7 @@ class PreviewPanel(QWidget): logging.info( f"[PreviewPanel][ERROR] Couldn't Render thumbnail for {filepath} (because of {e})" ) + self.update_date_label(filepath) try: self.preview_img.clicked.disconnect() @@ -613,6 +639,7 @@ class PreviewPanel(QWidget): self.preview_img.show() self.preview_vid.stop() self.preview_vid.hide() + self.update_date_label() if self.selected != self.driver.selected: self.file_label.setText(f"{len(self.driver.selected)} Items Selected") self.file_label.setCursor(Qt.CursorShape.ArrowCursor)