?? eventmanager.cs
字號:
using System;
using System.Collections;
using System.Data;
namespace NiceTracker.Events
{
/// <summary>
/// Summary description for EventManager.
/// </summary>
public class EventManager
{
public const string EVENT_FLASH_BACKLIGHT = "NiceTracker.Events.EventFlashBacklight";
public const string EVENT_IP_POST = "NiceTracker.Events.EventInternetPost";
public const string EVENT_SHOW_PICTURE = "NiceTracker.Events.EventShowPicture";
public const string EVENT_PLAY_SOUND = "NiceTracker.Events.EventPlaySound";
public const string EVENT_SET_VOLUME = "NiceTracker.Events.EventSetVolume";
private EventDB eventDB = new EventDB();
private Hashtable registeredEventList = new Hashtable();
private ArrayList eventList = new ArrayList();
private MainForm m_mainForm = null;
public EventManager( MainForm mainForm )
{
m_mainForm = mainForm;
registeredEventList.Add( "Flash backlight", "NiceTracker.Events.EventFlashBacklight" );
registeredEventList.Add( "Internet post", "NiceTracker.Events.EventInternetPost" );
registeredEventList.Add( "Show Picture", "NiceTracker.Events.EventShowPicture" );
registeredEventList.Add( "Play Sound", "NiceTracker.Events.EventPlaySound" );
registeredEventList.Add( "Set Volume", "NiceTracker.Events.EventSetVolume" );
// Load event data
eventDB.Load();
foreach ( DataRow dr in eventDB.DTEvents.Rows )
{
EventBase evt = CreateEvent( dr[ "type" ].ToString() );
evt.SetConfigurationByString( dr[ "config" ].ToString() );
eventList.Add( evt );
}
}
public EventBase CreateEvent( string eventType )
{
if ( eventType == EVENT_FLASH_BACKLIGHT )
return new EventFlashBacklight();
else if ( eventType == EVENT_IP_POST )
return new EventInternetPost();
else if ( eventType == EVENT_SHOW_PICTURE )
return new EventShowPicture( m_mainForm );
else if ( eventType == EVENT_PLAY_SOUND )
return new EventPlaySound();
else if ( eventType == EVENT_SET_VOLUME )
return new EventSetVolume ();
else
return null;
}
public string GetTypeFromFriendly( string friendlyName )
{
return registeredEventList[ friendlyName ].ToString();
}
public void AddEvent( EventBase gsmEvent )
{
eventList.Add( gsmEvent );
}
public EventBase GetEvent( string eventDescription )
{
bool found = false;
int count = eventList.Count - 1;
EventBase evt = null;
while ( count >= 0 && !found )
{
EventBase currentEvent = eventList[ count ] as EventBase;
if ( currentEvent.Description == eventDescription )
{
found = true;
evt = currentEvent;
}
count--;
}
return evt;
}
public void RemoveEvent( string eventDescription )
{
EventBase evt = GetEvent( eventDescription );
eventList.Remove( evt );
}
public ICollection UserEvents
{
get
{
return eventList;
}
}
public ICollection RegisteredEvents
{
get
{
return registeredEventList.Keys;
}
}
public bool InEventCatchment( GSMCell cell )
{
bool returnValue = true;
foreach ( EventBase eventBase in eventList )
{
returnValue = returnValue & eventBase.CheckEventCatchment( cell );
}
return returnValue;
}
public void ProcessEvents( GSMCell cell, GSMCell lastCell )
{
foreach ( EventBase eventBase in eventList )
{
try
{
if ( eventBase.Trigger == EventBase.TriggerType.EnterCell )
eventBase.Perform( cell );
else if ( eventBase.Trigger == EventBase.TriggerType.ExitCell )
eventBase.Perform( lastCell );
else if ( eventBase.Trigger == EventBase.TriggerType.CellChanged )
{
// Overkill, but make sure we've moved
if ( cell.CI != lastCell.CI && cell.LAC != lastCell.LAC )
eventBase.Action();
}
}
catch ( Exception )
{
}
}
}
public void Save()
{
eventDB.Clear();
foreach ( EventBase evt in eventList )
{
eventDB.AddNewEvent( evt.GetType().ToString(), evt.GetConfigurationString( ) );
}
eventDB.Save();
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -