- Основные xml типы
- элементы
- элементы
- App.config и custom configuration sections
- Config.json
- Добавить новый пункт меню
- Добавление новых опций
- Настройки android config.xml
- Настройки ios config.xml
- Общие параметры
- Объекты конфигурации
- Поддержка многоплатформенных настроек параметров
- Роль config.xml
- Специальные xml типы
Основные xml типы
Вы можете использовать базовые типы XML для создания новых параметров в настройках вашего шаблона. Это может быть переключатель, флажок или поле ввода.
Тип | Описание |
---|---|
section | Определяет раздел для описания. |
radio | Определяет радио-кнопку |
checkbox | Определяет чекбокс. |
select | Определяет выпадающий список. |
text | Определяет однострочный ввод текста. |
textarea | Определяет многострочный ввод текста. |
элементы
Элементы <field>
внутри элементов
Установить параметры вкладки меню.
элементы
Элементы <fields>
определяют вкладки меню и создают панели для их опций.
App.config и custom configuration sections
Я уверен, что многие из вас использовали файл конфигурации App. Config для хранения данных инициализации или конфигурации приложения. И я также уверен, что многие из вас хотели создать в этом файле свои собственные структуры для хранения настроек. Но в итоге пришлось использовать встроенный функционал раздела и извлекать значения с помощью конструкции формы:
ConfigurationManager.AppSettings["MyKey"]
Что ж, я давно хотел разобраться, как использовать возможности класса ConfigurationSection для описания и загрузки данных, определенных в моем собственном формате. После нескольких часов экспериментов и гугления я смог создать свою собственную структуру данных в файле конфигурации и использовать ее в своем приложении.
Итак, для загрузки нашей структуры данных из файла App. Config нам понадобятся следующие классы:
- ConfigurationSection: этот объект вернет настраиваемый раздел.
- ConfigurationElementCollection — на самом деле это набор элементов, которые мы определим в пользовательском разделе.
- ConfigurationElement — это сам элемент, описывающий определенный вами тип объекта.
Первое, что нам нужно сделать, это добавить файл app. Config в наше приложение (если вы еще этого не сделали, конечно). Затем откройте этот файл и скопируйте и вставьте следующий код между тегами:
<configSections>
<!--
name = Имя, которое используется для ссылки на данный раздел в файле настройки.
type = Обработчик раздела настроек. Включает две секции: полный путь - пространство имен обработчика наших данных имя самого обработчика, наименование сборки, где данный класс располагается.
-->
<section name="StartupFolders" type="ConfigSectionTester.StartupFoldersConfigSection, ConfigSectionTester"/>
</configSections>
Примечание: Этот раздел необходимо размещать в самом начале конфигурационного файла, т.е. сразу после тега, иначе будут ошибки инициализации конфигурации.
Далее создадим свой раздел, который будет реализовывать нашу собственную модель данных:
<StartupFolders>
<Folders>
<add folderType="A" path="c:foo" />
<add folderType="B" path="C:foo1" />
</Folders>
</StartupFolders>
Примечание. Если кому-то не нравится добавлять узлы с помощью команды add в этом примере, они всегда могут создать свой собственный префикс, используя следующий код:
[ConfigurationCollection( typeof( FolderElement ) ), AddItemName = "Folder"]
public class FoldersCollection : ConfigurationElementCollection
{
при определении коллекции элементов в структуре данных. Тогда в конфигурационном файле можно будет писать так:
<StartupFolders>
<Folders>
<Folder folderType="A" path="c:foo" />
<Folder folderType="B" path="C:foo1" />
</Folders>
</StartupFolders>
Закончим изменения в конфигурационном файле и перейдем к организации взаимодействия нашего приложения с ним.
Во-первых, мы создадим класс, наследуемый от ConfigurationSection, который позволит нам взаимодействовать с нашим разделом в файле конфигурации через ConfigurationManager во время выполнения.
public class StartupFoldersConfigSection : ConfigurationSection
{
[ConfigurationProperty( "Folders" )]
public FoldersCollection FolderItems
{
get { return ( (FoldersCollection)( base[ "Folders" ] ) ); }
}
}
Атрибут ConfigurationProperty(«Folders») необходим для сопоставления свойства FolderItems с корневым узлом нашей структуры данных.
Класс FoldersCollection наследуется от ConfigurationElementCollection, что обеспечивает взаимодействие с коллекцией наших элементов, описанных в app.config. Класс определяется так:
[ConfigurationCollection( typeof( FolderElement ) )]
public class FoldersCollection : ConfigurationElementCollection
{
protected override ConfigurationElement CreateNewElement()
{
return new FolderElement();
}
protected override object GetElementKey( ConfigurationElement element )
{
return ( (FolderElement)( element ) ).FolderType;
}
public FolderElement this[int idx ]
{
get{return (FolderElement) BaseGet(idx); }
}
}
Последнее, что нам нужно сделать, это создать ConfigurationElement, класс, который привяжет нас к окончательным данным, определенным в файле конфигурации.
public class FolderElement : ConfigurationElement
{
[ConfigurationProperty("folderType", DefaultValue="", IsKey=true, IsRequired=true)]
public string FolderType
{
get {return ((string) (base["folderType"]));}
set{base["folderType"] = value; }
}
[ConfigurationProperty( "path", DefaultValue = "", IsKey = false, IsRequired = false )]
public string Path
{
get{return ( (string)( base[ "path" ] ) ); }
set{base[ "path" ] = value; }
}
}
Атрибут ConfigurationProperty(«folderType») требуется, чтобы связать имя атрибута xml в файле конфигурации. Другие настройки атрибутов, такие как DefaultValue=»», IsKey=true, IsRequired=true, только задают различные параметры, применимые к свойствам.
Замечание: автор умалчивает, что при стандартном способе использования сеттер свойства FolderType, работать не будет, т.к. файл конфигурации обычно доступен только на чтение. Для того что бы представлялось возможным производить запись в файл конфигурации следует делать, например, так:
Configuration cfg = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
StartupFoldersConfigSection section = (StartupFoldersConfigSection)cfg.Section["StartupFolders"];
if ( section != null )
{
System.Diagnostics.Debug.WriteLine( section.FolderItems[0].FolderType );
System.Diagnostics.Debug.WriteLine( section.FolderItems[0].Path );
section.FolderItems[0].Path = "C:Nanook";
cfg.Save(); //устанавливает перенос на новую строку и производит проверку <exename>.vshost.exe.config файла в вашей отладочной папке.
}
Итак, мы имеем все необходимые данные и классы, которые предоставляют нам возможность хранить в конфигурационном файле app.config пользовательскую структуру данных.
Использовать данный подход можно так:
StartupFoldersConfigSection section = (StartupFoldersConfigSection)ConfigurationManager.GetSection( "StartupFolders" );
if ( section != null )
{
System.Diagnostics.Debug.WriteLine( section.FolderItems[ 0 ].FolderType );
System.Diagnostics.Debug.WriteLine( section.FolderItems[ 0 ].Path );
}
При этом не забудьте добавить System. Configuration в список подключаемых пространств имен.
Автор: Дерик Уиттакер
Config.json
Файлconfig.xml
определяет настройки, доступные для шаблона. Если кто-нибуь сохраняет настройки шаблона, они будут занесены в файлconfig.json
. С каждым последующим сохранением настроек, файл перезаписывается.
Шаблоны Warp обеспечивают также файлы config.default.json
, где хранятся настройки шаблона по умолчанию. Это дает возможность Вам восстановить настройки до исходных в случае каких-либо проблем и сделать копию вашегоconfig.json
при обновлении.
Совет: Используйте
— он поможет Вам перевести минимализированный код в читаемую разметку.
Добавить новый пункт меню
Элемент
может добавить новый пункт меню в настройки шаблона. Значение аттрибутаname
будет отображено, как имя пункта.
Добавление новых опций
Добавьте элемент, чтобы создать новую возможность
в настройки,внутрь того элемента <fields>
, в который вы хотите добавить опцию.Вы можете также скопировать один из существующих кодов, а затем изменить его.
Настройки android config.xml
KeepRunning (логическое значение, по умолчанию true): решите, разрешаете ли вы продолжать работу приложения после перерыва, установите значение false, приложение не будет уничтожено, когда приложение примет перерыв, просто приостановите выполнение кода.
LoadUrlTimeoutValue (число в миллисекундах, по умолчанию 20000, 20 секунд): используется для установки времени ожидания загрузки страницы. По умолчанию 20 секунд.
SplashScreen (строка, заставка по умолчанию): используется для установки имени заставки при запуске, которая находится в каталоге res/drawable. Настройте ресурсы с тем же именем в соответствующих подкаталогах.
SplashScreenDelay (число в миллисекундах, по умолчанию 3000): время отображения заставки.
InAppBrowserStorageEnabled (логическое значение, по умолчанию — true): определяет, разрешен ли веб-странице, открытой в InAppBrowser, доступ к одним и тем же ресурсам localStorage и webSQL.
LoadingDialog (строка, по умолчанию null): задает окно, которое будет отображаться при первой загрузке страницы. Окно отображает указанный заголовок и сообщение.
LoadingPageDialog (строка, по умолчанию null) — то же, что и LoadingDialog, но будет отображаться при первой загрузке каждой страницы.
ErrorUrl (URL, по умолчанию null): в случае возникновения проблемы отображает страницу с заголовком Ошибка приложения.
ShowTitle (логическое значение, по умолчанию false): отображает заголовок в верхней части экрана.
LogLevel (строка, по умолчанию ERROR): установите уровень журнала, диапазон значений — [ERROR, WARN, INFO, DEBUG и VERBOSE].
SetFullscreen (логическое значение, по умолчанию false): этот атрибут устарел и будет удален в будущем. AndroidLaunchMode (строка, по умолчанию singleTop): установите для режима запуска активности тот же режим, что и в AndroidManifest.xml; см. Руководство по разработке Android для более подробной информации. Необязательные значения [standard, singleTop, singleTask, singleInstance].
Настройки ios config.xml
EnableViewportScale (логическое значение, по умолчанию false) Если установлено значение true, оно используется для проверки правильности метатега окна просмотра.
MediaPlaybackAllowsAirPlay (логическое значение, по умолчанию — true): следует ли блокировать функцию трансляции.
Общие параметры
Этот параметр используется для указания, будет ли приложение скрывать строку состояния. Строка состояния не скрыта в iOS, но это влияет на точную высоту строки состояния. По умолчанию установлено значение false.
Объекты конфигурации
Переменные из файлаconfig.xml
хранятся в объектах конфигурации. Чтобы получить доступ к значениям переменных, просто используйте метод GET.
Поддержка многоплатформенных настроек параметров
Установите, запрещать ли скольжение по диапазону, в это время в области переполнения будет отображаться черный фон. Если для ios установлено значение true, перетаскивание страницы активирует функцию масштабирования.
Основной цвет фона.
Скрывает строку состояния, прикрепленную к клавиатуре, когда она отображается.
Экран блокировки отображается в альбомной или портретной ориентации.
Добавьте плагин для конкретной платформы. Он будет добавлен автоматически при использовании команды добавления плагина Cordova.
Задайте свойства индивидуально для конкретной платформы.
Установите крюк, подробности см. в разделе «Крюк».
Роль config.xml
Config.xml используется для управления поведением определенных приложений. Этот независимый от платформы файл XML основан на стандарте описания упакованных веб-приложений (виджетов) W3C, который расширяет некоторые основные функции Cordova API, плагинов и некоторых параметров платформы.
Когда проект создается с помощью командной строки Cordova, в его корневом каталоге будет файл config.xml. Когда указанная мобильная платформа добавляется с помощью команды добавления платформы, в соответствующих подкаталогах платформы в каталоге платформ будет копия файла config.xml.
app/platforms/ios/AppName/config.xml
app/platforms/blackberry10/www/config.xml
app/platforms/android/res/xml/config.xml
Специальные xml типы
Существуют также специфичные типы, доступные в Warp7 layouts
verify
styles
compile
info