diff --git a/app.py b/app.py index 1a9893b..89fc092 100644 --- a/app.py +++ b/app.py @@ -5,19 +5,18 @@ from PyQt5.QtWidgets import ( QApplication, QWidget, QVBoxLayout, QHBoxLayout, QLineEdit, QPushButton, QTextEdit, QComboBox, 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.QtCore import Qt, QDateTime, QUrl from PyQt5.QtSvg import QSvgWidget -from PyQt5.QtGui import QDesktopServices class URLManager(QWidget): def __init__(self): super().__init__() 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 self.setWindowIcon(QIcon('assets/logo.png')) @@ -177,10 +176,22 @@ class URLManager(QWidget): if urls is None: urls = self.urls + # Fetch date format from settings + date_format = self.date_format + self.url_list.setRowCount(len(urls)) for row, url in enumerate(urls): 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 actions_layout = QHBoxLayout() @@ -210,20 +221,15 @@ class URLManager(QWidget): actions_widget.setLayout(actions_layout) self.url_list.setCellWidget(row, 2, actions_widget) - # Hide row numbers in the first column - self.url_list.verticalHeader().setVisible(False) + # Hide row numbers in the table + vertical_header = self.url_list.verticalHeader() + vertical_header.setVisible(False) 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'] - search_engine = self.search_engines[self.search_engine_combobox.currentText()] - search_url = search_engine + QUrl(url).toString(QUrl.FullyEncoded) - QDesktopServices.openUrl(QUrl(search_url)) + description = self.urls[row]['description'] + self.url_input.setText(url) + self.description_input.setPlainText(description) def load_settings(self): settings_path = 'data/settings.json' @@ -232,10 +238,12 @@ class URLManager(QWidget): settings = json.load(file) self.data_directory = settings['data_directory'] self.search_engine = settings['search_engine'] + self.date_format = settings.get('date_format', 'Nerdy') # Default to 'Nerdy' if not present else: # Default settings self.data_directory = 'data/' self.search_engine = 'Google' + self.date_format = 'Nerdy' self.save_settings() def save_settings(self): @@ -244,7 +252,8 @@ class URLManager(QWidget): with open(settings_path, 'w') as file: settings = { '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) @@ -273,12 +282,12 @@ class URLManager(QWidget): layout.addWidget(svg_widget, alignment=Qt.AlignCenter) # 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) # Link label link_label = QLabel() - link_label.setText('https://git.axelrafn.is/axelrafn/tabRemember') + link_label.setText('git.axelrafn.is') link_label.setOpenExternalLinks(True) layout.addWidget(link_label, alignment=Qt.AlignCenter) @@ -287,7 +296,9 @@ class URLManager(QWidget): def show_settings_dialog(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): @@ -324,6 +335,12 @@ class SettingsDialog(QDialog): self.search_engine_combobox.setCurrentText(self.parent.search_engine) 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) # Save button @@ -341,6 +358,7 @@ class SettingsDialog(QDialog): def save_settings(self): self.parent.data_directory = self.directory_input.text() self.parent.search_engine = self.search_engine_combobox.currentText() + self.parent.date_format = self.date_format_combobox.currentText() self.parent.save_settings() self.accept()