Настройки

Настройки можно задавать в приложении для использования только во время его выполнения или для их сохранения между сеансами. Вы можете читать пользовательские или системные переменные среды, задавать переменные и свойства среды во время выполнения приложения и сохранять настройки в файл.

Переменные среды

Переменные среды можно задавать на уровне пользователя и на уровне системы. Их можно задать перед запуском приложения и использовать для настройки альтернативного поведения приложения. Например, параметры переменной среды LANG будут влиять на локаль, используемую приложениями Qt.

Для считывания любых значений переменной среды в приложении используйте AppFramework.environment.value().

Чтобы перезаписать текущее значение переменной среды, используйте AppFramework.environment.setValue(). Это изменение останется, пока работает приложение.

PropertySet

PropertySet - это компонент, позволяющий задавать пары ключ-значение, использующиеся в биндингах QML. Этот компонент лучше всего использовать, когда вы до запуска приложения не знаете, какое значение параметра будет, и оно задается во время запуска.

Для получения более подробной информации обратитесь к Справочному руководству API для PropertySet.

Файл настроек

Настройки можно сохранить в файле JSON. Их можно считывать и записывать с помощью компонента Settings .

Расположение файла JSON меняется в зависимости от операционной системы, а также от того, было ли приложение создано как автономное или используется через AppRun или AppStudio Player. Редактирование файла напрямую практически не нужно, хотя файл можно открыть, если нужно выполнить тестирование. Если вам это необходимо, файлы располагаются в следующих папках, названных по их UUID в ArcGIS Online:

  • Windows: C:\Users\YourUsername\ArcGIS\AppStudio\Settings
  • macOS и Ubuntu: ~\ArcGIS\AppStudio\Settings

После построения приложения файл настроек можно создать в одном из четырех стандартных местоположений, в зависимости от информации организации в приложении и пользовательских прав доступа. Эти местоположения являются резервными, и вы можете указать, будет ли ваше приложение использовать эти местоположения с помощью булева свойства useFallbacks.

Задание значений настроек в файле

Настройки назначаются и сохраняются как пары ключевых значений, представляющие добавляемые вами настройки. Если ключевое значение не существует, оно может быть создано в наборе по умолчанию или впервые определено каким-либо пользователем. Помните, что ключевые значения чувствительны к регистру. Следует использовать корректный регистр по всему ряду значений.

Компонент Settings поддерживает четыре разных типа значений, которые могут использоваться в различных ситуациях. В следующих примерах показаны основные способы использования значений.

Основные функции value и setValue предназначены для строк и могут использоваться в самых разнообразных сценариях. В это случае следующий пример кода демонстрирует способ установки по умолчанию пути URL:

readonly property string defaultLibraryPath: "~/ArcGIS/Example App/Library"

Item {
    Component.onDestruction: {
        var paths = libraryTextField.text.trim();

        if (paths.length <= 0) {
            paths = defaultLibraryPath;
        }

            settings.setValue("libraryPaths", paths, defaultLibraryPath);
    }

    TextField {
        id: libraryTextField

        Layout.fillWidth: true

        text: defaultLibraryPath
    }
}

Функция boolValue обеспечивает возможность выбора истина/ложь, и подходит для односложных вопросов, в которых не предполагается много нюансов. В следующем примере кода показано применение настройки для переключения, определяющей, будет ли приложение запоминать имена пользователей в течение сеансов:

property bool staySignedIn: false

    Switch {
    checked: staySignedIn
    onCheckedChanged: {
        staySignedIn = true;
        settings.boolValue("staySignedIn", true);
    }
}

Компонент Settings также предоставляет numberValue для определения целого числа, которое можно использовать для детализированных настроек, таких как размер, или в случаях, когда требуется сделать выбор между несколькими конкретными вариантами, и для сохранения шестнадцатеричного значения цвета, colorValue, в основном использующегося для настройки оформления приложения. Хотя эти функции хранят различные типы значений, они работают так же, как и boolValue.