qcanvas 1.2.0a1__py3-none-any.whl → 1.2.2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of qcanvas might be problematic. Click here for more details.

Files changed (78) hide show
  1. qcanvas/icons/__init__.py +56 -9
  2. qcanvas/icons/_icon_type.py +42 -0
  3. qcanvas/icons/_update_icons.py +89 -0
  4. qcanvas/icons/dark/actions/exit.svg +3 -0
  5. qcanvas/icons/dark/actions/mark_all_read.svg +3 -0
  6. qcanvas/icons/dark/actions/open_downloads.svg +3 -0
  7. qcanvas/icons/dark/actions/quick_login.svg +3 -0
  8. qcanvas/icons/dark/actions/sync.svg +3 -0
  9. qcanvas/icons/dark/options/auto_download.svg +3 -0
  10. qcanvas/icons/dark/options/theme.svg +3 -0
  11. qcanvas/icons/dark/tabs/assignments.svg +3 -0
  12. qcanvas/icons/dark/tabs/mail.svg +3 -0
  13. qcanvas/icons/dark/tabs/pages.svg +3 -0
  14. qcanvas/icons/dark/tree_items/assignment.svg +3 -0
  15. qcanvas/icons/dark/tree_items/mail.svg +3 -0
  16. qcanvas/icons/dark/tree_items/module.svg +3 -0
  17. qcanvas/icons/dark/tree_items/page.svg +3 -0
  18. qcanvas/icons/icons.qrc +43 -9
  19. qcanvas/icons/light/actions/exit.svg +3 -0
  20. qcanvas/icons/light/actions/mark_all_read.svg +3 -0
  21. qcanvas/icons/light/actions/open_downloads.svg +3 -0
  22. qcanvas/icons/light/actions/quick_login.svg +3 -0
  23. qcanvas/icons/light/actions/sync.svg +3 -0
  24. qcanvas/icons/light/options/auto_download.svg +3 -0
  25. qcanvas/icons/light/options/ignore_old.svg +3 -0
  26. qcanvas/icons/light/options/include_videos.svg +3 -0
  27. qcanvas/icons/light/options/theme.svg +3 -0
  28. qcanvas/icons/light/tabs/assignments.svg +3 -0
  29. qcanvas/icons/light/tabs/mail.svg +3 -0
  30. qcanvas/icons/light/tabs/pages.svg +3 -0
  31. qcanvas/icons/light/tree_items/assignment.svg +3 -0
  32. qcanvas/icons/light/tree_items/mail.svg +3 -0
  33. qcanvas/icons/light/tree_items/module.svg +3 -0
  34. qcanvas/icons/light/tree_items/page.svg +3 -0
  35. qcanvas/icons/rc_icons.py +1891 -629
  36. qcanvas/icons/{file-downloaded.svg → universal/downloads/downloaded.svg} +1 -1
  37. qcanvas/icons/universal/tabs/assignments_new_content.svg +3 -0
  38. qcanvas/icons/universal/tabs/mail_new_content.svg +3 -0
  39. qcanvas/icons/universal/tabs/pages_new_content.svg +3 -0
  40. qcanvas/icons/universal/tree_items/semester.svg +108 -0
  41. qcanvas/ui/course_viewer/content_tree.py +7 -3
  42. qcanvas/ui/course_viewer/course_tree/__init__.py +1 -0
  43. qcanvas/ui/course_viewer/course_tree/_course_icon_generator.py +86 -0
  44. qcanvas/ui/course_viewer/{course_tree.py → course_tree/course_tree.py} +20 -6
  45. qcanvas/ui/course_viewer/course_viewer.py +72 -30
  46. qcanvas/ui/course_viewer/tabs/assignment_tab/assignment_tree.py +6 -2
  47. qcanvas/ui/course_viewer/tabs/file_tab/file_tree.py +17 -13
  48. qcanvas/ui/course_viewer/tabs/file_tab/pages_file_tree.py +15 -9
  49. qcanvas/ui/course_viewer/tabs/mail_tab/mail_tree.py +7 -4
  50. qcanvas/ui/course_viewer/tabs/page_tab/page_tree.py +6 -2
  51. qcanvas/ui/course_viewer/tabs/resource_rich_browser.py +36 -52
  52. qcanvas/ui/course_viewer/tree_widget_data_item.py +22 -0
  53. qcanvas/ui/main_ui/course_viewer_container.py +11 -10
  54. qcanvas/ui/main_ui/options/auto_download_resources_option.py +3 -1
  55. qcanvas/ui/main_ui/options/theme_selection_menu.py +2 -0
  56. qcanvas/ui/main_ui/qcanvas_window.py +21 -7
  57. qcanvas/ui/memory_tree/_tree_memory.py +1 -0
  58. qcanvas/ui/memory_tree/memory_tree_widget.py +2 -2
  59. qcanvas/ui/setup/setup_dialog.py +1 -1
  60. qcanvas/util/file_icons.py +21 -3
  61. qcanvas/util/html_cleaner.py +2 -0
  62. qcanvas/util/layouts.py +5 -2
  63. qcanvas/util/settings/_mapped_setting.py +6 -1
  64. qcanvas/util/settings/_ui_settings.py +1 -1
  65. qcanvas/util/themes/_theme_changer.py +13 -1
  66. qcanvas/util/ui_tools.py +5 -1
  67. {qcanvas-1.2.0a1.dist-info → qcanvas-1.2.2.dist-info}/METADATA +13 -7
  68. qcanvas-1.2.2.dist-info/RECORD +118 -0
  69. qcanvas/icons/sync.svg +0 -7
  70. qcanvas-1.2.0a1.dist-info/RECORD +0 -80
  71. /qcanvas/icons/{logo-transparent-dark.svg → dark/branding/logo_transparent.svg} +0 -0
  72. /qcanvas/icons/{logo-transparent-light.svg → light/branding/logo_transparent.svg} +0 -0
  73. /qcanvas/icons/{main_icon.svg → universal/branding/main_icon.svg} +0 -0
  74. /qcanvas/icons/{file-download-failed.svg → universal/downloads/download_failed.svg} +0 -0
  75. /qcanvas/icons/{file-not-downloaded.svg → universal/downloads/not_downloaded.svg} +0 -0
  76. /qcanvas/icons/{file-unknown.svg → universal/downloads/unknown.svg} +0 -0
  77. {qcanvas-1.2.0a1.dist-info → qcanvas-1.2.2.dist-info}/WHEEL +0 -0
  78. {qcanvas-1.2.0a1.dist-info → qcanvas-1.2.2.dist-info}/entry_points.txt +0 -0
