<?xml version="1.0"?>

<PropertyList>
  <name>fgcom</name>
  <layout>vbox</layout>
  <resizable>false</resizable>

  <nasal>
        <open><![CDATA[
            var autofill = func {
                if ((getprop("/sim/fgcom/selected-server") == nil) or 
                    (getprop("/sim/fgcom/selected-server") == "" )   ){
                    var tx = getprop("/sim/fgcom/server");
                    var dlg = cmdarg();
                    #var servers = cmdarg().getChildren("group")[5].getChildren("combo")[0].getChildren("value");
                    var servers = props.globals.getNode("/sim/gui/dialogs/multiplay/fgcom-servers", 1);
                    foreach (var s; servers.getChildren("value")) {
                        var server = s.getValue();
                        var host = split(" ", server)[0];
                        if (host == tx) {
                            setprop("/sim/fgcom/selected-server", server);
                        }
                    }
                }
            }
            
            var servers = props.globals.getNode("/sim/gui/dialogs/multiplay/fgcom-servers", 1);
            var updateServers = func {
                servers.removeChildren("value");                
                # get the results list from the server
                var serverlist = props.globals.getNode("/sim/multiplay/server-list", 1);
            
                var i=0;
                foreach (var s; serverlist.getChildren("fgcom")) {
                    
                    if (!s.getNode("online").getBoolValue()) {
                      continue; # skip offline servers
                    }
                  
                # label is name and location, for the moment
                # should we include the number of users? or wait until we
                # have a better UI toolkit?
                    var nm = s.getNode("hostname").getValue() ~ " - " ~ s.getNode("location").getValue();
                    servers.getNode("value[" ~ i ~ "]", 1).setValue(nm);
                    i += 1;
                }

                autofill();
                gui.dialog_update("fgcom", "server");
            }
            
            var static_serverList = [
                    ['fgcom.flightgear.org', 'Avignon, France']
                ];
                
            var updateServersFailed = func {
                debug.dump("Failed to retrieve server list!");
    
                servers.removeChildren("value"); 
                var i=0;
                foreach (var s; static_serverList) {
                # create the node the PUI combo
                    var nm = s[0] ~ " - " ~ s[1];
                    servers.getNode("value[" ~ i ~ "]", 1).setValue(nm);
                    i += 1;
                }
                
                autofill();
                gui.dialog_update("fgcom", "server");
            }
            
            # listen for results arriving  
            setlistener("/sim/multiplay/got-servers", updateServers);
            setlistener("/sim/multiplay/get-servers-failure", updateServersFailed);
            
            fgcommand("xmlhttprequest",  props.Node.new({
              "url" : "http://liveries.flightgear.org/mpstatus/mpservers.xml",
              "targetnode" : "/sim/multiplay/server-list",
              "complete" : "/sim/multiplay/got-servers",
              "failure" : "/sim/multiplay/get-servers-failure"
            }));
            ]]>
        </open>
    <close>
    </close>
  </nasal>

  <!-- titlebar -->
  <group>
    <layout>hbox</layout>
    <empty>
      <stretch>1</stretch>
    </empty>

    <text>
      <label>FGCom Settings</label>
    </text>

    <empty>
      <stretch>1</stretch>
    </empty>

    <button>
      <pref-width>16</pref-width>
      <pref-height>16</pref-height>
      <border>2</border>
      <legend>?</legend>
      <binding>
        <command>open-browser</command>
        <path>http://wiki.flightgear.org/FGCom_3.0</path>
      </binding>
    </button>

    <button>
      <legend/>
      <key>Esc</key>
      <pref-width>16</pref-width>
      <pref-height>16</pref-height>
      <border>2</border>
      <binding>
        <command>dialog-close</command>
      </binding>
    </button>

  </group>
  <hrule/>

  <!-- main dialog area -->
  <group>
    <layout>table</layout>
    <halign>left</halign>

    <text>
      <row>0</row>
      <col>0</col>
      <label>Enabled:</label>
      <halign>right</halign>
      <enable>
        <equals>
          <property>/sim/fgcom/test</property>
          <value>0</value>
        </equals>
      </enable>
    </text>
    <checkbox>
      <row>0</row>
      <col>1</col>
      <colspan>2</colspan>
      <halign>left</halign>
      <name>enabled</name>
      <label></label>
      <live>1</live>
      <enable>
        <equals>
          <property>/sim/fgcom/test</property>
          <value>0</value>
        </equals>
      </enable>
      <property>/sim/fgcom/enabled</property>
      <binding>
        <command>dialog-apply</command>
        <object-name>enabled</object-name>
      </binding>
    </checkbox>

    <text>
      <row>1</row>
      <col>0</col>
      <label>  Display messages:</label>
      <halign>right</halign>
    </text>
    <checkbox>
      <row>1</row>
      <col>1</col>
      <colspan>2</colspan>
      <halign>left</halign>
      <name>showMessages</name>
      <label></label>
      <live>1</live>
      <property>/sim/fgcom/show-messages</property>
      <binding>
        <command>dialog-apply</command>
        <object-name>showMessages</object-name>
      </binding>
    </checkbox>
    <text>
      <row>1</row>
      <col>1</col>
      <label>      (for debug only)</label>
      <halign>left</halign>
    </text>

    <text>
      <row>3</row>
      <col>0</col>
      <label>Echo test:</label>
      <halign>right</halign>
      <enable>
        <equals>
          <property>/sim/fgcom/enabled</property>
          <value>1</value>
        </equals>
      </enable>
    </text>
    <checkbox>
      <row>3</row>
      <col>1</col>
      <colspan>2</colspan>
      <halign>left</halign>
      <name>test</name>
      <label></label>
      <enable>
        <equals>
          <property>/sim/fgcom/enabled</property>
          <value>1</value>
        </equals>
      </enable>
      <live>1</live>
      <property>/sim/fgcom/test</property>
      <binding>
        <command>dialog-apply</command>
        <object-name>test</object-name>
      </binding>
    </checkbox>

    <text>
      <row>4</row>
      <col>0</col>
      <label>PTT test:</label>
      <halign>right</halign>
      <enable>
        <equals>
          <property>/sim/fgcom/enabled</property>
          <value>-1</value>
        </equals>
      </enable>
    </text>
    <checkbox>
      <row>4</row>
      <col>1</col>
      <colspan>2</colspan>
      <halign>left</halign>
      <name>ptt-test</name>
      <label></label>
      <enable>
        <equals>
          <property>/sim/fgcom/enabled</property>
          <value>-1</value>
        </equals>
      </enable>
      <live>1</live>
      <property>/instrumentation/comm[0]/ptt</property>
      <binding>
        <command>dialog-apply</command>
        <object-name>ptt-test</object-name>
      </binding>
    </checkbox>
    <text>
      <row>4</row>
      <col>1</col>
      <label>      (/instrumentation/comm/ptt) </label>
      <halign>left</halign>
    </text>


    <text>
      <row>5</row>
      <col>0</col>
      <label>Speaker volume:</label>
      <halign>right</halign>
    </text>
    <slider>
      <row>5</row>
      <col>1</col>
      <halign>left</halign>
      <name>speaker-vol</name>
      <label></label>
      <min>0</min>
      <max>1.0</max>
      <step>0.1</step>
      <property>/sim/fgcom/speaker-level</property>
      <binding>
        <command>dialog-apply</command>
        <object-name>speaker-vol</object-name>
      </binding>
    </slider>
    <text>
      <row>5</row>
      <col>1</col>
      <label>1234         </label>
      <format>%.1f</format>
      <live>true</live>
      <halign>right</halign>
      <property>/sim/fgcom/speaker-level</property>
    </text>

    <text>
      <row>6</row>
      <col>0</col>
      <label>Silence threshold:</label>
      <halign>right</halign>
    </text>
    <slider>
      <row>6</row>
      <col>1</col>
      <halign>left</halign>
      <name>silence-thd</name>
      <label></label>
      <min>-60.0</min>
      <max>0.0</max>
      <step>1</step>
      <property>/sim/fgcom/silence-threshold</property>
      <binding>
        <command>dialog-apply</command>
        <object-name>silence-thd</object-name>
      </binding>
    </slider>
    <text>
      <row>6</row>
      <col>1</col>
      <label>1234 dB        </label>
      <format>%.1f dB</format>
      <live>true</live>
      <halign>right</halign>
      <property>/sim/fgcom/silence-threshold</property>
    </text>
  </group>

  <hrule/>

  <!-- registration (keep it for the day we need it)
  <group>
    <layout>hbox</layout>
    <empty>
      <stretch>1</stretch>
    </empty>

    <text>
      <label>Registration</label>
    </text>

    <empty>
      <stretch>1</stretch>
    </empty>
  </group>

  <group>
    <layout>table</layout>
    <halign>left</halign>

    <text>
      <row>0</row>
      <col>0</col>
      <halign>right</halign>
      <label>Enabled:</label>
      <enable>
        <equals>
          <property>/sim/fgcom/enabled</property>
          <value>0</value>
        </equals>
      </enable>
    </text>
    <checkbox>
      <row>0</row>
      <col>1</col>
      <colspan>2</colspan>
      <halign>left</halign>
      <name>reg-enabled</name>
      <label></label>
      <property>/sim/fgcom/register/enabled</property>
      <enable>
        <equals>
          <property>/sim/fgcom/enabled</property>
          <value>0</value>
        </equals>
      </enable>
      <binding>
        <command>dialog-apply</command>
        <object-name>reg-enabled</object-name>
      </binding>
    </checkbox>

    <text>
      <row>1</row>
      <col>0</col>
      <halign>right</halign>
      <label>Username:</label>
      <enable>
        <equals>
          <property>/sim/fgcom/enabled</property>
          <value>0</value>
        </equals>
      </enable>
    </text>
    <input>
      <name>username</name>
      <row>1</row>
      <col>1</col>
      <colspan>2</colspan>
      <halign>left</halign>
      <pref-width>125</pref-width>
      <editable>true</editable>
      <property>/sim/fgcom/register/username</property>
      <enable>
        <equals>
          <property>/sim/fgcom/enabled</property>
          <value>0</value>
        </equals>
      </enable>
      <binding>
        <command>dialog-apply</command>
        <object-name>username</object-name>
      </binding>
    </input>

    <text>
      <row>2</row>
      <col>0</col>
      <halign>right</halign>
      <label>Password:</label>
      <enable>
        <equals>
          <property>/sim/fgcom/enabled</property>
          <value>0</value>
        </equals>
      </enable>
    </text>
    <input>
      <name>password</name>
      <row>2</row>
      <col>1</col>
      <colspan>2</colspan>
      <halign>left</halign>
      <pref-width>125</pref-width>
      <editable>true</editable>
      <property>/sim/fgcom/register/password</property>
      <enable>
        <equals>
          <property>/sim/fgcom/enabled</property>
          <value>0</value>
        </equals>
      </enable>
      <binding>
        <command>dialog-apply</command>
        <object-name>password</object-name>
      </binding>
    </input>
  </group>

  <hrule/>
