#ifndef GLOBAL_DECL

#include "global.h"      // Global data types and variables

#endif



#define MAX_KEY_LENGTH 5000


void config::save(pglist* pagelist)
{
    data_item* data;
    char blank[10];
    char ids[MAX_KEY_LENGTH];

    // Save options

    WritePrivateProfileString("MainOptions", "UseModem",        use_modem ? "Y" : "N"
                                ,FILENAME);
    WritePrivateProfileString("MainOptions", "UseProxy",        use_proxy ? "Y" : "N"
                                ,FILENAME);
    WritePrivateProfileString("MainOptions", "ProxyAddress",    proxy_addr
                                ,FILENAME);
    WritePrivateProfileString("MainOptions", "ProxyPort",       itoa(proxy_port, blank, 10)
                                ,FILENAME);
    WritePrivateProfileString("MainOptions", "Supervisor",      supervisor ? "Y" : "N"
                                ,FILENAME);
    WritePrivateProfileString("MainOptions", "ShowExtern",      show_extern ? "Y" : "N"
                                ,FILENAME);
    WritePrivateProfileString("MainOptions", "ShowStatus",      show_status ? "Y" : "N"
                                ,FILENAME);
    WritePrivateProfileString("MainOptions", "Timeout",         itoa(timeout, blank, 10)
                                ,FILENAME);
    WritePrivateProfileString("MainOptions", "Retries",         itoa(retries, blank, 10)
                                ,FILENAME);
    WritePrivateProfileString("MainOptions", "FontSize",        font_size
                                ,FILENAME);
    WritePrivateProfileString("SleepTimer", "Hours",            hours
                                ,FILENAME);
    WritePrivateProfileString("SleepTimer", "Minutes",          minutes
                                ,FILENAME);

    // Compile list of selected page ids

    ids[0] = NULL;

    if (pagelist != NULL)
    {
        pagelist -> move_first();
        data = pagelist -> get_item();
        while (data != NULL)
        {
            if (data -> selected)
            {
                if (strlen(data -> page_id) + strlen(ids) + 1 < MAX_KEY_LENGTH)
                {
                    strcat(ids, data -> page_id);
                    strcat(ids, ",");
                }
            }
            data = pagelist -> get_item();
        }
    }

    // Write page ids to file

    WritePrivateProfileString("SelectedPages", "PageIDs", ids, FILENAME);
}

void config::load(pglist* pagelist)
{
    data_item* data;
    char ids[MAX_KEY_LENGTH];
    char value[10];

    // Load options

    GetPrivateProfileString("MainOptions", "UseModem", "Y", value, 10, FILENAME);
    if (value[0] == 'Y')
        use_modem = true;
    else
        use_modem = false;

    GetPrivateProfileString("MainOptions", "UseProxy", "N", value, 10, FILENAME);
    if (value[0] == 'Y')
        use_proxy = true;
    else
        use_proxy = false;

    GetPrivateProfileString("MainOptions", "ProxyAddress", "", proxy_addr, 100, FILENAME);
    
    GetPrivateProfileString("MainOptions", "ProxyPort", "0", value, 10, FILENAME);
    proxy_port = atoi(value);

    GetPrivateProfileString("MainOptions", "Supervisor", "N", value, 10, FILENAME);
    if (value[0] == 'Y')
        supervisor = true;
    else
        supervisor = false;

    GetPrivateProfileString("MainOptions", "ShowExtern", "N", value, 10, FILENAME);
    if (value[0] == 'Y')
        show_extern = true;
    else
        show_extern = false;

    GetPrivateProfileString("MainOptions", "ShowStatus", "Y", value, 10, FILENAME);
    if (value[0] == 'Y')
        show_status = true;
    else
        show_status = false;

    GetPrivateProfileString("MainOptions", "FontSize", "4", font_size, 10, FILENAME);

    GetPrivateProfileString("MainOptions", "Timeout", "10", value, 10, FILENAME);
    timeout = atoi(value);

    GetPrivateProfileString("MainOptions", "Retries", "2", value, 10, FILENAME);
    retries = atoi(value);

    // Get page data from file

    GetPrivateProfileString("SelectedPages", "PageIDs", ",", ids, MAX_KEY_LENGTH, FILENAME);

    if (pagelist != NULL)
    {
        do
        {
            // Extract ID from string

            get_from_line( ids, value );
            if (value[0] != NULL)
            {
                // Search for a matching ID in the page list

                pagelist -> move_first();
                data = pagelist -> get_item();
                while (data != NULL)
                {
                    if (!stricmp(data -> page_id, value))
                        data -> selected = true;
                    data = pagelist -> get_item();
                }
            }
        } while (value[0] != NULL);
    }

    GetPrivateProfileString("SleepTimer", "Hours", "04", hours, 100, FILENAME);
    GetPrivateProfileString("SleepTimer", "Minutes", "00", minutes, 100, FILENAME);
}

syntax highlighted by Code2HTML, v. 0.8.11