qcanvas/icons/__init__.py CHANGED
@@ -1,9 +1,56 @@
1
- from qcanvas.icons import rc_icons
2
-
3
- main_icon = ":/main_icon.svg"
4
- file_downloaded = ":/file-downloaded.svg"
5
- file_not_downloaded = ":/file-not-downloaded.svg"
6
- file_download_failed = ":/file-download-failed.svg"
7
- file_unknown = ":/file-unknown.svg"
8
- logo_transparent_light = ":/logo-transparent-light.svg"
9
- logo_transparent_dark = ":/logo-transparent-dark.svg"
1
+ from qtpy.QtGui import QIcon
2
+
3
+ from ._icon_type import ThemeIcon, UniversalIcon
4
+ from .rc_icons import (
5
+ qt_resource_data as _, # Without this, icon data will not be loaded
6
+ )
7
+
8
+
9
+ # noinspection PyPep8Naming
10
+ class actions:
11
+ exit = QIcon.fromTheme("actions/exit")
12
+ mark_all_read = QIcon.fromTheme("actions/mark_all_read")
13
+ open_downloads = QIcon.fromTheme("actions/open_downloads")
14
+ quick_login = QIcon.fromTheme("actions/quick_login")
15
+ sync = QIcon.fromTheme("actions/sync")
16
+
17
+
18
+ # noinspection PyPep8Naming
19
+ class branding:
20
+ logo_transparent = QIcon.fromTheme("branding/logo_transparent")
21
+ main_icon = QIcon.fromTheme("branding/main_icon")
22
+
23
+
24
+ # noinspection PyPep8Naming
25
+ class options:
26
+ auto_download = QIcon.fromTheme("options/auto_download")
27
+ ignore_old = QIcon.fromTheme("options/ignore_old")
28
+ include_videos = QIcon.fromTheme("options/include_videos")
29
+ theme = QIcon.fromTheme("options/theme")
30
+
31
+
32
+ # noinspection PyPep8Naming
33
+ class tabs:
34
+ assignments = QIcon.fromTheme("tabs/assignments")
35
+ assignments_new_content = QIcon.fromTheme("tabs/assignments_new_content")
36
+ mail = QIcon.fromTheme("tabs/mail")
37
+ mail_new_content = QIcon.fromTheme("tabs/mail_new_content")
38
+ pages = QIcon.fromTheme("tabs/pages")
39
+ pages_new_content = QIcon.fromTheme("tabs/pages_new_content")
40
+
41
+
42
+ # noinspection PyPep8Naming
43
+ class tree_items:
44
+ assignment = QIcon.fromTheme("tree_items/assignment")
45
+ mail = QIcon.fromTheme("tree_items/mail")
46
+ module = QIcon.fromTheme("tree_items/module")
47
+ page = QIcon.fromTheme("tree_items/page")
48
+ semester = QIcon.fromTheme("tree_items/semester")
49
+
50
+
51
+ # noinspection PyPep8Naming
52
+ class downloads:
53
+ download_failed = QIcon.fromTheme("downloads/download_failed")
54
+ downloaded = QIcon.fromTheme("downloads/downloaded")
55
+ not_downloaded = QIcon.fromTheme("downloads/not_downloaded")
56
+ unknown = QIcon.fromTheme("downloads/unknown")
@@ -0,0 +1,42 @@
1
+ # Unused
2
+ import logging
3
+
4
+ from qtpy.QtGui import QIcon
5
+
6
+ _logger = logging.getLogger(__name__)
7
+
8
+
9
+ class ThemeIcon:
10
+ def __init__(self, theme_path: str):
11
+ self._theme_path = theme_path
12
+ self._icon = None
13
+
14
+ @property
15
+ def icon(self) -> QIcon:
16
+ if self._icon is None:
17
+ self._icon = QIcon.fromTheme(self._theme_path)
18
+
19
+ return self._icon
20
+
21
+ @property
22
+ def theme_path(self) -> str:
23
+ return self._theme_path
24
+
25
+ def __hash__(self) -> int:
26
+ return hash(self._theme_path)
27
+
28
+
29
+ class UniversalIcon(ThemeIcon):
30
+ def __init__(self, theme_path: str, full_path: str):
31
+ super().__init__(theme_path)
32
+ self._full_path = full_path
33
+
34
+ @property
35
+ def full_path(self) -> str:
36
+ return self._full_path
37
+
38
+ def __hash__(self) -> int:
39
+ return hash(self._theme_path) ^ hash(self.full_path)
40
+
41
+
42
+ AnyIcon = UniversalIcon | ThemeIcon
@@ -0,0 +1,89 @@
1
+ # This file regenerates icons.qrc, rc_icons.py and the icons definition file based on the icons in dark/, light/ and universal/
2
+
3
+ import glob
4
+ import logging
5
+ import os
6
+ import subprocess
7
+ from pathlib import Path
8
+
9
+ import xmltodict
10
+
11
+ _logger = logging.getLogger(__name__)
12
+
13
+
14
+ def remove_base_directory(path: str | Path) -> Path:
15
+ if isinstance(path, str):
16
+ path = Path(path)
17
+
18
+ return Path(*path.parts[1:])
19
+
20
+
21
+ def generate_xml(all_icons: list[Path]) -> str:
22
+ xml_dict = {
23
+ "RCC": {
24
+ "@version": "1.0",
25
+ "qresource": {"@prefix": "icons/", "file": all_icons},
26
+ }
27
+ }
28
+
29
+ return "<!DOCTYPE RCC>\n" + xmltodict.unparse(
30
+ xml_dict, pretty=True, full_document=False
31
+ )
32
+
33
+
34
+ def generate_icon_defs(icons: list[Path]) -> str:
35
+ icons_base_removed = [remove_base_directory(icon) for icon in icons]
36
+ groups = group_icons_by_category(icons_base_removed)
37
+ classes = [
38
+ generate_group_class(group_name, icons) for group_name, icons in groups.items()
39
+ ]
40
+
41
+ return f"""from .rc_icons import qt_resource_data as _ # Without this, icon data will not be loaded
42
+ from qtpy.QtGui import QIcon
43
+ from ._icon_type import UniversalIcon, ThemeIcon
44
+
45
+ """ + "\n\n".join(
46
+ classes
47
+ )
48
+
49
+
50
+ def group_icons_by_category(icons: list[Path]) -> dict[str, set[Path]]:
51
+ groups: dict[str, set[Path]] = {}
52
+
53
+ for icon in icons:
54
+ icon_category = icon.parts[0]
55
+ groups.setdefault(icon_category, set())
56
+ groups[icon_category].add(icon)
57
+
58
+ return groups
59
+
60
+
61
+ def generate_group_class(group_name: str, icons: set[Path]) -> str:
62
+ # pascal_case_class_name = "".join([part.title() for part in group_name.split("_")])
63
+ lines = ["# noinspection PyPep8Naming", f"class {group_name}:"]
64
+
65
+ for icon in sorted(icons):
66
+ path_no_ext = os.path.splitext(icon)[0]
67
+ lines.append(f' {icon.stem} = QIcon.fromTheme("{path_no_ext}")')
68
+
69
+ return "\n".join(lines)
70
+
71
+
72
+ def run_rcc() -> None:
73
+ subprocess.run(["pyside6-rcc", "icons.qrc", "-o", "rc_icons.py"])
74
+
75
+
76
+ def write(file_name: str, content: str) -> None:
77
+ with open(file_name, "w") as f:
78
+ f.write(content)
79
+
80
+
81
+ if __name__ == "__main__":
82
+ all_icons: list[Path] = [
83
+ Path(file) for file in glob.glob("**/*.svg", recursive=True)
84
+ ]
85
+ all_icons.sort()
86
+
87
+ write("icons.qrc", generate_xml(all_icons))
88
+ write("__init__.py", generate_icon_defs(all_icons))
89
+ run_rcc()
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e8eaed">
2
+ <path d="m256-200-56-56 224-224-224-224 56-56 224 224 224-224 56 56-224 224 224 224-56 56-224-224-224 224Z"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e8eaed">
2
+ <path d="M120-280v-80h560v80H120Zm80-160v-80h560v80H200Zm80-160v-80h560v80H280Z"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e8eaed">
2
+ <path d="M160-160q-33 0-56.5-23.5T80-240v-480q0-33 23.5-56.5T160-800h240l80 80h320q33 0 56.5 23.5T880-640H447l-80-80H160v480l96-320h684L837-217q-8 26-29.5 41.5T760-160H160Zm84-80h516l72-240H316l-72 240Zm0 0 72-240-72 240Zm-84-400v-80 80Z"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e8eaed">
2
+ <path d="M480-80q-82 0-155-31.5t-127.5-86Q143-252 111.5-325T80-480q0-83 31.5-155.5t86-127Q252-817 325-848.5T480-880q83 0 155.5 31.5t127 86q54.5 54.5 86 127T880-480q0 82-31.5 155t-86 127.5q-54.5 54.5-127 86T480-80Zm0-82q26-36 45-75t31-83H404q12 44 31 83t45 75Zm-104-16q-18-33-31.5-68.5T322-320H204q29 50 72.5 87t99.5 55Zm208 0q56-18 99.5-55t72.5-87H638q-9 38-22.5 73.5T584-178ZM170-400h136q-3-20-4.5-39.5T300-480q0-21 1.5-40.5T306-560H170q-5 20-7.5 39.5T160-480q0 21 2.5 40.5T170-400Zm216 0h188q3-20 4.5-39.5T580-480q0-21-1.5-40.5T574-560H386q-3 20-4.5 39.5T380-480q0 21 1.5 40.5T386-400Zm268 0h136q5-20 7.5-39.5T800-480q0-21-2.5-40.5T790-560H654q3 20 4.5 39.5T660-480q0 21-1.5 40.5T654-400Zm-16-240h118q-29-50-72.5-87T584-782q18 33 31.5 68.5T638-640Zm-234 0h152q-12-44-31-83t-45-75q-26 36-45 75t-31 83Zm-200 0h118q9-38 22.5-73.5T376-782q-56 18-99.5 55T204-640Z"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e8eaed">
2
+ <path d="M160-160v-80h110l-16-14q-52-46-73-105t-21-119q0-111 66.5-197.5T400-790v84q-72 26-116 88.5T240-478q0 45 17 87.5t53 78.5l10 10v-98h80v240H160Zm400-10v-84q72-26 116-88.5T720-482q0-45-17-87.5T650-648l-10-10v98h-80v-240h240v80H690l16 14q49 49 71.5 106.5T800-482q0 111-66.5 197.5T560-170Z"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e8eaed">
2
+ <path d="M480-320 280-520l56-58 104 104v-326h80v326l104-104 56 58-200 200ZM240-160q-33 0-56.5-23.5T160-240v-120h80v120h480v-120h80v120q0 33-23.5 56.5T720-160H240Z"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e8eaed">
2
+ <path d="M480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm40-83q119-15 199.5-104.5T800-480q0-123-80.5-212.5T520-797v634Z"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e8eaed">
2
+ <path d="M200-120q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h168q13-36 43.5-58t68.5-22q38 0 68.5 22t43.5 58h168q33 0 56.5 23.5T840-760v560q0 33-23.5 56.5T760-120H200Zm0-80h560v-560H200v560Zm80-80h280v-80H280v80Zm0-160h400v-80H280v80Zm0-160h400v-80H280v80Zm200-190q13 0 21.5-8.5T510-820q0-13-8.5-21.5T480-850q-13 0-21.5 8.5T450-820q0 13 8.5 21.5T480-790ZM200-200v-560 560Z"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e8eaed">
2
+ <path d="M160-160q-33 0-56.5-23.5T80-240v-480q0-33 23.5-56.5T160-800h640q33 0 56.5 23.5T880-720v480q0 33-23.5 56.5T800-160H160Zm320-280L160-640v400h640v-400L480-440Zm0-80 320-200H160l320 200ZM160-640v-80 480-400Z"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e8eaed">
2
+ <path d="M320-240h320v-80H320v80Zm0-160h320v-80H320v80ZM240-80q-33 0-56.5-23.5T160-160v-640q0-33 23.5-56.5T240-880h320l240 240v480q0 33-23.5 56.5T720-80H240Zm280-520v-200H240v640h480v-440H520ZM240-800v200-200 640-640Z"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e8eaed">
2
+ <path d="M200-120q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h168q13-36 43.5-58t68.5-22q38 0 68.5 22t43.5 58h168q33 0 56.5 23.5T840-760v560q0 33-23.5 56.5T760-120H200Zm0-80h560v-560H200v560Zm80-80h280v-80H280v80Zm0-160h400v-80H280v80Zm0-160h400v-80H280v80Zm200-190q13 0 21.5-8.5T510-820q0-13-8.5-21.5T480-850q-13 0-21.5 8.5T450-820q0 13 8.5 21.5T480-790ZM200-200v-560 560Z"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e8eaed">
2
+ <path d="M160-160q-33 0-56.5-23.5T80-240v-480q0-33 23.5-56.5T160-800h640q33 0 56.5 23.5T880-720v480q0 33-23.5 56.5T800-160H160Zm320-280L160-640v400h640v-400L480-440Zm0-80 320-200H160l320 200ZM160-640v-80 480-400Z"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e8eaed">
2
+ <path d="M560-564v-68q33-14 67.5-21t72.5-7q26 0 51 4t49 10v64q-24-9-48.5-13.5T700-600q-38 0-73 9.5T560-564Zm0 220v-68q33-14 67.5-21t72.5-7q26 0 51 4t49 10v64q-24-9-48.5-13.5T700-380q-38 0-73 9t-67 27Zm0-110v-68q33-14 67.5-21t72.5-7q26 0 51 4t49 10v64q-24-9-48.5-13.5T700-490q-38 0-73 9.5T560-454ZM260-320q47 0 91.5 10.5T440-278v-394q-41-24-87-36t-93-12q-36 0-71.5 7T120-692v396q35-12 69.5-18t70.5-6Zm260 42q44-21 88.5-31.5T700-320q36 0 70.5 6t69.5 18v-396q-33-14-68.5-21t-71.5-7q-47 0-93 12t-87 36v394Zm-40 118q-48-38-104-59t-116-21q-42 0-82.5 11T100-198q-21 11-40.5-1T40-234v-482q0-11 5.5-21T62-752q46-24 96-36t102-12q58 0 113.5 15T480-740q51-30 106.5-45T700-800q52 0 102 12t96 36q11 5 16.5 15t5.5 21v482q0 23-19.5 35t-40.5 1q-37-20-77.5-31T700-240q-60 0-116 21t-104 59ZM280-494Z"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e8eaed">
2
+ <path d="M280-280h280v-80H280v80Zm0-160h400v-80H280v80Zm0-160h400v-80H280v80Zm-80 480q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h560q33 0 56.5 23.5T840-760v560q0 33-23.5 56.5T760-120H200Zm0-80h560v-560H200v560Zm0-560v560-560Z"/>
3
+ </svg>
qcanvas/icons/icons.qrc CHANGED
@@ -1,12 +1,46 @@
1
1
  <!DOCTYPE RCC>
