Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
gajim
gajim
Commits
57924ca8
Commit
57924ca8
authored
Apr 23, 2022
by
Daniel Brötzmann
Browse files
feat: Preview: Make download cancellable
parent
bedd7dc2
Changes
4
Hide whitespace changes
Inline
Side-by-side
gajim/common/preview.py
View file @
57924ca8
...
...
@@ -80,6 +80,8 @@ def __init__(self,
self
.
file_size
:
int
=
0
self
.
_received_size
:
int
=
0
self
.
_soup_message
:
Optional
[
Soup
.
Message
]
=
None
self
.
key
:
Optional
[
bytes
]
=
None
self
.
iv
:
Optional
[
bytes
]
=
None
if
self
.
is_aes_encrypted
and
urlparts
is
not
None
:
...
...
@@ -114,6 +116,10 @@ def context(self) -> Optional[str]:
def
filename
(
self
)
->
str
:
return
self
.
_filename
@
property
def
soup_message
(
self
)
->
Soup
.
Message
:
return
self
.
_soup_message
@
property
def
request_uri
(
self
)
->
Optional
[
str
]:
if
self
.
_urlparts
is
None
:
...
...
@@ -150,7 +156,8 @@ def create_thumbnail(self, data: bytes) -> bool:
def
update_widget
(
self
,
data
:
Optional
[
GdkPixbufType
]
=
None
)
->
None
:
self
.
_widget
.
update
(
self
,
data
)
def
update_progress
(
self
,
size
:
int
)
->
None
:
def
update_progress
(
self
,
size
:
int
,
message
:
Soup
.
Message
)
->
None
:
self
.
_soup_message
=
message
self
.
_received_size
+=
size
if
self
.
file_size
==
0
or
self
.
_received_size
==
0
:
return
...
...
@@ -420,11 +427,11 @@ def _on_content_sniffed(self,
preview
.
update_widget
()
def
_on_got_chunk
(
self
,
_
message
:
Soup
.
Message
,
message
:
Soup
.
Message
,
chunk
:
Soup
.
Buffer
,
preview
:
Preview
)
->
None
:
preview
.
update_progress
(
len
(
chunk
.
get_data
()))
preview
.
update_progress
(
len
(
chunk
.
get_data
())
,
message
)
def
_on_finished
(
self
,
_session
:
Soup
.
Session
,
...
...
@@ -507,3 +514,7 @@ def _on_thumb_write_finished(_result: bool,
return
preview
.
update_widget
(
data
=
pixbuf
)
def
cancel_download
(
self
,
preview
:
Preview
)
->
None
:
session
=
self
.
_get_session
(
preview
.
account
)
session
.
cancel_message
(
preview
.
soup_message
,
Soup
.
Status
.
CANCELLED
)
gajim/data/gui/preview.ui
View file @
57924ca8
...
...
@@ -72,10 +72,43 @@
</packing>
</child>
<child>
<object
class=
"Gtk
ProgressBar
"
id=
"progress
bar
"
>
<object
class=
"Gtk
Box
"
id=
"progress
_box
"
>
<property
name=
"can-focus"
>
False
</property>
<property
name=
"no-show-all"
>
True
</property>
<property
name=
"show-text"
>
True
</property>
<property
name=
"spacing"
>
12
</property>
<child>
<object
class=
"GtkProgressBar"
id=
"progressbar"
>
<property
name=
"visible"
>
True
</property>
<property
name=
"can-focus"
>
False
</property>
<property
name=
"show-text"
>
True
</property>
</object>
<packing>
<property
name=
"expand"
>
False
</property>
<property
name=
"fill"
>
True
</property>
<property
name=
"position"
>
0
</property>
</packing>
</child>
<child>
<object
class=
"GtkButton"
>
<property
name=
"visible"
>
True
</property>
<property
name=
"can-focus"
>
True
</property>
<property
name=
"receives-default"
>
True
</property>
<property
name=
"tooltip-text"
translatable=
"yes"
>
Cancel
</property>
<signal
name=
"clicked"
handler=
"_on_cancel_download_clicked"
swapped=
"no"
/>
<child>
<object
class=
"GtkImage"
>
<property
name=
"visible"
>
True
</property>
<property
name=
"can-focus"
>
False
</property>
<property
name=
"icon-name"
>
process-stop-symbolic
</property>
</object>
</child>
</object>
<packing>
<property
name=
"expand"
>
False
</property>
<property
name=
"fill"
>
True
</property>
<property
name=
"position"
>
1
</property>
</packing>
</child>
</object>
<packing>
<property
name=
"expand"
>
False
</property>
...
...
gajim/gtk/builder.pyi
View file @
57924ca8
...
...
@@ -718,6 +718,7 @@ class PreviewBuilder(Builder):
right_box: Gtk.Box
image_event_box: Gtk.EventBox
image_button: Gtk.Button
progress_box: Gtk.Box
progressbar: Gtk.ProgressBar
button_box: Gtk.Box
download_button: Gtk.Button
...
...
gajim/gtk/preview.py
View file @
57924ca8
...
...
@@ -67,12 +67,12 @@ def get_text(self) -> str:
return
self
.
_preview
.
uri
def
update_progress
(
self
,
_preview
:
Preview
,
progress
:
float
)
->
None
:
self
.
_ui
.
progress
bar
.
show
()
self
.
_ui
.
progress
_box
.
show
()
self
.
_ui
.
progressbar
.
set_fraction
(
progress
)
def
update
(
self
,
preview
:
Preview
,
data
:
Optional
[
GdkPixbufType
])
->
None
:
self
.
_preview
=
preview
self
.
_ui
.
progress
bar
.
hide
()
self
.
_ui
.
progress
_box
.
hide
()
if
preview
.
is_geo_uri
:
data
=
load_icon_pixbuf
(
'map'
,
size
=
preview
.
size
)
...
...
@@ -274,6 +274,10 @@ def _on_button_press_event(self,
menu
=
self
.
_get_context_menu
()
menu
.
popup_at_pointer
(
event
)
def
_on_cancel_download_clicked
(
self
,
_button
:
Gtk
.
Button
)
->
None
:
assert
self
.
_preview
is
not
None
app
.
interface
.
preview_manager
.
cancel_download
(
self
.
_preview
)
@
staticmethod
def
_on_realize
(
event_box
:
Gtk
.
EventBox
)
->
None
:
window
=
event_box
.
get_window
()
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment