Skip to content

Commit 60be463

Browse files
committed
Amélioration table EPG
1 parent 9ce03ca commit 60be463

1 file changed

Lines changed: 26 additions & 8 deletions

File tree

main.py

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -160,10 +160,10 @@ def load_channel_info(self):
160160
def load_epg_data(self):
161161
now = int(time.time())
162162
two_hours = 2 * 60 * 60
163-
twenty_four_hours = 24 * 60 * 60
163+
eighteen_hours = 18 * 60 * 60
164164
all_data = {}
165165
try:
166-
for timestamp in range(now - two_hours, now + twenty_four_hours, 3600): # Ajout de pas d'une heure
166+
for timestamp in range(now - two_hours, now + eighteen_hours, 3600): # Ajout de pas d'une heure
167167
url = f"http://mafreebox.freebox.fr/api/v8/tv/epg/by_time/{timestamp}"
168168
response = requests.get(url, timeout=60)
169169
response.raise_for_status()
@@ -274,10 +274,7 @@ def initialize_rows(self):
274274
self.setColumnWidth(column, 450)
275275
self.setColumnWidth(0, 150)
276276

277-
def is_column_empty(self, col_index):
278-
# if col_index == 0:
279-
# return False # Ne jamais supprimer la première colonne.
280-
277+
def is_column_empty(self, col_index):
281278
for row in range(self.rowCount()):
282279
item = self.item(row, col_index)
283280
if item and item.text().strip():
@@ -329,6 +326,24 @@ def calculate_column_index(self, epoch):
329326
hour = datetime.datetime.fromtimestamp(epoch).hour
330327
return hour
331328

329+
def create_program_label(self, program_start, program):
330+
# Utilisation du style 'display: inline-block;' pour mieux contrôler l'alignement
331+
icon_html = f"<div style='font-size: 15px; vertical-align: middle; display: inline-block;'><img src='{program['channel_icon']}' height='35' width='35' style='height : 35px; vertical-align: middle; margin-right: 5px;'> {program['title']} </div><br />"
332+
# Ajustement de 'margin-top' pour aligner le texte avec l'icône
333+
text = f"<span style='vertical-align: top; font-size: 12px; display: inline-block;'>{program_start.strftime('%H:%M')} {program.get('desc', '')}</span>"
334+
label = QLabel(f"{icon_html}{text}")
335+
label.setMargin(2) # Réduire la marge externe
336+
label.setWordWrap(True)
337+
label.setStyleSheet("""
338+
QLabel {
339+
padding: 2px; /* Réduire l'espacement interne */
340+
text-align: left; /* Alignement du texte */
341+
line-height: 1; /* Ajustement de l'espacement entre les lignes */
342+
font-size: 12px; /* Ajustement de la taille de la police si nécessaire */
343+
}
344+
""")
345+
return label
346+
332347
def populate_table_with_ordered_info(self, channel_data):
333348
if not self.dataLoaded:
334349
now = datetime.datetime.now(pytz.timezone('Europe/Paris'))
@@ -342,7 +357,9 @@ def populate_table_with_ordered_info(self, channel_data):
342357
program_start = self.epoch_to_localtime_french(int(epoch_time))
343358
if (program_start.hour >= start_hour or program_start.hour < start_hour - 1):
344359
col = (program_start.hour - start_hour) % 24 + 1 # +1 pour les logos/noms
345-
self.setItem(row, col, QtWidgets.QTableWidgetItem(self.format_program_info(program_start, program_details)))
360+
program_label = self.create_program_label(program_start, program_details)
361+
self.setCellWidget(row, col, program_label)
362+
# self.setItem(row, col, QtWidgets.QTableWidgetItem(self.format_program_info(program_start, program_details)))
346363
self.dataLoaded = True
347364
self.set_style_cells()
348365

@@ -378,7 +395,8 @@ def seconds_to_duration(self, seconds):
378395
return f"{hours}h{minutes}"
379396

380397
def format_program_info(self, program_start, program):
381-
return f"{program_start.strftime('%H:%M')} {program['title']} {program.get('desc', '')}"
398+
icon_html = f"<img src='{program['channel_icon']}' height='20' width='20'>"
399+
return f"{icon_html} {program_start.strftime('%H:%M')} {program['title']} {program.get('desc', '')}"
382400

383401
def find_or_create_row(self, channel_uuid, program_details):
384402
# Vérifiez que toutes les clés nécessaires sont présentes

0 commit comments

Comments
 (0)