2
2
  <RCC version="1.0">
3
- <qresource>
4
- <file>main_icon.svg</file>
5
- <file>file-downloaded.svg</file>
6
- <file>file-not-downloaded.svg</file>
7
- <file>file-download-failed.svg</file>
8
- <file>file-unknown.svg</file>
9
- <file>logo-transparent-light.svg</file>
10
- <file>logo-transparent-dark.svg</file>
3
+ <qresource prefix="icons/">
4
+ <file>dark/actions/exit.svg</file>
5
+ <file>dark/actions/mark_all_read.svg</file>
6
+ <file>dark/actions/open_downloads.svg</file>
7
+ <file>dark/actions/quick_login.svg</file>
8
+ <file>dark/actions/sync.svg</file>
9
+ <file>dark/branding/logo_transparent.svg</file>
10
+ <file>dark/options/auto_download.svg</file>
11
+ <file>dark/options/theme.svg</file>
12
+ <file>dark/tabs/assignments.svg</file>
13
+ <file>dark/tabs/mail.svg</file>
14
+ <file>dark/tabs/pages.svg</file>
15
+ <file>dark/tree_items/assignment.svg</file>
16
+ <file>dark/tree_items/mail.svg</file>
17
+ <file>dark/tree_items/module.svg</file>
18
+ <file>dark/tree_items/page.svg</file>
19
+ <file>light/actions/exit.svg</file>
20
+ <file>light/actions/mark_all_read.svg</file>
21
+ <file>light/actions/open_downloads.svg</file>
22
+ <file>light/actions/quick_login.svg</file>
23
+ <file>light/actions/sync.svg</file>
24
+ <file>light/branding/logo_transparent.svg</file>
25
+ <file>light/options/auto_download.svg</file>
26
+ <file>light/options/ignore_old.svg</file>
27
+ <file>light/options/include_videos.svg</file>
28
+ <file>light/options/theme.svg</file>
29
+ <file>light/tabs/assignments.svg</file>
30
+ <file>light/tabs/mail.svg</file>
31
+ <file>light/tabs/pages.svg</file>
32
+ <file>light/tree_items/assignment.svg</file>
33
+ <file>light/tree_items/mail.svg</file>
34
+ <file>light/tree_items/module.svg</file>
35
+ <file>light/tree_items/page.svg</file>
36
+ <file>universal/branding/main_icon.svg</file>
37
+ <file>universal/downloads/download_failed.svg</file>
38
+ <file>universal/downloads/downloaded.svg</file>
39
+ <file>universal/downloads/not_downloaded.svg</file>
40
+ <file>universal/downloads/unknown.svg</file>
41
+ <file>universal/tabs/assignments_new_content.svg</file>
42
+ <file>universal/tabs/mail_new_content.svg</file>
43
+ <file>universal/tabs/pages_new_content.svg</file>
44
+ <file>universal/tree_items/semester.svg</file>
11
45
  </qresource>
