chore: Update URLManager layout and date formatting

This commit is contained in:
2024-07-12 20:01:27 +02:00
parent 2ad5dd1e0b
commit 7d8633198c

56
app.py
View File

@ -5,19 +5,18 @@ from PyQt5.QtWidgets import (
QApplication, QWidget, QVBoxLayout, QHBoxLayout, QApplication, QWidget, QVBoxLayout, QHBoxLayout,
QLineEdit, QPushButton, QTextEdit, QComboBox, QLineEdit, QPushButton, QTextEdit, QComboBox,
QMessageBox, QSpacerItem, QSizePolicy, QLabel, QFileDialog, QDialog, QFormLayout, QTableWidget, QTableWidgetItem, QMessageBox, QSpacerItem, QSizePolicy, QLabel, QFileDialog, QDialog, QFormLayout, QTableWidget, QTableWidgetItem,
QHeaderView # Import QHeaderView from PyQt5.QtWidgets QHeaderView, QDateTimeEdit # Import QDateTimeEdit for date formatting
) )
from PyQt5.QtGui import QIcon, QPixmap from PyQt5.QtGui import QIcon, QPixmap
from PyQt5.QtCore import Qt, QDateTime, QUrl from PyQt5.QtCore import Qt, QDateTime, QUrl
from PyQt5.QtSvg import QSvgWidget from PyQt5.QtSvg import QSvgWidget
from PyQt5.QtGui import QDesktopServices
class URLManager(QWidget): class URLManager(QWidget):
def __init__(self): def __init__(self):
super().__init__() super().__init__()
self.setWindowTitle('tabRemember - URL Manager') self.setWindowTitle('tabRemember - URL Manager')
self.setGeometry(100, 100, 800, 600) # Set a larger initial size self.setGeometry(100, 100, 600, 800) # Set a larger initial size
# Set the application icon # Set the application icon
self.setWindowIcon(QIcon('assets/logo.png')) self.setWindowIcon(QIcon('assets/logo.png'))
@ -177,10 +176,22 @@ class URLManager(QWidget):
if urls is None: if urls is None:
urls = self.urls urls = self.urls
# Fetch date format from settings
date_format = self.date_format
self.url_list.setRowCount(len(urls)) self.url_list.setRowCount(len(urls))
for row, url in enumerate(urls): for row, url in enumerate(urls):
self.url_list.setItem(row, 0, QTableWidgetItem(url['url'])) self.url_list.setItem(row, 0, QTableWidgetItem(url['url']))
self.url_list.setItem(row, 1, QTableWidgetItem(url['date']))
# Format date according to selected date format
if date_format == "Nerdy":
date_str = url['date']
elif date_format == "Normal":
date_str = QDateTime.fromString(url['date'], Qt.ISODate).toString("dd/MM/yy - hh:mm")
elif date_format == "Murica!":
date_str = QDateTime.fromString(url['date'], Qt.ISODate).toString("MM/dd/yy - hh:mmap")
self.url_list.setItem(row, 1, QTableWidgetItem(date_str))
# Action buttons # Action buttons
actions_layout = QHBoxLayout() actions_layout = QHBoxLayout()
@ -210,20 +221,15 @@ class URLManager(QWidget):
actions_widget.setLayout(actions_layout) actions_widget.setLayout(actions_layout)
self.url_list.setCellWidget(row, 2, actions_widget) self.url_list.setCellWidget(row, 2, actions_widget)
# Hide row numbers in the first column # Hide row numbers in the table
self.url_list.verticalHeader().setVisible(False) vertical_header = self.url_list.verticalHeader()
vertical_header.setVisible(False)
def edit_url(self, row): def edit_url(self, row):
url = self.urls[row]
self.url_input.setText(url['url'])
self.description_input.setPlainText(url['description'])
self.urls.pop(row)
def search_url(self, row):
url = self.urls[row]['url'] url = self.urls[row]['url']
search_engine = self.search_engines[self.search_engine_combobox.currentText()] description = self.urls[row]['description']
search_url = search_engine + QUrl(url).toString(QUrl.FullyEncoded) self.url_input.setText(url)
QDesktopServices.openUrl(QUrl(search_url)) self.description_input.setPlainText(description)
def load_settings(self): def load_settings(self):
settings_path = 'data/settings.json' settings_path = 'data/settings.json'
@ -232,10 +238,12 @@ class URLManager(QWidget):
settings = json.load(file) settings = json.load(file)
self.data_directory = settings['data_directory'] self.data_directory = settings['data_directory']
self.search_engine = settings['search_engine'] self.search_engine = settings['search_engine']
self.date_format = settings.get('date_format', 'Nerdy') # Default to 'Nerdy' if not present
else: else:
# Default settings # Default settings
self.data_directory = 'data/' self.data_directory = 'data/'
self.search_engine = 'Google' self.search_engine = 'Google'
self.date_format = 'Nerdy'
self.save_settings() self.save_settings()
def save_settings(self): def save_settings(self):
@ -244,7 +252,8 @@ class URLManager(QWidget):
with open(settings_path, 'w') as file: with open(settings_path, 'w') as file:
settings = { settings = {
'data_directory': self.data_directory, 'data_directory': self.data_directory,
'search_engine': self.search_engine 'search_engine': self.search_engine,
'date_format': self.date_format # Save date format setting
} }
json.dump(settings, file) json.dump(settings, file)
@ -273,12 +282,12 @@ class URLManager(QWidget):
layout.addWidget(svg_widget, alignment=Qt.AlignCenter) layout.addWidget(svg_widget, alignment=Qt.AlignCenter)
# Written by label # Written by label
written_by_label = QLabel("Written by Axel Rafn Benediktsson") written_by_label = QLabel("Developed by Axel Rafn")
layout.addWidget(written_by_label, alignment=Qt.AlignCenter) layout.addWidget(written_by_label, alignment=Qt.AlignCenter)
# Link label # Link label
link_label = QLabel() link_label = QLabel()
link_label.setText('<a href="https://git.axelrafn.is/axelrafn/tabRemember">https://git.axelrafn.is/axelrafn/tabRemember</a>') link_label.setText('<a href="https://git.axelrafn.is/axelrafn/tabRemember">git.axelrafn.is</a>')
link_label.setOpenExternalLinks(True) link_label.setOpenExternalLinks(True)
layout.addWidget(link_label, alignment=Qt.AlignCenter) layout.addWidget(link_label, alignment=Qt.AlignCenter)
@ -287,7 +296,9 @@ class URLManager(QWidget):
def show_settings_dialog(self): def show_settings_dialog(self):
dialog = SettingsDialog(self) dialog = SettingsDialog(self)
dialog.exec_() if dialog.exec_() == QDialog.Accepted:
self.load_settings() # Reload settings if they were updated
self.update_url_list() # Update URL list to reflect new date format
class SettingsDialog(QDialog): class SettingsDialog(QDialog):
@ -324,6 +335,12 @@ class SettingsDialog(QDialog):
self.search_engine_combobox.setCurrentText(self.parent.search_engine) self.search_engine_combobox.setCurrentText(self.parent.search_engine)
form_layout.addRow("Search Engine:", self.search_engine_combobox) form_layout.addRow("Search Engine:", self.search_engine_combobox)
# Date format selection
self.date_format_combobox = QComboBox()
self.date_format_combobox.addItems(["Nerdy", "Normal", "Murica!"])
self.date_format_combobox.setCurrentText(self.parent.date_format)
form_layout.addRow("Date Format:", self.date_format_combobox)
layout.addLayout(form_layout) layout.addLayout(form_layout)
# Save button # Save button
@ -341,6 +358,7 @@ class SettingsDialog(QDialog):
def save_settings(self): def save_settings(self):
self.parent.data_directory = self.directory_input.text() self.parent.data_directory = self.directory_input.text()
self.parent.search_engine = self.search_engine_combobox.currentText() self.parent.search_engine = self.search_engine_combobox.currentText()
self.parent.date_format = self.date_format_combobox.currentText()
self.parent.save_settings() self.parent.save_settings()
self.accept() self.accept()