Subclass `EGLSyncListGroup` and `EGLSyncListItem` into import/export
specific classes. This way we don't have to specify the type of
operation at instatiation and improves code clarity and intention.
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
The `GameProcess` class now acts as a persistent member of `RareGame`
that can be re-used for launching games. Its signals are handled and
repeated by `RareGame`.
Implements launching directly into `RareGame`
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
This merges a few of the internal features of RareCore such us
RareGame filtering and thus game grouping based on attributes.
This is required to properly connect a single signal from RareCore to
the downloads tab for game installation. This also includes filtering
games based on updates and other attributes.
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
The original status_label is used to reflect the state of the game,
the tooltip_label is used to reflect the action of the current hovered
widget.
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
Removed `rare.utils.legendary_utils`, the `uninstall_game` function
was moved to `rare.shared.game_utils` for now
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
Signals, if they carry the same datatype, can be chained simply
with `signal.connect(othersignal)` without the need to use a `lambda`
expression and `emit()`
TabWidget: Fix error because the `exit_app` signal was called directly
This change makes it more inline with how QScrollArea operates on a central widget.
Other changes include using a QFrame instead of a QWidget as a base and
adding a QLabel for the title instead of the horizontal line.
The advanced options were split into their own separate widget. Right now
their class operates only as a container with the logic remaining in the
InstallDialog.
Do not hide irrelevant options, show them as disabled instea.
This like the install directory are still informational despite
not being editable.
Also homogenize variable and widget naming.
Instead of connecting to the global `exit_app` signal, pass the signals
through their respective widgets. Because signals are queued by
default, this ensures that slots are executed in the order they are
connected. Makes it cleaner to do cleanup procedures where they should
make sense, unlike the global signal, where it has to be inferred by
the widget instantiating order.
When the closed through the WM's close button, `closeEvent()` is
used directly. In this case the dialog in the `on_exit_app`
slot was skipped.
There is a mishandled case. If coming from logout while there
is an active download (Yes to logout -> No to stop download)
we end up in a weird state which I haven't investigated yet.
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>