12
- </RCC>
46
+ </RCC>
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5f6368">
2
+ <path d="m256-200-56-56 224-224-224-224 56-56 224 224 224-224 56 56-224 224 224 224-56 56-224-224-224 224Z"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5f6368">
2
+ <path d="M120-280v-80h560v80H120Zm80-160v-80h560v80H200Zm80-160v-80h560v80H280Z"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5f6368">
2
+ <path d="M160-160q-33 0-56.5-23.5T80-240v-480q0-33 23.5-56.5T160-800h240l80 80h320q33 0 56.5 23.5T880-640H447l-80-80H160v480l96-320h684L837-217q-8 26-29.5 41.5T760-160H160Zm84-80h516l72-240H316l-72 240Zm0 0 72-240-72 240Zm-84-400v-80 80Z"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5f6368">
2
+ <path d="M480-80q-82 0-155-31.5t-127.5-86Q143-252 111.5-325T80-480q0-83 31.5-155.5t86-127Q252-817 325-848.5T480-880q83 0 155.5 31.5t127 86q54.5 54.5 86 127T880-480q0 82-31.5 155t-86 127.5q-54.5 54.5-127 86T480-80Zm0-82q26-36 45-75t31-83H404q12 44 31 83t45 75Zm-104-16q-18-33-31.5-68.5T322-320H204q29 50 72.5 87t99.5 55Zm208 0q56-18 99.5-55t72.5-87H638q-9 38-22.5 73.5T584-178ZM170-400h136q-3-20-4.5-39.5T300-480q0-21 1.5-40.5T306-560H170q-5 20-7.5 39.5T160-480q0 21 2.5 40.5T170-400Zm216 0h188q3-20 4.5-39.5T580-480q0-21-1.5-40.5T574-560H386q-3 20-4.5 39.5T380-480q0 21 1.5 40.5T386-400Zm268 0h136q5-20 7.5-39.5T800-480q0-21-2.5-40.5T790-560H654q3 20 4.5 39.5T660-480q0 21-1.5 40.5T654-400Zm-16-240h118q-29-50-72.5-87T584-782q18 33 31.5 68.5T638-640Zm-234 0h152q-12-44-31-83t-45-75q-26 36-45 75t-31 83Zm-200 0h118q9-38 22.5-73.5T376-782q-56 18-99.5 55T204-640Z"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5f6368">
2
+ <path d="M160-160v-80h110l-16-14q-52-46-73-105t-21-119q0-111 66.5-197.5T400-790v84q-72 26-116 88.5T240-478q0 45 17 87.5t53 78.5l10 10v-98h80v240H160Zm400-10v-84q72-26 116-88.5T720-482q0-45-17-87.5T650-648l-10-10v98h-80v-240h240v80H690l16 14q49 49 71.5 106.5T800-482q0 111-66.5 197.5T560-170Z"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5f6368">
2
+ <path d="M480-336 288-528l51-51 105 105v-342h72v342l105-105 51 51-192 192ZM263.72-192Q234-192 213-213.15T192-264v-72h72v72h432v-72h72v72q0 29.7-21.16 50.85Q725.68-192 695.96-192H263.72Z"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5f6368">
2
+ <path d="M200-640h560v-80H200v80Zm0 0v-80 80Zm0 560q-33 0-56.5-23.5T120-160v-560q0-33 23.5-56.5T200-800h40v-80h80v80h320v-80h80v80h40q33 0 56.5 23.5T840-720v227q-19-9-39-15t-41-9v-43H200v400h252q7 22 16.5 42T491-80H200Zm520 40q-83 0-141.5-58.5T520-240q0-83 58.5-141.5T720-440q83 0 141.5 58.5T920-240q0 83-58.5 141.5T720-40Zm67-105 28-28-75-75v-112h-40v128l87 87Z"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5f6368">
2
+ <path d="m160-800 80 160h120l-80-160h80l80 160h120l-80-160h80l80 160h120l-80-160h120q33 0 56.5 23.5T880-720v480q0 33-23.5 56.5T800-160H160q-33 0-56.5-23.5T80-240v-480q0-33 23.5-56.5T160-800Zm0 240v320h640v-320H160Zm0 0v320-320Z"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5f6368">
2
+ <path d="M480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm40-83q119-15 199.5-104.5T800-480q0-123-80.5-212.5T520-797v634Z"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5f6368">
2
+ <path d="M200-120q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h168q13-36 43.5-58t68.5-22q38 0 68.5 22t43.5 58h168q33 0 56.5 23.5T840-760v560q0 33-23.5 56.5T760-120H200Zm0-80h560v-560H200v560Zm80-80h280v-80H280v80Zm0-160h400v-80H280v80Zm0-160h400v-80H280v80Zm200-190q13 0 21.5-8.5T510-820q0-13-8.5-21.5T480-850q-13 0-21.5 8.5T450-820q0 13 8.5 21.5T480-790ZM200-200v-560 560Z"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5f6368">
2
+ <path d="M160-160q-33 0-56.5-23.5T80-240v-480q0-33 23.5-56.5T160-800h640q33 0 56.5 23.5T880-720v480q0 33-23.5 56.5T800-160H160Zm320-280L160-640v400h640v-400L480-440Zm0-80 320-200H160l320 200ZM160-640v-80 480-400Z"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5f6368">
2
+ <path d="M320-240h320v-80H320v80Zm0-160h320v-80H320v80ZM240-80q-33 0-56.5-23.5T160-160v-640q0-33 23.5-56.5T240-880h320l240 240v480q0 33-23.5 56.5T720-80H240Zm280-520v-200H240v640h480v-440H520ZM240-800v200-200 640-640Z"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5f6368">
2
+ <path d="M200-120q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h168q13-36 43.5-58t68.5-22q38 0 68.5 22t43.5 58h168q33 0 56.5 23.5T840-760v560q0 33-23.5 56.5T760-120H200Zm0-80h560v-560H200v560Zm80-80h280v-80H280v80Zm0-160h400v-80H280v80Zm0-160h400v-80H280v80Zm200-190q13 0 21.5-8.5T510-820q0-13-8.5-21.5T480-850q-13 0-21.5 8.5T450-820q0 13 8.5 21.5T480-790ZM200-200v-560 560Z"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5f6368">
2
+ <path d="M160-160q-33 0-56.5-23.5T80-240v-480q0-33 23.5-56.5T160-800h640q33 0 56.5 23.5T880-720v480q0 33-23.5 56.5T800-160H160Zm320-280L160-640v400h640v-400L480-440Zm0-80 320-200H160l320 200ZM160-640v-80 480-400Z"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5f6368">
2
+ <path d="M560-564v-68q33-14 67.5-21t72.5-7q26 0 51 4t49 10v64q-24-9-48.5-13.5T700-600q-38 0-73 9.5T560-564Zm0 220v-68q33-14 67.5-21t72.5-7q26 0 51 4t49 10v64q-24-9-48.5-13.5T700-380q-38 0-73 9t-67 27Zm0-110v-68q33-14 67.5-21t72.5-7q26 0 51 4t49 10v64q-24-9-48.5-13.5T700-490q-38 0-73 9.5T560-454ZM260-320q47 0 91.5 10.5T440-278v-394q-41-24-87-36t-93-12q-36 0-71.5 7T120-692v396q35-12 69.5-18t70.5-6Zm260 42q44-21 88.5-31.5T700-320q36 0 70.5 6t69.5 18v-396q-33-14-68.5-21t-71.5-7q-47 0-93 12t-87 36v394Zm-40 118q-48-38-104-59t-116-21q-42 0-82.5 11T100-198q-21 11-40.5-1T40-234v-482q0-11 5.5-21T62-752q46-24 96-36t102-12q58 0 113.5 15T480-740q51-30 106.5-45T700-800q52 0 102 12t96 36q11 5 16.5 15t5.5 21v482q0 23-19.5 35t-40.5 1q-37-20-77.5-31T700-240q-60 0-116 21t-104 59ZM280-494Z"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5f6368">
2
+ <path d="M280-280h280v-80H280v80Zm0-160h400v-80H280v80Zm0-160h400v-80H280v80Zm-80 480q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h560q33 0 56.5 23.5T840-760v560q0 33-23.5 56.5T760-120H200Zm0-80h560v-560H200v560Zm0-560v560-560Z"/>
3
+ </svg>