Como confirmar configurações instantaneamente
[ Este artigo destina-se aos desenvolvedores do Windows 8.x e do Windows Phone 8.x que escrevem aplicativos do Windows Runtime. Se você estiver desenvolvendo para o Windows 10, consulte documentação mais recente]
Nos aplicativos da Windows Store, todas as configurações são aplicadas assim que o usuário altera seus valores. Esse modelo é importante porque o usuário pode guiá-lo pela confirmação instantânea de configurações usando o submenu Configurações do WinJS e os dados de aplicativo locais.
Pré-requisitos
Leias as Diretrizes para configuração de aplicativos.
Adicionar um submenu Configurações ao botão Configurações
Para saber mais detalhes sobre como adicionar um submenu Configurações, veja Guia de início rápido: adicione configurações de aplicativos usando a Biblioteca do Windows para JavaScript. Veja um resumo a seguir.
Defina o HTML do submenu Configurações:
<div aria-label="App Settings Flyout" data-win-control="WinJS.UI.SettingsFlyout" data-win-options="{settingsCommandId:'settingsExample', width:'narrow'}">
<!-- Add the background color matching you app tile color to the Settings flyout header. -->
<!-- Use add the win-ui-dark class if the background color requires a white text -->
<!-- Add the app small logo to the Settings flyout header -->
<div class="win-header win-ui-light" style="background-color: #dbf9ff;">
<button class="win-backbutton" onclick="WinJS.UI.SettingsFlyout.show()" type="button"></button>
<div class="win-label">Example</div>
<img alt="smalllogo" src="/images/smalllogo.png" style="height: 30px; width: 30px; position: absolute; right: 40px;"/>
</div>
<div class="win-content">
<!—Your settings contents go here -->
</div>
</div>
Anexe o submenu Configurações ao botão Configurações:
WinJS.Application.onsettings = function (e) {
e.detail.applicationcommands = {
"settingsExample": { title: "Example" }
};
WinJS.UI.SettingsFlyout.populateSettings(e);
};
Adicione controles ao submenu
Neste exemplo, estamos adicionando um controle de alternância e um controle de seleção ao submenu Configurações. Esses são dois dos controles mais comuns para configurações.
<div class="win-content">
<div class="win-settings-section">
<h3>Example settings section</h3>
<p>Description: toggle and select are common settings controls</p>
<div id="settingsToggle" data-win-control="WinJS.UI.ToggleSwitch"
data-win-options="{title:'Example toggle switch',
onchange: settingsToggleChange}"></div>
</div>
<div class="win-settings-section">
<h3>Select control</h3>
<p>Select controls let users select an item from a set of text only items.</p>
<label>Example select control</label>
<select id="settingsSelect" aria-label="Example select control">
<option value="1">Value 1</option>
<option value="2">Value 2</option>
<option value="3">Value 3</option>
<option value="4">Value 4</option>
</select>
</div>
</div>
Observação
- Adicionamos uma opção de evento onchange ao data-win-options de settingsToggle. Isso registra o evento onchange para o controle ToggleSwitch. Para saber mais, veja Diretrizes de botões de alternância.
- As configurações são encapsuladas em classes CSS win-settings-section e usam os elementos recomendados para obter o estilo determinado pelas diretrizes de configurações (veja Diretrizes de configuração de aplicativos).
Inicialize os controles a partir do repositório de dados local do aplicativo
Neste exemplo, usamos o repositório local Application data. Sempre que o submenu Configurações for invocado pelo usuário, leremos os valores dos dados de aplicativo para garantir que os controles da interface do usuário reflitam os valores mais recentes.
function initSettingsControls() {
// Initialize the toggle control using the current value of settingsToggleValue in the local state store
var toggleControl = document.getElementById("settingsToggle").winControl;
toggleControl.checked = (Windows.Storage.ApplicationData.current.localSettings.values["settingsToggleValue"] === "on");
// Initialize the select control using the current value of settingsSelectValue in the locale state store
var selectControl = document.getElementById("settingsSelect");
var settingsSelectValue = Windows.Storage.ApplicationData.current.localSettings.values["settingsSelectValue"];
for (var i = 0; i < selectControl.options.length; i++) {
if (selectControl.options(i).value === settingsSelectValue) {
selectControl.selectedIndex = i;
break;
}
}
// Add event listener for change event on select control
selectControl.addEventListener("change", settingsSelectChange, false);
}
Observação
- A inicialização dos controles deve ocorrer após o carregamento de DOM e a inicialização dos controles do WinJS. Certifique-se disso. Se você usar um submenu Configurações definido em uma página HTML própria, isso poderá exigir uma chamada ao método ready do controle de páginas, para verificar se o submenu Configurações está pronto para uso.
- Neste exemplo, usamos o repositório local de dados de aplicativo. Você pode usar o repositório de dados de aplicativo de roaming para garantir que as configurações sejam sincronizadas automaticamente. Para saber mais, veja Diretrizes de dados de aplicativo de roaming .
Manipule eventos de alteração nos controles de configurações
É nesse momento que a confirmação instantânea realmente acontece. Quando o usuário alterar os valores associados ao controle, gravamos imediatamente o novo valor no repositório de dados do aplicativo. Isso é feito no manipulador de eventos onchange associado ao controle.
function settingsToggleChange() {
var toggleControl = document.getElementById("settingsToggle").winControl;
// Write new value to the local state store
Windows.Storage.ApplicationData.current.localSettings.values["settingsToggleValue"] = (toggleControl.checked ? "on" : "off");
}
// To protect against untrusted code execution, all functions are required
// to be marked as supported for processing before they can be used inside
// a data-win-options attribute in HTML markup.
WinJS.Utilities.markSupportedForProcessing(settingsToggleChange);
function settingsSelectChange(changedEvent) {
// Write new value to the local state store
Windows.Storage.ApplicationData.current.localSettings.values["settingsSelectValue"] = changedEvent.target.options.value;
}
Resumo
Neste guia de início rápido, você aprendeu a confirmar atualizações de configurações instantaneamente.