|
/* |
|
DESCRIPTION |
|
=========== |
|
|
|
Permanently resets the title associated with a view in a Sencha Touch |
|
Navigation View. |
|
|
|
USAGE |
|
===== |
|
|
|
Ext.changeTitleInNavigationView(navView, container, newTitle); |
|
|
|
Where: |
|
|
|
* navView = a reference to the Navigation View |
|
* container = a reference to the view whose title you want to change |
|
* newTitle = the new title of the view |
|
|
|
CAVEATS |
|
======= |
|
|
|
If calling navView.pop() and Ext.changeTitleInNavigationView() in the |
|
same function, call Ext.changeTitleInNavigationView() before navView.pop(). |
|
There is some sort of race condition if you call navView.pop() first. |
|
|
|
LICENSE |
|
======= |
|
|
|
This is free and unencumbered software released into the public domain. |
|
|
|
Anyone is free to copy, modify, publish, use, compile, sell, or |
|
distribute this software, either in source code form or as a compiled |
|
binary, for any purpose, commercial or non-commercial, and by any |
|
means. |
|
|
|
In jurisdictions that recognize copyright laws, the author or authors |
|
of this software dedicate any and all copyright interest in the |
|
software to the public domain. We make this dedication for the benefit |
|
of the public at large and to the detriment of our heirs and |
|
successors. We intend this dedication to be an overt act of |
|
relinquishment in perpetuity of all present and future rights to this |
|
software under copyright law. |
|
|
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. |
|
IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR |
|
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, |
|
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR |
|
OTHER DEALINGS IN THE SOFTWARE. |
|
|
|
For more information, please refer to <http://unlicense.org/> |
|
*/ |
|
|
|
Ext.changeTitleInNavigationView = function(navView, container, newTitle){ |
|
// Compute the index of the container in the navView |
|
var innerItems = navView.getInnerItems(), |
|
index = 0; |
|
for (; index<innerItems.length; index++) { |
|
if (innerItems[index] === container) { |
|
break; |
|
} |
|
} |
|
|
|
// Make sure the navView contains the container |
|
if (index === innerItems.length) { |
|
if (Ext.Logger) Ext.Logger.warn("Ext.changeTitleInNavigationView: Given container is not in the given navigation view.") |
|
return; |
|
} |
|
|
|
// Change the title in the internals of the navigation bar (this is the magic line) |
|
navView.getNavigationBar().backButtonStack[index] = newTitle; |
|
|
|
// Save the title in the container for good measure |
|
if (container.setTitle) { |
|
container.setTitle(newTitle); |
|
} else { |
|
container.title = newTitle; |
|
container.config.title = newTitle; |
|
} |
|
|
|
// Change the displayed title if necessary |
|
if (index === innerItems.length - 1) { |
|
navView.getNavigationBar().setTitle(newTitle); |
|
} |
|
}; |