/*
Copyright (C) 1997-2001 Id Software, Inc.

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  

See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.

*/

#include "ui_local.h"

/*
=============================================================================

ADDRESS BOOK MENU

=============================================================================
*/


typedef struct m_addressBook_s {
	menuFrameWork_t	menu;
	menuField_t		fields[MAX_LOCAL_SERVERS];
	menuStatic_t	banner;
} m_addressBook_t;

static m_addressBook_t	m_addressBook;

static void SaveChanges( void ) {
	char buffer[32];
	int index;

	for( index = 0; index < MAX_LOCAL_SERVERS; index++ ) {
		Com_sprintf( buffer, sizeof( buffer ), "adr%d", index );
		cvar.Set( buffer, m_addressBook.fields[index].field.text );
	}
}

static int AddressBook_MenuCallback( int id, int msg, int param ) {
	switch( msg ) {
	case QM_DESTROY:
        SaveChanges();
		break;
	default:
		break;
	}

	return QMS_NOTHANDLED;
}

static void AddressBook_MenuInit( void ) {
	char buffer[32];
	int i, y;

	memset( &m_addressBook, 0, sizeof( m_addressBook ) );

	m_addressBook.menu.callback = AddressBook_MenuCallback;

	y = 64;
	for( i = 0; i < MAX_LOCAL_SERVERS; i++ ) {
		Com_sprintf( buffer, sizeof( buffer ), "adr%d", i );

		m_addressBook.fields[i].generic.type	= MTYPE_FIELD;
		m_addressBook.fields[i].generic.name	= NULL;
		m_addressBook.fields[i].generic.x		= ( uis.glconfig.vidWidth - 30 * SMALLCHAR_WIDTH ) / 2 - RCOLUMN_OFFSET;
		m_addressBook.fields[i].generic.y		= y;
		y += MENU_SPACING;

		IF_InitText( &m_addressBook.fields[i].field, 30, 60, cvar.VariableString( buffer ) );

		Menu_AddItem( &m_addressBook.menu, &m_addressBook.fields[i] );
	}

	UI_SetupDefaultBanner( &m_addressBook.banner, "Address Book" );

	Menu_AddItem( &m_addressBook.menu, &m_addressBook.banner );

	
}

void M_Menu_AddressBook_f( void ) {
	AddressBook_MenuInit();
	UI_PushMenu( &m_addressBook.menu );
}

