Set hourglass icon when clicking accept/decline
PyQtFuture's gotResult signal can now be used from QML/JS.
This commit is contained in:
		
							
								
								
									
										3
									
								
								TODO.md
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								TODO.md
									
									
									
									
									
								
							| @@ -22,6 +22,7 @@ | |||||||
|   - Proper button background componant |   - Proper button background componant | ||||||
|   - Collapsible roomList sections, + button |   - Collapsible roomList sections, + button | ||||||
|   - Prevent using the SendBox if no permission (power levels) |   - Prevent using the SendBox if no permission (power levels) | ||||||
|  |   - Spinner when loading past room events, images or clicking buttons | ||||||
|   - Reorganize SidePane |   - Reorganize SidePane | ||||||
|   - Proper theme, with components taking their colors from theme settings |   - Proper theme, with components taking their colors from theme settings | ||||||
|   - Settings page |   - Settings page | ||||||
| @@ -38,7 +39,6 @@ | |||||||
| - Client improvements | - Client improvements | ||||||
|   - On sync, check messages API, if a limited sync timeline was received |   - On sync, check messages API, if a limited sync timeline was received | ||||||
|   - Markdown: don't turn #things into title (space), disable __ syntax |   - Markdown: don't turn #things into title (space), disable __ syntax | ||||||
|   - Spinner when loading past room events or images |  | ||||||
|   - Push instead of replacing in stack view |   - Push instead of replacing in stack view | ||||||
|   - Make links in room subtitle clickable, formatting? |   - Make links in room subtitle clickable, formatting? | ||||||
|   - `<pre>` scrollbar on overflow |   - `<pre>` scrollbar on overflow | ||||||
| @@ -49,6 +49,7 @@ | |||||||
|     it should be the peer's display name instead. |     it should be the peer's display name instead. | ||||||
|  |  | ||||||
| - Missing nio support | - Missing nio support | ||||||
|  |   - Forget room | ||||||
|   - Left room events |   - Left room events | ||||||
|   - `org.matrix.room.preview_urls` event |   - `org.matrix.room.preview_urls` event | ||||||
|   - `m.room.aliases` event |   - `m.room.aliases` event | ||||||
|   | |||||||
| @@ -12,14 +12,16 @@ from PyQt5.QtCore import QObject, pyqtProperty, pyqtSignal, pyqtSlot | |||||||
|  |  | ||||||
|  |  | ||||||
| class PyQtFuture(QObject): | class PyQtFuture(QObject): | ||||||
|     gotResult = pyqtSignal() |     gotResult = pyqtSignal("QVariant") | ||||||
|  |  | ||||||
|     def __init__(self, future: Future, parent: QObject) -> None: |     def __init__(self, future: Future, parent: QObject) -> None: | ||||||
|         super().__init__(parent) |         super().__init__(parent) | ||||||
|         self.future  = future |         self.future  = future | ||||||
|         self._result = None |         self._result = None | ||||||
|  |  | ||||||
|         self.future.add_done_callback(lambda _: self.gotResult.emit()) |         self.future.add_done_callback( | ||||||
|  |             lambda future: self.gotResult.emit(future.result()) | ||||||
|  |         ) | ||||||
|  |  | ||||||
|  |  | ||||||
|     def __repr__(self) -> str: |     def __repr__(self) -> str: | ||||||
|   | |||||||
| @@ -73,16 +73,29 @@ Rectangle { | |||||||
|                 model: [] |                 model: [] | ||||||
|  |  | ||||||
|                 Base.HButton { |                 Base.HButton { | ||||||
|                     id: declineButton |                     property bool alreadyClicked: false | ||||||
|  |  | ||||||
|                     text: modelData.text |                     text: modelData.text | ||||||
|                     iconName: modelData.iconName |                     iconName: modelData.iconName | ||||||
|                     icon.color: modelData.iconColor |                     icon.color: modelData.iconColor | ||||||
|                     icon.width: 32 |                     icon.width: 32 | ||||||
|                     display: bannerButtons.displayMode |                     display: bannerButtons.displayMode | ||||||
|  |  | ||||||
|                     onClicked: |                     onClicked: { | ||||||
|  |                         if (alreadyClicked) { console.log("all"); return } | ||||||
|  |  | ||||||
|  |                         iconName       = "hourglass" | ||||||
|  |                         alreadyClicked = true | ||||||
|  |  | ||||||
|  |                         var future = | ||||||
|                             Backend.clientManager.clients[chatPage.userId]. |                             Backend.clientManager.clients[chatPage.userId]. | ||||||
|                         call(modelData.clientFunction, modelData.clientArgs) |                             call(modelData.clientFunction, | ||||||
|  |                                  modelData.clientArgs) | ||||||
|  |  | ||||||
|  |                         future.onGotResult.connect( | ||||||
|  |                             function() { iconName = modelData.iconName } | ||||||
|  |                         ) | ||||||
|  |                     } | ||||||
|  |  | ||||||
|                     Layout.maximumWidth: bannerButtons.compact ? height : -1 |                     Layout.maximumWidth: bannerButtons.compact ? height : -1 | ||||||
|                     Layout.fillHeight: true |                     Layout.fillHeight: true | ||||||
|   | |||||||
							
								
								
									
										7
									
								
								harmonyqml/icons/hourglass.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								harmonyqml/icons/hourglass.svg
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | |||||||
|  | <?xml version="1.0" encoding="utf-8"?> | ||||||
|  | <!-- Svg Vector Icons : http://www.onlinewebfonts.com/icon --> | ||||||
|  | <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> | ||||||
|  | <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 1000 1000" enable-background="new 0 0 1000 1000" xml:space="preserve"> | ||||||
|  | <metadata> Svg Vector Icons : http://www.onlinewebfonts.com/icon </metadata> | ||||||
|  | <g><path d="M926,68v-8.3c0-27.4-22.4-49.8-49.8-49.8H123.7C96.4,10,74,32.4,74,59.8V68c0,27.4,22.4,49.8,49.8,49.8H143c9.9,0,9.1,9.2,9.1,13.9c0,55.3,22.7,119.2,40,160c34.8,81.9,114.1,149,179.2,196.4c11.9,8.7,9,16.7,2.1,22.2c-63.1,50.6-146.1,115.2-181.3,198c-17.1,40.2-39.3,102.7-40,157.4c-0.1,5.6,2.2,16.5-11.2,16.5h-17.1C96.4,882.2,74,904.6,74,932v8.3c0,27.4,22.4,49.8,49.8,49.8h752.5c27.4,0,49.8-22.4,49.8-49.8V932c0-27.4-22.4-49.8-49.8-49.8h-10.8c-19.8,0-17.8-14.8-17.6-22.5c1.4-51.1-13.6-109.1-35.6-152.7c-48.9-97-125.9-158.7-173.4-194.4c-10.3-7.7-11.3-17.3,0-25.1C687.8,453.8,763.4,390,812.3,293c23.4-46.5,38.9-109.3,35.1-162.6c-0.3-4.3-0.6-12.6,10.6-12.6h18.3C903.6,117.8,926,95.4,926,68z M772.6,273c-45.5,90.3-118.4,154.8-181.9,193.8c-3.8,2.3-11.1,8.1-11.1,24.3v19.3c0,17.1,7.8,20.9,11.8,23.4c63.4,39,135.8,103.4,181.1,193.3c20.9,41.6,31.8,91.8,30.7,131.8c-0.2,8.3,3,23.4-18.7,23.4H214.9c-19,0-18.3-9.5-18.2-14.7c0.3-36.4,12.9-86.8,36.3-141.8c40.6-95.5,125.9-155.1,182.7-190.7c2.5-1.6,7.4-4.4,7.4-19.5v-28.9c0-15.6-7.5-21.7-11.4-24.2c-56.7-35.8-139-94.9-178.7-188.1c-23.7-55.6-36.2-106.5-36.3-142.9c0-4.8,0.6-13.6,11.2-13.6h582.9c11.8,0,11.6,8.9,12,13.6C806.1,172.7,795.2,228,772.6,273z"/><path d="M488.4,563.6l-194,242.7c-6.4,8-3.3,14.6,7,14.6h397.2c10.3,0,13.4-6.6,7-14.6l-194-242.7C505.2,555.6,494.8,555.6,488.4,563.6z"/><path d="M486.8,450.8c7.3,7.2,19.2,7.2,26.4,0l97.6-97.3c7.3-7.2,4.8-13.2-5.5-13.2H394.7c-10.3,0-12.7,5.9-5.5,13.2L486.8,450.8z"/></g> | ||||||
|  | </svg> | ||||||
| After Width: | Height: | Size: 1.9 KiB | 
		Reference in New Issue
	
	Block a user
	