Find an element on new Page on Windows Phone 7/8 - windows-phone-8

I try to instance new page and get the object on that page (for example LongListSelector) by the name.
But when I do
var currentPage = (PhoneApplicationPage)((PhoneApplicationFrame)App.Current.RootVisual).Content;
currentPage.NavigationService.Navigate(new Uri(pageUri, UriKind.Relative));
I can't get the instance of new page. The second calling of var currentPage = (PhoneApplicationPage)((PhoneApplicationFrame)App.Current.RootVisual).Content gets me the same currentPage.
How can I access the instance of new page and items on it?
I need it to implement custom item selector. When tapping on the list item_header from page1 the page2 is showing, where I can chose the right item_kind and navigate back to list1.

What you are actually looking for is passing data between pages or having a ViewModel that can be accessed from different pages and share data between them. Please have a look at the answer for that question here
It describes the different ways of sharing data between pages.

Done it with saving page instance in OnNavigateTo event into a global array.

Related

Copy an Image from Flex Application (Web) and paste it outside the application

I have a requirement that we should be able to copy an image displayed in our application, to Clipboard and paste it outside (Like on Excel).
I was trying the below code snippet (Inside a button Click).
Clipboard.generalClipboard.clear();
var dataLoaded:Boolean = Clipboard.generalClipboard.setData(ClipboardFormats.RICH_TEXT_FORMAT,
byteArray, false);
The dataLoaded object is true, however it does not paste anything when tried on Excel or MsPaint.
Do we have any way to achieve this?
Thanks.
The code you are showing is not enough in itself to get a successful transfer. Like many other operations within the security sandbox of a FP app (web) this code can only respond to a direct user interaction. So your code without any valid context cannot work of course but if called within a mouse down listener for example (a true user generated mouse event, creating a fake mouseevent would still not work) it should respond correctly:
private function handleMouseClick(event:MouseEvent):void
{
Clipboard.generalClipboard.clear();
var dataLoaded:Boolean = Clipboard.generalClipboard.setData(ClipboardFormats.RICH_TEXT_FORMAT, byteArray, false);
}

Preload dynamically created views in Actionscript for Flex Mobile App

