設定

設定は、実行時のみに使用するためにアプリ内で定義したり、複数のセッションで維持するために保存したりできます。 ユーザーまたはシステムの環境変数を読み取ったり、実行時に環境変数またはプロパティを設定したり、設定をファイルに保存したりできます。

環境変数

ユーザーまたはシステムの環境変数を設定できます。 これはアプリの実行前に設定でき、アプリの代替動作を構成するために使用されます。 たとえば、LANG 環境変数の設定は、Qt アプリケーションに使用されるロケールに影響します。

アプリ内で環境変数の値を読み取るには、AppFramework.environment.value() を使用します。

環境変数の現在の設定を上書きするには、AppFramework.environment.setValue() を使用します。 この変更は、アプリを実行している間、有効のままです。

PropertySet

PropertySet は、QML バインドに使用できるキー値のペアを設定できるコンポーネントです。 このコンポーネントは、アプリの起動前にプロパティ値がわからない場合に最適で、プロパティ値は実行時に設定されます。

詳細については、「PropertySet の API リファレンス」をご参照ください。

設定ファイル

設定は JSON ファイルに保存でき、書き込みと読み取りには Settings コンポーネントが使用されます。

この JSON ファイルの場所は、オペレーティング システムや、アプリがスタンドアロン アプリとして作成されたか [AppRun] または AppStudio Player で使用されているかによって異なります。 ほとんどの場合、ファイルを直接編集する必要はありませんが、バグのテスト目的でこれらのファイルを開く必要がある場合があります。 これを実行する必要がある場合、ファイルは次のフォルダーにあり、名前に ArcGIS Online の UUID が付けられています。

  • Windows: C:\Users\YourUsername\ArcGIS\AppStudio\Settings
  • macOSUbuntu: ~\ArcGIS\AppStudio\Settings

アプリの構築後は、アプリ内の組織情報やユーザー権限に応じて、この設定ファイルを標準の 4 つの場所のいずれかに生成できます。 これらは代替の場所で、アプリが使用するかどうかは useFallbacks ブール値プロパティを使用して定義できます。

ファイル内の設定値の定義

設定は、キー値のペアとして割り当ておよび格納され、追加した設定を表現するために使用されます。 キーが存在しない場合は、設定されたデフォルト値や、ユーザーが最初に設定した値で作成できます。 これらのキー値は大文字と小文字を区別するので注意してください。全体を通して大文字の小文字の一貫性を保ってください。

Settings コンポーネントは、4 種類の値をサポートし、さまざまな状況で役に立ちます。 次の例は、これらの値の代表的な使用方法を示しています。

基本的な 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 関数は true と false の選択肢を提供し、微妙な違いを求めない選択式の質問に最適です。 次のサンプル コードは、設定をスイッチに適用して、アプリケーションが複数のセッションでログインを維持するかどうかを判定します。

property bool staySignedIn: false

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

Settings コンポーネントは整数を定義するための numberValue も提供します。これは、サイズなどの細かい設定や、複数の異なるオプション間で選択する必要があるシナリオに便利です。また、colorValue は 16 進数の色の値を格納し、アプリの外観をカスタマイズするために主に使用されます。これらの関数はさまざまな種類の値を格納しますが、振舞いは boolValue と同じです。