# Forge Phone Module

## Overview
The Phone module provides a comprehensive mobile phone system for the Forge client. It includes features for messaging, email, contacts management, and a modern user interface with various applications.

## Dependencies
- forge_client_main

## Authors
- J. Schmidt
- Creedcoder
- IDSolutions

## Features

### Communication
1. **Messaging System**
   - Send and receive text messages
   - Message history
   - Offline message support
   - Message notifications
   - Contact-based messaging

2. **Email System**
   - Send and receive emails
   - Email history
   - Offline email support
   - Email notifications
   - Contact-based emailing

3. **Contact Management**
   - Add and remove contacts
   - Contact details (name, phone, email)
   - Contact list organization
   - Quick contact actions
   - Contact search

### User Interface
1. **Phone Interface**
   - Modern mobile phone design
   - Home screen with app icons
   - App navigation
   - Status bar with time
   - Interactive controls

2. **Applications**
   - Messages app
   - Email app
   - Contacts app
   - Camera app
   - Photos app
   - Settings app
   - Safari browser

3. **Controls**
   - Touch-based interaction
   - Button feedback
   - Visual indicators
   - Smooth transitions
   - Intuitive navigation

### System Features
1. **Phone Management**
   - Phone initialization
   - Action binding
   - Variable management
   - State persistence
   - Profile saving

2. **Data Management**
   - Contact storage
   - Message history
   - Email storage
   - Profile data
   - Settings persistence

## Event Handlers
The module uses several event handlers for initialization and execution:
- `XEH_preInit.sqf`: Pre-initialization setup
- `XEH_postInit.sqf`: Post-initialization tasks
- `XEH_preStart.sqf`: Pre-start configuration

## Usage
To use the phone module:
```sqf
// Initialize phone
[] call forge_client_phone_fnc_initPhone;

// Add a contact
[cursorObject] call forge_client_phone_fnc_addContact;

// Send a message
["1234567890", "Hello World"] call forge_client_phone_fnc_sendMsg;

// Send an email
["recipient@spearnet.mil", "Subject", "Message"] call forge_client_phone_fnc_sendEmail;
```

## Integration
The phone module integrates with other Forge client systems:
1. **Player System**
   - Player identification
   - Phone number assignment
   - Email assignment
   - Profile management

2. **Database System**
   - Message storage
   - Contact persistence
   - Email storage
   - Profile data

3. **Notification System**
   - Message alerts
   - Email notifications
   - System notifications
   - Status updates

## Debugging
Debug mode can be enabled by uncommenting the following in `script_component.hpp`:
```cpp
#define DEBUG_MODE_FULL
```

## Version Information
Version information is managed through the main Forge client system configuration.

## Technical Details
- Real-time messaging
- Secure data management
- Contact synchronization
- Message persistence
- Email handling
- UI responsiveness
- Cross-module integration
- Event system integration
- State management
- Profile persistence
- Notification system
- Input validation 