-->
  <!-- server -->
  <group>
    <layout>hbox</layout>
    <empty>
      <stretch>1</stretch>
    </empty>

    <text>
      <label>Server</label>
      <enable>
        <and>
          <equals>
            <property>/sim/fgcom/enabled</property>
            <value>1</value>
          </equals>
          <equals>
            <property>/sim/fgcom/test</property>
            <value>0</value>
          </equals>
        </and>
      </enable>
    </text>

    <empty>
      <stretch>1</stretch>
    </empty>
  </group>

  <group>
    <layout>table</layout>
    <halign>center</halign>
    <default-padding>10</default-padding>

    <combo>
      <name>server</name>
      <row>1</row>
      <col>0</col>
      <colspan>6</colspan>
      <pref-width>350</pref-width>
      <editable>false</editable>
      <property>/sim/fgcom/selected-server</property>
      <properties>/sim/gui/dialogs/multiplay/fgcom-servers</properties>
      <enable>
        <and>
          <equals>
            <property>/sim/fgcom/enabled</property>
            <value>1</value>
          </equals>
          <equals>
            <property>/sim/fgcom/test</property>
            <value>0</value>
          </equals>
        </and>
      </enable>
      <binding>
        <command>dialog-apply</command>
        <object-name>server</object-name>
      </binding>
      <binding>
        <command>nasal</command>
        <script>
          <![CDATA[
                 setprop("/sim/fgcom/enabled", 0);

                 var server = getprop("/sim/fgcom/selected-server");
                 server = split(" ", server)[0];
                 setprop("/sim/fgcom/server", server);

                 setprop("/sim/fgcom/enabled", 1);
             ]]>
        </script>
      </binding>
      <binding>
        <command>dialog-apply</command>
        <object-name>test</object-name>
      </binding>
    </combo>

  </group>

  <!-- button area -->

  <hrule/>
  <group>
    <layout>hbox</layout>
    <default-padding>5</default-padding>
    <empty>
      <stretch>true</stretch>
    </empty>

    <button>
      <legend>Close</legend>
      <default>true</default>
      <equal>true</equal>
      <binding>
        <command>dialog-close</command>
      </binding>
    </button>

    <empty>
      <stretch>true</stretch>
    </empty>
  </group>

</PropertyList>