Quick Look preview via QLpreviewcontroller in Swiftui - swiftui

Hi how do you make QuickLook usable in swiftui?
You have to implement QLpreviewcontroller with Representable. How do you do this?
I have some pdfs that are local and i wanted to use Bundle to locate them and have the pdfs shared to email and text via QLPreviewController from a swiftui button push.  Can you point me in the correct direction?

Related

How to set up location auto completion in Swift UI textfield?

is it possible to get location suggestions aka autocompletions in textfield in Swift UI? For example I type „Par“ in Textfield and the app shows automatically a few suggestions like in the picture below. Is there a short and smart way to do it. I haven’t found anything for Swift UI yet.
Many thanks enter image description here

Selenium webdriver - Find coordinates of tab navigated video player element for interaction

I'd like to automate a video-player on a webpage using Selenium in Python.
I cannot locate the interactive parts of the player with driver.find_element_by_... I've decided to try and accomplish this by making browser specific logic that knows how to navigate the page and player via keyboard navigation (count tabs for Chrome, vs Safari, vs Firefox, etc.).
driver.find_element_by_tag_name('body').send_keys(Keys.TAB))
I am able to select each of the controls of the player with tab (play/pause, current position, mute-volume control, full-screen, and additional options) and have had moderate success manipulating the player's controls with ActionChains once selected with TAB navigation
actions = ActionChains(driver)
actions.send_keys(Keys.DOWN) # to reduce volume or
actions.send_keys(Keys.LEFT) # to rewind playback
An example of something that doesn't work as expected with this method is sending a Key.SPACE to the MUTE button when selected. Instead the space is applied as a page navigation action and scrolls down the page like pressing page down. I'm looking for a method that either makes the controls work as expected when manually navigating the page with a keyboard, ex. space on highlighted object interacts and would normally mute the video in this context, or a workaround that lets me accomplish the same thing. To that end I was thinking if I could get the windows coordinates of the TAB selected object within the video-player and simply perform a click that would at least let me interact with the control.
Also if I'm going about this all the wrong way let me know. Thanks!
What you're really looking for is how to navigate the Shadow DOM. Those are the web elements inside the video player.
I answered how to reach inside the Shadow DOM in an other question, albeit for Java. However the principle is the same.
You can read the whole thing at the link, but the basics are you create a "starting point" WebElement at the Shadow DOM via JavaScript, then all future look-ups reference it:
WebElement button = startingPoint.findElement(By.cssSelector("..."));

React Native: Build a "Select Item from List" component

I want to build a "Picker Menu" inside a screen. I think the time picker popup components are not smooth enough to use, because they require extra clicks instead of just dragging to the wanted element.
The component should return the selected value + change the color of the selected value. I thought of ListView/ ScrollView, but I couldn't find a way to get that working yet.
Below: A great gimp graphic to show what the goal is, placing the Android Time Picker inside the screen as visual example.
That's what it could look like
Any ideas where to start? How can I build something like this with the React-Native components?
You can use react-native-wheel-picker or react-native-wheel-picker-android. These libraries provide wheel picker without opening any popup.

Webview Swipe issue - Appcelerator Titanium

Right now I am using one webview to show data from my aplicationDatadirectory, here everything is working fine, I get content when user click next back respectively. Now what I am doing is in onload of webview I register "touchevent" and "touchmove" in webview's html like this :-
$.webview.evalJS('document.getElementsByTagName("body")[0].addEventListener("touchstart", function mytouch(){Ti.App.fireEvent("touch", {X:event.touches[0].pageX,Y:event.touches[0].pageY,length:event.touches.length});}, false);');
$.webview.evalJS('document.getElementsByTagName("body")[0].addEventListener("touchmove", function mymove(){Ti.App.fireEvent("move", {X:event.touches[0].pageX,Y:event.touches[0].pageY,length:event.touches.length});}, false);');
on the basis of this I find swipe event. I get correct html in webview(I can see images). But I am unable to get touchstart and move call. I dont know what is the problem here. I set data in webview using url here.
Now when I set data in webview using html(I used data of my html file(given below) in one var) now I am unable to see images it just shows me one black border(empty) but here my touchstart and touchmove events are firing also my swipe is also working as expected. I am checking this functionality in iPhone.
Can any one find the issue what is going wrong here? Thanks.
I think that this depends on the time when you apply
$.webview.evalJS('document.getElementsByTagName("body")[0].addEventListener("touchstart", function mytouch(){Ti.App.fireEvent("touch", {X:event.touches[0].pageX,Y:event.touches[0].pageY,length:event.touches.length});}, false);');
$.webview.evalJS('document.getElementsByTagName("body")[0].addEventListener("touchmove", function mymove(){Ti.App.fireEvent("move", {X:event.touches[0].pageX,Y:event.touches[0].pageY,length:event.touches.length});}, false);');
If you use the html property data is loaded immediately and you can use the code exactly after setting html content. If you use the url (even if it is located locally, which might be difficult for android) then you need to wait a short time until the page is loaded. There is also an event listener for that (web view-event load) but i can't say if that works for local resources but i don't think so.
In this case you should apply your javascript snippet into your html resources (if they are locally) instead of manually adding it using evalJS.
Please note that there is an issue on android that you can't use local images (resources folder) in your webview when you provide the content via html property.
I made it swipe working in iOS(in android it was working).
I did not expect this thing to be a reason but I do not know logic behind it. I was accessing .xhtml files from application data directory and it was working without any issue in android but in iOS it was not.
I just change(rename in my code) .xhtml file to .html and now it is working. :)
Hope this can help someone who is looking for the same.(or just for his interest)
Thanks.

Update a view plugin from an action in text editor plugin

I have two eclipse plugins(custom text editor plugin and a view plugin as two different projects). There is an action in the text editor that builds index of 'functions' of all dependent source files. At the end of this action I would like to show index(list of 'functions') in a tableviewer of the view plugin. What would you say the best way to achieve this? The view does not have to listen to the editor. It should be updated only when an action from editor plugin fires.
I exported a package from the editor plugin and exported another package from the view plug because text editor plugin needs to reference view type to populate tableViewer in the view plugin, and the view plugin needs to reference editor type in tableviewer's contentProvider. But I am getting an build path error:
A cycle was detected in the build path of project
How can I resolve this? Or If this is a bad approach, do I have a better way?
Thanks.
tk.
First of all, circular references between plug-ins are not allowed. So when you need to share information bidirectional between plug-ins, you often have to refactor the problem, to have a listener pattern for one of the directions.
In this case, I would use the same structure for your view as used for the existing Outline view. So your view should sub-class the PageBookView which have a rather simple protocol for how a participating editor can provide data to the view.
Basically I would do the same as done for the Outline view, and let the editor itself provide the content of the view via adaption. The Outline view does this by tracking the current editor, and whenever a new editor is "seen", the Outline view attempts to adapt the IEditorPart to IContentOutlinePage. The editor is responsible for the SWT widgets and listeners, etc that will be needed in the view page for this particular editor... Have a close look at the JavaDoc for ContentOutline - this is a rather good description of the protocols involved.
If you have multiple "open" editors, then the new view will automatically show the relevant information for the active editor and not "just" the editor that was active the last time you executed your action.
With this scheme, your action will simply
Show (and activate) the new view. This can be done via IWorkbenchPage.showView(...).
Request the provide page to update its view...