I've got the following problem, my boss wants me to make our app far more responsive without any waiting time between switching views. It used to a "standard" application based on a ViewNavigator but with just one View that was destroyed and re-created with different content based on the user's selection of tabs he created himself. Views were switched with the default SlideViewTransition. I'm down to half a second now with a slightly more lightweight approach as described below, however that half second is still too much.
The app is a tabbed application where the user can create and edit new views himself, so create/edit/delete tabs and their corresponding tabs.
My current implementation is based on a ButtonBar and a Group that is used to display the "views". The group's content is created based on the selected tab. The content is based on XML data that stores all the required information to build the "view". Naturally, removing and creating the component's takes a little while (the half second I talked about), so I'm after another solution.
What I thought about is using the ViewNavigator and create all stored views upon application start.
Very much like this:
for each (var _view:XML in _allViewsConfig.children()) {
var compView:View = new View();
compView.percentHeight = 100;
compView.percentWidth = 100;
compView.name = _view.label;
for each (var _groupElement:XML in _view.vgroup) {
var group:VGroup = new VGroup;
group.percentWidth = 100;
group.percentHeight = 100;
for each (var _windowElement:XML in _groupElement.window) {
var window:WindowContainer = new WindowContainer;
for each (var _componentElement:XML in _windowElement.component) {
var component:UIComponent = _componentManager.create(_componentElement.#type, _componentElement);
window.addElement(component);
}
group.addElement(window);
}
compView.addElement(group);
}
views.addItem(compView);
}
views is an ArrayList that is used to store the created views.
The only problem I've got right now is that I can't use the Views stored in this ArrayList in the corresponding ViewNavigator.
I tried it the usual way, i.e. navigation.pushView(_viewCreator.views.getItemAt(0) as Class);
This, however doesn't work, no error or anything, the ViewNavigatorjust doesn't do anything, so I guess that a View class can't be created like this.
So how can I make this work?
Also, do you guys think that this is a proper solution to the problem, especially considering the whole dynamic nature of the application (being based on tabs)?
Naturally, slide transitions will be completely disabled as they are quite slow with our complex components.
Any help, comments or thoughts would be greatly appreciated!
EDIT:
On second thought, simply using Groups instead of ViewNavigator and View should make this a little more lightweight and solve the issue of views not being pushed.
In fact ViewNavigator pushView() is a mechanism which create an instance of a given Class (method parameter).
For all navigation history purpose, ViewNavigator uses NavigationStack objects to store relevant values (that you can customize too).
I don't have a straightforward answer for you, but I think you'll have to implement your own custom ViewNavigator mechanism (extending ViewNavigator to leverage existing useful methods and override others).

Create another list from a list in Sencha touch

I am stuck at what seems to be a simple thing to do,
I am new to the whole Sencha touch environment and still need to get my head around a lot of things.
here is the issue Im facing,
I have built the gettingStarted app from Sencha homepage, this app is simple where it loads a list from JSON data & on clicking the item in the list, it shows the HTML content of the chosen item
What Im trying to do is create another list so that
1- List one loads on startup
2- On clicking an item in List 1, it loads another list 2
3- on cicking the list 2, it loads the HTML content.
I have written webservice to return data as JSON based on which I would like to build the second list.
Im calling a function "showPost" on itemTap and it looks like this:
showPost: function(list, index, element, record){
Ext.Ajax.request({
url: 'http://localhost/mobig/ws/search.php?cat='+record.get('category'),
success: function(response){
var text = response.responseText;
var responses = Ext.JSON.decode(response.responseText);
alert(responses.posts[0].title);
}
});
I also have, this:
this.getBlog().setData({
xtype:'panel',
title:record.get('category'),
html:'<img src='+record.get('imageURL')+'/>',
scrollable:true,
styleHTMLContent:true
});
}
which loads the HTML content from List 1.
Thanks for your help in advance, and sorry about the bad english,
If you can point me to some examples, It will be a good place to learn.
Thanks!
Mo.
The most convenient way to save your time is to use Ext.NestedList, but I don't recommend it because currently nested list performance in Sencha Touch 2 is still so terrible (scrolling, event catching, etc.), if you care more about performance, you should use 2 seperated Ext.List, for eg. list_one with store_one and list_two with store_two, when list_one fires itemtap event, catch record parameter and process it (maybe through reading a TreeStore, or write your own API such as http://yourdomain/api=get_list_two&record_from_list_one=record)
Hope it helps.
It sounds like you want to set up a nested list. Here's the nested list tutorial, which should point you in the right direction.

Referencing Flashbuilder Views by their string name

I have a TabbedViewNavigator application with a navigatory bar which opens view just fine. In each view there is a ButtonBar that will open a new view related to the parent view. I have a single handler which decodes the name of the button and can build a string with the name of the view to be opened. I am looking for some way of referencing the view from this string, in a similar fashion to this["someName"] or getDefinitionByName("someName"). In my code, 'this' refers to the current view and the views that I need to find are not child elements. I don't know where getDefinitionByName() is looking, but it can't find the view either.
I have solved it temporarily with a switch statement, but this is not a good solution. Is there a view collection; if so, who is the owner of the collection or am I not going about this in the correct way.
Thanks for reading this far.
If the view is in a package/folder, you need to supply the full package to getDefinitionByName:
var viewClass : Class = getDefinitionByName("com.us.project.AwesomeView");
var view : DisplayObject = new viewClass();

Chrome open address in tab

I am trying to create a simple adult filter to get my feet wet in Chrome extension building.
Basically, I have a block list and a redirect list, everything works great and the correct parts fire when the user enters one of block list's domains, and now i want to redirect to google when that happens, so I used this code (that I got after searching Google) :
if (blocked) {
up = new Object();
up.url = chrome.extension.getURL("http://www.google.com");
chrome.tabs.update(tab.id, up);
but that seems to be code only to open files locally.
How do I open the URL instead?
Thanks!
Since "http://www.google.com" is not an extension resource, just use:
up.url = "http://www.google.com";