screenshots panel improved

This commit is contained in:
Vinicius Moreira
2019-10-15 12:34:18 -03:00
parent 170155d9f6
commit 973440f433
10 changed files with 94 additions and 51 deletions

View File

@@ -1,12 +1,10 @@
import re
import time
from datetime import datetime, timedelta
from threading import Thread
from typing import List, Type, Set
import requests
from PyQt5.QtCore import QThread, pyqtSignal, Qt
from PyQt5.QtGui import QPixmap
from PyQt5.QtCore import QThread, pyqtSignal
from bauh.api.abstract.cache import MemoryCache
from bauh.api.abstract.controller import SoftwareManager
@@ -486,42 +484,14 @@ class CustomAction(AsyncAction):
class GetScreenshots(AsyncAction):
MAX_HEIGHT = 600
MAX_WIDTH = 800
def __init__(self, manager: SoftwareManager, http_client: HttpClient, pkg: PackageView = None):
def __init__(self, manager: SoftwareManager, pkg: PackageView = None):
super(GetScreenshots, self).__init__()
self.pkg = pkg
self.manager = manager
self.http_client = http_client
def _get_img(self, url: str, imgs: list):
res = self.http_client.get(url)
if res and res.status_code == 200 and res.content:
pixmap = QPixmap()
pixmap.loadFromData(res.content)
if pixmap.size().height() > self.MAX_HEIGHT or pixmap.size().width() > self.MAX_WIDTH:
pixmap = pixmap.scaled(self.MAX_WIDTH, self.MAX_HEIGHT, Qt.KeepAspectRatio, Qt.SmoothTransformation)
imgs.append(pixmap)
def run(self):
if self.pkg:
imgs = []
screenshots = self.manager.get_screenshots(self.pkg.model)
if screenshots:
threads = []
for url in screenshots:
t = Thread(target=self._get_img, args=(url, imgs))
t.start()
threads.append(t)
for t in threads:
t.join()
self.notify_finished({'pkg': self.pkg, 'screenshots': imgs})
self.notify_finished({'pkg': self.pkg, 'screenshots': self.manager.get_screenshots(self.pkg.model)})
self.pkg = None