From: <che...@us...> - 2008-07-25 10:58:43
|
Revision: 1966 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=1966&view=rev Author: chef_koch Date: 2008-07-25 10:58:38 +0000 (Fri, 25 Jul 2008) Log Message: ----------- fixed an exception when phoneBook was disabled Modified Paths: -------------- trunk/plugins/FritzBox/FritzBox/FritzBox.cs trunk/plugins/FritzBox/FritzBox/Properties/AssemblyInfo.cs trunk/plugins/FritzBox/FritzBox.xmp Modified: trunk/plugins/FritzBox/FritzBox/FritzBox.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/FritzBox.cs 2008-07-25 07:43:30 UTC (rev 1965) +++ trunk/plugins/FritzBox/FritzBox/FritzBox.cs 2008-07-25 10:58:38 UTC (rev 1966) @@ -70,7 +70,7 @@ #region Variables - public const string _version = "0.3.1.0"; + public const string _version = "0.3.1.1"; public static int _lastVersion = 0; static bool _extensiveLogging = false; @@ -130,6 +130,8 @@ private void ReceiveThread() { + Log.Info("FRITZ!Box: ReceiveThread()"); + while (!stopThread) { System.Threading.Thread.Sleep(100); @@ -141,22 +143,24 @@ void FritzBox_ReceivedData(object sender, EventArgs e) { + Log.Info("FRITZ!Box: FritzBox_ReceivedData()"); + byte[] myReadBuffer = new byte[1024]; StringBuilder myCompleteMessage = new StringBuilder(); int numberOfBytesRead = 0; // Incoming message may be larger than the buffer size. - do + while (networkStream.DataAvailable) { numberOfBytesRead = networkStream.Read(myReadBuffer, 0, myReadBuffer.Length); myCompleteMessage.AppendFormat("{0}", Encoding.ASCII.GetString(myReadBuffer, 0, numberOfBytesRead)); } - while (networkStream.DataAvailable); - if (_extensiveLogging) Log.Info("received data: {0}", myCompleteMessage.ToString()); + CallAction callAction = ParseAction(myCompleteMessage.ToString()); + if (callAction == null) return; if (_extensiveLogging) callAction.WriteToLog(); @@ -187,6 +191,8 @@ void OnCallAction(CallAction callAction) { + Log.Info("FRITZ!Box: OnCallAction()"); + if (!_showNotify) { Log.Info("External process is running. Notify is queued and will be shown later."); @@ -197,7 +203,8 @@ switch (callAction.type) { case CallAction.CallType.Incoming: - callAction.caller = phoneBook.GetCaller(callAction.caller); + if (_usePhonebook) + callAction.caller = phoneBook.GetCaller(callAction.caller); OnIncomingCall(callAction); break; case CallAction.CallType.Outgoing: @@ -222,6 +229,8 @@ void OnIncomingCall(CallAction callAction) { + Log.Info("FRITZ!Box: OnIncomingCall()"); + if (tempNotify != null) { Log.Info("yet another dialog is active. action is sent to queue."); @@ -269,11 +278,10 @@ private void LoadSettings() { + Log.Info("FRITZ!Box: LoadSettings()"); + char[] charSeparators = new char[] { ';' }; - if (_extensiveLogging) - Log.Info("FRITZ!Box: LoadSettings"); - using (MediaPortal.Profile.Settings xmlreader = new MediaPortal.Profile.Settings(Config.GetFile(Config.Dir.Config, "MediaPortal.xml"))) { _lastVersion = xmlreader.GetValueAsInt("fritzbox", "lastVersion", 0); @@ -335,8 +343,7 @@ private void SaveSettings() { - if (_extensiveLogging) - Log.Info("FRITZ!Box: SaveSettings"); + Log.Info("FRITZ!Box: SaveSettings()"); using (MediaPortal.Profile.Settings xmlwriter = new MediaPortal.Profile.Settings(Config.GetFile(Config.Dir.Config, "MediaPortal.xml"))) { @@ -352,6 +359,9 @@ CallAction ParseAction(string dataStream) { + Log.Info("FRITZ!Box: ParseAction()"); + if (dataStream == null) return null; + // data-stream can be in following format: // incoming calls: DateTime;RING;ConnectionID;CallerID;MSN;??POTS??; // outgoing calls: DateTime;CALL;ConnectionID;??Nebenstelle??;MSN;CallerID;??POTS??; @@ -361,7 +371,7 @@ // DateTime format: // 12.12.06 12:12:12 // dd.MM.yy hh:mm:ss - + string[] strList = dataStream.Trim().Split(';'); CallAction callAction = new CallAction(); @@ -391,8 +401,9 @@ case "DISCONNECT": callAction.type = CallAction.CallType.ConnectionClosed; break; + default: + return null; } - return callAction; } @@ -546,6 +557,7 @@ /// </summary> public void Stop() { + Log.Info("FRITZ!Box Plugin {0} stopping.", _version); stopThread = true; ReceivedData -= new ReceivedDataEventHandler(FritzBox_ReceivedData); Modified: trunk/plugins/FritzBox/FritzBox/Properties/AssemblyInfo.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/Properties/AssemblyInfo.cs 2008-07-25 07:43:30 UTC (rev 1965) +++ trunk/plugins/FritzBox/FritzBox/Properties/AssemblyInfo.cs 2008-07-25 10:58:38 UTC (rev 1966) @@ -29,5 +29,5 @@ // Buildnummer // Revision // -[assembly: AssemblyVersion("0.3.1.0")] -[assembly: AssemblyFileVersion("0.3.1.0")] +[assembly: AssemblyVersion(FritzBox.FritzBox._version)] +[assembly: AssemblyFileVersion(FritzBox.FritzBox._version)] Modified: trunk/plugins/FritzBox/FritzBox.xmp =================================================================== --- trunk/plugins/FritzBox/FritzBox.xmp 2008-07-25 07:43:30 UTC (rev 1965) +++ trunk/plugins/FritzBox/FritzBox.xmp 2008-07-25 10:58:38 UTC (rev 1966) @@ -8,7 +8,7 @@ <Source>FritzBox\gfx\Thumbs\YAC\_noImage.png</Source> <Id>04010</Id> <Option>OutputFileName=|DefaultFile=False|</Option> - <Guid>3ffa94ec-3feb-4a17-a810-172c92c8327d</Guid> + <Guid>d666735b-206e-48a9-be1c-95b38102d5fe</Guid> </File> <File> <FileName>_unknown.png</FileName> @@ -17,7 +17,7 @@ <Source>FritzBox\gfx\Thumbs\YAC\_unknown.png</Source> <Id>04010</Id> <Option /> - <Guid>eff8eaba-dd4a-41a5-b5b6-8d2a7f883ce4</Guid> + <Guid>2a655c5d-c556-47ba-8392-9dc0d3b438dd</Guid> </File> <File> <FileName>FritzBox.dll</FileName> @@ -26,7 +26,7 @@ <Source>FritzBox\bin\Release\FritzBox.dll</Source> <Id>01020</Id> <Option /> - <Guid>9e67d038-ac40-4084-9d43-51a541f5c092</Guid> + <Guid>259204ab-d64b-40d6-82cf-761972fa3fa2</Guid> </File> </FileList> <StringList /> @@ -36,12 +36,12 @@ <SetupGroups /> <SetupGroupMappings /> <Option> - <BuildFileName>D:\mediaportal\mediaportal_plugins\FritzBox\FritzBox_v0.3.1.0.mpi</BuildFileName> + <BuildFileName>D:\mediaportal\mediaportal_plugins\FritzBox\FritzBox_v0.3.1.1.mpi</BuildFileName> <ProiectFileName>D:\mediaportal\mediaportal_plugins\FritzBox\FritzBox.xmp</ProiectFileName> <ProiectName>FritzBox CallMonitor</ProiectName> <Author>chefkoch @ Team MediaPortal</Author> <UpdateURL>http://mpi.team-mediaportal.com/downloads</UpdateURL> - <Version>0.3.1.0</Version> + <Version>0.3.1.1</Version> <Description>The FRITZ!Box plugin is a process plugin, which is able to notify you within MediaPortal on an incomming call on your FRITZ!Box. All strings are multi language. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <che...@us...> - 2008-08-07 17:28:40
|
Revision: 2008 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=2008&view=rev Author: chef_koch Date: 2008-08-07 17:28:35 +0000 (Thu, 07 Aug 2008) Log Message: ----------- version bump to 0.3.2.0 - completely rework the communication with the fritzBox - added reconnect feature, now it also gets the call infos after the fritzbox was rebooted, without restarting MediaPortal Modified Paths: -------------- trunk/plugins/FritzBox/FritzBox/FritzBox.cs trunk/plugins/FritzBox/FritzBox/FritzBox.csproj trunk/plugins/FritzBox/FritzBox/FritzBoxSetupFrom.cs trunk/plugins/FritzBox/FritzBox/PhoneBook.cs trunk/plugins/FritzBox/FritzBox.xmp Added Paths: ----------- trunk/plugins/FritzBox/FritzBox/FritzBoxClient.cs Modified: trunk/plugins/FritzBox/FritzBox/FritzBox.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/FritzBox.cs 2008-08-07 11:26:02 UTC (rev 2007) +++ trunk/plugins/FritzBox/FritzBox/FritzBox.cs 2008-08-07 17:28:35 UTC (rev 2008) @@ -44,39 +44,15 @@ [PluginIcons("FritzBox.FritzBox.png", "FritzBox.FritzBoxDisabled.png")] public class FritzBox : ISetupForm, IPlugin { - #region Private Fields - - /// <summary> - /// networkstream to receive data, sent by fritzbox - /// </summary> - private NetworkStream networkStream; - - /// <summary> - /// address for the connected fritzbox - /// </summary> - private string fritzBoxAddress; - - /// <summary> - /// port for the connected fritzbox - /// </summary> - private int fritzBoxPort; - - /// <summary> - /// indicates whether listing is enabled or not - /// </summary> - private bool stopThread; - - #endregion - #region Variables - public const string _version = "0.3.1.1"; + public const string _version = "0.3.2.0"; public static int _lastVersion = 0; static bool _extensiveLogging = false; List<CallAction> actionList = new List<CallAction>(); object tempNotify = null; - + // notify settings int _timeout = -1; // autoclose the dialog after the timeout expired bool _closeOnTimeout = false; @@ -86,9 +62,8 @@ List<String> _msnList = new List<String>(); bool _showMsnOnHeading = false; - + private bool _usePhonebook = true; - private PhoneBook phoneBook; int maxNotifies = 20; int notifyCount = 0; @@ -104,69 +79,18 @@ #region Constructors and Destructors - /// <summary> - /// constructor - /// </summary> public FritzBox() { - ReceivedData += new ReceivedDataEventHandler(FritzBox_ReceivedData); } - /// <summary> - /// Destructor. - /// </summary> - ~FritzBox() { } + ~FritzBox() + { + } #endregion - #region Public Events and Delegates - - public delegate void ReceivedDataEventHandler(object sender, EventArgs e); - public event ReceivedDataEventHandler ReceivedData; - - #endregion - #region Private Functions/Methods - private void ReceiveThread() - { - Log.Info("FRITZ!Box: ReceiveThread()"); - - while (!stopThread) - { - System.Threading.Thread.Sleep(100); - if (this.networkStream.DataAvailable) - if (ReceivedData != null) - ReceivedData(this, new EventArgs()); - } - } - - void FritzBox_ReceivedData(object sender, EventArgs e) - { - Log.Info("FRITZ!Box: FritzBox_ReceivedData()"); - - byte[] myReadBuffer = new byte[1024]; - StringBuilder myCompleteMessage = new StringBuilder(); - int numberOfBytesRead = 0; - - // Incoming message may be larger than the buffer size. - while (networkStream.DataAvailable) - { - numberOfBytesRead = networkStream.Read(myReadBuffer, 0, myReadBuffer.Length); - - myCompleteMessage.AppendFormat("{0}", Encoding.ASCII.GetString(myReadBuffer, 0, numberOfBytesRead)); - } - if (_extensiveLogging) - Log.Info("received data: {0}", myCompleteMessage.ToString()); - - CallAction callAction = ParseAction(myCompleteMessage.ToString()); - if (callAction == null) return; - if (_extensiveLogging) - callAction.WriteToLog(); - - OnCallAction(callAction); - } - void OnStartExternal(Process proc, bool waitForExit) { if (waitForExit) @@ -188,11 +112,11 @@ notifyQueue.Clear(); } - void OnCallAction(CallAction callAction) { Log.Info("FRITZ!Box: OnCallAction()"); - + callAction.WriteToLog(); + if (!_showNotify) { Log.Info("External process is running. Notify is queued and will be shown later."); @@ -204,7 +128,7 @@ { case CallAction.CallType.Incoming: if (_usePhonebook) - callAction.caller = phoneBook.GetCaller(callAction.caller); + callAction.caller = PhoneBook.GetCaller(callAction.caller); OnIncomingCall(callAction); break; case CallAction.CallType.Outgoing: @@ -223,6 +147,9 @@ } } break; + default: + Log.Error("incorrect callaction.type"); + break; } } @@ -230,7 +157,7 @@ void OnIncomingCall(CallAction callAction) { Log.Info("FRITZ!Box: OnIncomingCall()"); - + if (tempNotify != null) { Log.Info("yet another dialog is active. action is sent to queue."); @@ -279,15 +206,15 @@ private void LoadSettings() { Log.Info("FRITZ!Box: LoadSettings()"); - + char[] charSeparators = new char[] { ';' }; using (MediaPortal.Profile.Settings xmlreader = new MediaPortal.Profile.Settings(Config.GetFile(Config.Dir.Config, "MediaPortal.xml"))) { _lastVersion = xmlreader.GetValueAsInt("fritzbox", "lastVersion", 0); - fritzBoxAddress = xmlreader.GetValueAsString("fritzbox", "address", "fritz.box"); - fritzBoxPort = xmlreader.GetValueAsInt("fritzbox", "port", 1012); + FritzBoxClient.address = xmlreader.GetValueAsString("fritzbox", "address", "fritz.box"); + FritzBoxClient.port = xmlreader.GetValueAsInt("fritzbox", "port", 1012); _extensiveLogging = xmlreader.GetValueAsBool("fritzbox", "extensiveLogging", false); @@ -317,8 +244,7 @@ _usePhonebook = xmlreader.GetValueAsBool("fritzbox", "usePhonebook", true); if (_usePhonebook) { - phoneBook = new PhoneBook(); - phoneBook.LoadSettings(); + PhoneBook.LoadSettings(); } if (_extensiveLogging) @@ -334,8 +260,8 @@ Log.Info("FRITZ!Box: usePhonebook = {0}", _usePhonebook.ToString()); if (_usePhonebook) { - Log.Info("FRITZ!Box: showUnknownCaller = {0}", phoneBook.ShowUnknownCaller.ToString()); - Log.Info("FRITZ!Box: saveUnknownCaller = {0}", phoneBook.SaveUnknownCaller.ToString()); + Log.Info("FRITZ!Box: showUnknownCaller = {0}", PhoneBook.ShowUnknownCaller.ToString()); + Log.Info("FRITZ!Box: saveUnknownCaller = {0}", PhoneBook.SaveUnknownCaller.ToString()); } } } @@ -350,63 +276,13 @@ xmlwriter.SetValue("fritzbox", "lastVersion", _version.Replace(".", string.Empty)); } - phoneBook.SaveSettings(); + PhoneBook.SaveSettings(); } #endregion #region Helper Methods - CallAction ParseAction(string dataStream) - { - Log.Info("FRITZ!Box: ParseAction()"); - if (dataStream == null) return null; - - // data-stream can be in following format: - // incoming calls: DateTime;RING;ConnectionID;CallerID;MSN;??POTS??; - // outgoing calls: DateTime;CALL;ConnectionID;??Nebenstelle??;MSN;CallerID;??POTS??; - // connection started: DateTime;CONNECT;ConnectionID;??Nebenstelle??;CallerID; - // connection closed: DateTime;DISCONNECT;ConnectionID;ConnectedTime; - - // DateTime format: - // 12.12.06 12:12:12 - // dd.MM.yy hh:mm:ss - - string[] strList = dataStream.Trim().Split(';'); - CallAction callAction = new CallAction(); - - // time when action happens - callAction.time = DateTime.Parse(strList[0], new System.Globalization.CultureInfo("de-DE", false)); - - // set the type of the callAction - switch (strList[1]) - { - case "RING": - callAction.type = CallAction.CallType.Incoming; - // sets the callerID - callAction.caller.ID = strList[3]; - callAction.msn = strList[4]; - break; - case "CALL": - callAction.type = CallAction.CallType.Outgoing; - // sets the callerID - callAction.caller.ID = strList[5]; - callAction.msn = strList[4]; - break; - case "CONNECT": - callAction.type = CallAction.CallType.ConnectionStarted; - // sets the callerID - callAction.caller.ID = strList[4]; - break; - case "DISCONNECT": - callAction.type = CallAction.CallType.ConnectionClosed; - break; - default: - return null; - } - return callAction; - } - string GetCallerImage(Caller caller) { if (caller.ID == "") @@ -418,7 +294,7 @@ // search image for caller if (_extensiveLogging) Log.Info("searching image: " + strImage); - + if (File.Exists(strImage)) { if (_extensiveLogging) @@ -506,7 +382,7 @@ try { - TcpClient = new TcpClient(fritzBoxAddress, fritzBoxPort); + TcpClient = new TcpClient(FritzBoxClient.address, FritzBoxClient.port); } catch (Exception) { @@ -532,24 +408,10 @@ LoadSettings(); Utils.OnStartExternal += new Utils.UtilEventHandler(OnStartExternal); - Utils.OnStopExternal += new Utils.UtilEventHandler(OnStopExternal); + Utils.OnStopExternal += new Utils.UtilEventHandler(OnStopExternal); - TcpClient tcpClient; - // To get the calling informations, the port 1012 on the FRITZBox have to be opened. - // You can open the port with you phone by calling: #96*5* - // To close the port you can call: #96*4* - - // create a new connection to the FritzBox and listen to the TCP port - tcpClient = new TcpClient(fritzBoxAddress, fritzBoxPort); - - tcpClient.ReceiveBufferSize = 1; - networkStream = tcpClient.GetStream(); - - - Thread FBReceiveThread = new Thread(new ThreadStart(ReceiveThread)); - FBReceiveThread.Priority = ThreadPriority.BelowNormal; - FBReceiveThread.Name = "FRITZ!Box Monitoring"; - FBReceiveThread.Start(); + FritzBoxClient.CallEvent += new FritzBoxClient.CallEventHandler(OnCallAction); + FritzBoxClient.StartClient(); } /// <summary> @@ -558,9 +420,10 @@ public void Stop() { Log.Info("FRITZ!Box Plugin {0} stopping.", _version); - stopThread = true; - ReceivedData -= new ReceivedDataEventHandler(FritzBox_ReceivedData); + FritzBoxClient.StopClient(); + FritzBoxClient.CallEvent -= new FritzBoxClient.CallEventHandler(OnCallAction); + Utils.OnStartExternal -= new Utils.UtilEventHandler(OnStartExternal); Utils.OnStopExternal -= new Utils.UtilEventHandler(OnStopExternal); Modified: trunk/plugins/FritzBox/FritzBox/FritzBox.csproj =================================================================== --- trunk/plugins/FritzBox/FritzBox/FritzBox.csproj 2008-08-07 11:26:02 UTC (rev 2007) +++ trunk/plugins/FritzBox/FritzBox/FritzBox.csproj 2008-08-07 17:28:35 UTC (rev 2008) @@ -53,6 +53,7 @@ <Reference Include="System.Xml" /> </ItemGroup> <ItemGroup> + <Compile Include="FritzBoxClient.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Caller.cs" /> <Compile Include="CallAction.cs" /> Added: trunk/plugins/FritzBox/FritzBox/FritzBoxClient.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/FritzBoxClient.cs (rev 0) +++ trunk/plugins/FritzBox/FritzBox/FritzBoxClient.cs 2008-08-07 17:28:35 UTC (rev 2008) @@ -0,0 +1,263 @@ +using System; +using System.Net; +using System.Net.Sockets; +using System.Threading; +using System.Text; + +using MediaPortal.GUI.Library; + +namespace FritzBox +{ + #region class StateObject + // State object for receiving data from remote device. + public class StateObject + { + // Client socket. + public Socket workSocket = null; + // Size of receive buffer. + public const int BufferSize = 256; + // Receive buffer. + public byte[] buffer = new byte[BufferSize]; + // Received data string. + public StringBuilder sb = new StringBuilder(); + } + #endregion + + public static class FritzBoxClient + { + #region variables + + public static string address = "fritz.box"; + // The port number for the remote device. + public static int port = 1012; + + static TimeSpan minConnectWaitTime = new TimeSpan(0, 2, 0); + static DateTime connectionFailed; + + static Socket _client; + + #endregion + + #region Public Events and Delegates + + public delegate void CallEventHandler(CallAction callAction); + public static event CallEventHandler CallEvent; + + #endregion + + #region Public methods + + public static void StartClient() + { + Log.Debug("StartClient"); + connectionFailed = DateTime.MinValue; + + Thread thread = new Thread(new ThreadStart(Connect)); + thread.Start(); + } + + public static void StopClient() + { + Log.Debug("StopClient"); + try + { + // Release the socket. + _client.Shutdown(SocketShutdown.Both); + _client.Close(); + } + catch (Exception e) + { + Log.Error(e.ToString()); + } + } + + #endregion + + #region Private methods + + private static void ReConnect() + { + Log.Debug("ReConnect"); + connectionFailed = DateTime.Now; + + Thread thread = new Thread(new ThreadStart(Connect)); + thread.Start(); + } + + private static void Connect() + { + Log.Debug("Connect"); + + // Enforce a minimum wait time between connects. + DateTime nextconnect = connectionFailed.Add(minConnectWaitTime); + if (DateTime.Now < nextconnect) + { + TimeSpan waittime = nextconnect - DateTime.Now; + Log.Debug("Avoiding too much reconnects, sleeping until {0}.", nextconnect.ToString()); + Thread.Sleep(waittime); + } + + try + { + //Establish the remote endpoint for the socket. + //The name of the + //remote device is "host.contoso.com". + IPHostEntry ipHostInfo = Dns.GetHostEntry(address); + IPAddress ipAddress = ipHostInfo.AddressList[0]; + IPEndPoint remoteEP = new IPEndPoint(ipAddress, port); + + // Create a TCP/IP socket. + _client = new Socket(AddressFamily.InterNetwork, + SocketType.Stream, ProtocolType.Tcp); + + // Connect to the remote endpoint. + _client.BeginConnect(address, port, new AsyncCallback(ConnectCallback), _client); + } + catch (SocketException) + { + Log.Debug("Connect - SocketException - Connection to FritzBox failed, trying again in 2 minutes."); + ReConnect(); + } + catch (Exception e) + { + Log.Error(e.ToString()); + } + } + + private static void ConnectCallback(IAsyncResult ar) + { + Log.Debug("ConnectCallback"); + try + { + // Retrieve the socket from the state object. + Socket client = (Socket)ar.AsyncState; + + // Complete the connection. + client.EndConnect(ar); + + Log.Debug("Socket connected to {0}", + client.RemoteEndPoint.ToString()); + + Receive(client); + } + catch (Exception e) + { + Log.Error(e.ToString()); + } + } + + + private static void Receive(Socket client) + { + Log.Debug("Receive"); + try + { + // Create the state object. + StateObject state = new StateObject(); + state.workSocket = client; + + // Begin receiving the data from the remote device. + client.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, + new AsyncCallback(ReceiveCallback), state); + } + catch (Exception e) + { + Log.Error(e.ToString()); + } + } + + private static void ReceiveCallback(IAsyncResult ar) + { + Log.Debug("ReceiveCallback"); + try + { + // Retrieve the state object and the client socket + // from the asynchronous state object. + StateObject state = (StateObject)ar.AsyncState; + Socket client = state.workSocket; + + // Read data from the remote device. + int bytesRead = client.EndReceive(ar); + + if (bytesRead > 0) + { + // There might be more data, so store the data received so far. + string data = Encoding.ASCII.GetString(state.buffer, 0, bytesRead); + //Log.Debug("ReceiveCallback : received data: {0}", data); + + // data-stream can be in following format: + // incoming calls: DateTime;RING;ConnectionID;CallerID;MSN;??POTS??; + // outgoing calls: DateTime;CALL;ConnectionID;??Nebenstelle??;MSN;CallerID;??POTS??; + // connection started: DateTime;CONNECT;ConnectionID;??Nebenstelle??;CallerID; + // connection closed: DateTime;DISCONNECT;ConnectionID;ConnectedTime; + + // DateTime format: + // 12.12.06 12:12:12 + // dd.MM.yy hh:mm:ss + + string[] strList = data.Trim().Split(';'); + CallAction callAction = new CallAction(); + + // time when action happens + callAction.time = DateTime.Parse(strList[0], new System.Globalization.CultureInfo("de-DE", false)); + + // set the type of the callAction + switch (strList[1]) + { + case "RING": + callAction.type = CallAction.CallType.Incoming; + // sets the callerID + callAction.caller.ID = strList[3]; + callAction.msn = strList[4]; + break; + case "CALL": + callAction.type = CallAction.CallType.Outgoing; + // sets the callerID + callAction.caller.ID = strList[5]; + callAction.msn = strList[4]; + break; + case "CONNECT": + callAction.type = CallAction.CallType.ConnectionStarted; + // sets the callerID + callAction.caller.ID = strList[4]; + break; + case "DISCONNECT": + callAction.type = CallAction.CallType.ConnectionClosed; + break; + default: + callAction = null; + break; + } + + // continue to listen to the fb + client.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, + new AsyncCallback(ReceiveCallback), state); + + CallEvent(callAction); + } + else + { + Log.Debug("ReceiveCallback: no bytes to read"); + // continue to listen to the fb + client.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, + new AsyncCallback(ReceiveCallback), state); + } + } + catch (ObjectDisposedException) + { + Log.Debug("ReceiveCallback: ObjectDisposedException - Maybe socket has been closed."); + } + catch (SocketException) + { + Log.Debug("ReceiveCallback - SocketException - Connection to FritzBox failed, trying again in 2 minutes."); + ReConnect(); + } + catch (Exception e) + { + Log.Error(e.ToString()); + } + } + + #endregion + } +} Modified: trunk/plugins/FritzBox/FritzBox/FritzBoxSetupFrom.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/FritzBoxSetupFrom.cs 2008-08-07 11:26:02 UTC (rev 2007) +++ trunk/plugins/FritzBox/FritzBox/FritzBoxSetupFrom.cs 2008-08-07 17:28:35 UTC (rev 2008) @@ -19,8 +19,6 @@ { public partial class FritzBoxSetupFrom : Form { - PhoneBook phoneBook; - public FritzBoxSetupFrom() { InitializeComponent(); @@ -68,17 +66,16 @@ // phonebook settings checkBoxUsePhonebook.Checked = xmlreader.GetValueAsBool("fritzbox", "usePhonebook", true); - phoneBook = new PhoneBook(); - phoneBook.LoadSettings(); + PhoneBook.LoadSettings(); - checkBoxShowUnknownCaller.Checked = phoneBook.ShowUnknownCaller; - checkBoxSaveUnknownCaller.Checked = phoneBook.SaveUnknownCaller; + checkBoxShowUnknownCaller.Checked = PhoneBook.ShowUnknownCaller; + checkBoxSaveUnknownCaller.Checked = PhoneBook.SaveUnknownCaller; checkBoxShowUnknownCaller.Enabled = checkBoxUsePhonebook.Checked; checkBoxSaveUnknownCaller.Enabled = checkBoxUsePhonebook.Checked; - textBoxSuffixHome.Text = phoneBook.SuffixHome; - textBoxSuffixWork.Text = phoneBook.SuffixWork; - textBoxSuffixMobile.Text = phoneBook.SuffixMobile; + textBoxSuffixHome.Text = PhoneBook.SuffixHome; + textBoxSuffixWork.Text = PhoneBook.SuffixWork; + textBoxSuffixMobile.Text = PhoneBook.SuffixMobile; } RefreshDataGridView(); @@ -118,15 +115,15 @@ // phonebook settings xmlwriter.SetValueAsBool("fritzbox", "usePhonebook", checkBoxUsePhonebook.Checked); - phoneBook.ShowUnknownCaller = checkBoxShowUnknownCaller.Checked; - phoneBook.SaveUnknownCaller = checkBoxSaveUnknownCaller.Checked; - phoneBook.SuffixHome = textBoxSuffixHome.Text; - phoneBook.SuffixWork = textBoxSuffixWork.Text; - phoneBook.SuffixMobile = textBoxSuffixMobile.Text; + PhoneBook.ShowUnknownCaller = checkBoxShowUnknownCaller.Checked; + PhoneBook.SaveUnknownCaller = checkBoxSaveUnknownCaller.Checked; + PhoneBook.SuffixHome = textBoxSuffixHome.Text; + PhoneBook.SuffixWork = textBoxSuffixWork.Text; + PhoneBook.SuffixMobile = textBoxSuffixMobile.Text; } SaveDataGridView(); - phoneBook.SaveSettings(); + PhoneBook.SaveSettings(); } @@ -337,7 +334,7 @@ { if (openFileDialog.ShowDialog() == DialogResult.OK) { - int count = phoneBook.ImportFritzBoxMonitor(openFileDialog.FileName); + int count = PhoneBook.ImportFritzBoxMonitor(openFileDialog.FileName); RefreshDataGridView(); MessageBox.Show("Import done!\nAdded " + count.ToString() + " new CallerIDs to phonebook."); @@ -348,15 +345,15 @@ { dataGridView.Rows.Clear(); - for (int i = 0; i < phoneBook.Contacts.Count; i++) + for (int i = 0; i < PhoneBook.Contacts.Count; i++) { - dataGridView.Rows.Add(phoneBook.Contacts[i].ID, phoneBook.Contacts[i].Name, phoneBook.Contacts[i].Show); + dataGridView.Rows.Add(PhoneBook.Contacts[i].ID, PhoneBook.Contacts[i].Name, PhoneBook.Contacts[i].Show); } } private void SaveDataGridView() { - phoneBook.Contacts.Clear(); + PhoneBook.Contacts.Clear(); for (int i = 0; i < dataGridView.RowCount - 1; i++) { @@ -366,7 +363,7 @@ caller.Name = dataGridView.Rows[i].Cells[1].Value.ToString(); caller.Show = bool.Parse(dataGridView.Rows[i].Cells[2].Value.ToString()); - phoneBook.Contacts.Add(caller); + PhoneBook.Contacts.Add(caller); } } @@ -384,7 +381,7 @@ { if (MessageBox.Show("Attention! Do you really want to clear the phone book? This will delete all your entries!", "", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes) { - phoneBook.Contacts.Clear(); + PhoneBook.Contacts.Clear(); dataGridView.Rows.Clear(); } } Modified: trunk/plugins/FritzBox/FritzBox/PhoneBook.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/PhoneBook.cs 2008-08-07 11:26:02 UTC (rev 2007) +++ trunk/plugins/FritzBox/FritzBox/PhoneBook.cs 2008-08-07 17:28:35 UTC (rev 2008) @@ -33,55 +33,55 @@ namespace FritzBox { - public class PhoneBook + public static class PhoneBook { #region variables - List<Caller> _contacts; + static List<Caller> _contacts; // phonebook settings - bool _showUnknownCaller; - bool _saveUnknownCaller; + static bool _showUnknownCaller; + static bool _saveUnknownCaller; - string _suffixHome; - string _suffixWork; - string _suffixMobile; + static string _suffixHome; + static string _suffixWork; + static string _suffixMobile; - bool _extensiveLogging; + static bool _extensiveLogging; #endregion #region public properties - public bool ShowUnknownCaller + public static bool ShowUnknownCaller { get { return _showUnknownCaller; } set { _showUnknownCaller = value; } } - public bool SaveUnknownCaller + public static bool SaveUnknownCaller { get { return _saveUnknownCaller; } set { _saveUnknownCaller = value; } } - public string SuffixHome + public static string SuffixHome { get { return _suffixHome; } set { _suffixHome = value; } } - public string SuffixWork + public static string SuffixWork { get { return _suffixWork; } set { _suffixWork = value; } } - public string SuffixMobile + public static string SuffixMobile { get { return _suffixMobile; } set { _suffixMobile = value; } } - public List<Caller> Contacts + public static List<Caller> Contacts { get { return _contacts; } set { _contacts = value; } @@ -89,34 +89,9 @@ #endregion - #region private methods - - void UpdateTo0220() - { - char[] charSeparators = new char[] { ';' }; - - using (MediaPortal.Profile.Settings xmlreader = new MediaPortal.Profile.Settings(Config.GetFile(Config.Dir.Config, "MediaPortal.xml"))) - { - string[] strLCallerId = xmlreader.GetValueAsString("fritzbox", "phonebookCallerId", "").Split(charSeparators, StringSplitOptions.RemoveEmptyEntries); - string[] strLName = xmlreader.GetValueAsString("fritzbox", "phonebookName", "").Split(charSeparators, StringSplitOptions.RemoveEmptyEntries); - string[] strLShow = xmlreader.GetValueAsString("fritzbox", "phonebookShow", "").Split(charSeparators, StringSplitOptions.RemoveEmptyEntries); - - for (int i = 0; i <= strLCallerId.GetUpperBound(0); i++) - { - Caller caller = new Caller(strLCallerId[i], strLName[i], bool.Parse(strLShow[i])); - _contacts.Add(caller); - - if (_extensiveLogging) - Log.Debug("FRITZ!Box: caller loaded: {0} {1} {2}", caller.ID, caller.Name, caller.Show); - } - } - } - - #endregion - #region public methods - public void LoadSettings() + public static void LoadSettings() { using (MediaPortal.Profile.Settings xmlreader = new MediaPortal.Profile.Settings(Config.GetFile(Config.Dir.Config, "MediaPortal.xml"))) { @@ -130,15 +105,8 @@ _suffixMobile = xmlreader.GetValueAsString("fritzbox", "suffixMobile", " (mobile)"); } - _contacts = new List<Caller>(); - if ((FritzBox._lastVersion < 0220) && (!File.Exists(Config.GetFile(Config.Dir.Config, "fritzbox.xml")))) - { - UpdateTo0220(); - return; - } - using (MediaPortal.Profile.Settings xmlreader = new MediaPortal.Profile.Settings(Config.GetFile(Config.Dir.Config, "fritzbox.xml"))) { int countCaller = xmlreader.GetValueAsInt("phonebook", "count", 0); @@ -161,7 +129,7 @@ Log.Debug("FRITZ!Box: imported {0} callers", _contacts.Count.ToString()); } - public void SaveSettings() + public static void SaveSettings() { using (MediaPortal.Profile.Settings xmlreader = new MediaPortal.Profile.Settings(Config.GetFile(Config.Dir.Config, "MediaPortal.xml"))) { @@ -189,7 +157,7 @@ } - public int ImportFritzBoxMonitor(string filepath) + public static int ImportFritzBoxMonitor(string filepath) { try { @@ -260,7 +228,7 @@ } } - public bool CallerExists(string callerId) + public static bool CallerExists(string callerId) { foreach (Caller caller in _contacts) if (caller.ID.Equals(callerId)) return true; @@ -268,7 +236,7 @@ return false; } - public Caller GetCaller(Caller caller) + public static Caller GetCaller(Caller caller) { if (caller.ID == "") return caller; Modified: trunk/plugins/FritzBox/FritzBox.xmp =================================================================== --- trunk/plugins/FritzBox/FritzBox.xmp 2008-08-07 11:26:02 UTC (rev 2007) +++ trunk/plugins/FritzBox/FritzBox.xmp 2008-08-07 17:28:35 UTC (rev 2008) @@ -8,7 +8,7 @@ <Source>FritzBox\gfx\Thumbs\YAC\_noImage.png</Source> <Id>04010</Id> <Option>OutputFileName=|DefaultFile=False|</Option> - <Guid>d666735b-206e-48a9-be1c-95b38102d5fe</Guid> + <Guid>f474cf67-d85f-4593-b0dc-75c0ab015654</Guid> </File> <File> <FileName>_unknown.png</FileName> @@ -17,7 +17,7 @@ <Source>FritzBox\gfx\Thumbs\YAC\_unknown.png</Source> <Id>04010</Id> <Option /> - <Guid>2a655c5d-c556-47ba-8392-9dc0d3b438dd</Guid> + <Guid>5e4d6f98-6a73-4f59-92a2-a115cbc3ae65</Guid> </File> <File> <FileName>FritzBox.dll</FileName> @@ -26,7 +26,7 @@ <Source>FritzBox\bin\Release\FritzBox.dll</Source> <Id>01020</Id> <Option /> - <Guid>259204ab-d64b-40d6-82cf-761972fa3fa2</Guid> + <Guid>0647a912-d220-4940-9db8-f065ae6c6ca8</Guid> </File> </FileList> <StringList /> @@ -36,14 +36,16 @@ <SetupGroups /> <SetupGroupMappings /> <Option> - <BuildFileName>D:\mediaportal\mediaportal_plugins\FritzBox\FritzBox_v0.3.1.1.mpi</BuildFileName> + <BuildFileName>D:\mediaportal\mediaportal_plugins\FritzBox\FritzBox_v0.3.1.5.mpi</BuildFileName> <ProiectFileName>D:\mediaportal\mediaportal_plugins\FritzBox\FritzBox.xmp</ProiectFileName> - <ProiectName>FritzBox CallMonitor</ProiectName> + <ProiectName>FRITZ!Box CallMonitor</ProiectName> <Author>chefkoch @ Team MediaPortal</Author> - <UpdateURL>http://mpi.team-mediaportal.com/downloads</UpdateURL> - <Version>0.3.1.1</Version> - <Description>The FRITZ!Box plugin is a process plugin, which is able to notify you within MediaPortal on an incomming call on your FRITZ!Box. + <UpdateURL>http://www.team-mediaportal.com/files/Download/MediaPortalInstaller(MPI)/Input/FRITZ!BoxCallMonitor/</UpdateURL> + <Version>0.3.2.0</Version> + <Description>TEST version - mit Reconnect feature ;-) +The FRITZ!Box plugin is a process plugin, which is able to notify you within MediaPortal on an incomming call on your FRITZ!Box. + All strings are multi language. You will be informed with a small notify. It is possible to stop media playback automatically or to resume if you close the notify. You can specify your MSNs now, for which the notify should be shown. That avoids showing the notify when you get a fax. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <che...@us...> - 2008-11-06 17:08:32
|
Revision: 2294 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=2294&view=rev Author: chef_koch Date: 2008-11-06 17:08:02 +0000 (Thu, 06 Nov 2008) Log Message: ----------- changed: project files are converted to VS2008 changed: moved loading and saving settings to it's own class changed: moved TestConnection to FritzBoxClient fixed: trying to catch socket exception in more places, with ReConnect after catch Modified Paths: -------------- trunk/plugins/FritzBox/FritzBox/FritzBox.cs trunk/plugins/FritzBox/FritzBox/FritzBox.csproj trunk/plugins/FritzBox/FritzBox/FritzBoxClient.cs trunk/plugins/FritzBox/FritzBox/FritzBoxSetupFrom.cs trunk/plugins/FritzBox/FritzBox/PhoneBook.cs trunk/plugins/FritzBox/FritzBox/Properties/AssemblyInfo.cs trunk/plugins/FritzBox/FritzBox.sln trunk/plugins/FritzBox/FritzBox.xmp Modified: trunk/plugins/FritzBox/FritzBox/FritzBox.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/FritzBox.cs 2008-11-06 09:05:36 UTC (rev 2293) +++ trunk/plugins/FritzBox/FritzBox/FritzBox.cs 2008-11-06 17:08:02 UTC (rev 2294) @@ -44,34 +44,189 @@ [PluginIcons("FritzBox.FritzBox.png", "FritzBox.FritzBoxDisabled.png")] public class FritzBox : ISetupForm, IPlugin { - #region Variables + public class Settings + { + #region Properties - public const string _version = "0.3.2.0"; - public static int _lastVersion = 0; - static bool _extensiveLogging = false; + public static bool ExtensiveLogging + { + get { return extensiveLogging; } + set { extensiveLogging = value; } + } private static bool extensiveLogging = false; - List<CallAction> actionList = new List<CallAction>(); - object tempNotify = null; + /// <summary> + /// stop media when an event happend + /// </summary> + public static bool StopMedia + { + get { return stopMedia; } + set { stopMedia = value; } + } private static bool stopMedia = true; + /// <summary> + /// resume media when notify is closed + /// </summary> + public static bool ResumeMedia + { + get { return resumeMedia; } + set { resumeMedia = value; } + } private static bool resumeMedia = true; - // notify settings - int _timeout = -1; // autoclose the dialog after the timeout expired - bool _closeOnTimeout = false; - bool _closeOnConnectionClosed = false; - bool _filterMSNs = false; - List<String> _msnList = new List<String>(); + public static int MaxNotifies + { + get { return maxNotifies; } + set { maxNotifies = value; } + } private static int maxNotifies = 20; + /// <summary> + /// autoclose the dialog after the timeout expired + /// </summary> + public static int NotifyTimeout + { + get { return notifyTimeout; } + set { notifyTimeout = value; } + } private static int notifyTimeout = 10; + public static bool CloseOnTimeout + { + get { return closeOnTimeout; } + set { closeOnTimeout = value; } + } private static bool closeOnTimeout = false; + public static bool CloseOnConnectionClosed + { + get { return closeOnConnectionClosed; } + set { closeOnConnectionClosed = value; } + } private static bool closeOnConnectionClosed = false; + public static bool ShowMsnOnHeading + { + get { return showMsnOnHeading; } + set { showMsnOnHeading = value; } + } private static bool showMsnOnHeading = false; - bool _showMsnOnHeading = false; - private bool _usePhonebook = true; - int maxNotifies = 20; + public static bool FilterMSNs + { + get { return filterMSNs; } + set { filterMSNs = value; } + } private static bool filterMSNs = false; + public static List<String> MsnList + { + get + { + if (msnList == null) + msnList = new List<String>(); + + return msnList; + } + set { msnList = value; } + } private static List<String> msnList; + + #endregion + + public static void Load() + { + Log.Info("FRITZ!Box: Settings.Load()"); + + PhoneBook.LoadSettings(); + + using (MediaPortal.Profile.Settings xmlreader = new MediaPortal.Profile.Settings(Config.GetFile(Config.Dir.Config, "MediaPortal.xml"))) + { + ExtensiveLogging = xmlreader.GetValueAsBool("fritzbox", "extensiveLogging", false); + + FritzBoxClient.Address = xmlreader.GetValueAsString("fritzbox", "address", "fritz.box"); + FritzBoxClient.Port = xmlreader.GetValueAsInt("fritzbox", "port", 1012); + + // notify settings + MaxNotifies = xmlreader.GetValueAsInt("fritzbox", "maxNotifies", 20); + CloseOnTimeout = xmlreader.GetValueAsBool("fritzbox", "closeOnTimeout", false); + NotifyTimeout = xmlreader.GetValueAsInt("fritzbox", "timeout", 10); + CloseOnConnectionClosed = xmlreader.GetValueAsBool("fritzbox", "closeOnConnectionClosed", true); + + //if ((!CloseOnTimeout) || (NotifyTimeout == 0)) + // NotifyTimeout = -1; + + FilterMSNs = xmlreader.GetValueAsBool("fritzbox", "filterMSNs", false); + string strMSN = xmlreader.GetValueAsString("fritzbox", "MSN", ""); + char[] charSeparators = new char[] { ';' }; + MsnList.AddRange(strMSN.Split(charSeparators, StringSplitOptions.RemoveEmptyEntries)); + + ShowMsnOnHeading = xmlreader.GetValueAsBool("fritzbox", "showMsnOnHeading", false); + + // media settings + StopMedia = xmlreader.GetValueAsBool("fritzbox", "stopMedia", true); + ResumeMedia = xmlreader.GetValueAsBool("fritzbox", "resumeMedia", true); + } + + WriteToLog(); + } + + public static void Save() + { + Log.Info("FRITZ!Box: Settings.Save()"); + + using (MediaPortal.Profile.Settings xmlwriter = new MediaPortal.Profile.Settings(Config.GetFile(Config.Dir.Config, "MediaPortal.xml"))) + { + xmlwriter.SetValueAsBool("fritzbox", "extensiveLogging", ExtensiveLogging); + + xmlwriter.SetValue("fritzbox", "address", FritzBoxClient.Address); + xmlwriter.SetValue("fritzbox", "port", FritzBoxClient.Port); + + // notify settings + xmlwriter.SetValue("fritzbox", "maxNotifies", MaxNotifies); + xmlwriter.SetValueAsBool("fritzbox", "closeOnTimeout", CloseOnTimeout); + xmlwriter.SetValue("fritzbox", "timeout", NotifyTimeout); + xmlwriter.SetValueAsBool("fritzbox", "closeOnConnectionClosed", CloseOnConnectionClosed); + + xmlwriter.SetValueAsBool("fritzbox", "filterMSNs", FilterMSNs); + string strMSN = ""; + foreach (string msn in MsnList) + { + strMSN += msn + ";"; + } + xmlwriter.SetValue("fritzbox", "MSN", strMSN); + + xmlwriter.SetValueAsBool("fritzbox", "showMsnOnHeading", ShowMsnOnHeading); + + // media settings + xmlwriter.SetValueAsBool("fritzbox", "stopMedia", StopMedia); + xmlwriter.SetValueAsBool("fritzbox", "resumeMedia", ResumeMedia); + } + + PhoneBook.SaveSettings(); + } + + public static void WriteToLog() + { + if (Settings.ExtensiveLogging) + { + Log.Info("FRITZ!Box: closeOnTimeout = {0}", CloseOnTimeout.ToString()); + Log.Info("FRITZ!Box: timeout = {0}", NotifyTimeout.ToString()); + Log.Info("FRITZ!Box: showMsnOnHeading = {0}", ShowMsnOnHeading.ToString()); + //Log.Info("FRITZ!Box: maxNotifies = {0}", FritzBoxWatch.maxNotifies.ToString()); + + Log.Info("FRITZ!Box: stopMedia = {0}", StopMedia.ToString()); + Log.Info("FRITZ!Box: resumeMedia = {0}", ResumeMedia.ToString()); + + Log.Info("FRITZ!Box: usePhonebook = {0}", PhoneBook.Enabled.ToString()); + if (PhoneBook.Enabled) + { + Log.Info("FRITZ!Box: showUnknownCaller = {0}", PhoneBook.ShowUnknownCaller.ToString()); + Log.Info("FRITZ!Box: saveUnknownCaller = {0}", PhoneBook.SaveUnknownCaller.ToString()); + } + + //Log.Debug("FRITZ!Box: MSNs loaded: {0}", strMSN); + } + } + } + + #region Variables + + public const string _version = "0.3.2.5"; + + List<CallAction> actionList = new List<CallAction>(); + object tempNotify = null; + int notifyCount = 0; - // media settings - bool _stopMedia = true; // stop media when an event happend - bool _resumeMedia = true; // resume media when notify is closed - bool _showNotify = true; List<CallAction> notifyQueue = new List<CallAction>(); @@ -127,7 +282,7 @@ switch (callAction.type) { case CallAction.CallType.Incoming: - if (_usePhonebook) + if (PhoneBook.Enabled) callAction.caller = PhoneBook.GetCaller(callAction.caller); OnIncomingCall(callAction); break; @@ -136,7 +291,7 @@ case CallAction.CallType.ConnectionStarted: break; case CallAction.CallType.ConnectionClosed: - if (_closeOnConnectionClosed) + if (Settings.CloseOnConnectionClosed) { Log.Info("_closeOnConnectionClosed is enabled. try to close active notify."); if (tempNotify != null) @@ -161,7 +316,7 @@ if (tempNotify != null) { Log.Info("yet another dialog is active. action is sent to queue."); - if (actionList.Count < maxNotifies - 1) + if (actionList.Count < Settings.MaxNotifies - 1) actionList.Add(callAction); return; } @@ -172,7 +327,7 @@ string strText = String.Empty; // Set Heading for NotifyDialog - if (_showMsnOnHeading) + if (Settings.ShowMsnOnHeading) strHeading = GUILocalizeStrings.Get(1023) + " on " + callAction.msn; // ???? Incoming call on else strHeading = GUILocalizeStrings.Get(1023); // 1023 Incoming call @@ -201,86 +356,6 @@ #endregion - #region Settings - - private void LoadSettings() - { - Log.Info("FRITZ!Box: LoadSettings()"); - - char[] charSeparators = new char[] { ';' }; - - using (MediaPortal.Profile.Settings xmlreader = new MediaPortal.Profile.Settings(Config.GetFile(Config.Dir.Config, "MediaPortal.xml"))) - { - _lastVersion = xmlreader.GetValueAsInt("fritzbox", "lastVersion", 0); - - FritzBoxClient.address = xmlreader.GetValueAsString("fritzbox", "address", "fritz.box"); - FritzBoxClient.port = xmlreader.GetValueAsInt("fritzbox", "port", 1012); - - _extensiveLogging = xmlreader.GetValueAsBool("fritzbox", "extensiveLogging", false); - - // notify settings - maxNotifies = xmlreader.GetValueAsInt("fritzbox", "maxNotifies", 20); - _closeOnTimeout = xmlreader.GetValueAsBool("fritzbox", "closeOnTimeout", false); - _timeout = xmlreader.GetValueAsInt("fritzbox", "timeout", 10); - _closeOnConnectionClosed = xmlreader.GetValueAsBool("fritzbox", "closeOnConnectionClosed", true); - - if ((!_closeOnTimeout) || (_timeout == 0)) - _timeout = -1; - - _filterMSNs = xmlreader.GetValueAsBool("fritzbox", "filterMSNs", false); - string strMSN = xmlreader.GetValueAsString("fritzbox", "MSN", ""); - _msnList.AddRange(strMSN.Split(charSeparators, StringSplitOptions.RemoveEmptyEntries)); - - if (_extensiveLogging) - Log.Debug("FRITZ!Box: MSNs loaded: {0}", strMSN); - - _showMsnOnHeading = xmlreader.GetValueAsBool("fritzbox", "showMsnOnHeading", false); - - // media settings - _stopMedia = xmlreader.GetValueAsBool("fritzbox", "stopMedia", true); - _resumeMedia = xmlreader.GetValueAsBool("fritzbox", "resumeMedia", true); - - // phonebook settings - _usePhonebook = xmlreader.GetValueAsBool("fritzbox", "usePhonebook", true); - if (_usePhonebook) - { - PhoneBook.LoadSettings(); - } - - if (_extensiveLogging) - { - Log.Info("FRITZ!Box: closeOnTimeout = {0}", _closeOnTimeout.ToString()); - Log.Info("FRITZ!Box: timeout = {0}", _timeout.ToString()); - Log.Info("FRITZ!Box: showMsnOnHeading = {0}", _showMsnOnHeading.ToString()); - //Log.Info("FRITZ!Box: maxNotifies = {0}", FritzBoxWatch.maxNotifies.ToString()); - - Log.Info("FRITZ!Box: stopMedia = {0}", _stopMedia.ToString()); - Log.Info("FRITZ!Box: resumeMedia = {0}", _resumeMedia.ToString()); - - Log.Info("FRITZ!Box: usePhonebook = {0}", _usePhonebook.ToString()); - if (_usePhonebook) - { - Log.Info("FRITZ!Box: showUnknownCaller = {0}", PhoneBook.ShowUnknownCaller.ToString()); - Log.Info("FRITZ!Box: saveUnknownCaller = {0}", PhoneBook.SaveUnknownCaller.ToString()); - } - } - } - } - - private void SaveSettings() - { - Log.Info("FRITZ!Box: SaveSettings()"); - - using (MediaPortal.Profile.Settings xmlwriter = new MediaPortal.Profile.Settings(Config.GetFile(Config.Dir.Config, "MediaPortal.xml"))) - { - xmlwriter.SetValue("fritzbox", "lastVersion", _version.Replace(".", string.Empty)); - } - - PhoneBook.SaveSettings(); - } - - #endregion - #region Helper Methods string GetCallerImage(Caller caller) @@ -292,12 +367,12 @@ string strImage = MediaPortal.Util.Utils.GetCoverArtName(Thumbs.Yac, caller.Name); // search image for caller - if (_extensiveLogging) + if (Settings.ExtensiveLogging) Log.Info("searching image: " + strImage); if (File.Exists(strImage)) { - if (_extensiveLogging) + if (Settings.ExtensiveLogging) Log.Info("found image for caller: " + strImage); else Log.Info("found image for caller"); @@ -314,13 +389,13 @@ bool IsMsnEnabled(string msn) { - if (!_filterMSNs) + if (!Settings.FilterMSNs) { Log.Info("MSN filter is disabled."); return true; } - if (_msnList.Contains(msn)) + if (Settings.MsnList.Contains(msn)) { Log.Info("MSN is on list."); return true; @@ -334,7 +409,7 @@ bool IsCallerEnabled(Caller caller) { - if (!_usePhonebook) + if (!PhoneBook.Enabled) { Log.Info("Phonebook is disabled. Notify will be shown."); return true; @@ -345,10 +420,10 @@ void ShowNotify(string strHeading, string strImage, string strText) { - if (notifyCount >= maxNotifies) return; + if (notifyCount >= Settings.MaxNotifies) return; //show dialog - if (g_Player.Playing && !g_Player.Paused && _stopMedia) + if (g_Player.Playing && !g_Player.Paused && Settings.StopMedia) g_Player.Pause(); GUIDialogNotify dlgNotify = (GUIDialogNotify)GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_DIALOG_NOTIFY); @@ -359,12 +434,15 @@ dlgNotify.SetHeading(strHeading); dlgNotify.SetImage(strImage); dlgNotify.SetText(strText); - dlgNotify.TimeOut = _timeout; + if (Settings.CloseOnTimeout) + dlgNotify.TimeOut = Settings.NotifyTimeout; + else + dlgNotify.TimeOut = -1; tempNotify = dlgNotify; dlgNotify.DoModal(GUIWindowManager.ActiveWindow); - if (g_Player.Playing && g_Player.Paused && _stopMedia && _resumeMedia) + if (g_Player.Playing && g_Player.Paused && Settings.StopMedia && Settings.ResumeMedia) g_Player.Pause(); tempNotify = null; @@ -376,23 +454,6 @@ } } - bool TestConnection() - { - TcpClient TcpClient; - - try - { - TcpClient = new TcpClient(FritzBoxClient.address, FritzBoxClient.port); - } - catch (Exception) - { - return false; - } - - TcpClient.Close(); - return true; - } - #endregion #region <Interface> Implementations @@ -405,7 +466,7 @@ public void Start() { Log.Info("FRITZ!Box Plugin {0} starting.", _version); - LoadSettings(); + Settings.Load(); Utils.OnStartExternal += new Utils.UtilEventHandler(OnStartExternal); Utils.OnStopExternal += new Utils.UtilEventHandler(OnStopExternal); @@ -427,7 +488,7 @@ Utils.OnStartExternal -= new Utils.UtilEventHandler(OnStartExternal); Utils.OnStopExternal -= new Utils.UtilEventHandler(OnStopExternal); - SaveSettings(); + PhoneBook.SaveSettings(); } #endregion Modified: trunk/plugins/FritzBox/FritzBox/FritzBox.csproj =================================================================== --- trunk/plugins/FritzBox/FritzBox/FritzBox.csproj 2008-11-06 09:05:36 UTC (rev 2293) +++ trunk/plugins/FritzBox/FritzBox/FritzBox.csproj 2008-11-06 17:08:02 UTC (rev 2294) @@ -1,4 +1,4 @@ -<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> +<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5"> <PropertyGroup> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> @@ -11,6 +11,11 @@ <AssemblyName>FritzBox</AssemblyName> <ApplicationIcon> </ApplicationIcon> + <FileUpgradeFlags> + </FileUpgradeFlags> + <UpgradeBackupLocation> + </UpgradeBackupLocation> + <OldToolsVersion>2.0</OldToolsVersion> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <DebugSymbols>true</DebugSymbols> @@ -29,22 +34,6 @@ <ErrorReport>prompt</ErrorReport> <WarningLevel>4</WarningLevel> </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' "> - <DebugSymbols>true</DebugSymbols> - <OutputPath>bin\x86\Debug\</OutputPath> - <DefineConstants>DEBUG;TRACE</DefineConstants> - <DebugType>full</DebugType> - <PlatformTarget>x86</PlatformTarget> - <ErrorReport>prompt</ErrorReport> - </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' "> - <OutputPath>bin\Release\</OutputPath> - <DefineConstants>TRACE</DefineConstants> - <Optimize>true</Optimize> - <DebugType>pdbonly</DebugType> - <PlatformTarget>x86</PlatformTarget> - <ErrorReport>prompt</ErrorReport> - </PropertyGroup> <ItemGroup> <Reference Include="System" /> <Reference Include="System.Data" /> Modified: trunk/plugins/FritzBox/FritzBox/FritzBoxClient.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/FritzBoxClient.cs 2008-11-06 09:05:36 UTC (rev 2293) +++ trunk/plugins/FritzBox/FritzBox/FritzBoxClient.cs 2008-11-06 17:08:02 UTC (rev 2294) @@ -9,33 +9,50 @@ namespace FritzBox { #region class StateObject - // State object for receiving data from remote device. + /// <summary> + /// State object for receiving data from remote device. + /// </summary> public class StateObject { - // Client socket. + /// <summary> + /// Client socket. + /// </summary> public Socket workSocket = null; - // Size of receive buffer. + /// <summary> + /// Size of receive buffer. + /// </summary> public const int BufferSize = 256; - // Receive buffer. + /// <summary> + /// Receive buffer. + /// </summary> public byte[] buffer = new byte[BufferSize]; - // Received data string. + /// <summary> + /// Received data string. + /// </summary> public StringBuilder sb = new StringBuilder(); } #endregion public static class FritzBoxClient { - #region variables - - public static string address = "fritz.box"; - // The port number for the remote device. - public static int port = 1012; - - static TimeSpan minConnectWaitTime = new TimeSpan(0, 2, 0); + static TimeSpan minConnectWaitTime = new TimeSpan(0, 10, 0); static DateTime connectionFailed; static Socket _client; + #region Properties + + public static string Address + { + get { return address; } + set { address = value; } + } private static string address = "fritz.box"; + public static int Port + { + get { return port; } + set { port = value; } + } private static int port = 1012; + #endregion #region Public Events and Delegates @@ -71,6 +88,24 @@ } } + // todo + public static string TestConnection() + { + TcpClient TcpClient; + + try + { + TcpClient = new TcpClient(Address, Port); + } + catch (Exception) + { + return "Error!\nMake sure you are using the latest firmware and the call monitor is enabled (#96*5*)"; + } + + TcpClient.Close(); + return "Succeeded!"; + } + #endregion #region Private methods @@ -102,20 +137,21 @@ //Establish the remote endpoint for the socket. //The name of the //remote device is "host.contoso.com". - IPHostEntry ipHostInfo = Dns.GetHostEntry(address); + IPHostEntry ipHostInfo = Dns.GetHostEntry(Address); IPAddress ipAddress = ipHostInfo.AddressList[0]; - IPEndPoint remoteEP = new IPEndPoint(ipAddress, port); + IPEndPoint remoteEP = new IPEndPoint(ipAddress, Port); // Create a TCP/IP socket. _client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); // Connect to the remote endpoint. - _client.BeginConnect(address, port, new AsyncCallback(ConnectCallback), _client); + _client.BeginConnect(Address, Port, new AsyncCallback(ConnectCallback), _client); } catch (SocketException) { - Log.Debug("Connect - SocketException - Connection to FritzBox failed, trying again in 2 minutes."); + Log.Debug("Connect: SocketException"); + Log.Info("FRITZ!BOX connection lost, trying to reconnect."); ReConnect(); } catch (Exception e) @@ -140,6 +176,12 @@ Receive(client); } + catch (SocketException) + { + Log.Debug("ConnectCallback: SocketException"); + Log.Info("FRITZ!BOX connection lost, trying to reconnect."); + ReConnect(); + } catch (Exception e) { Log.Error(e.ToString()); @@ -160,6 +202,12 @@ client.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReceiveCallback), state); } + catch (SocketException) + { + Log.Debug("Receive: SocketException"); + Log.Info("FRITZ!BOX connection lost, trying to reconnect."); + ReConnect(); + } catch (Exception e) { Log.Error(e.ToString()); @@ -238,18 +286,19 @@ else { Log.Debug("ReceiveCallback: no bytes to read"); - // continue to listen to the fb - client.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, - new AsyncCallback(ReceiveCallback), state); + Log.Info("FRITZ!BOX connection lost, trying to reconnect."); + ReConnect(); } } catch (ObjectDisposedException) { - Log.Debug("ReceiveCallback: ObjectDisposedException - Maybe socket has been closed."); + Log.Debug("ReceiveCallback: ObjectDisposedException"); + Log.Info("FRITZ!BOX connection shut down."); } catch (SocketException) { - Log.Debug("ReceiveCallback - SocketException - Connection to FritzBox failed, trying again in 2 minutes."); + Log.Debug("ReceiveCallback: SocketException"); + Log.Info("FRITZ!BOX connection lost, trying to reconnect."); ReConnect(); } catch (Exception e) Modified: trunk/plugins/FritzBox/FritzBox/FritzBoxSetupFrom.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/FritzBoxSetupFrom.cs 2008-11-06 09:05:36 UTC (rev 2293) +++ trunk/plugins/FritzBox/FritzBox/FritzBoxSetupFrom.cs 2008-11-06 17:08:02 UTC (rev 2294) @@ -28,102 +28,89 @@ private void LoadSettings() { - Log.Info("FRITZ!Box: LoadSettings"); - labelVersion.Text = "v" + FritzBox._version; - using (MediaPortal.Profile.Settings xmlreader = new MediaPortal.Profile.Settings(Config.GetFile(Config.Dir.Config, "MediaPortal.xml"))) - { - FritzBox._lastVersion = xmlreader.GetValueAsInt("fritzbox", "lastVersion", 0); + FritzBox.Settings.Load(); - checkBoxExtensiveLogging.Checked = xmlreader.GetValueAsBool("fritzbox", "extensiveLogging", false); + checkBoxExtensiveLogging.Checked = FritzBox.Settings.ExtensiveLogging; - textBoxAddress.Text = xmlreader.GetValueAsString("fritzbox", "address", "fritz.box"); - numericUpDownPort.Value = xmlreader.GetValueAsInt("fritzbox", "port", 1012); + textBoxAddress.Text = FritzBoxClient.Address; + numericUpDownPort.Value = FritzBoxClient.Port; - // notify settings - numericUpDownMaxNotifies.Value = xmlreader.GetValueAsInt("fritzbox", "maxNotifies", 20); - checkBoxCloseOnTimout.Checked = xmlreader.GetValueAsBool("fritzbox", "closeOnTimeout", false); - numericUpDownTimeout.Value = xmlreader.GetValueAsInt("fritzbox", "timeout", 10); - checkBoxCloseOnConnectionClosed.Checked = xmlreader.GetValueAsBool("fritzbox", "closeOnConnectionClosed", true); + // notify settings + numericUpDownMaxNotifies.Value = FritzBox.Settings.MaxNotifies; + checkBoxCloseOnTimout.Checked = FritzBox.Settings.CloseOnTimeout; + numericUpDownTimeout.Value = FritzBox.Settings.NotifyTimeout; + checkBoxCloseOnConnectionClosed.Checked = FritzBox.Settings.CloseOnConnectionClosed; - numericUpDownTimeout.Enabled = checkBoxCloseOnTimout.Checked; + numericUpDownTimeout.Enabled = checkBoxCloseOnTimout.Checked; - checkBoxFilterMSNs.Checked = xmlreader.GetValueAsBool("fritzbox", "filterMSNs", false); - comboBoxMSNs.Enabled = checkBoxFilterMSNs.Checked; - buttonMSNsAdd.Enabled = checkBoxFilterMSNs.Checked; - buttonMSNsRemove.Enabled = checkBoxFilterMSNs.Checked; - string strMSN = xmlreader.GetValueAsString("fritzbox", "MSN", ""); - char[] charSeparators = new char[] { ';' }; - if (strMSN != "") - comboBoxMSNs.Items.AddRange(strMSN.Split(charSeparators, StringSplitOptions.RemoveEmptyEntries)); + checkBoxFilterMSNs.Checked = FritzBox.Settings.FilterMSNs; + comboBoxMSNs.Enabled = checkBoxFilterMSNs.Checked; + buttonMSNsAdd.Enabled = checkBoxFilterMSNs.Checked; + buttonMSNsRemove.Enabled = checkBoxFilterMSNs.Checked; - checkBoxShowMsnOnHeading.Checked = xmlreader.GetValueAsBool("fritzbox", "showMsnOnHeading", false); + comboBoxMSNs.Items.Clear(); + comboBoxMSNs.Items.AddRange(FritzBox.Settings.MsnList.ToArray()); - // media settings - checkBoxStopMedia.Checked = xmlreader.GetValueAsBool("fritzbox", "stopMedia", true); - checkBoxResumeMedia.Checked = xmlreader.GetValueAsBool("fritzbox", "resumeMedia", true); + checkBoxShowMsnOnHeading.Checked = FritzBox.Settings.ShowMsnOnHeading; - // phonebook settings - checkBoxUsePhonebook.Checked = xmlreader.GetValueAsBool("fritzbox", "usePhonebook", true); - PhoneBook.LoadSettings(); + // media settings + checkBoxStopMedia.Checked = FritzBox.Settings.StopMedia; + checkBoxResumeMedia.Checked = FritzBox.Settings.ResumeMedia; - checkBoxShowUnknownCaller.Checked = PhoneBook.ShowUnknownCaller; - checkBoxSaveUnknownCaller.Checked = PhoneBook.SaveUnknownCaller; - checkBoxShowUnknownCaller.Enabled = checkBoxUsePhonebook.Checked; - checkBoxSaveUnknownCaller.Enabled = checkBoxUsePhonebook.Checked; + // phonebook settings + checkBoxUsePhonebook.Checked = PhoneBook.Enabled; - textBoxSuffixHome.Text = PhoneBook.SuffixHome; - textBoxSuffixWork.Text = PhoneBook.SuffixWork; - textBoxSuffixMobile.Text = PhoneBook.SuffixMobile; - } + checkBoxShowUnknownCaller.Checked = PhoneBook.ShowUnknownCaller; + checkBoxSaveUnknownCaller.Checked = PhoneBook.SaveUnknownCaller; + checkBoxShowUnknownCaller.Enabled = checkBoxUsePhonebook.Checked; + checkBoxSaveUnknownCaller.Enabled = checkBoxUsePhonebook.Checked; + textBoxSuffixHome.Text = PhoneBook.SuffixHome; + textBoxSuffixWork.Text = PhoneBook.SuffixWork; + textBoxSuffixMobile.Text = PhoneBook.SuffixMobile; + RefreshDataGridView(); } private void SaveSettings() { - Log.Info("FRITZ!Box: SaveSettings"); - using (MediaPortal.Profile.Settings xmlwriter = new MediaPortal.Profile.Settings(Config.GetFile(Config.Dir.Config, "MediaPortal.xml"))) - { - xmlwriter.SetValue("fritzbox", "lastVersion", FritzBox._version.Replace(".", string.Empty)); + FritzBox.Settings.ExtensiveLogging = checkBoxExtensiveLogging.Checked; - xmlwriter.SetValueAsBool("fritzbox", "extensiveLogging", checkBoxExtensiveLogging.Checked); + FritzBoxClient.Address = textBoxAddress.Text; + FritzBoxClient.Port = (int)numericUpDownPort.Value; - xmlwriter.SetValue("fritzbox", "address", textBoxAddress.Text); - xmlwriter.SetValue("fritzbox", "port", numericUpDownPort.Value); + // notify settings + FritzBox.Settings.MaxNotifies = (int)numericUpDownMaxNotifies.Value; + FritzBox.Settings.CloseOnTimeout = checkBoxCloseOnTimout.Checked; + FritzBox.Settings.NotifyTimeout = (int)numericUpDownTimeout.Value; + FritzBox.Settings.CloseOnConnectionClosed = checkBoxCloseOnConnectionClosed.Checked; - // notify settings - xmlwriter.SetValue("fritzbox", "maxNotifies", numericUpDownMaxNotifies.Value); - xmlwriter.SetValueAsBool("fritzbox", "closeOnTimeout", checkBoxCloseOnTimout.Checked); - xmlwriter.SetValue("fritzbox", "timeout", numericUpDownTimeout.Value); - xmlwriter.SetValueAsBool("fritzbox", "closeOnConnectionClosed", checkBoxCloseOnConnectionClosed.Checked); + FritzBox.Settings.FilterMSNs = checkBoxFilterMSNs.Checked; + FritzBox.Settings.MsnList.Clear(); + foreach (object obj in comboBoxMSNs.Items) + { + FritzBox.Settings.MsnList.Add((string) obj); + } - xmlwriter.SetValueAsBool("fritzbox", "filterMSNs", checkBoxFilterMSNs.Checked); - string strMSN = ""; - for (int i = 0; i < comboBoxMSNs.Items.Count; i++) - { - strMSN += comboBoxMSNs.Items[i].ToString() + ";"; - } - xmlwriter.SetValue("fritzbox", "MSN", strMSN); + FritzBox.Settings.ShowMsnOnHeading = checkBoxShowMsnOnHeading.Checked; - xmlwriter.SetValueAsBool("fritzbox", "showMsnOnHeading", checkBoxShowMsnOnHeading.Checked); + // media settings + FritzBox.Settings.StopMedia = checkBoxStopMedia.Checked; + FritzBox.Settings.ResumeMedia = checkBoxResumeMedia.Checked; - // media settings - xmlwriter.SetValueAsBool("fritzbox", "stopMedia", checkBoxStopMedia.Checked); - xmlwriter.SetValueAsBool("fritzbox", "resumeMedia", checkBoxResumeMedia.Checked); + // phonebook settings + PhoneBook.Enabled = checkBoxUsePhonebook.Checked; + PhoneBook.ShowUnknownCaller = checkBoxShowUnknownCaller.Checked; + PhoneBook.SaveUnknownCaller = checkBoxSaveUnknownCaller.Checked; + PhoneBook.SuffixHome = textBoxSuffixHome.Text; + PhoneBook.SuffixWork = textBoxSuffixWork.Text; + PhoneBook.SuffixMobile = textBoxSuffixMobile.Text; - // phonebook settings - xmlwriter.SetValueAsBool("fritzbox", "usePhonebook", checkBoxUsePhonebook.Checked); - PhoneBook.ShowUnknownCaller = checkBoxShowUnknownCaller.Checked; - PhoneBook.SaveUnknownCaller = checkBoxSaveUnknownCaller.Checked; - PhoneBook.SuffixHome = textBoxSuffixHome.Text; - PhoneBook.SuffixWork = textBoxSuffixWork.Text; - PhoneBook.SuffixMobile = textBoxSuffixMobile.Text; - } - SaveDataGridView(); - PhoneBook.SaveSettings(); + + FritzBox.Settings.Save(); } @@ -140,33 +127,11 @@ private void buttonTest_Click(object sender, EventArgs e) { - /* - labelHelp.Text = "Please wait..."; + FritzBoxClient.Address = textBoxAddress.Text; + FritzBoxClient.Port = (int)numericUpDownPort.Value; - if (IsFritzBoxConnected(textBoxAddress.Text, textBoxPort.Text)) - { - labelHelp.Text = "Succeeded!"; - } - else - { - labelHelp.Text = "Error!\nMake sure you are using the latest firmware and the call monitor is enabled (#96*5*)"; - } - */ - - TcpClient myClient; - try - { - labelHelp.Text = "Please wait..."; - Application.DoEvents(); - myClient = new TcpClient(textBoxAddress.Text, int.Parse(numericUpDownPort.Value.ToString())); - } - catch (Exception) - { - labelHelp.Text = "Error!\nMake sure you are using the latest firmware and the call monitor is enabled (#96*5*)"; - return; - } - labelHelp.Text = "Succeeded!"; - myClient.Close(); + labelHelp.Text = "Please wait..."; + labelHelp.Text = FritzBoxClient.TestConnection(); } Modified: trunk/plugins/FritzBox/FritzBox/PhoneBook.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/PhoneBook.cs 2008-11-06 09:05:36 UTC (rev 2293) +++ trunk/plugins/FritzBox/FritzBox/PhoneBook.cs 2008-11-06 17:08:02 UTC (rev 2294) @@ -35,57 +35,54 @@ { public static class PhoneBook { - #region variables + private static bool _extensiveLogging; + + #region public properties - static List<Caller> _contacts; + public static bool Enabled + { + get { return enabled; } + set { enabled = value; } + } private static bool enabled = false; - // phonebook settings - static bool _showUnknownCaller; - static bool _saveUnknownCaller; - - static string _suffixHome; - static string _suffixWork; - static string _suffixMobile; - - static bool _extensiveLogging; - - #endregion - - #region public properties - public static bool ShowUnknownCaller { - get { return _showUnknownCaller; } - set { _showUnknownCaller = value; } - } - + get { return showUnknownCaller; } + set { showUnknownCaller = value; } + } private static bool showUnknownCaller; public static bool SaveUnknownCaller { - get { return _saveUnknownCaller; } - set { _saveUnknownCaller = value; } - } + get { return saveUnknownCaller; } + set { saveUnknownCaller = value; } + } private static bool saveUnknownCaller; public static string SuffixHome { - get { return _suffixHome; } - set { _suffixHome = value; } - } + get { return suffixHome; } + set { suffixHome = value; } + } private static string suffixHome; public static string SuffixWork { - get { return _suffixWork; } - set { _suffixWork = value; } - } + get { return suffixWork; } + set { suffixWork = value; } + } private static string suffixWork; public static string SuffixMobile { - get { return _suffixMobile; } - set { _suffixMobile = value; } - } + get { return suffixMobile; } + set { suffixMobile = value; } + } private static string suffixMobile; public static List<Caller> Contacts { - get { return _contacts; } - set { _contacts = value; } - } + get + { + if (contacts == null) + contacts = new List<Caller>(); + + return contacts; + } + set { contacts = value; } + } private static List<Caller> contacts; #endregion @@ -97,18 +94,21 @@ { _extensiveLogging = xmlreader.GetValueAsBool("fritzbox", "extensiveLogging", false); - _showUnknownCaller = xmlreader.GetValueAsBool("fritzbox", "showUnknownCaller", true); - _saveUnknownCaller = xmlreader.GetValueAsBool("fritzbox", "saveUnknownCaller", true); + Enabled = xmlreader.GetValueAsBool("fritzbox", "usePhonebook", true); - _suffixHome = xmlreader.GetValueAsString("fritzbox", "suffixHome", ""); - _suffixWork = xmlreader.GetValueAsString("fritzbox", "suffixWork", " @ work"); - _suffixMobile = xmlreader.GetValueAsString("fritzbox", "suffixMobile", " (mobile)"); + ShowUnknownCaller = xmlreader.GetValueAsBool("fritzbox", "showUnknownCaller", true); + SaveUnknownCaller = xmlreader.GetValueAsBool("fritzbox", "saveUnknownCaller", true); + + SuffixHome = xmlreader.GetValueAsString("fritzbox", "suffixHome", ""); + SuffixWork = xmlreader.GetValueAsString("fritzbox", "suffixWork", " @ work"); + SuffixMobile = xmlreader.GetValueAsString("fritzbox", "suffixMobile", " (mobile)"); } - _contacts = new List<Caller>(); + Contacts = new List<Caller>(); using (MediaPortal.Profile.Settings xmlreader = new MediaPortal.Profile.Settings(Config.GetFile(Config.Dir.Config, "fritzbox.xml"))) { + int countCaller = xmlreader.GetValueAsInt("phonebook", "count", 0); for (int i = 0; i < countCaller; i++) @@ -119,35 +119,37 @@ caller.Name = xmlreader.GetValueAsString("phonebook", string.Format("name{0}", i.ToString()), ""); caller.Show = xmlreader.GetValueAsBool("phonebook", string.Format("show{0}", i.ToString()), false); - _contacts.Add(caller); + Contacts.Add(caller); if (_extensiveLogging) Log.Debug("FRITZ!Box: caller loaded: {0} {1} {2}", caller.ID, caller.Name, caller.Show); } } if (_extensiveLogging) - Log.Debug("FRITZ!Box: imported {0} callers", _contacts.Count.ToString()); + Log.Debug("FRITZ!Box: imported {0} callers", Contacts.Count.ToString()); } public static void SaveSettings() { - using (MediaPortal.Profile.Settings xmlreader = new MediaPortal.Profile.Settings(Config.GetFile(Config.Dir.Config, "MediaPortal.xml"))) + using (MediaPortal.Profile.Settings xmlwriter = new MediaPortal.Profile.Settings(Config.GetFile(Config.Dir.Config, "MediaPortal.xml"))) { - xmlreader.SetValueAsBool("fritzbox", "showUnknownCaller", _showUnknownCaller); - xmlreader.SetValueAsBool("fritzbox", "saveUnknownCaller", _saveUnknownCaller); + xmlwriter.SetValueAsBool("fritzbox", "usePhonebook", Enabled); - xmlreader.SetValue("fritzbox", "suffixHome", _suffixHome); - xmlreader.SetValue("fritzbox", "suffixWork", _suffixWork); - xmlreader.SetValue("fritzbox", "suffixMobile", _suffixMobile); + xmlwriter.SetValueAsBool("fritzbox", "showUnknownCaller", ShowUnknownCaller); + xmlwriter.SetValueAsBool("fritzbox", "saveUnknownCaller", SaveUnknownCaller); + + xmlwriter.SetValue("fritzbox", "suffixHome", SuffixHome); + xmlwriter.SetValue("fritzbox", "suffixWork", SuffixWork); + xmlwriter.SetValue("fritzbox", "suffixMobile", SuffixMobile); } using (MediaPortal.Profile.Settings xmlwriter = new MediaPortal.Profile.Settings(Config.GetFile(Config.Dir.Config, "fritzbox.xml"))) { - xmlwriter.SetValue("phonebook", "count", _contacts.Count); + xmlwriter.SetValue("phonebook", "count", Contacts.Count); - for (int i = 0; i < _contacts.Count; i++) + for (int i = 0; i < Contacts.Count; i++) { - Caller caller = _contacts[i]; + Caller caller = Contacts[i]; xmlwriter.SetValue("phonebook", string.Format("callerID{0}", i.ToString()), caller.ID); xmlwriter.SetValue("phonebook", string.Format("name{0}", i.ToString()), caller.Name); @@ -185,8 +187,8 @@ caller.Name = ar[0] + SuffixHome; caller.ID = ar[1]; caller.Show = true; - - _contacts.Add(caller); + + Contacts.Add(caller); count++; } @@ -198,8 +200,8 @@ caller.Name = ar[0] + SuffixWork; caller.ID = ar[4]; caller.Show = true; - - _contacts.Add(caller); + + Contacts.Add(caller); count++; } @@ -212,7 +214,7 @@ caller.ID = ar[7]; caller.Show = true; - _contacts.Add(caller); + Contacts.Add(caller); count++; } } @@ -230,7 +232,7 @@ public static bool CallerExists(string callerId) { - foreach (Caller caller in _contacts) + foreach (Caller caller in Contacts) if (caller.ID.Equals(callerId)) return true; return false; @@ -240,17 +242,17 @@ { if (caller.ID == "") return caller; - if (_contacts.Count == 0) + if (Contacts.Count == 0) { Log.Info("Phonebook is empty. Caller is added to the phonebook."); - _contacts.Add(caller); + Contacts.Add(caller); } else { bool foundCaller = false; - for (int i = 0; i < _contacts.Count; i++) + for (int i = 0; i < Contacts.Count; i++) { - Caller tempCaller = _contacts[i]; + Caller tempCaller = Contacts[i]; if (tempCaller.ID == caller.ID) { Log.Info("Caller is identified by phonebook as {0}.", tempCaller.Name); @@ -262,13 +264,13 @@ if (!foundCaller) { - if (_showUnknownCaller) + if (ShowUnknownCaller) caller.Show = true; else caller.Show = false; - if (_saveUnknownCaller) - _contacts.Add(caller); + if (SaveUnknownCaller) + Contacts.Add(caller); } } Modified: trunk/plugins/FritzBox/FritzBox/Properties/AssemblyInfo.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/Properties/AssemblyInfo.cs 2008-11-06 09:05:36 UTC (rev 2293) +++ trunk/plugins/FritzBox/FritzBox/Properties/AssemblyInfo.cs 2008-11-06 17:08:02 UTC (rev 2294) @@ -2,9 +2,9 @@ using System.Runtime.CompilerServices; using System.Runtime.InteropServices; -// Allgemeine Informationen über eine Assembly werden über die folgenden -// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern, -// die mit einer Assembly verknüpft sind. +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. [assembly: AssemblyTitle("FRITZ!Box CallMonitor")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] @@ -14,20 +14,22 @@ [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] -// Durch Festlegen von ComVisible auf "false" werden die Typen in dieser Assembly unsichtbar -// für COM-Komponenten. Wenn Sie auf einen Typ in dieser Assembly von -// COM zugreifen müssen, legen Sie das ComVisible-Attribut für diesen Typ auf "true" fest. +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. [assembly: ComVisible(false)] -// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird +// The following GUID is for the ID of the typelib if this project is exposed to COM [assembly: Guid("2fed1c7a-a6ad-4bec-b6a5-f6390c705e93")] -// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten: +// Version information for an assembly consists of the following four values: // -// Hauptversion -// Nebenversion -// Buildnummer +// Major Version +// Minor Version +// Build Number // Revision // +// You can specify all the values or you can default the Revision and Build Numbers +// by using the '*' as shown below: [assembly: AssemblyVersion(FritzBox.FritzBox._version)] [assembly: AssemblyFileVersion(FritzBox.FritzBox._version)] Modified: trunk/plugins/FritzBox/FritzBox.sln =================================================================== --- trunk/plugins/FritzBox/FritzBox.sln 2008-11-06 09:05:36 UTC (rev 2293) +++ trunk/plugins/FritzBox/FritzBox.sln 2008-11-06 17:08:02 UTC (rev 2294) @@ -1,6 +1,6 @@ -Microsoft Visual Studio Solution File, Format Version 9.00 -# Visual Studio 2005 +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FritzBox", "FritzBox\FritzBox.csproj", "{7A458560-A537-429E-A016-1A4513CB586F}" EndProject Global Modified: trunk/plugins/FritzBox/FritzBox.xmp =================================================================== --- trunk/plugins/FritzBox/FritzBox.xmp 2008-11-06 09:05:36 UTC (rev 2293) +++ trunk/plugins/FritzBox/FritzBox.xmp 2008-11-06 17:08:02 UTC (rev 2294) @@ -8,7 +8,7 @@ <Source>FritzBox\gfx\Thumbs\YAC\_noImage.png</Source> <Id>04010</Id> <Option>OutputFileName=|DefaultFile=False|</Option> - <Guid>949ec454-9866-4dc6-9ead-6cb5f630202a</Guid> + <Guid>50ad31a4-8bb5-46f9-a0de-926c73efd882</Guid> </File> <File> <FileName>_unknown.png</FileName> @@ -17,7 +17,7 @@ <Source>FritzBox\gfx\Thumbs\YAC\_unknown.png</Source> <Id>04010</Id> <Option /> - <Guid>979f0c7e-c5ac-4be2-977c-c3c97a04cf12</Guid> + <Guid>c1ccf2f7-224a-40a0-9638-72534fc56b73</Guid> </File> <File> <FileName>FritzBox.dll</FileName> @@ -26,7 +26,7 @@ <Source>FritzBox\bin\Release\FritzBox.dll</Source> <Id>01020</Id> <Option /> - <Guid>0e3318c1-2830-42f1-af7a-14c199da659e</Guid> + <Guid>79cdff81-638b-438f-861d-e4269eadd0fb</Guid> </File> </FileList> <StringList /> @@ -36,16 +36,14 @@ <SetupGroups /> <SetupGroupMappings /> <Option> - <BuildFileName>D:\mediaportal\mediaportal_plugins\FritzBox\FritzBox_v0.3.1.5.mpi</BuildFileName> + <BuildFileName>D:\mediaportal\mediaportal_plugins\FritzBox\FritzBox_v0.3.2.5.mpi</BuildFileName> <ProiectFileName>D:\mediaportal\mediaportal_plugins\FritzBox\FritzBox.xmp</ProiectFileName> <ProiectName>FRITZ!Box CallMonitor</ProiectName> <Author>chefkoch @ Team MediaPortal</Author> <UpdateURL>http://www.team-mediaportal.com/files/Download/MediaPortalInstaller(MPI)/Input/FRITZ!BoxCallMonitor/</UpdateURL> - <Version>0.3.2.0</Version> - <Description>TEST version - mit Reconnect feature ;-) + <Version>0.3.2.5</Version> + <Description>The FRITZ!Box plugin is a process plugin, which is able to notify you within MediaPortal on an incomming call on your FRITZ!Box. -The FRITZ!Box plugin is a process plugin, which is able to notify you within MediaPortal on an incomming call on your FRITZ!Box. - All strings are multi language. You will be informed with a small notify. It is possible to stop media playback automatically or to resume if you close the notify. You can specify your MSNs now, for which the notify should be shown. That avoids showing the notify when you get a fax. @@ -62,9 +60,9 @@ <MPMinVersion /> <MinExtensionVersion /> <MaxExtensionVersion /> - <ForumURL>http://forum.team-mediaportal.com/fritz_box_callmonitor_v0_2e_2007_02-t5165.html</ForumURL> + <ForumURL>http://forum.team-mediaportal.com/FRITZ!Box_CallMonitor-t5165.html</ForumURL> <WebURL>http://wiki.team-mediaportal.com/Extensions-Plugins/FritzBoxCallMonitor</WebURL> - <CreationDate>Tuesday, July 31, 2007 12:00:00 AM</CreationDate> + <CreationDate>04-11-08</CreationDate> <SingleGroupSelect>False</SingleGroupSelect> </Properties> </MPinstaler> \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <che...@us...> - 2008-11-06 17:35:41
|
Revision: 2295 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=2295&view=rev Author: chef_koch Date: 2008-11-06 17:35:18 +0000 (Thu, 06 Nov 2008) Log Message: ----------- added: new configTesterTool changed: moved ISetupForm interface to it's own ConfigConnector class Modified Paths: -------------- trunk/plugins/FritzBox/FritzBox/FritzBox.cs trunk/plugins/FritzBox/FritzBox/FritzBox.csproj trunk/plugins/FritzBox/FritzBox.sln Added Paths: ----------- trunk/plugins/FritzBox/FritzBox/ConfigConnector.cs trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.Designer.cs trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.cs trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.resx trunk/plugins/FritzBox/Tools/ trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/ trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/FritzBoxConfigTester.csproj trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/Program.cs trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/Properties/ trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/Properties/AssemblyInfo.cs Removed Paths: ------------- trunk/plugins/FritzBox/FritzBox/FritzBoxSetupFrom.Designer.cs trunk/plugins/FritzBox/FritzBox/FritzBoxSetupFrom.cs trunk/plugins/FritzBox/FritzBox/FritzBoxSetupFrom.resx Added: trunk/plugins/FritzBox/FritzBox/ConfigConnector.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/ConfigConnector.cs (rev 0) +++ trunk/plugins/FritzBox/FritzBox/ConfigConnector.cs 2008-11-06 17:35:18 UTC (rev 2295) @@ -0,0 +1,75 @@ +using System; + +using MediaPortal.GUI.Library; + +namespace FritzBox +{ + public class ConfigConnector : ISetupForm + { + //private static Logger logger = LogManager.GetCurrentClassLogger(); + + #region ISetupForm Members + + public string PluginName() + { + return "FRITZ!Box CallMonitor"; + } + + public string Author() + { + return "chefkoch"; + } + + public string Description() + { + return "Displays FRITZ!Box calling information."; + } + + public void ShowPlugin() + { + try + { + //RetroGamingCore.Initialize(); + + FritzBoxConfig config = new FritzBoxConfig(); + config.ShowDialog(); + + //RetroGamingCore.Shutdown(); + } + catch (Exception e) + { + //logger.ErrorException("Unexpected error from the Configuration Screen!", e); + } + } + + public bool CanEnable() + { + return true; + } + + public int GetWindowId() + { + return -1; + } + + public bool DefaultEnabled() + { + return false; + } + + public bool HasSetup() + { + return true; + } + + public bool GetHome(out string strButtonText, out string strButtonImage, out string strButtonImageFocus, out string strPictureImage) + { + strButtonText = null; + strButtonImage = null; + strButtonImageFocus = null; + strPictureImage = null; + return false; + } + #endregion + } +} Modified: trunk/plugins/FritzBox/FritzBox/FritzBox.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/FritzBox.cs 2008-11-06 17:08:02 UTC (rev 2294) +++ trunk/plugins/FritzBox/FritzBox/FritzBox.cs 2008-11-06 17:35:18 UTC (rev 2295) @@ -42,7 +42,7 @@ namespace FritzBox { [PluginIcons("FritzBox.FritzBox.png", "FritzBox.FritzBoxDisabled.png")] - public class FritzBox : ISetupForm, IPlugin + public class FritzBox : IPlugin { public class Settings { @@ -493,60 +493,6 @@ #endregion - #region ISetupForm Interface - - public bool CanEnable() - { - return true; - } - - public string Description() - { - return "Displays FRITZ!Box calling information."; - } - - public bool DefaultEnabled() - { - return false; - } - - public int GetWindowId() - { - return -1; - } - - public bool GetHome(out string strButtonText, out string strButtonImage, out string strButtonImageFocus, out string strPictureImage) - { - strButtonText = null; - strButtonImage = null; - strButtonImageFocus = null; - strPictureImage = null; - return false; - } - - public string Author() - { - return "chefkoch"; - } - - public string PluginName() - { - return "FRITZ!Box CallMonitor"; - } - - public bool HasSetup() - { - return true; - } - - public void ShowPlugin() - { - Form setup = new FritzBoxSetupFrom(); - setup.ShowDialog(); - } - #endregion - - #endregion } } \ No newline at end of file Modified: trunk/plugins/FritzBox/FritzBox/FritzBox.csproj =================================================================== --- trunk/plugins/FritzBox/FritzBox/FritzBox.csproj 2008-11-06 17:08:02 UTC (rev 2294) +++ trunk/plugins/FritzBox/FritzBox/FritzBox.csproj 2008-11-06 17:35:18 UTC (rev 2295) @@ -2,7 +2,7 @@ <PropertyGroup> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> - <ProductVersion>8.0.50727</ProductVersion> + <ProductVersion>9.0.21022</ProductVersion> <SchemaVersion>2.0</SchemaVersion> <ProjectGuid>{7A458560-A537-429E-A016-1A4513CB586F}</ProjectGuid> <OutputType>Library</OutputType> @@ -42,15 +42,16 @@ <Reference Include="System.Xml" /> </ItemGroup> <ItemGroup> + <Compile Include="ConfigConnector.cs" /> <Compile Include="FritzBoxClient.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Caller.cs" /> <Compile Include="CallAction.cs" /> - <Compile Include="FritzBoxSetupFrom.cs"> + <Compile Include="FritzBoxConfig.cs"> <SubType>Form</SubType> </Compile> - <Compile Include="FritzBoxSetupFrom.Designer.cs"> - <DependentUpon>FritzBoxSetupFrom.cs</DependentUpon> + <Compile Include="FritzBoxConfig.Designer.cs"> + <DependentUpon>FritzBoxConfig.cs</DependentUpon> </Compile> <Compile Include="FritzBox.cs" /> <Compile Include="PhoneBook.cs" /> @@ -68,9 +69,9 @@ </EmbeddedResource> </ItemGroup> <ItemGroup> - <EmbeddedResource Include="FritzBoxSetupFrom.resx"> + <EmbeddedResource Include="FritzBoxConfig.resx"> <SubType>Designer</SubType> - <DependentUpon>FritzBoxSetupFrom.cs</DependentUpon> + <DependentUpon>FritzBoxConfig.cs</DependentUpon> </EmbeddedResource> <EmbeddedResource Include="FritzBoxDisabled.png" /> <EmbeddedResource Include="FritzBox.png" /> Copied: trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.Designer.cs (from rev 2285, trunk/plugins/FritzBox/FritzBox/FritzBoxSetupFrom.Designer.cs) =================================================================== --- trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.Designer.cs (rev 0) +++ trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.Designer.cs 2008-11-06 17:35:18 UTC (rev 2295) @@ -0,0 +1,869 @@ +namespace FritzBox +{ + partial class FritzBoxConfig + { + /// <summary> + /// Erforderliche Designervariable. + /// </summary> + private System.ComponentModel.IContainer components = null; + + /// <summary> + /// Verwendete Ressourcen bereinigen. + /// </summary> + /// <param name="disposing">True, wenn verwaltete Ressourcen gelöscht werden sollen; andernfalls False.</param> + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Vom Windows Form-Designer generierter Code + + /// <summary> + /// Erforderliche Methode für die Designerunterstützung. + /// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden. + /// </summary> + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FritzBoxConfig)); + this.tabControlFritzBoxSettings = new MediaPortal.UserInterface.Controls.MPTabControl(); + this.tabGeneral = new System.Windows.Forms.TabPage(); + this.checkBoxExtensiveLogging = new MediaPortal.UserInterface.Controls.MPCheckBox(); + this.mpGroupBox1 = new MediaPortal.UserInterface.Controls.MPGroupBox(); + this.numericUpDownPort = new System.Windows.Forms.NumericUpDown(); + this.pictureBox1 = new System.Windows.Forms.PictureBox(); + this.buttonTest = new MediaPortal.UserInterface.Controls.MPButton(); + this.textBoxAddress = new MediaPortal.UserInterface.Controls.MPTextBox(); + this.labelPort = new MediaPortal.UserInterface.Controls.MPLabel(); + this.labelAddress = new MediaPortal.UserInterface.Controls.MPLabel(); + this.labelHelp = new MediaPortal.UserInterface.Controls.MPLabel(); + this.tabIncoming = new System.Windows.Forms.TabPage(); + this.groupBoxPhonebook = new MediaPortal.UserInterface.Controls.MPGroupBox(); + this.checkBoxSaveUnknownCaller = new MediaPortal.UserInterface.Controls.MPCheckBox(); + this.checkBoxShowUnknownCaller = new MediaPortal.UserInterface.Controls.MPCheckBox(); + this.checkBoxUsePhonebook = new MediaPortal.UserInterface.Controls.MPCheckBox(); + this.groupBoxNotify = new MediaPortal.UserInterface.Controls.MPGroupBox(); + this.checkBoxCloseOnConnectionClosed = new MediaPortal.UserInterface.Controls.MPCheckBox(); + this.lblMaxNotifies = new MediaPortal.UserInterface.Controls.MPLabel(); + this.numericUpDownMaxNotifies = new MediaPortal.UserInterface.Controls.MPNumericUpDown(); + this.checkBoxShowMsnOnHeading = new MediaPortal.UserInterface.Controls.MPCheckBox(); + this.buttonMSNsRemove = new MediaPortal.UserInterface.Controls.MPButton(); + this.checkBoxFilterMSNs = new MediaPortal.UserInterface.Controls.MPCheckBox(); + this.buttonMSNsAdd = new MediaPortal.UserInterface.Controls.MPButton(); + this.comboBoxMSNs = new MediaPortal.UserInterface.Controls.MPComboBox(); + this.numericUpDownTimeout = new MediaPortal.UserInterface.Controls.MPNumericUpDown(); + this.checkBoxCloseOnTimout = new MediaPortal.UserInterface.Controls.MPCheckBox(); + this.groupBoxMedia = new MediaPortal.UserInterface.Controls.MPGroupBox(); + this.checkBoxResumeMedia = new MediaPortal.UserInterface.Controls.MPCheckBox(); + this.checkBoxStopMedia = new MediaPortal.UserInterface.Controls.MPCheckBox(); + this.tabPhonebook = new System.Windows.Forms.TabPage(); + this.pictureBoxCaller = new System.Windows.Forms.PictureBox(); + this.buttonCallerChange = new MediaPortal.UserInterface.Controls.MPButton(); + this.checkBoxCallerShow = new MediaPortal.UserInterface.Controls.MPCheckBox(); + this.textBoxCallerName = new MediaPortal.UserInterface.Controls.MPTextBox(); + this.textBoxCallerId = new MediaPortal.UserInterface.Controls.MPTextBox(); + this.buttonCallerRemove = new MediaPortal.UserInterface.Controls.MPButton(); + this.dataGridView = new System.Windows.Forms.DataGridView(); + this.colCallerId = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.colName = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.colShow = new System.Windows.Forms.DataGridViewCheckBoxColumn(); + this.labelCallerId = new MediaPortal.UserInterface.Controls.MPLabel(); + this.labelCallerName = new MediaPortal.UserInterface.Controls.MPLabel(); + this.labelVersion = new MediaPortal.UserInterface.Controls.MPLabel(); + this.buttonSave = new MediaPortal.UserInterface.Controls.MPButton(); + this.buttonCancel = new MediaPortal.UserInterface.Controls.MPButton(); + this.openFileDialog = new System.Windows.Forms.OpenFileDialog(); + this.buttonClearAll = new MediaPortal.UserInterface.Controls.MPButton(); + this.mpImportFBMonitor = new MediaPortal.UserInterface.Controls.MPButton(); + this.textBoxSuffixWork = new MediaPortal.UserInterface.Controls.MPTextBox(); + this.textBoxSuffixHome = new MediaPortal.UserInterface.Controls.MPTextBox(); + this.textBoxSuffixMobile = new MediaPortal.UserInterface.Controls.MPTextBox(); + this.groupBoxImport = new MediaPortal.UserInterface.Controls.MPGroupBox(); + this.labelSuffixHome = new MediaPortal.UserInterface.Controls.MPLabel(); + this.mpLabel2 = new MediaPortal.UserInterface.Controls.MPLabel(); + this.mpLabel3 = new MediaPortal.UserInterface.Controls.MPLabel(); + this.tabControlFritzBoxSettings.SuspendLayout(); + this.tabGeneral.SuspendLayout(); + this.mpGroupBox1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDownPort)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); + this.tabIncoming.SuspendLayout(); + this.groupBoxPhonebook.SuspendLayout(); + this.groupBoxNotify.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDownMaxNotifies)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDownTimeout)).BeginInit(); + this.groupBoxMedia.SuspendLayout(); + this.tabPhonebook.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBoxCaller)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView)).BeginInit(); + this.groupBoxImport.SuspendLayout(); + this.SuspendLayout(); + // + // tabControlFritzBoxSettings + // + this.tabControlFritzBoxSettings.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.tabControlFritzBoxSettings.Controls.Add(this.tabGeneral); + this.tabControlFritzBoxSettings.Controls.Add(this.tabIncoming); + this.tabControlFritzBoxSettings.Controls.Add(this.tabPhonebook); + this.tabControlFritzBoxSettings.Location = new System.Drawing.Point(11, 12); + this.tabControlFritzBoxSettings.Name = "tabControlFritzBoxSettings"; + this.tabControlFritzBoxSettings.SelectedIndex = 0; + this.tabControlFritzBoxSettings.Size = new System.Drawing.Size(581, 383); + this.tabControlFritzBoxSettings.TabIndex = 14; + // + // tabGeneral + // + this.tabGeneral.Controls.Add(this.checkBoxExtensiveLogging); + this.tabGeneral.Controls.Add(this.mpGroupBox1); + this.tabGeneral.Location = new System.Drawing.Point(4, 22); + this.tabGeneral.Name = "tabGeneral"; + this.tabGeneral.Padding = new System.Windows.Forms.Padding(3); + this.tabGeneral.Size = new System.Drawing.Size(573, 357); + this.tabGeneral.TabIndex = 0; + this.tabGeneral.Text = "General"; + this.tabGeneral.UseVisualStyleBackColor = true; + // + // checkBoxExtensiveLogging + // + this.checkBoxExtensiveLogging.AutoSize = true; + this.checkBoxExtensiveLogging.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.checkBoxExtensiveLogging.Location = new System.Drawing.Point(6, 138); + this.checkBoxExtensiveLogging.Name = "checkBoxExtensiveLogging"; + this.checkBoxExtensiveLogging.Size = new System.Drawing.Size(321, 17); + this.checkBoxExtensiveLogging.TabIndex = 1; + this.checkBoxExtensiveLogging.Text = "extensive logging (!!! phonenumbers are written to the logfile !!!)"; + this.checkBoxExtensiveLogging.UseVisualStyleBackColor = true; + // + // mpGroupBox1 + // + this.mpGroupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.mpGroupBox1.Controls.Add(this.numericUpDownPort); + this.mpGroupBox1.Controls.Add(this.pictureBox1); + this.mpGroupBox1.Controls.Add(this.buttonTest); + this.mpGroupBox1.Controls.Add(this.textBoxAddress); + this.mpGroupBox1.Controls.Add(this.labelPort); + this.mpGroupBox1.Controls.Add(this.labelAddress); + this.mpGroupBox1.Controls.Add(this.labelHelp); + this.mpGroupBox1.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.mpGroupBox1.Location = new System.Drawing.Point(6, 6); + this.mpGroupBox1.Name = "mpGroupBox1"; + this.mpGroupBox1.Size = new System.Drawing.Size(561, 125); + this.mpGroupBox1.TabIndex = 0; + this.mpGroupBox1.TabStop = false; + this.mpGroupBox1.Text = "connection"; + // + // numericUpDownPort + // + this.numericUpDownPort.Location = new System.Drawing.Point(308, 47); + this.numericUpDownPort.Maximum = new decimal(new int[] { + 999999, + 0, + 0, + 0}); + this.numericUpDownPort.Name = "numericUpDownPort"; + this.numericUpDownPort.Size = new System.Drawing.Size(116, 20); + this.numericUpDownPort.TabIndex = 9; + this.numericUpDownPort.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; + this.numericUpDownPort.Value = new decimal(new int[] { + 1012, + 0, + 0, + 0}); + // + // pictureBox1 + // + this.pictureBox1.Image = global::FritzBox.Properties.Resources.FritzBox; + this.pictureBox1.Location = new System.Drawing.Point(6, 20); + this.pictureBox1.Name = "pictureBox1"; + this.pictureBox1.Size = new System.Drawing.Size(97, 99); + this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + this.pictureBox1.TabIndex = 2; + this.pictureBox1.TabStop = false; + // + // buttonTest + // + this.buttonTest.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.buttonTest.Location = new System.Drawing.Point(480, 20); + this.buttonTest.Name = "buttonTest"; + this.buttonTest.Size = new System.Drawing.Size(75, 21); + this.buttonTest.TabIndex = 2; + this.buttonTest.Text = "Test"; + this.buttonTest.UseVisualStyleBackColor = true; + this.buttonTest.Click += new System.EventHandler(this.buttonTest_Click); + // + // textBoxAddress + // + this.textBoxAddress.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBoxAddress.BorderColor = System.Drawing.Color.Empty; + this.textBoxAddress.Location = new System.Drawing.Point(165, 20); + this.textBoxAddress.Name = "textBoxAddress"; + this.textBoxAddress.Size = new System.Drawing.Size(309, 20); + this.textBoxAddress.TabIndex = 0; + // + // labelPort + // + this.labelPort.AutoSize = true; + this.labelPort.Location = new System.Drawing.Point(128, 50); + this.labelPort.Name = "labelPort"; + this.labelPort.Size = new System.Drawing.Size(29, 13); + this.labelPort.TabIndex = 8; + this.labelPort.Text = "Port:"; + // + // labelAddress + // + this.labelAddress.AutoSize = true; + this.labelAddress.Location = new System.Drawing.Point(109, 24); + this.labelAddress.Name = "labelAddress"; + this.labelAddress.Size = new System.Drawing.Size(48, 13); + this.labelAddress.TabIndex = 7; + this.labelAddress.Text = "Address:"; + // + // labelHelp + // + this.labelHelp.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.labelHelp.Location = new System.Drawing.Point(165, 73); + this.labelHelp.Name = "labelHelp"; + this.labelHelp.Size = new System.Drawing.Size(390, 49); + this.labelHelp.TabIndex = 6; + // + // tabIncoming + // + this.tabIncoming.Controls.Add(this.groupBoxImport); + this.tabIncoming.Controls.Add(this.groupBoxPhonebook); + this.tabIncoming.Controls.Add(this.groupBoxNotify); + this.tabIncoming.Controls.Add(this.groupBoxMedia); + this.tabIncoming.Location = new System.Drawing.Point(4, 22); + this.tabIncoming.Name = "tabIncoming"; + this.tabIncoming.Padding = new System.Windows.Forms.Padding(3); + this.tabIncoming.Size = new System.Drawing.Size(573, 357); + this.tabIncoming.TabIndex = 1; + this.tabIncoming.Text = "Incoming Call"; + this.tabIncoming.UseVisualStyleBackColor = true; + // + // groupBoxPhonebook + // + this.groupBoxPhonebook.Controls.Add(this.checkBoxSaveUnknownCaller); + this.groupBoxPhonebook.Controls.Add(this.checkBoxShowUnknownCaller); + this.groupBoxPhonebook.Controls.Add(this.checkBoxUsePhonebook); + this.groupBoxPhonebook.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.groupBoxPhonebook.Location = new System.Drawing.Point(6, 208); + this.groupBoxPhonebook.Name = "groupBoxPhonebook"; + this.groupBoxPhonebook.Size = new System.Drawing.Size(177, 95); + this.groupBoxPhonebook.TabIndex = 2; + this.groupBoxPhonebook.TabStop = false; + this.groupBoxPhonebook.Text = "phonebook settings"; + // + // checkBoxSaveUnknownCaller + // + this.checkBoxSaveUnknownCaller.AutoSize = true; + this.checkBoxSaveUnknownCaller.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.checkBoxSaveUnknownCaller.Location = new System.Drawing.Point(24, 68); + this.checkBoxSaveUnknownCaller.Name = "checkBoxSaveUnknownCaller"; + this.checkBoxSaveUnknownCaller.Size = new System.Drawing.Size(122, 17); + this.checkBoxSaveUnknownCaller.TabIndex = 2; + this.checkBoxSaveUnknownCaller.Text = "save unknown caller"; + this.checkBoxSaveUnknownCaller.UseVisualStyleBackColor = true; + // + // checkBoxShowUnknownCaller + // + this.checkBoxShowUnknownCaller.AutoSize = true; + this.checkBoxShowUnknownCaller.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.checkBoxShowUnknownCaller.Location = new System.Drawing.Point(24, 45); + this.checkBoxShowUnknownCaller.Name = "checkBoxShowUnknownCaller"; + this.checkBoxShowUnknownCaller.Size = new System.Drawing.Size(124, 17); + this.checkBoxShowUnknownCaller.TabIndex = 1; + this.checkBoxShowUnknownCaller.Text = "show unknown caller"; + this.checkBoxShowUnknownCaller.UseVisualStyleBackColor = true; + // + // checkBoxUsePhonebook + // + this.checkBoxUsePhonebook.AutoSize = true; + this.checkBoxUsePhonebook.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.checkBoxUsePhonebook.Location = new System.Drawing.Point(6, 20); + this.checkBoxUsePhonebook.Name = "checkBoxUsePhonebook"; + this.checkBoxUsePhonebook.Size = new System.Drawing.Size(98, 17); + this.checkBoxUsePhonebook.TabIndex = 0; + this.checkBoxUsePhonebook.Text = "use phonebook"; + this.checkBoxUsePhonebook.UseVisualStyleBackColor = true; + this.checkBoxUsePhonebook.CheckedChanged += new System.EventHandler(this.checkBoxUsePhonebook_CheckedChanged); + // + // groupBoxNotify + // + this.groupBoxNotify.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.groupBoxNotify.Controls.Add(this.checkBoxCloseOnConnectionClosed); + this.groupBoxNotify.Controls.Add(this.lblMaxNotifies); + this.groupBoxNotify.Controls.Add(this.numericUpDownMaxNotifies); + this.groupBoxNotify.Controls.Add(this.checkBoxShowMsnOnHeading); + this.groupBoxNotify.Controls.Add(this.buttonMSNsRemove); + this.groupBoxNotify.Controls.Add(this.checkBoxFilterMSNs); + this.groupBoxNotify.Controls.Add(this.buttonMSNsAdd); + this.groupBoxNotify.Controls.Add(this.comboBoxMSNs); + this.groupBoxNotify.Controls.Add(this.numericUpDownTimeout); + this.groupBoxNotify.Controls.Add(this.checkBoxCloseOnTimout); + this.groupBoxNotify.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.groupBoxNotify.Location = new System.Drawing.Point(6, 6); + this.groupBoxNotify.Name = "groupBoxNotify"; + this.groupBoxNotify.Size = new System.Drawing.Size(561, 122); + this.groupBoxNotify.TabIndex = 0; + this.groupBoxNotify.TabStop = false; + this.groupBoxNotify.Text = "notify settings"; + // + // checkBoxCloseOnConnectionClosed + // + this.checkBoxCloseOnConnectionClosed.AutoSize = true; + this.checkBoxCloseOnConnectionClosed.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.checkBoxCloseOnConnectionClosed.Location = new System.Drawing.Point(6, 43); + this.checkBoxCloseOnConnectionClosed.Name = "checkBoxCloseOnConnectionClosed"; + this.checkBoxCloseOnConnectionClosed.Size = new System.Drawing.Size(197, 17); + this.checkBoxCloseOnConnectionClosed.TabIndex = 9; + this.checkBoxCloseOnConnectionClosed.Text = "auto-close after connection is closed"; + this.checkBoxCloseOnConnectionClosed.UseVisualStyleBackColor = true; + this.checkBoxCloseOnConnectionClosed.CheckedChanged += new System.EventHandler(this.checkBoxCloseOnConnectionClosed_CheckedChanged); + // + // lblMaxNotifies + // + this.lblMaxNotifies.AutoSize = true; + this.lblMaxNotifies.Location = new System.Drawing.Point(21, 68); + this.lblMaxNotifies.Name = "lblMaxNotifies"; + this.lblMaxNotifies.Size = new System.Drawing.Size(91, 13); + this.lblMaxNotifies.TabIndex = 8; + this.lblMaxNotifies.Text = "maximum Notifies:"; + // + // numericUpDownMaxNotifies + // + this.numericUpDownMaxNotifies.Location = new System.Drawing.Point(206, 66); + this.numericUpDownMaxNotifies.Maximum = new decimal(new int[] { + 20, + 0, + 0, + 0}); + this.numericUpDownMaxNotifies.Minimum = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.numericUpDownMaxNotifies.Name = "numericUpDownMaxNotifies"; + this.numericUpDownMaxNotifies.Size = new System.Drawing.Size(53, 20); + this.numericUpDownMaxNotifies.TabIndex = 7; + this.numericUpDownMaxNotifies.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; + this.numericUpDownMaxNotifies.Value = new decimal(new int[] { + 20, + 0, + 0, + 0}); + // + // checkBoxShowMsnOnHeading + // + this.checkBoxShowMsnOnHeading.AutoSize = true; + this.checkBoxShowMsnOnHeading.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.checkBoxShowMsnOnHeading.Location = new System.Drawing.Point(6, 93); + this.checkBoxShowMsnOnHeading.Name = "checkBoxShowMsnOnHeading"; + this.checkBoxShowMsnOnHeading.Size = new System.Drawing.Size(160, 17); + this.checkBoxShowMsnOnHeading.TabIndex = 6; + this.checkBoxShowMsnOnHeading.Text = "show MSN on notify-heading"; + this.checkBoxShowMsnOnHeading.UseVisualStyleBackColor = true; + // + // buttonMSNsRemove + // + this.buttonMSNsRemove.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.buttonMSNsRemove.Location = new System.Drawing.Point(492, 95); + this.buttonMSNsRemove.Name = "buttonMSNsRemove"; + this.buttonMSNsRemove.Size = new System.Drawing.Size(63, 21); + this.buttonMSNsRemove.TabIndex = 5; + this.buttonMSNsRemove.Text = "Remove"; + this.buttonMSNsRemove.UseVisualStyleBackColor = true; + this.buttonMSNsRemove.Click += new System.EventHandler(this.buttonMSNsRemove_Click); + // + // checkBoxFilterMSNs + // + this.checkBoxFilterMSNs.AutoSize = true; + this.checkBoxFilterMSNs.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.checkBoxFilterMSNs.Location = new System.Drawing.Point(361, 43); + this.checkBoxFilterMSNs.Name = "checkBoxFilterMSNs"; + this.checkBoxFilterMSNs.Size = new System.Drawing.Size(190, 17); + this.checkBoxFilterMSNs.TabIndex = 2; + this.checkBoxFilterMSNs.Text = "show notify only for following MSNs"; + this.checkBoxFilterMSNs.UseVisualStyleBackColor = true; + this.checkBoxFilterMSNs.Click += new System.EventHandler(this.checkBoxFilterMSNs_CheckedChanged); + // + // buttonMSNsAdd + // + this.buttonMSNsAdd.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.buttonMSNsAdd.Location = new System.Drawing.Point(423, 95); + this.buttonMSNsAdd.Name = "buttonMSNsAdd"; + this.buttonMSNsAdd.Size = new System.Drawing.Size(63, 21); + this.buttonMSNsAdd.TabIndex = 4; + this.buttonMSNsAdd.Text = "Add"; + this.buttonMSNsAdd.UseVisualStyleBackColor = true; + this.buttonMSNsAdd.Click += new System.EventHandler(this.buttonMSNsAdd_Click); + // + // comboBoxMSNs + // + this.comboBoxMSNs.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.comboBoxMSNs.BorderColor = System.Drawing.Color.Empty; + this.comboBoxMSNs.FormattingEnabled = true; + this.comboBoxMSNs.Location = new System.Drawing.Point(329, 68); + this.comboBoxMSNs.Name = "comboBoxMSNs"; + this.comboBoxMSNs.Size = new System.Drawing.Size(226, 21); + this.comboBoxMSNs.Sorted = true; + this.comboBoxMSNs.TabIndex = 3; + // + // numericUpDownTimeout + // + this.numericUpDownTimeout.Enabled = false; + this.numericUpDownTimeout.Location = new System.Drawing.Point(206, 20); + this.numericUpDownTimeout.Minimum = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.numericUpDownTimeout.Name = "numericUpDownTimeout"; + this.numericUpDownTimeout.Size = new System.Drawing.Size(53, 20); + this.numericUpDownTimeout.TabIndex = 1; + this.numericUpDownTimeout.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; + this.numericUpDownTimeout.Value = new decimal(new int[] { + 1, + 0, + 0, + 0}); + // + // checkBoxCloseOnTimout + // + this.checkBoxCloseOnTimout.AutoSize = true; + this.checkBoxCloseOnTimout.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.checkBoxCloseOnTimout.Location = new System.Drawing.Point(6, 20); + this.checkBoxCloseOnTimout.Name = "checkBoxCloseOnTimout"; + this.checkBoxCloseOnTimout.Size = new System.Drawing.Size(171, 17); + this.checkBoxCloseOnTimout.TabIndex = 0; + this.checkBoxCloseOnTimout.Text = "auto-close after timeout expired"; + this.checkBoxCloseOnTimout.UseVisualStyleBackColor = true; + this.checkBoxCloseOnTimout.CheckedChanged += new System.EventHandler(this.checkBoxCloseOnTimout_CheckedChanged); + // + // groupBoxMedia + // + this.groupBoxMedia.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.groupBoxMedia.Controls.Add(this.checkBoxResumeMedia); + this.groupBoxMedia.Controls.Add(this.checkBoxStopMedia); + this.groupBoxMedia.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.groupBoxMedia.Location = new System.Drawing.Point(6, 134); + this.groupBoxMedia.Name = "groupBoxMedia"; + this.groupBoxMedia.Size = new System.Drawing.Size(561, 68); + this.groupBoxMedia.TabIndex = 1; + this.groupBoxMedia.TabStop = false; + this.groupBoxMedia.Text = "media settings"; + // + // checkBoxResumeMedia + // + this.checkBoxResumeMedia.AutoSize = true; + this.checkBoxResumeMedia.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.checkBoxResumeMedia.Location = new System.Drawing.Point(24, 45); + this.checkBoxResumeMedia.Name = "checkBoxResumeMedia"; + this.checkBoxResumeMedia.Size = new System.Drawing.Size(161, 17); + this.checkBoxResumeMedia.TabIndex = 1; + this.checkBoxResumeMedia.Text = "auto-resume on closing notify"; + this.checkBoxResumeMedia.UseVisualStyleBackColor = true; + // + // checkBoxStopMedia + // + this.checkBoxStopMedia.AutoSize = true; + this.checkBoxStopMedia.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.checkBoxStopMedia.Location = new System.Drawing.Point(6, 20); + this.checkBoxStopMedia.Name = "checkBoxStopMedia"; + this.checkBoxStopMedia.Size = new System.Drawing.Size(123, 17); + this.checkBoxStopMedia.TabIndex = 0; + this.checkBoxStopMedia.Text = "stop on incoming call"; + this.checkBoxStopMedia.UseVisualStyleBackColor = true; + this.checkBoxStopMedia.CheckedChanged += new System.EventHandler(this.checkBoxStopMedia_CheckedChanged); + // + // tabPhonebook + // + this.tabPhonebook.Controls.Add(this.buttonClearAll); + this.tabPhonebook.Controls.Add(this.pictureBoxCaller); + this.tabPhonebook.Controls.Add(this.buttonCallerChange); + this.tabPhonebook.Controls.Add(this.checkBoxCallerShow); + this.tabPhonebook.Controls.Add(this.textBoxCallerName); + this.tabPhonebook.Controls.Add(this.textBoxCallerId); + this.tabPhonebook.Controls.Add(this.buttonCallerRemove); + this.tabPhonebook.Controls.Add(this.dataGridView); + this.tabPhonebook.Controls.Add(this.labelCallerId); + this.tabPhonebook.Controls.Add(this.labelCallerName); + this.tabPhonebook.Location = new System.Drawing.Point(4, 22); + this.tabPhonebook.Name = "tabPhonebook"; + this.tabPhonebook.Padding = new System.Windows.Forms.Padding(3); + this.tabPhonebook.Size = new System.Drawing.Size(573, 357); + this.tabPhonebook.TabIndex = 2; + this.tabPhonebook.Text = "Phonebook"; + this.tabPhonebook.UseVisualStyleBackColor = true; + // + // pictureBoxCaller + // + this.pictureBoxCaller.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.pictureBoxCaller.Location = new System.Drawing.Point(467, 86); + this.pictureBoxCaller.Name = "pictureBoxCaller"; + this.pictureBoxCaller.Size = new System.Drawing.Size(100, 122); + this.pictureBoxCaller.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; + this.pictureBoxCaller.TabIndex = 13; + this.pictureBoxCaller.TabStop = false; + // + // buttonCallerChange + // + this.buttonCallerChange.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.buttonCallerChange.Location = new System.Drawing.Point(467, 326); + this.buttonCallerChange.Name = "buttonCallerChange"; + this.buttonCallerChange.Size = new System.Drawing.Size(100, 25); + this.buttonCallerChange.TabIndex = 3; + this.buttonCallerChange.Text = "Change"; + this.buttonCallerChange.UseVisualStyleBackColor = true; + this.buttonCallerChange.Click += new System.EventHandler(this.buttonCallerChange_Click); + // + // checkBoxCallerShow + // + this.checkBoxCallerShow.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.checkBoxCallerShow.AutoSize = true; + this.checkBoxCallerShow.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.checkBoxCallerShow.Location = new System.Drawing.Point(490, 302); + this.checkBoxCallerShow.Name = "checkBoxCallerShow"; + this.checkBoxCallerShow.Size = new System.Drawing.Size(77, 17); + this.checkBoxCallerShow.TabIndex = 2; + this.checkBoxCallerShow.Text = "show notify"; + this.checkBoxCallerShow.UseVisualStyleBackColor = true; + // + // textBoxCallerName + // + this.textBoxCallerName.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.textBoxCallerName.BorderColor = System.Drawing.Color.Empty; + this.textBoxCallerName.Location = new System.Drawing.Point(467, 270); + this.textBoxCallerName.Name = "textBoxCallerName"; + this.textBoxCallerName.Size = new System.Drawing.Size(100, 20); + this.textBoxCallerName.TabIndex = 1; + // + // textBoxCallerId + // + this.textBoxCallerId.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.textBoxCallerId.BorderColor = System.Drawing.Color.Empty; + this.textBoxCallerId.Location = new System.Drawing.Point(467, 228); + this.textBoxCallerId.Name = "textBoxCallerId"; + this.textBoxCallerId.Size = new System.Drawing.Size(100, 20); + this.textBoxCallerId.TabIndex = 0; + // + // buttonCallerRemove + // + this.buttonCallerRemove.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.buttonCallerRemove.Location = new System.Drawing.Point(467, 6); + this.buttonCallerRemove.Name = "buttonCallerRemove"; + this.buttonCallerRemove.Size = new System.Drawing.Size(100, 25); + this.buttonCallerRemove.TabIndex = 6; + this.buttonCallerRemove.Text = "Remove"; + this.buttonCallerRemove.UseVisualStyleBackColor = true; + this.buttonCallerRemove.Click += new System.EventHandler(this.buttonCallerRemove_Click); + // + // dataGridView + // + this.dataGridView.AllowUserToDeleteRows = false; + this.dataGridView.AllowUserToResizeRows = false; + this.dataGridView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.dataGridView.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill; + this.dataGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dataGridView.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.colCallerId, + this.colName, + this.colShow}); + this.dataGridView.Location = new System.Drawing.Point(6, 6); + this.dataGridView.MultiSelect = false; + this.dataGridView.Name = "dataGridView"; + this.dataGridView.ReadOnly = true; + this.dataGridView.RowHeadersVisible = false; + this.dataGridView.RowTemplate.Height = 23; + this.dataGridView.RowTemplate.ReadOnly = true; + this.dataGridView.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; + this.dataGridView.Size = new System.Drawing.Size(455, 345); + this.dataGridView.TabIndex = 5; + this.dataGridView.Sorted += new System.EventHandler(this.dataGridView_Sorted); + this.dataGridView.SelectionChanged += new System.EventHandler(this.dataGridView_SelectionChanged); + // + // colCallerId + // + this.colCallerId.DataPropertyName = "dataSet_colCallerId"; + this.colCallerId.HeaderText = "CallerId"; + this.colCallerId.Name = "colCallerId"; + this.colCallerId.ReadOnly = true; + // + // colName + // + this.colName.DataPropertyName = "dataSet_colName"; + this.colName.HeaderText = "Name"; + this.colName.Name = "colName"; + this.colName.ReadOnly = true; + // + // colShow + // + this.colShow.DataPropertyName = "dataSet_colShow"; + this.colShow.HeaderText = "Show"; + this.colShow.Name = "colShow"; + this.colShow.ReadOnly = true; + // + // labelCallerId + // + this.labelCallerId.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.labelCallerId.AutoSize = true; + this.labelCallerId.Location = new System.Drawing.Point(473, 211); + this.labelCallerId.Name = "labelCallerId"; + this.labelCallerId.Size = new System.Drawing.Size(42, 13); + this.labelCallerId.TabIndex = 12; + this.labelCallerId.Text = "CallerId"; + // + // labelCallerName + // + this.labelCallerName.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.labelCallerName.AutoSize = true; + this.labelCallerName.Location = new System.Drawing.Point(473, 253); + this.labelCallerName.Name = "labelCallerName"; + this.labelCallerName.Size = new System.Drawing.Size(35, 13); + this.labelCallerName.TabIndex = 11; + this.labelCallerName.Text = "Name"; + // + // labelVersion + // + this.labelVersion.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.labelVersion.Location = new System.Drawing.Point(345, 402); + this.labelVersion.Name = "labelVersion"; + this.labelVersion.Size = new System.Drawing.Size(85, 25); + this.labelVersion.TabIndex = 17; + this.labelVersion.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // buttonSave + // + this.buttonSave.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.buttonSave.Location = new System.Drawing.Point(436, 402); + this.buttonSave.Name = "buttonSave"; + this.buttonSave.Size = new System.Drawing.Size(75, 25); + this.buttonSave.TabIndex = 15; + this.buttonSave.Text = "Save"; + this.buttonSave.UseVisualStyleBackColor = true; + this.buttonSave.Click += new System.EventHandler(this.buttonSave_Click); + // + // buttonCancel + // + this.buttonCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.buttonCancel.Location = new System.Drawing.Point(517, 402); + this.buttonCancel.Name = "buttonCancel"; + this.buttonCancel.Size = new System.Drawing.Size(75, 25); + this.buttonCancel.TabIndex = 16; + this.buttonCancel.Text = "Cancel"; + this.buttonCancel.UseVisualStyleBackColor = true; + this.buttonCancel.Click += new System.EventHandler(this.buttonCancel_Click); + // + // buttonClearAll + // + this.buttonClearAll.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.buttonClearAll.Location = new System.Drawing.Point(467, 37); + this.buttonClearAll.Name = "buttonClearAll"; + this.buttonClearAll.Size = new System.Drawing.Size(100, 25); + this.buttonClearAll.TabIndex = 14; + this.buttonClearAll.Text = "Clear All"; + this.buttonClearAll.UseVisualStyleBackColor = true; + this.buttonClearAll.Click += new System.EventHandler(this.buttonClearAll_Click); + // + // mpImportFBMonitor + // + this.mpImportFBMonitor.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.mpImportFBMonitor.Location = new System.Drawing.Point(279, 66); + this.mpImportFBMonitor.Name = "mpImportFBMonitor"; + this.mpImportFBMonitor.Size = new System.Drawing.Size(93, 23); + this.mpImportFBMonitor.TabIndex = 3; + this.mpImportFBMonitor.Text = "Import"; + this.mpImportFBMonitor.UseVisualStyleBackColor = true; + this.mpImportFBMonitor.Click += new System.EventHandler(this.mpImportFBMonitor_Click); + // + // textBoxSuffixWork + // + this.textBoxSuffixWork.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBoxSuffixWork.BorderColor = System.Drawing.Color.Empty; + this.textBoxSuffixWork.Location = new System.Drawing.Point(85, 45); + this.textBoxSuffixWork.Name = "textBoxSuffixWork"; + this.textBoxSuffixWork.Size = new System.Drawing.Size(141, 20); + this.textBoxSuffixWork.TabIndex = 4; + // + // textBoxSuffixHome + // + this.textBoxSuffixHome.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBoxSuffixHome.BorderColor = System.Drawing.Color.Empty; + this.textBoxSuffixHome.Location = new System.Drawing.Point(85, 19); + this.textBoxSuffixHome.Name = "textBoxSuffixHome"; + this.textBoxSuffixHome.Size = new System.Drawing.Size(141, 20); + this.textBoxSuffixHome.TabIndex = 5; + // + // textBoxSuffixMobile + // + this.textBoxSuffixMobile.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBoxSuffixMobile.BorderColor = System.Drawing.Color.Empty; + this.textBoxSuffixMobile.Location = new System.Drawing.Point(85, 71); + this.textBoxSuffixMobile.Name = "textBoxSuffixMobile"; + this.textBoxSuffixMobile.Size = new System.Drawing.Size(141, 20); + this.textBoxSuffixMobile.TabIndex = 6; + // + // groupBoxImport + // + this.groupBoxImport.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.groupBoxImport.Controls.Add(this.mpLabel3); + this.groupBoxImport.Controls.Add(this.mpLabel2); + this.groupBoxImport.Controls.Add(this.labelSuffixHome); + this.groupBoxImport.Controls.Add(this.textBoxSuffixMobile); + this.groupBoxImport.Controls.Add(this.textBoxSuffixHome); + this.groupBoxImport.Controls.Add(this.mpImportFBMonitor); + this.groupBoxImport.Controls.Add(this.textBoxSuffixWork); + this.groupBoxImport.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.groupBoxImport.Location = new System.Drawing.Point(189, 208); + this.groupBoxImport.Name = "groupBoxImport"; + this.groupBoxImport.Size = new System.Drawing.Size(378, 95); + this.groupBoxImport.TabIndex = 3; + this.groupBoxImport.TabStop = false; + this.groupBoxImport.Text = "Fritz!Box CallMonitor import"; + // + // labelSuffixHome + // + this.labelSuffixHome.AutoSize = true; + this.labelSuffixHome.Location = new System.Drawing.Point(6, 22); + this.labelSuffixHome.Name = "labelSuffixHome"; + this.labelSuffixHome.Size = new System.Drawing.Size(65, 13); + this.labelSuffixHome.TabIndex = 7; + this.labelSuffixHome.Text = "Suffix home:"; + // + // mpLabel2 + // + this.mpLabel2.AutoSize = true; + this.mpLabel2.Location = new System.Drawing.Point(6, 48); + this.mpLabel2.Name = "mpLabel2"; + this.mpLabel2.Size = new System.Drawing.Size(62, 13); + this.mpLabel2.TabIndex = 8; + this.mpLabel2.Text = "Suffix work:"; + // + // mpLabel3 + // + this.mpLabel3.AutoSize = true; + this.mpLabel3.Location = new System.Drawing.Point(6, 74); + this.mpLabel3.Name = "mpLabel3"; + this.mpLabel3.Size = new System.Drawing.Size(69, 13); + this.mpLabel3.TabIndex = 9; + this.mpLabel3.Text = "Suffix mobile:"; + // + // FritzBoxSetupFrom + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(602, 439); + this.Controls.Add(this.tabControlFritzBoxSettings); + this.Controls.Add(this.labelVersion); + this.Controls.Add(this.buttonSave); + this.Controls.Add(this.buttonCancel); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "FritzBoxSetupFrom"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "FRITZ!Box configuration"; + this.tabControlFritzBoxSettings.ResumeLayout(false); + this.tabGeneral.ResumeLayout(false); + this.tabGeneral.PerformLayout(); + this.mpGroupBox1.ResumeLayout(false); + this.mpGroupBox1.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDownPort)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); + this.tabIncoming.ResumeLayout(false); + this.groupBoxPhonebook.ResumeLayout(false); + this.groupBoxPhonebook.PerformLayout(); + this.groupBoxNotify.ResumeLayout(false); + this.groupBoxNotify.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDownMaxNotifies)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDownTimeout)).EndInit(); + this.groupBoxMedia.ResumeLayout(false); + this.groupBoxMedia.PerformLayout(); + this.tabPhonebook.ResumeLayout(false); + this.tabPhonebook.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBoxCaller)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView)).EndInit(); + this.groupBoxImport.ResumeLayout(false); + this.groupBoxImport.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + + private MediaPortal.UserInterface.Controls.MPTabControl tabControlFritzBoxSettings; + private System.Windows.Forms.TabPage tabGeneral; + private MediaPortal.UserInterface.Controls.MPCheckBox checkBoxExtensiveLogging; + private MediaPortal.UserInterface.Controls.MPGroupBox mpGroupBox1; + private System.Windows.Forms.PictureBox pictureBox1; + private MediaPortal.UserInterface.Controls.MPButton buttonTest; + private MediaPortal.UserInterface.Controls.MPTextBox textBoxAddress; + private MediaPortal.UserInterface.Controls.MPLabel labelPort; + private MediaPortal.UserInterface.Controls.MPLabel labelAddress; + private MediaPortal.UserInterface.Controls.MPLabel labelHelp; + private System.Windows.Forms.TabPage tabIncoming; + private MediaPortal.UserInterface.Controls.MPGroupBox groupBoxPhonebook; + private MediaPortal.UserInterface.Controls.MPCheckBox checkBoxSaveUnknownCaller; + private MediaPortal.UserInterface.Controls.MPCheckBox checkBoxShowUnknownCaller; + private MediaPortal.UserInterface.Controls.MPCheckBox checkBoxUsePhonebook; + private MediaPortal.UserInterface.Controls.MPGroupBox groupBoxNotify; + private MediaPortal.UserInterface.Controls.MPCheckBox checkBoxShowMsnOnHeading; + private MediaPortal.UserInterface.Controls.MPButton buttonMSNsRemove; + private MediaPortal.UserInterface.Controls.MPCheckBox checkBoxFilterMSNs; + private MediaPortal.UserInterface.Controls.MPButton buttonMSNsAdd; + private MediaPortal.UserInterface.Controls.MPComboBox comboBoxMSNs; + private MediaPortal.UserInterface.Controls.MPNumericUpDown numericUpDownTimeout; + private MediaPortal.UserInterface.Controls.MPCheckBox checkBoxCloseOnTimout; + private MediaPortal.UserInterface.Controls.MPGroupBox groupBoxMedia; + private MediaPortal.UserInterface.Controls.MPCheckBox checkBoxResumeMedia; + private MediaPortal.UserInterface.Controls.MPCheckBox checkBoxStopMedia; + private System.Windows.Forms.TabPage tabPhonebook; + private System.Windows.Forms.PictureBox pictureBoxCaller; + private MediaPortal.UserInterface.Controls.MPButton buttonCallerChange; + private MediaPortal.UserInterface.Controls.MPCheckBox checkBoxCallerShow; + private MediaPortal.UserInterface.Controls.MPTextBox textBoxCallerName; + private MediaPortal.UserInterface.Controls.MPTextBox textBoxCallerId; + private MediaPortal.UserInterface.Controls.MPButton buttonCallerRemove; + private System.Windows.Forms.DataGridView dataGridView; + private System.Windows.Forms.DataGridViewTextBoxColumn colCallerId; + private System.Windows.Forms.DataGridViewTextBoxColumn colName; + private System.Windows.Forms.DataGridViewCheckBoxColumn colShow; + private MediaPortal.UserInterface.Controls.MPLabel labelCallerId; + private MediaPortal.UserInterface.Controls.MPLabel labelCallerName; + private MediaPortal.UserInterface.Controls.MPLabel labelVersion; + private MediaPortal.UserInterface.Controls.MPButton buttonSave; + private MediaPortal.UserInterface.Controls.MPButton buttonCancel; + private System.Windows.Forms.OpenFileDialog openFileDialog; + private MediaPortal.UserInterface.Controls.MPNumericUpDown numericUpDownMaxNotifies; + private MediaPortal.UserInterface.Controls.MPLabel lblMaxNotifies; + private System.Windows.Forms.NumericUpDown numericUpDownPort; + private MediaPortal.UserInterface.Controls.MPCheckBox checkBoxCloseOnConnectionClosed; + private MediaPortal.UserInterface.Controls.MPButton buttonClearAll; + private MediaPortal.UserInterface.Controls.MPGroupBox groupBoxImport; + private MediaPortal.UserInterface.Controls.MPTextBox textBoxSuffixMobile; + private MediaPortal.UserInterface.Controls.MPTextBox textBoxSuffixHome; + private MediaPortal.UserInterface.Controls.MPButton mpImportFBMonitor; + private MediaPortal.UserInterface.Controls.MPTextBox textBoxSuffixWork; + private MediaPortal.UserInterface.Controls.MPLabel mpLabel3; + private MediaPortal.UserInterface.Controls.MPLabel mpLabel2; + private MediaPortal.UserInterface.Controls.MPLabel labelSuffixHome; + } +} \ No newline at end of file Property changes on: trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.Designer.cs ___________________________________________________________________ Added: svn:mergeinfo + Copied: trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.cs (from rev 2294, trunk/plugins/FritzBox/FritzBox/FritzBoxSetupFrom.cs) =================================================================== --- trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.cs (rev 0) +++ trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.cs 2008-11-06 17:35:18 UTC (rev 2295) @@ -0,0 +1,354 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Text; +using System.Windows.Forms; + +using System.Collections; +using System.Net.Sockets; +using System.IO; + +using MediaPortal.Configuration; +using MediaPortal.GUI.Library; +using MediaPortal.Profile; +using MediaPortal.Util; + +namespace FritzBox +{ + public partial class FritzBoxConfig : Form + { + public FritzBoxConfig() + { + InitializeComponent(); + + LoadSettings(); + } + + private void LoadSettings() + { + labelVersion.Text = "v" + FritzBox._version; + + FritzBox.Settings.Load(); + + checkBoxExtensiveLogging.Checked = FritzBox.Settings.ExtensiveLogging; + + textBoxAddress.Text = FritzBoxClient.Address; + numericUpDownPort.Value = FritzBoxClient.Port; + + // notify settings + numericUpDownMaxNotifies.Value = FritzBox.Settings.MaxNotifies; + checkBoxCloseOnTimout.Checked = FritzBox.Settings.CloseOnTimeout; + numericUpDownTimeout.Value = FritzBox.Settings.NotifyTimeout; + checkBoxCloseOnConnectionClosed.Checked = FritzBox.Settings.CloseOnConnectionClosed; + + numericUpDownTimeout.Enabled = checkBoxCloseOnTimout.Checked; + + checkBoxFilterMSNs.Checked = FritzBox.Settings.FilterMSNs; + comboBoxMSNs.Enabled = checkBoxFilterMSNs.Checked; + buttonMSNsAdd.Enabled = checkBoxFilterMSNs.Checked; + buttonMSNsRemove.Enabled = checkBoxFilterMSNs.Checked; + + comboBoxMSNs.Items.Clear(); + comboBoxMSNs.Items.AddRange(FritzBox.Settings.MsnList.ToArray()); + + checkBoxShowMsnOnHeading.Checked = FritzBox.Settings.ShowMsnOnHeading; + + // media settings + checkBoxStopMedia.Checked = FritzBox.Settings.StopMedia; + checkBoxResumeMedia.Checked = FritzBox.Settings.ResumeMedia; + + // phonebook settings + checkBoxUsePhonebook.Checked = PhoneBook.Enabled; + + checkBoxShowUnknownCaller.Checked = PhoneBook.ShowUnknownCaller; + checkBoxSaveUnknownCaller.Checked = PhoneBook.SaveUnknownCaller; + checkBoxShowUnknownCaller.Enabled = checkBoxUsePhonebook.Checked; + checkBoxSaveUnknownCaller.Enabled = checkBoxUsePhonebook.Checked; + + textBoxSuffixHome.Text = PhoneBook.SuffixHome; + textBoxSuffixWork.Text = PhoneBook.SuffixWork; + textBoxSuffixMobile.Text = PhoneBook.SuffixMobile; + + RefreshDataGridView(); + } + + private void SaveSettings() + { + FritzBox.Settings.ExtensiveLogging = checkBoxExtensiveLogging.Checked; + + FritzBoxClient.Address = textBoxAddress.Text; + FritzBoxClient.Port = (int)numericUpDownPort.Value; + + // notify settings + FritzBox.Settings.MaxNotifies = (int)numericUpDownMaxNotifies.Value; + FritzBox.Settings.CloseOnTimeout = checkBoxCloseOnTimout.Checked; + FritzBox.Settings.NotifyTimeout = (int)numericUpDownTimeout.Value; + FritzBox.Settings.CloseOnConnectionClosed = checkBoxCloseOnConnectionClosed.Checked; + + FritzBox.Settings.FilterMSNs = checkBoxFilterMSNs.Checked; + FritzBox.Settings.MsnList.Clear(); + foreach (object obj in comboBoxMSNs.Items) + { + FritzBox.Settings.MsnList.Add((string) obj); + } + + FritzBox.Settings.ShowMsnOnHeading = checkBoxShowMsnOnHeading.Checked; + + // media settings + FritzBox.Settings.StopMedia = checkBoxStopMedia.Checked; + FritzBox.Settings.ResumeMedia = checkBoxResumeMedia.Checked; + + // phonebook settings + PhoneBook.Enabled = checkBoxUsePhonebook.Checked; + PhoneBook.ShowUnknownCaller = checkBoxShowUnknownCaller.Checked; + PhoneBook.SaveUnknownCaller = checkBoxSaveUnknownCaller.Checked; + PhoneBook.SuffixHome = textBoxSuffixHome.Text; + PhoneBook.SuffixWork = textBoxSuffixWork.Text; + PhoneBook.SuffixMobile = textBoxSuffixMobile.Text; + + SaveDataGridView(); + + FritzBox.Settings.Save(); + } + + + private void buttonSave_Click(object sender, EventArgs e) + { + SaveSettings(); + this.Close(); + } + + private void buttonCancel_Click(object sender, EventArgs e) + { + this.Close(); + } + + private void buttonTest_Click(object sender, EventArgs e) + { + FritzBoxClient.Address = textBoxAddress.Text; + FritzBoxClient.Port = (int)numericUpDownPort.Value; + + labelHelp.Text = "Please wait..."; + labelHelp.Text = FritzBoxClient.TestConnection(); + } + + + private void checkBoxCloseOnTimout_CheckedChanged(object sender, EventArgs e) + { + numericUpDownTimeout.Enabled = checkBoxCloseOnTimout.Checked; + } + + private void checkBoxFilterMSNs_CheckedChanged(object sender, EventArgs e) + { + comboBoxMSNs.Enabled = checkBoxFilterMSNs.Checked; + buttonMSNsAdd.Enabled = checkBoxFilterMSNs.Checked; + buttonMSNsRemove.Enabled = checkBoxFilterMSNs.Checked; + } + + private void checkBoxStopMedia_CheckedChanged(object sender, EventArgs e) + { + checkBoxResumeMedia.Enabled = checkBoxStopMedia.Ch... [truncated message content] |
From: <che...@us...> - 2008-11-08 16:59:50
|
Revision: 2315 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=2315&view=rev Author: chef_koch Date: 2008-11-08 16:59:47 +0000 (Sat, 08 Nov 2008) Log Message: ----------- added: FritzBoxDebugger for testing purposes without starting MediaPortal Modified Paths: -------------- trunk/plugins/FritzBox/FritzBox/FritzBox.cs trunk/plugins/FritzBox/FritzBox/FritzBoxClient.cs trunk/plugins/FritzBox/FritzBox.sln Added Paths: ----------- trunk/plugins/FritzBox/Tools/FritzBoxDebugger/ trunk/plugins/FritzBox/Tools/FritzBoxDebugger/DebugForm.Designer.cs trunk/plugins/FritzBox/Tools/FritzBoxDebugger/DebugForm.cs trunk/plugins/FritzBox/Tools/FritzBoxDebugger/DebugForm.resx trunk/plugins/FritzBox/Tools/FritzBoxDebugger/FritzBoxDebugger.csproj trunk/plugins/FritzBox/Tools/FritzBoxDebugger/Program.cs trunk/plugins/FritzBox/Tools/FritzBoxDebugger/Properties/ trunk/plugins/FritzBox/Tools/FritzBoxDebugger/Properties/AssemblyInfo.cs Modified: trunk/plugins/FritzBox/FritzBox/FritzBox.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/FritzBox.cs 2008-11-08 02:51:13 UTC (rev 2314) +++ trunk/plugins/FritzBox/FritzBox/FritzBox.cs 2008-11-08 16:59:47 UTC (rev 2315) @@ -308,6 +308,26 @@ } } + void OnLogAction(FritzBoxClient.LogLevel logLevel, string logMessage) + { + switch (logLevel) + { + case FritzBoxClient.LogLevel.Debug: + Log.Debug(logMessage); + break; + case FritzBoxClient.LogLevel.Error: + Log.Error(logMessage); + break; + case FritzBoxClient.LogLevel.Warning: + Log.Warn(logMessage); + break; + case FritzBoxClient.LogLevel.Info: + Log.Info(logMessage); + break; + default: + break; + } + } void OnIncomingCall(CallAction callAction) { @@ -471,6 +491,7 @@ Utils.OnStartExternal += new Utils.UtilEventHandler(OnStartExternal); Utils.OnStopExternal += new Utils.UtilEventHandler(OnStopExternal); + FritzBoxClient.LogEvent += new FritzBoxClient.LogEventHandler(OnLogAction); FritzBoxClient.CallEvent += new FritzBoxClient.CallEventHandler(OnCallAction); FritzBoxClient.StartClient(); } @@ -484,6 +505,7 @@ FritzBoxClient.StopClient(); FritzBoxClient.CallEvent -= new FritzBoxClient.CallEventHandler(OnCallAction); + FritzBoxClient.LogEvent -= new FritzBoxClient.LogEventHandler(OnLogAction); Utils.OnStartExternal -= new Utils.UtilEventHandler(OnStartExternal); Utils.OnStopExternal -= new Utils.UtilEventHandler(OnStopExternal); Modified: trunk/plugins/FritzBox/FritzBox/FritzBoxClient.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/FritzBoxClient.cs 2008-11-08 02:51:13 UTC (rev 2314) +++ trunk/plugins/FritzBox/FritzBox/FritzBoxClient.cs 2008-11-08 16:59:47 UTC (rev 2315) @@ -8,33 +8,44 @@ namespace FritzBox { - #region class StateObject - /// <summary> - /// State object for receiving data from remote device. - /// </summary> - public class StateObject + public static class FritzBoxClient { + #region class StateObject + /// <summary> - /// Client socket. + /// State object for receiving data from remote device. /// </summary> - public Socket workSocket = null; - /// <summary> - /// Size of receive buffer. - /// </summary> - public const int BufferSize = 256; - /// <summary> - /// Receive buffer. - /// </summary> - public byte[] buffer = new byte[BufferSize]; - /// <summary> - /// Received data string. - /// </summary> - public StringBuilder sb = new StringBuilder(); - } - #endregion + class StateObject + { + /// <summary> + /// Client socket. + /// </summary> + public Socket workSocket = null; + /// <summary> + /// Size of receive buffer. + /// </summary> + public const int BufferSize = 256; + /// <summary> + /// Receive buffer. + /// </summary> + public byte[] buffer = new byte[BufferSize]; + /// <summary> + /// Received data string. + /// </summary> + public StringBuilder sb = new StringBuilder(); + } - public static class FritzBoxClient - { + public enum LogLevel + { + Info, + Warning, + Error, + Debug, + HeavyDebug, + } + + #endregion + static TimeSpan minConnectWaitTime = new TimeSpan(0, 10, 0); static DateTime connectionFailed; @@ -60,13 +71,16 @@ public delegate void CallEventHandler(CallAction callAction); public static event CallEventHandler CallEvent; + public delegate void LogEventHandler(LogLevel logLevel, string logMessage); + public static event LogEventHandler LogEvent; + #endregion #region Public methods public static void StartClient() { - Log.Debug("StartClient"); + Log(LogLevel.Debug, "StartClient"); connectionFailed = DateTime.MinValue; Thread thread = new Thread(new ThreadStart(Connect)); @@ -75,7 +89,7 @@ public static void StopClient() { - Log.Debug("StopClient"); + Log(LogLevel.Debug, "StopClient"); try { // Release the socket. @@ -84,7 +98,7 @@ } catch (Exception e) { - Log.Error(e.ToString()); + Log(LogLevel.Error, e.ToString()); } } @@ -112,7 +126,7 @@ private static void ReConnect() { - Log.Debug("ReConnect"); + Log(LogLevel.Debug, "ReConnect"); connectionFailed = DateTime.Now; Thread thread = new Thread(new ThreadStart(Connect)); @@ -121,14 +135,14 @@ private static void Connect() { - Log.Debug("Connect"); + Log(LogLevel.Debug, "Connect"); // Enforce a minimum wait time between connects. DateTime nextconnect = connectionFailed.Add(minConnectWaitTime); if (DateTime.Now < nextconnect) { TimeSpan waittime = nextconnect - DateTime.Now; - Log.Debug("Avoiding too much reconnects, sleeping until {0}.", nextconnect.ToString()); + Log(LogLevel.Debug, "Avoiding too much reconnects, sleeping until {0}.", nextconnect.ToString()); Thread.Sleep(waittime); } @@ -150,19 +164,19 @@ } catch (SocketException) { - Log.Debug("Connect: SocketException"); - Log.Info("FRITZ!BOX connection lost, trying to reconnect."); + Log(LogLevel.Debug, "Connect: SocketException"); + Log(LogLevel.Info, "FRITZ!BOX connection lost, trying to reconnect."); ReConnect(); } catch (Exception e) { - Log.Error(e.ToString()); + Log(e); } } private static void ConnectCallback(IAsyncResult ar) { - Log.Debug("ConnectCallback"); + Log(LogLevel.Debug, "ConnectCallback"); try { // Retrieve the socket from the state object. @@ -171,52 +185,68 @@ // Complete the connection. client.EndConnect(ar); - Log.Debug("Socket connected to {0}", + Log(LogLevel.Debug, "Socket connected to {0}", client.RemoteEndPoint.ToString()); Receive(client); } catch (SocketException) { - Log.Debug("ConnectCallback: SocketException"); - Log.Info("FRITZ!BOX connection lost, trying to reconnect."); + Log(LogLevel.Debug, "Connect: SocketException"); + Log(LogLevel.Info, "FRITZ!BOX connection lost, trying to reconnect."); ReConnect(); } catch (Exception e) { - Log.Error(e.ToString()); + Log(e); } } private static void Receive(Socket client) { - Log.Debug("Receive"); + Log(LogLevel.Debug, "Receive"); try { // Create the state object. + Log(LogLevel.HeavyDebug, "StateObject state = new StateObject();"); StateObject state = new StateObject(); + Log(LogLevel.HeavyDebug, "state.workSocket = client;"); state.workSocket = client; + Log(LogLevel.HeavyDebug, "Available {0}", client.Available); + Log(LogLevel.HeavyDebug, "Connected {0}", client.Connected); + Log(LogLevel.HeavyDebug, "IsBound {0}", client.IsBound); + //Log(LogLevel.HeavyDebug, "{0}", client.Connected); + // Begin receiving the data from the remote device. + Log(LogLevel.HeavyDebug, "client.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0,"); client.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReceiveCallback), state); } - catch (SocketException) + catch (SocketException e) { - Log.Debug("Receive: SocketException"); - Log.Info("FRITZ!BOX connection lost, trying to reconnect."); + Log(LogLevel.HeavyDebug, "{0}", e.NativeErrorCode); + Log(LogLevel.HeavyDebug, "{0}", e.SocketErrorCode); + Log(LogLevel.HeavyDebug, "{0}", e.Data); + Log(LogLevel.HeavyDebug, "{0}", e.ErrorCode); + Log(LogLevel.HeavyDebug, "{0}", e.InnerException); + Log(LogLevel.HeavyDebug, e.Message); + Log(LogLevel.HeavyDebug, e.Source); + Log(LogLevel.HeavyDebug, e.StackTrace); + Log(LogLevel.Debug, "Receive: SocketException"); + Log(LogLevel.Info, "FRITZ!BOX connection lost, trying to reconnect."); ReConnect(); } - catch (Exception e) + catch (Exception ex) { - Log.Error(e.ToString()); + Log(ex); } } private static void ReceiveCallback(IAsyncResult ar) { - Log.Debug("ReceiveCallback"); + Log(LogLevel.Debug, "ReceiveCallback"); try { // Retrieve the state object and the client socket @@ -231,7 +261,8 @@ { // There might be more data, so store the data received so far. string data = Encoding.ASCII.GetString(state.buffer, 0, bytesRead); - //Log.Debug("ReceiveCallback : received data: {0}", data); + Log(LogLevel.HeavyDebug, "ReceiveCallback : received data: {0}", data); + //Log.Debug();"ReceiveCallback : received data: {0}", data // data-stream can be in following format: // incoming calls: DateTime;RING;ConnectionID;CallerID;MSN;??POTS??; @@ -281,32 +312,46 @@ client.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReceiveCallback), state); - CallEvent(callAction); + if (CallEvent != null) + CallEvent(callAction); } else { - Log.Debug("ReceiveCallback: no bytes to read"); - Log.Info("FRITZ!BOX connection lost, trying to reconnect."); + Log(LogLevel.Debug, "ReceiveCallback: no bytes to read"); + Log(LogLevel.Info, "FRITZ!BOX connection lost, trying to reconnect."); ReConnect(); } } catch (ObjectDisposedException) { - Log.Debug("ReceiveCallback: ObjectDisposedException"); - Log.Info("FRITZ!BOX connection shut down."); + Log(LogLevel.Debug, "ReceiveCallback: ObjectDisposedException"); + Log(LogLevel.Info, "FRITZ!BOX connection shut down."); } catch (SocketException) { - Log.Debug("ReceiveCallback: SocketException"); - Log.Info("FRITZ!BOX connection lost, trying to reconnect."); + Log(LogLevel.Debug, "ReceiveCallback: SocketException"); + Log(LogLevel.Info, "FRITZ!BOX connection lost, trying to reconnect."); ReConnect(); } catch (Exception e) { - Log.Error(e.ToString()); + Log(e); } } + + private static void Log(LogLevel logLevel, string format, params object[] arg) + { + if (LogEvent != null) + LogEvent(logLevel, String.Format(format, arg)); + } + + private static void Log(Exception e) + { + if (LogEvent != null) + LogEvent(LogLevel.Error, e.ToString()); + } + #endregion } } Modified: trunk/plugins/FritzBox/FritzBox.sln =================================================================== --- trunk/plugins/FritzBox/FritzBox.sln 2008-11-08 02:51:13 UTC (rev 2314) +++ trunk/plugins/FritzBox/FritzBox.sln 2008-11-08 16:59:47 UTC (rev 2315) @@ -5,6 +5,8 @@ EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FritzBoxConfigTester", "Tools\FritzBoxConfigTester\FritzBoxConfigTester.csproj", "{5D751473-DCC5-4044-A6E3-403D97C5B9F9}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FritzBoxDebugger", "Tools\FritzBoxDebugger\FritzBoxDebugger.csproj", "{FB2B1D6F-4580-4B3B-95A8-C9800F679D9F}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -27,6 +29,12 @@ {5D751473-DCC5-4044-A6E3-403D97C5B9F9}.Release|Any CPU.ActiveCfg = Release|Any CPU {5D751473-DCC5-4044-A6E3-403D97C5B9F9}.Release|Any CPU.Build.0 = Release|Any CPU {5D751473-DCC5-4044-A6E3-403D97C5B9F9}.Release|x86.ActiveCfg = Release|Any CPU + {FB2B1D6F-4580-4B3B-95A8-C9800F679D9F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FB2B1D6F-4580-4B3B-95A8-C9800F679D9F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FB2B1D6F-4580-4B3B-95A8-C9800F679D9F}.Debug|x86.ActiveCfg = Debug|Any CPU + {FB2B1D6F-4580-4B3B-95A8-C9800F679D9F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FB2B1D6F-4580-4B3B-95A8-C9800F679D9F}.Release|Any CPU.Build.0 = Release|Any CPU + {FB2B1D6F-4580-4B3B-95A8-C9800F679D9F}.Release|x86.ActiveCfg = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE Added: trunk/plugins/FritzBox/Tools/FritzBoxDebugger/DebugForm.Designer.cs =================================================================== --- trunk/plugins/FritzBox/Tools/FritzBoxDebugger/DebugForm.Designer.cs (rev 0) +++ trunk/plugins/FritzBox/Tools/FritzBoxDebugger/DebugForm.Designer.cs 2008-11-08 16:59:47 UTC (rev 2315) @@ -0,0 +1,176 @@ +namespace FritzBoxDebugger +{ + partial class DebugForm + { + /// <summary> + /// Required designer variable. + /// </summary> + private System.ComponentModel.IContainer components = null; + + /// <summary> + /// Clean up any resources being used. + /// </summary> + /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// <summary> + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// </summary> + private void InitializeComponent() + { + this.startButton = new System.Windows.Forms.Button(); + this.logTextBox = new System.Windows.Forms.TextBox(); + this.addressTextBox = new System.Windows.Forms.TextBox(); + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.stopButton = new System.Windows.Forms.Button(); + this.testButton = new System.Windows.Forms.Button(); + this.testResultTextBox = new System.Windows.Forms.TextBox(); + this.portNumericUpDown = new System.Windows.Forms.NumericUpDown(); + ((System.ComponentModel.ISupportInitialize)(this.portNumericUpDown)).BeginInit(); + this.SuspendLayout(); + // + // startButton + // + this.startButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.startButton.Location = new System.Drawing.Point(582, 98); + this.startButton.Name = "startButton"; + this.startButton.Size = new System.Drawing.Size(75, 23); + this.startButton.TabIndex = 0; + this.startButton.Text = "Start"; + this.startButton.UseVisualStyleBackColor = true; + this.startButton.Click += new System.EventHandler(this.button1_Click); + // + // logTextBox + // + this.logTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.logTextBox.Location = new System.Drawing.Point(12, 12); + this.logTextBox.Multiline = true; + this.logTextBox.Name = "logTextBox"; + this.logTextBox.Size = new System.Drawing.Size(527, 441); + this.logTextBox.TabIndex = 1; + // + // addressTextBox + // + this.addressTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.addressTextBox.Location = new System.Drawing.Point(635, 12); + this.addressTextBox.Name = "addressTextBox"; + this.addressTextBox.Size = new System.Drawing.Size(125, 20); + this.addressTextBox.TabIndex = 2; + this.addressTextBox.Text = "fritz.box"; + // + // label1 + // + this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(579, 15); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(35, 13); + this.label1.TabIndex = 4; + this.label1.Text = "label1"; + // + // label2 + // + this.label2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(579, 41); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(35, 13); + this.label2.TabIndex = 4; + this.label2.Text = "label1"; + // + // stopButton + // + this.stopButton.Location = new System.Drawing.Point(685, 98); + this.stopButton.Name = "stopButton"; + this.stopButton.Size = new System.Drawing.Size(75, 23); + this.stopButton.TabIndex = 5; + this.stopButton.Text = "Stop"; + this.stopButton.UseVisualStyleBackColor = true; + this.stopButton.Click += new System.EventHandler(this.button2_Click); + // + // testButton + // + this.testButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.testButton.Location = new System.Drawing.Point(573, 280); + this.testButton.Name = "testButton"; + this.testButton.Size = new System.Drawing.Size(75, 23); + this.testButton.TabIndex = 6; + this.testButton.Text = "Test"; + this.testButton.UseVisualStyleBackColor = true; + this.testButton.Click += new System.EventHandler(this.testButton_Click); + // + // testResultTextBox + // + this.testResultTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.testResultTextBox.Location = new System.Drawing.Point(573, 309); + this.testResultTextBox.Multiline = true; + this.testResultTextBox.Name = "testResultTextBox"; + this.testResultTextBox.ReadOnly = true; + this.testResultTextBox.Size = new System.Drawing.Size(187, 67); + this.testResultTextBox.TabIndex = 7; + // + // portNumericUpDown + // + this.portNumericUpDown.Location = new System.Drawing.Point(635, 39); + this.portNumericUpDown.Maximum = new decimal(new int[] { + 100000, + 0, + 0, + 0}); + this.portNumericUpDown.Name = "portNumericUpDown"; + this.portNumericUpDown.Size = new System.Drawing.Size(125, 20); + this.portNumericUpDown.TabIndex = 8; + this.portNumericUpDown.Value = new decimal(new int[] { + 1012, + 0, + 0, + 0}); + // + // DebugForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(772, 465); + this.Controls.Add(this.portNumericUpDown); + this.Controls.Add(this.testResultTextBox); + this.Controls.Add(this.testButton); + this.Controls.Add(this.stopButton); + this.Controls.Add(this.label2); + this.Controls.Add(this.label1); + this.Controls.Add(this.addressTextBox); + this.Controls.Add(this.logTextBox); + this.Controls.Add(this.startButton); + this.Name = "DebugForm"; + this.Text = "DebugForm"; + ((System.ComponentModel.ISupportInitialize)(this.portNumericUpDown)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Button startButton; + private System.Windows.Forms.TextBox logTextBox; + private System.Windows.Forms.TextBox addressTextBox; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Button stopButton; + private System.Windows.Forms.Button testButton; + private System.Windows.Forms.TextBox testResultTextBox; + private System.Windows.Forms.NumericUpDown portNumericUpDown; + } +} \ No newline at end of file Added: trunk/plugins/FritzBox/Tools/FritzBoxDebugger/DebugForm.cs =================================================================== --- trunk/plugins/FritzBox/Tools/FritzBoxDebugger/DebugForm.cs (rev 0) +++ trunk/plugins/FritzBox/Tools/FritzBoxDebugger/DebugForm.cs 2008-11-08 16:59:47 UTC (rev 2315) @@ -0,0 +1,87 @@ +using System; +using System.Windows.Forms; + +using FritzBox; + + +namespace FritzBoxDebugger +{ + public partial class DebugForm : Form + { + private delegate void InvokeDelegate(); + + public DebugForm() + { + InitializeComponent(); + } + + private void button1_Click(object sender, EventArgs e) + { + FritzBoxClient.Address = addressTextBox.Text; + FritzBoxClient.Port = (int)portNumericUpDown.Value; + + FritzBoxClient.LogEvent += new FritzBoxClient.LogEventHandler(OnLogAction); + FritzBoxClient.StartClient(); + } + + private void button2_Click(object sender, EventArgs e) + { + FritzBoxClient.StopClient(); + FritzBoxClient.LogEvent -= new FritzBoxClient.LogEventHandler(OnLogAction); + } + + private void testButton_Click(object sender, EventArgs e) + { + FritzBoxClient.Address = addressTextBox.Text; + FritzBoxClient.Port = (int)portNumericUpDown.Value; + + testResultTextBox.Text = FritzBoxClient.TestConnection(); + } + + private const string debugPrefix = "[DEBUG ] "; + private const string errorPrefix = "[ ERROR ] "; + private const string warningPrefix = "[ WARNING] "; + private const string infoPrefix = "[ --== INFO ==-- ] "; + private string tempLogMsg = string.Empty; + void OnLogAction(FritzBoxClient.LogLevel logLevel, string logMessage) + { + switch (logLevel) + { + case FritzBoxClient.LogLevel.Debug: + tempLogMsg = debugPrefix + logMessage + Environment.NewLine; + break; + case FritzBoxClient.LogLevel.Error: + tempLogMsg = errorPrefix + logMessage + Environment.NewLine; + break; + case FritzBoxClient.LogLevel.Warning: + tempLogMsg = warningPrefix + logMessage + Environment.NewLine; + break; + case FritzBoxClient.LogLevel.Info: + tempLogMsg = infoPrefix + logMessage + Environment.NewLine; + break; + case FritzBoxClient.LogLevel.HeavyDebug: + tempLogMsg = logMessage + Environment.NewLine; + break; + default: + tempLogMsg = string.Empty; + break; + } + + AppendText(); + } + void AppendText() + { + if (InvokeRequired) + { + this.Invoke(new InvokeDelegate(AppendText)); + return; + } + + if (tempLogMsg != string.Empty) + { + logTextBox.AppendText(tempLogMsg); + tempLogMsg = string.Empty; + } + } + } +} Added: trunk/plugins/FritzBox/Tools/FritzBoxDebugger/DebugForm.resx =================================================================== --- trunk/plugins/FritzBox/Tools/FritzBoxDebugger/DebugForm.resx (rev 0) +++ trunk/plugins/FritzBox/Tools/FritzBoxDebugger/DebugForm.resx 2008-11-08 16:59:47 UTC (rev 2315) @@ -0,0 +1,120 @@ +<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> +</root> \ No newline at end of file Added: trunk/plugins/FritzBox/Tools/FritzBoxDebugger/FritzBoxDebugger.csproj =================================================================== --- trunk/plugins/FritzBox/Tools/FritzBoxDebugger/FritzBoxDebugger.csproj (rev 0) +++ trunk/plugins/FritzBox/Tools/FritzBoxDebugger/FritzBoxDebugger.csproj 2008-11-08 16:59:47 UTC (rev 2315) @@ -0,0 +1,76 @@ +<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5"> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <ProjectGuid>{FB2B1D6F-4580-4B3B-95A8-C9800F679D9F}</ProjectGuid> + <OutputType>WinExe</OutputType> + <NoStandardLibraries>false</NoStandardLibraries> + <AssemblyName>FritzBoxDebugger</AssemblyName> + <RootNamespace>FritzBoxDebugger</RootNamespace> + <FileUpgradeFlags> + </FileUpgradeFlags> + <OldToolsVersion>2.0</OldToolsVersion> + <UpgradeBackupLocation> + </UpgradeBackupLocation> + <SccProjectName> + </SccProjectName> + <SccLocalPath> + </SccLocalPath> + <SccAuxPath> + </SccAuxPath> + <SccProvider> + </SccProvider> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> + <DebugSymbols>true</DebugSymbols> + <DebugType>full</DebugType> + <Optimize>false</Optimize> + <OutputPath>.\bin\Debug\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> + <DebugType>pdbonly</DebugType> + <Optimize>true</Optimize> + <OutputPath>.\bin\Release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + </PropertyGroup> + <ItemGroup> + <Reference Include="Core, Version=0.9.2.154, Culture=neutral, processorArchitecture=x86"> + <SpecificVersion>False</SpecificVersion> + <HintPath>..\..\External\Core.dll</HintPath> + </Reference> + <Reference Include="System" /> + <Reference Include="System.Data" /> + <Reference Include="System.Drawing" /> + <Reference Include="System.Windows.Forms" /> + <Reference Include="System.Xml" /> + </ItemGroup> + <ItemGroup> + <Compile Include="DebugForm.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="DebugForm.Designer.cs"> + <DependentUpon>DebugForm.cs</DependentUpon> + </Compile> + <Compile Include="Program.cs" /> + <Compile Include="Properties\AssemblyInfo.cs" /> + </ItemGroup> + <ItemGroup> + <ProjectReference Include="..\..\FritzBox\FritzBox.csproj"> + <Project>{7A458560-A537-429E-A016-1A4513CB586F}</Project> + <Name>FritzBox</Name> + </ProjectReference> + </ItemGroup> + <ItemGroup> + <EmbeddedResource Include="DebugForm.resx"> + <DependentUpon>DebugForm.cs</DependentUpon> + </EmbeddedResource> + </ItemGroup> + <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" /> + <ProjectExtensions> + <VisualStudio AllowExistingFolder="true" /> + </ProjectExtensions> + <PropertyGroup> + <PostBuildEvent>copy "$(ProjectDir)..\..\External\sqlite.dll" "$(TargetDir)" /y</PostBuildEvent> + </PropertyGroup> +</Project> \ No newline at end of file Added: trunk/plugins/FritzBox/Tools/FritzBoxDebugger/Program.cs =================================================================== --- trunk/plugins/FritzBox/Tools/FritzBoxDebugger/Program.cs (rev 0) +++ trunk/plugins/FritzBox/Tools/FritzBoxDebugger/Program.cs 2008-11-08 16:59:47 UTC (rev 2315) @@ -0,0 +1,19 @@ +using System; + +using System.Windows.Forms; + +namespace FritzBoxDebugger +{ + class Program + { + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new DebugForm()); + } + } +} + + Added: trunk/plugins/FritzBox/Tools/FritzBoxDebugger/Properties/AssemblyInfo.cs =================================================================== --- trunk/plugins/FritzBox/Tools/FritzBoxDebugger/Properties/AssemblyInfo.cs (rev 0) +++ trunk/plugins/FritzBox/Tools/FritzBoxDebugger/Properties/AssemblyInfo.cs 2008-11-08 16:59:47 UTC (rev 2315) @@ -0,0 +1,33 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("MoviesPluginTester")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("MoviesPluginTester")] +[assembly: AssemblyCopyright("Copyright © 2007")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("a8955056-78bf-4390-9c3a-b3ac6b5072e6")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <che...@us...> - 2009-06-03 10:27:05
|
Revision: 2892 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=2892&view=rev Author: chef_koch Date: 2009-06-03 10:27:01 +0000 (Wed, 03 Jun 2009) Log Message: ----------- resharped complete solution Modified Paths: -------------- trunk/plugins/FritzBox/FritzBox/CallAction.cs trunk/plugins/FritzBox/FritzBox/Caller.cs trunk/plugins/FritzBox/FritzBox/ConfigConnector.cs trunk/plugins/FritzBox/FritzBox/FritzBox.cs trunk/plugins/FritzBox/FritzBox/FritzBox.csproj trunk/plugins/FritzBox/FritzBox/FritzBoxClient.cs trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.cs trunk/plugins/FritzBox/FritzBox/PhoneBook.cs trunk/plugins/FritzBox/FritzBox/Properties/AssemblyInfo.cs trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/FritzBoxConfigTester.csproj trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/Program.cs trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/Properties/AssemblyInfo.cs trunk/plugins/FritzBox/Tools/FritzBoxDebugger/DebugForm.cs trunk/plugins/FritzBox/Tools/FritzBoxDebugger/Program.cs trunk/plugins/FritzBox/Tools/FritzBoxDebugger/Properties/AssemblyInfo.cs Modified: trunk/plugins/FritzBox/FritzBox/CallAction.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/CallAction.cs 2009-06-03 10:03:58 UTC (rev 2891) +++ trunk/plugins/FritzBox/FritzBox/CallAction.cs 2009-06-03 10:27:01 UTC (rev 2892) @@ -1,7 +1,4 @@ using System; -using System.Collections.Generic; -using System.Text; - using MediaPortal.ServiceImplementations; namespace FritzBox @@ -24,11 +21,11 @@ public void WriteToLog() { Log.Info("CallAction Info:"); - Log.Info(" CallType: {0}", this.type.ToString()); - Log.Info(" Date: {0}", this.time.ToShortDateString()); - Log.Info(" Time: {0}", this.time.ToShortTimeString()); - Log.Info(" Caller: {0}", this.caller.ID); - Log.Info(" MSN: {0}", this.msn); + Log.Info(" CallType: {0}", type.ToString()); + Log.Info(" Date: {0}", time.ToShortDateString()); + Log.Info(" Time: {0}", time.ToShortTimeString()); + Log.Info(" Caller: {0}", caller.ID); + Log.Info(" MSN: {0}", msn); } } -} +} \ No newline at end of file Modified: trunk/plugins/FritzBox/FritzBox/Caller.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/Caller.cs 2009-06-03 10:03:58 UTC (rev 2891) +++ trunk/plugins/FritzBox/FritzBox/Caller.cs 2009-06-03 10:27:01 UTC (rev 2892) @@ -23,67 +23,44 @@ #endregion -using System; -using System.Collections.Generic; -using System.Text; - namespace FritzBox { public class Caller { - string _id; - string _name; - bool _show; + private string _id; + private string _name; + private bool _show; public Caller() { - this._id = ""; - this._name = ""; - this._show = true; + _id = ""; + _name = ""; + _show = true; } public Caller(string id, string name, bool show) { - this._id = id; - this._name = name; - this._show = show; + _id = id; + _name = name; + _show = show; } public string ID { - get - { - return _id; - } - set - { - _id = value; - } + get { return _id; } + set { _id = value; } } public string Name { - get - { - return _name; - } - set - { - _name = value; - } + get { return _name; } + set { _name = value; } } public bool Show { - get - { - return _show; - } - set - { - _show = value; - } + get { return _show; } + set { _show = value; } } - } -} +} \ No newline at end of file Modified: trunk/plugins/FritzBox/FritzBox/ConfigConnector.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/ConfigConnector.cs 2009-06-03 10:03:58 UTC (rev 2891) +++ trunk/plugins/FritzBox/FritzBox/ConfigConnector.cs 2009-06-03 10:27:01 UTC (rev 2892) @@ -1,5 +1,4 @@ using System; - using MediaPortal.GUI.Library; namespace FritzBox @@ -62,7 +61,8 @@ return true; } - public bool GetHome(out string strButtonText, out string strButtonImage, out string strButtonImageFocus, out string strPictureImage) + public bool GetHome(out string strButtonText, out string strButtonImage, out string strButtonImageFocus, + out string strPictureImage) { strButtonText = null; strButtonImage = null; @@ -70,6 +70,7 @@ strPictureImage = null; return false; } + #endregion } -} +} \ No newline at end of file Modified: trunk/plugins/FritzBox/FritzBox/FritzBox.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/FritzBox.cs 2009-06-03 10:03:58 UTC (rev 2891) +++ trunk/plugins/FritzBox/FritzBox/FritzBox.cs 2009-06-03 10:27:01 UTC (rev 2892) @@ -27,17 +27,11 @@ using System.Collections.Generic; using System.Diagnostics; using System.IO; -using System.Net.Sockets; -using System.Threading; -using System.Windows.Forms; -using System.Xml; - using MediaPortal.Configuration; using MediaPortal.Dialogs; using MediaPortal.GUI.Library; using MediaPortal.Player; using MediaPortal.Util; -using System.Text; namespace FritzBox { @@ -52,8 +46,10 @@ { get { return extensiveLogging; } set { extensiveLogging = value; } - } private static bool extensiveLogging = false; + } + private static bool extensiveLogging = false; + /// <summary> /// stop media when an event happend /// </summary> @@ -61,7 +57,10 @@ { get { return stopMedia; } set { stopMedia = value; } - } private static bool stopMedia = true; + } + + private static bool stopMedia = true; + /// <summary> /// resume media when notify is closed /// </summary> @@ -69,14 +68,19 @@ { get { return resumeMedia; } set { resumeMedia = value; } - } private static bool resumeMedia = true; + } + private static bool resumeMedia = true; + public static int MaxNotifies { get { return maxNotifies; } set { maxNotifies = value; } - } private static int maxNotifies = 20; + } + + private static int maxNotifies = 20; + /// <summary> /// autoclose the dialog after the timeout expired /// </summary> @@ -84,30 +88,43 @@ { get { return notifyTimeout; } set { notifyTimeout = value; } - } private static int notifyTimeout = 10; + } + + private static int notifyTimeout = 10; + public static bool CloseOnTimeout { get { return closeOnTimeout; } set { closeOnTimeout = value; } - } private static bool closeOnTimeout = false; + } + + private static bool closeOnTimeout = false; + public static bool CloseOnConnectionClosed { get { return closeOnConnectionClosed; } set { closeOnConnectionClosed = value; } - } private static bool closeOnConnectionClosed = false; + } + + private static bool closeOnConnectionClosed = false; + public static bool ShowMsnOnHeading { get { return showMsnOnHeading; } set { showMsnOnHeading = value; } - } private static bool showMsnOnHeading = false; + } + private static bool showMsnOnHeading = false; public static bool FilterMSNs { get { return filterMSNs; } set { filterMSNs = value; } - } private static bool filterMSNs = false; + } + + private static bool filterMSNs = false; + public static List<String> MsnList { get @@ -118,8 +135,10 @@ return msnList; } set { msnList = value; } - } private static List<String> msnList; + } + private static List<String> msnList; + #endregion public static void Load() @@ -128,7 +147,9 @@ PhoneBook.LoadSettings(); - using (MediaPortal.Profile.Settings xmlreader = new MediaPortal.Profile.Settings(Config.GetFile(Config.Dir.Config, "MediaPortal.xml"))) + using ( + MediaPortal.Profile.Settings xmlreader = + new MediaPortal.Profile.Settings(Config.GetFile(Config.Dir.Config, "MediaPortal.xml"))) { ExtensiveLogging = xmlreader.GetValueAsBool("fritzbox", "extensiveLogging", false); @@ -146,7 +167,7 @@ FilterMSNs = xmlreader.GetValueAsBool("fritzbox", "filterMSNs", false); string strMSN = xmlreader.GetValueAsString("fritzbox", "MSN", ""); - char[] charSeparators = new char[] { ';' }; + char[] charSeparators = new char[] {';'}; MsnList.AddRange(strMSN.Split(charSeparators, StringSplitOptions.RemoveEmptyEntries)); ShowMsnOnHeading = xmlreader.GetValueAsBool("fritzbox", "showMsnOnHeading", false); @@ -163,7 +184,9 @@ { Log.Info("FRITZ!Box: Settings.Save()"); - using (MediaPortal.Profile.Settings xmlwriter = new MediaPortal.Profile.Settings(Config.GetFile(Config.Dir.Config, "MediaPortal.xml"))) + using ( + MediaPortal.Profile.Settings xmlwriter = + new MediaPortal.Profile.Settings(Config.GetFile(Config.Dir.Config, "MediaPortal.xml"))) { xmlwriter.SetValueAsBool("fritzbox", "extensiveLogging", ExtensiveLogging); @@ -196,7 +219,7 @@ public static void WriteToLog() { - if (Settings.ExtensiveLogging) + if (ExtensiveLogging) { Log.Info("FRITZ!Box: closeOnTimeout = {0}", CloseOnTimeout.ToString()); Log.Info("FRITZ!Box: timeout = {0}", NotifyTimeout.ToString()); @@ -222,13 +245,13 @@ public const string _version = "0.3.2.5"; - List<CallAction> actionList = new List<CallAction>(); - object tempNotify = null; + private readonly List<CallAction> actionList = new List<CallAction>(); + private object tempNotify = null; - int notifyCount = 0; + private int notifyCount = 0; - bool _showNotify = true; - List<CallAction> notifyQueue = new List<CallAction>(); + private bool _showNotify = true; + private readonly List<CallAction> notifyQueue = new List<CallAction>(); #endregion @@ -246,7 +269,7 @@ #region Private Functions/Methods - void OnStartExternal(Process proc, bool waitForExit) + private void OnStartExternal(Process proc, bool waitForExit) { if (waitForExit) { @@ -257,7 +280,8 @@ _showNotify = true; } } - void OnStopExternal(Process proc, bool waitForExit) + + private void OnStopExternal(Process proc, bool waitForExit) { _showNotify = true; @@ -267,7 +291,7 @@ notifyQueue.Clear(); } - void OnCallAction(CallAction callAction) + private void OnCallAction(CallAction callAction) { Log.Info("FRITZ!Box: OnCallAction()"); callAction.WriteToLog(); @@ -298,7 +322,7 @@ { Action act = new Action(); act.wID = Action.ActionType.ACTION_CLOSE_DIALOG; - GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_DIALOG_NOTIFY).OnAction(act); + GUIWindowManager.GetWindow((int) GUIWindow.Window.WINDOW_DIALOG_NOTIFY).OnAction(act); } } break; @@ -306,9 +330,9 @@ Log.Error("incorrect callaction.type"); break; } + } - } - void OnLogAction(FritzBoxClient.LogLevel logLevel, string logMessage) + private void OnLogAction(FritzBoxClient.LogLevel logLevel, string logMessage) { switch (logLevel) { @@ -329,7 +353,7 @@ } } - void OnIncomingCall(CallAction callAction) + private void OnIncomingCall(CallAction callAction) { Log.Info("FRITZ!Box: OnIncomingCall()"); @@ -348,16 +372,16 @@ // Set Heading for NotifyDialog if (Settings.ShowMsnOnHeading) - strHeading = GUILocalizeStrings.Get(1023) + " on " + callAction.msn; // ???? Incoming call on + strHeading = GUILocalizeStrings.Get(1023) + " on " + callAction.msn; // ???? Incoming call on else - strHeading = GUILocalizeStrings.Get(1023); // 1023 Incoming call + strHeading = GUILocalizeStrings.Get(1023); // 1023 Incoming call // Set Image for NotifyDialog strImage = GetCallerImage(callAction.caller); // Set MessageText for NotifyDialog if (callAction.caller.ID == "") - strText = GUILocalizeStrings.Get(2014); // 2014 = unknown + strText = GUILocalizeStrings.Get(2014); // 2014 = unknown else if (callAction.caller.Name == "") strText = callAction.caller.ID; else @@ -378,13 +402,13 @@ #region Helper Methods - string GetCallerImage(Caller caller) + private string GetCallerImage(Caller caller) { if (caller.ID == "") - return MediaPortal.Util.Utils.GetCoverArt(Thumbs.Yac, "_unknown"); + return Utils.GetCoverArt(Thumbs.Yac, "_unknown"); else { - string strImage = MediaPortal.Util.Utils.GetCoverArtName(Thumbs.Yac, caller.Name); + string strImage = Utils.GetCoverArtName(Thumbs.Yac, caller.Name); // search image for caller if (Settings.ExtensiveLogging) @@ -402,12 +426,12 @@ else { Log.Info("found NO image for caller"); - return MediaPortal.Util.Utils.GetCoverArt(Thumbs.Yac, "_noImage"); + return Utils.GetCoverArt(Thumbs.Yac, "_noImage"); } } } - bool IsMsnEnabled(string msn) + private bool IsMsnEnabled(string msn) { if (!Settings.FilterMSNs) { @@ -427,7 +451,7 @@ } } - bool IsCallerEnabled(Caller caller) + private bool IsCallerEnabled(Caller caller) { if (!PhoneBook.Enabled) { @@ -438,7 +462,7 @@ else return false; } - void ShowNotify(string strHeading, string strImage, string strText) + private void ShowNotify(string strHeading, string strImage, string strText) { if (notifyCount >= Settings.MaxNotifies) return; @@ -446,7 +470,8 @@ if (g_Player.Playing && !g_Player.Paused && Settings.StopMedia) g_Player.Pause(); - GUIDialogNotify dlgNotify = (GUIDialogNotify)GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_DIALOG_NOTIFY); + GUIDialogNotify dlgNotify = + (GUIDialogNotify) GUIWindowManager.GetWindow((int) GUIWindow.Window.WINDOW_DIALOG_NOTIFY); if (dlgNotify == null) return; dlgNotify.Reset(); Modified: trunk/plugins/FritzBox/FritzBox/FritzBox.csproj =================================================================== --- trunk/plugins/FritzBox/FritzBox/FritzBox.csproj 2009-06-03 10:03:58 UTC (rev 2891) +++ trunk/plugins/FritzBox/FritzBox/FritzBox.csproj 2009-06-03 10:27:01 UTC (rev 2892) @@ -35,11 +35,23 @@ <WarningLevel>4</WarningLevel> </PropertyGroup> <ItemGroup> + <Reference Include="Core, Version=1.0.2.19958, Culture=neutral, processorArchitecture=MSIL"> + <SpecificVersion>False</SpecificVersion> + <HintPath>..\..\..\..\..\MediaPortal\trunk\mediaportal\Core\bin\Release\Core.dll</HintPath> + </Reference> + <Reference Include="Dialogs, Version=1.0.2.19960, Culture=neutral, processorArchitecture=MSIL"> + <SpecificVersion>False</SpecificVersion> + <HintPath>..\..\..\..\..\MediaPortal\trunk\mediaportal\Dialogs\bin\Release\Dialogs.dll</HintPath> + </Reference> <Reference Include="System" /> <Reference Include="System.Data" /> <Reference Include="System.Drawing" /> <Reference Include="System.Windows.Forms" /> <Reference Include="System.Xml" /> + <Reference Include="Utils, Version=2.2.7.19957, Culture=neutral, processorArchitecture=MSIL"> + <SpecificVersion>False</SpecificVersion> + <HintPath>..\..\..\..\..\MediaPortal\trunk\mediaportal\Utils\bin\Release\Utils.dll</HintPath> + </Reference> </ItemGroup> <ItemGroup> <Compile Include="ConfigConnector.cs" /> @@ -84,24 +96,6 @@ <CopyToOutputDirectory>Always</CopyToOutputDirectory> </Content> </ItemGroup> - <ItemGroup> - <ProjectReference Include="..\..\..\mediaportal\Core\Core.csproj"> - <Project>{02FFFC1F-2555-4B99-8B01-3432D0673855}</Project> - <Name>Core</Name> - </ProjectReference> - <ProjectReference Include="..\..\..\mediaportal\Dialogs\Dialogs.csproj"> - <Project>{396C5208-5D46-4A11-92C1-FD0F2F42D7DD}</Project> - <Name>Dialogs</Name> - </ProjectReference> - <ProjectReference Include="..\..\..\mediaportal\Utils\Utils.csproj"> - <Project>{6DA0E4DF-6230-4642-98B5-E690BB6942BB}</Project> - <Name>Utils</Name> - </ProjectReference> - <ProjectReference Include="..\..\..\mediaportal\WindowPlugins\WindowPlugins.csproj"> - <Project>{B282C55B-A37B-4CEC-A4FC-00791069BF00}</Project> - <Name>WindowPlugins</Name> - </ProjectReference> - </ItemGroup> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> <!-- To modify your build process, add your task inside one of the targets below and uncomment it. Other similar extension points exist, see Microsoft.Common.targets. Modified: trunk/plugins/FritzBox/FritzBox/FritzBoxClient.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/FritzBoxClient.cs 2009-06-03 10:03:58 UTC (rev 2891) +++ trunk/plugins/FritzBox/FritzBox/FritzBoxClient.cs 2009-06-03 10:27:01 UTC (rev 2892) @@ -1,11 +1,10 @@ using System; +using System.Globalization; using System.Net; using System.Net.Sockets; +using System.Text; using System.Threading; -using System.Text; -using MediaPortal.GUI.Library; - namespace FritzBox { public static class FritzBoxClient @@ -15,20 +14,23 @@ /// <summary> /// State object for receiving data from remote device. /// </summary> - class StateObject + private class StateObject { /// <summary> /// Client socket. /// </summary> public Socket workSocket = null; + /// <summary> /// Size of receive buffer. /// </summary> public const int BufferSize = 256; + /// <summary> /// Receive buffer. /// </summary> - public byte[] buffer = new byte[BufferSize]; + public readonly byte[] buffer = new byte[BufferSize]; + /// <summary> /// Received data string. /// </summary> @@ -46,32 +48,39 @@ #endregion - static TimeSpan minConnectWaitTime = new TimeSpan(0, 10, 0); - static DateTime connectionFailed; - - static Socket _client; + private static readonly TimeSpan minConnectWaitTime = new TimeSpan(0, 10, 0); + private static DateTime connectionFailed; + private static Socket _client; + #region Properties public static string Address { get { return address; } set { address = value; } - } private static string address = "fritz.box"; + } + + private static string address = "fritz.box"; + public static int Port { get { return port; } set { port = value; } - } private static int port = 1012; + } + private static int port = 1012; + #endregion #region Public Events and Delegates public delegate void CallEventHandler(CallAction callAction); + public static event CallEventHandler CallEvent; public delegate void LogEventHandler(LogLevel logLevel, string logMessage); + public static event LogEventHandler LogEvent; #endregion @@ -82,7 +91,7 @@ { Log(LogLevel.Debug, "StartClient"); connectionFailed = DateTime.MinValue; - + Thread thread = new Thread(new ThreadStart(Connect)); thread.Start(); } @@ -128,7 +137,7 @@ { Log(LogLevel.Debug, "ReConnect"); connectionFailed = DateTime.Now; - + Thread thread = new Thread(new ThreadStart(Connect)); thread.Start(); } @@ -157,7 +166,7 @@ // Create a TCP/IP socket. _client = new Socket(AddressFamily.InterNetwork, - SocketType.Stream, ProtocolType.Tcp); + SocketType.Stream, ProtocolType.Tcp); // Connect to the remote endpoint. _client.BeginConnect(Address, Port, new AsyncCallback(ConnectCallback), _client); @@ -180,7 +189,7 @@ try { // Retrieve the socket from the state object. - Socket client = (Socket)ar.AsyncState; + Socket client = (Socket) ar.AsyncState; // Complete the connection. client.EndConnect(ar); @@ -222,7 +231,7 @@ // Begin receiving the data from the remote device. Log(LogLevel.HeavyDebug, "client.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0,"); client.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, - new AsyncCallback(ReceiveCallback), state); + new AsyncCallback(ReceiveCallback), state); } catch (SocketException e) { @@ -251,7 +260,7 @@ { // Retrieve the state object and the client socket // from the asynchronous state object. - StateObject state = (StateObject)ar.AsyncState; + StateObject state = (StateObject) ar.AsyncState; Socket client = state.workSocket; // Read data from the remote device. @@ -278,7 +287,7 @@ CallAction callAction = new CallAction(); // time when action happens - callAction.time = DateTime.Parse(strList[0], new System.Globalization.CultureInfo("de-DE", false)); + callAction.time = DateTime.Parse(strList[0], new CultureInfo("de-DE", false)); // set the type of the callAction switch (strList[1]) @@ -310,7 +319,7 @@ // continue to listen to the fb client.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, - new AsyncCallback(ReceiveCallback), state); + new AsyncCallback(ReceiveCallback), state); if (CallEvent != null) CallEvent(callAction); @@ -354,4 +363,4 @@ #endregion } -} +} \ No newline at end of file Modified: trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.cs 2009-06-03 10:03:58 UTC (rev 2891) +++ trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.cs 2009-06-03 10:27:01 UTC (rev 2892) @@ -1,18 +1,6 @@ using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Text; -using System.Windows.Forms; - -using System.Collections; -using System.Net.Sockets; using System.IO; - -using MediaPortal.Configuration; -using MediaPortal.GUI.Library; -using MediaPortal.Profile; +using System.Windows.Forms; using MediaPortal.Util; namespace FritzBox @@ -79,12 +67,12 @@ FritzBox.Settings.ExtensiveLogging = checkBoxExtensiveLogging.Checked; FritzBoxClient.Address = textBoxAddress.Text; - FritzBoxClient.Port = (int)numericUpDownPort.Value; + FritzBoxClient.Port = (int) numericUpDownPort.Value; // notify settings - FritzBox.Settings.MaxNotifies = (int)numericUpDownMaxNotifies.Value; + FritzBox.Settings.MaxNotifies = (int) numericUpDownMaxNotifies.Value; FritzBox.Settings.CloseOnTimeout = checkBoxCloseOnTimout.Checked; - FritzBox.Settings.NotifyTimeout = (int)numericUpDownTimeout.Value; + FritzBox.Settings.NotifyTimeout = (int) numericUpDownTimeout.Value; FritzBox.Settings.CloseOnConnectionClosed = checkBoxCloseOnConnectionClosed.Checked; FritzBox.Settings.FilterMSNs = checkBoxFilterMSNs.Checked; @@ -117,18 +105,18 @@ private void buttonSave_Click(object sender, EventArgs e) { SaveSettings(); - this.Close(); + Close(); } private void buttonCancel_Click(object sender, EventArgs e) { - this.Close(); + Close(); } private void buttonTest_Click(object sender, EventArgs e) { FritzBoxClient.Address = textBoxAddress.Text; - FritzBoxClient.Port = (int)numericUpDownPort.Value; + FritzBoxClient.Port = (int) numericUpDownPort.Value; labelHelp.Text = "Please wait..."; labelHelp.Text = FritzBoxClient.TestConnection(); @@ -214,10 +202,11 @@ } else { - string oldfile = MediaPortal.Util.Utils.GetCoverArt(Thumbs.Yac, - dataGridView.Rows[dataGridView.CurrentCell.RowIndex].Cells[1].Value.ToString()); + string oldfile = Utils.GetCoverArt(Thumbs.Yac, + dataGridView.Rows[dataGridView.CurrentCell.RowIndex].Cells[1].Value.ToString()); - string newfile = String.Format(@"{0}\{1}{2}", Thumbs.Yac, Utils.MakeFileName(textBoxCallerName.Text), Utils.GetThumbExtension()); + string newfile = String.Format(@"{0}\{1}{2}", Thumbs.Yac, Utils.MakeFileName(textBoxCallerName.Text), + Utils.GetThumbExtension()); if (File.Exists(oldfile)) File.Move(oldfile, newfile); @@ -226,7 +215,7 @@ dataGridView.Rows[dataGridView.CurrentCell.RowIndex].Cells[1].Value = textBoxCallerName.Text; dataGridView.Rows[dataGridView.CurrentCell.RowIndex].Cells[2].Value = checkBoxCallerShow.Checked; - pictureBoxCaller.ImageLocation = MediaPortal.Util.Utils.GetCoverArt(Thumbs.Yac, textBoxCallerName.Text); + pictureBoxCaller.ImageLocation = Utils.GetCoverArt(Thumbs.Yac, textBoxCallerName.Text); SaveDataGridView(); } @@ -289,9 +278,10 @@ { textBoxCallerId.Text = dataGridView.Rows[dataGridView.CurrentCell.RowIndex].Cells[0].Value.ToString(); textBoxCallerName.Text = dataGridView.Rows[dataGridView.CurrentCell.RowIndex].Cells[1].Value.ToString(); - checkBoxCallerShow.Checked = bool.Parse(dataGridView.Rows[dataGridView.CurrentCell.RowIndex].Cells[2].Value.ToString()); + checkBoxCallerShow.Checked = + bool.Parse(dataGridView.Rows[dataGridView.CurrentCell.RowIndex].Cells[2].Value.ToString()); - pictureBoxCaller.ImageLocation = MediaPortal.Util.Utils.GetCoverArt(Thumbs.Yac, textBoxCallerName.Text); + pictureBoxCaller.ImageLocation = Utils.GetCoverArt(Thumbs.Yac, textBoxCallerName.Text); } } @@ -344,7 +334,9 @@ private void buttonClearAll_Click(object sender, EventArgs e) { - if (MessageBox.Show("Attention! Do you really want to clear the phone book? This will delete all your entries!", "", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes) + if ( + MessageBox.Show("Attention! Do you really want to clear the phone book? This will delete all your entries!", "", + MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes) { PhoneBook.Contacts.Clear(); dataGridView.Rows.Clear(); Modified: trunk/plugins/FritzBox/FritzBox/PhoneBook.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/PhoneBook.cs 2009-06-03 10:03:58 UTC (rev 2891) +++ trunk/plugins/FritzBox/FritzBox/PhoneBook.cs 2009-06-03 10:27:01 UTC (rev 2892) @@ -25,72 +25,89 @@ using System; using System.Collections.Generic; +using System.IO; using System.Text; - using MediaPortal.Configuration; using MediaPortal.GUI.Library; -using System.IO; +using MediaPortal.Profile; namespace FritzBox { public static class PhoneBook { private static bool _extensiveLogging; - + #region public properties public static bool Enabled { get { return enabled; } set { enabled = value; } - } private static bool enabled = false; + } + private static bool enabled = false; + public static bool ShowUnknownCaller { get { return showUnknownCaller; } set { showUnknownCaller = value; } - } private static bool showUnknownCaller; + } + + private static bool showUnknownCaller; + public static bool SaveUnknownCaller { get { return saveUnknownCaller; } set { saveUnknownCaller = value; } - } private static bool saveUnknownCaller; + } + private static bool saveUnknownCaller; + public static string SuffixHome { get { return suffixHome; } set { suffixHome = value; } - } private static string suffixHome; + } + + private static string suffixHome; + public static string SuffixWork { get { return suffixWork; } set { suffixWork = value; } - } private static string suffixWork; + } + + private static string suffixWork; + public static string SuffixMobile { get { return suffixMobile; } set { suffixMobile = value; } - } private static string suffixMobile; + } + private static string suffixMobile; + public static List<Caller> Contacts { get { if (contacts == null) contacts = new List<Caller>(); - + return contacts; } set { contacts = value; } - } private static List<Caller> contacts; + } + private static List<Caller> contacts; + #endregion #region public methods public static void LoadSettings() { - using (MediaPortal.Profile.Settings xmlreader = new MediaPortal.Profile.Settings(Config.GetFile(Config.Dir.Config, "MediaPortal.xml"))) + using (Settings xmlreader = new Settings(Config.GetFile(Config.Dir.Config, "MediaPortal.xml"))) { _extensiveLogging = xmlreader.GetValueAsBool("fritzbox", "extensiveLogging", false); @@ -106,9 +123,8 @@ Contacts = new List<Caller>(); - using (MediaPortal.Profile.Settings xmlreader = new MediaPortal.Profile.Settings(Config.GetFile(Config.Dir.Config, "fritzbox.xml"))) + using (Settings xmlreader = new Settings(Config.GetFile(Config.Dir.Config, "fritzbox.xml"))) { - int countCaller = xmlreader.GetValueAsInt("phonebook", "count", 0); for (int i = 0; i < countCaller; i++) @@ -131,7 +147,7 @@ public static void SaveSettings() { - using (MediaPortal.Profile.Settings xmlwriter = new MediaPortal.Profile.Settings(Config.GetFile(Config.Dir.Config, "MediaPortal.xml"))) + using (Settings xmlwriter = new Settings(Config.GetFile(Config.Dir.Config, "MediaPortal.xml"))) { xmlwriter.SetValueAsBool("fritzbox", "usePhonebook", Enabled); @@ -142,8 +158,8 @@ xmlwriter.SetValue("fritzbox", "suffixWork", SuffixWork); xmlwriter.SetValue("fritzbox", "suffixMobile", SuffixMobile); } - - using (MediaPortal.Profile.Settings xmlwriter = new MediaPortal.Profile.Settings(Config.GetFile(Config.Dir.Config, "fritzbox.xml"))) + + using (Settings xmlwriter = new Settings(Config.GetFile(Config.Dir.Config, "fritzbox.xml"))) { xmlwriter.SetValue("phonebook", "count", Contacts.Count); @@ -170,8 +186,9 @@ using (StreamReader sr = new StreamReader(filepath, Encoding.Default)) { string line; - line = sr.ReadLine(); // sep=; - line = sr.ReadLine(); // Name;TelNumHome;VanityHome;KurzWahlHome;TelNumWork;VanityWork;KurzWahlWork;TelNumMobile;VanityMobile;KurzWahlMobile;Kommentar;Firma;Bild;Kategorie;ImageUrl;Prio;Email;RingTone;RingVol + line = sr.ReadLine(); // sep=; + line = sr.ReadLine(); + // Name;TelNumHome;VanityHome;KurzWahlHome;TelNumWork;VanityWork;KurzWahlWork;TelNumMobile;VanityMobile;KurzWahlMobile;Kommentar;Firma;Bild;Kategorie;ImageUrl;Prio;Email;RingTone;RingVol // Read and display lines from the file until the end of // the file is reached. @@ -216,7 +233,7 @@ Contacts.Add(caller); count++; - } + } } } @@ -279,4 +296,4 @@ #endregion } -} +} \ No newline at end of file Modified: trunk/plugins/FritzBox/FritzBox/Properties/AssemblyInfo.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/Properties/AssemblyInfo.cs 2009-06-03 10:03:58 UTC (rev 2891) +++ trunk/plugins/FritzBox/FritzBox/Properties/AssemblyInfo.cs 2009-06-03 10:27:01 UTC (rev 2892) @@ -1,25 +1,27 @@ -using System.Reflection; -using System.Runtime.CompilerServices; +using System.Reflection; using System.Runtime.InteropServices; // General Information about an assembly is controlled through the following // set of attributes. Change these attribute values to modify the information // associated with an assembly. + [assembly: AssemblyTitle("FRITZ!Box CallMonitor")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("chefkoch @ Team MediaPortal")] [assembly: AssemblyProduct("FRITZ!Box CallMonitor")] -[assembly: AssemblyCopyright("Copyright © chefkoch @ Team MediaPortal 2008")] +[assembly: AssemblyCopyright("Copyright \xA9 chefkoch @ Team MediaPortal 2008")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] // Setting ComVisible to false makes the types in this assembly not visible // to COM components. If you need to access a type in this assembly from // COM, set the ComVisible attribute to true on that type. + [assembly: ComVisible(false)] // The following GUID is for the ID of the typelib if this project is exposed to COM + [assembly: Guid("2fed1c7a-a6ad-4bec-b6a5-f6390c705e93")] // Version information for an assembly consists of the following four values: @@ -31,5 +33,6 @@ // // You can specify all the values or you can default the Revision and Build Numbers // by using the '*' as shown below: + [assembly: AssemblyVersion(FritzBox.FritzBox._version)] -[assembly: AssemblyFileVersion(FritzBox.FritzBox._version)] +[assembly: AssemblyFileVersion(FritzBox.FritzBox._version)] \ No newline at end of file Modified: trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/FritzBoxConfigTester.csproj =================================================================== --- trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/FritzBoxConfigTester.csproj 2009-06-03 10:03:58 UTC (rev 2891) +++ trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/FritzBoxConfigTester.csproj 2009-06-03 10:27:01 UTC (rev 2892) @@ -35,9 +35,9 @@ <DefineConstants>TRACE</DefineConstants> </PropertyGroup> <ItemGroup> - <Reference Include="Core, Version=0.9.2.154, Culture=neutral, processorArchitecture=x86"> + <Reference Include="Core, Version=1.0.2.19958, Culture=neutral, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> - <HintPath>..\..\External\Core.dll</HintPath> + <HintPath>..\..\..\..\..\..\MediaPortal\trunk\mediaportal\Core\bin\Release\Core.dll</HintPath> </Reference> <Reference Include="System" /> <Reference Include="System.Data" /> Modified: trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/Program.cs =================================================================== --- trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/Program.cs 2009-06-03 10:03:58 UTC (rev 2891) +++ trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/Program.cs 2009-06-03 10:27:01 UTC (rev 2892) @@ -1,21 +1,18 @@ using System; - +using System.Windows.Forms; using FritzBox; - namespace FritzBoxConfigTester { - class Program + internal class Program { - [STAThreadAttribute] - static void Main(string[] args) + [STAThread] + private static void Main(string[] args) { - System.Windows.Forms.Application.EnableVisualStyles(); + Application.EnableVisualStyles(); ConfigConnector plugin = new ConfigConnector(); plugin.ShowPlugin(); } } -} - - +} \ No newline at end of file Modified: trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/Properties/AssemblyInfo.cs =================================================================== --- trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/Properties/AssemblyInfo.cs 2009-06-03 10:03:58 UTC (rev 2891) +++ trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/Properties/AssemblyInfo.cs 2009-06-03 10:27:01 UTC (rev 2892) @@ -1,25 +1,27 @@ -using System.Reflection; -using System.Runtime.CompilerServices; +using System.Reflection; using System.Runtime.InteropServices; // General Information about an assembly is controlled through the following // set of attributes. Change these attribute values to modify the information // associated with an assembly. + [assembly: AssemblyTitle("MoviesPluginTester")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("MoviesPluginTester")] -[assembly: AssemblyCopyright("Copyright © 2007")] +[assembly: AssemblyCopyright("Copyright \xA9 2007")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] // Setting ComVisible to false makes the types in this assembly not visible // to COM components. If you need to access a type in this assembly from // COM, set the ComVisible attribute to true on that type. + [assembly: ComVisible(false)] // The following GUID is for the ID of the typelib if this project is exposed to COM + [assembly: Guid("a8955056-78bf-4390-9c3a-b3ac6b5072e6")] // Version information for an assembly consists of the following four values: @@ -29,5 +31,6 @@ // Build Number // Revision // + [assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] \ No newline at end of file Modified: trunk/plugins/FritzBox/Tools/FritzBoxDebugger/DebugForm.cs =================================================================== --- trunk/plugins/FritzBox/Tools/FritzBoxDebugger/DebugForm.cs 2009-06-03 10:03:58 UTC (rev 2891) +++ trunk/plugins/FritzBox/Tools/FritzBoxDebugger/DebugForm.cs 2009-06-03 10:27:01 UTC (rev 2892) @@ -1,9 +1,7 @@ -using System; +using System; using System.Windows.Forms; - using FritzBox; - namespace FritzBoxDebugger { public partial class DebugForm : Form @@ -18,7 +16,7 @@ private void button1_Click(object sender, EventArgs e) { FritzBoxClient.Address = addressTextBox.Text; - FritzBoxClient.Port = (int)portNumericUpDown.Value; + FritzBoxClient.Port = (int) portNumericUpDown.Value; FritzBoxClient.LogEvent += new FritzBoxClient.LogEventHandler(OnLogAction); FritzBoxClient.StartClient(); @@ -33,17 +31,18 @@ private void testButton_Click(object sender, EventArgs e) { FritzBoxClient.Address = addressTextBox.Text; - FritzBoxClient.Port = (int)portNumericUpDown.Value; + FritzBoxClient.Port = (int) portNumericUpDown.Value; testResultTextBox.Text = FritzBoxClient.TestConnection(); } - private const string debugPrefix = "[DEBUG ] "; - private const string errorPrefix = "[ ERROR ] "; + private const string debugPrefix = "[DEBUG ] "; + private const string errorPrefix = "[ ERROR ] "; private const string warningPrefix = "[ WARNING] "; - private const string infoPrefix = "[ --== INFO ==-- ] "; + private const string infoPrefix = "[ --== INFO ==-- ] "; private string tempLogMsg = string.Empty; - void OnLogAction(FritzBoxClient.LogLevel logLevel, string logMessage) + + private void OnLogAction(FritzBoxClient.LogLevel logLevel, string logMessage) { switch (logLevel) { @@ -69,11 +68,12 @@ AppendText(); } - void AppendText() + + private void AppendText() { if (InvokeRequired) { - this.Invoke(new InvokeDelegate(AppendText)); + Invoke(new InvokeDelegate(AppendText)); return; } @@ -84,4 +84,4 @@ } } } -} +} \ No newline at end of file Modified: trunk/plugins/FritzBox/Tools/FritzBoxDebugger/Program.cs =================================================================== --- trunk/plugins/FritzBox/Tools/FritzBoxDebugger/Program.cs 2009-06-03 10:03:58 UTC (rev 2891) +++ trunk/plugins/FritzBox/Tools/FritzBoxDebugger/Program.cs 2009-06-03 10:27:01 UTC (rev 2892) @@ -1,19 +1,16 @@ using System; - using System.Windows.Forms; namespace FritzBoxDebugger { - class Program + internal class Program { [STAThread] - static void Main() + private static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new DebugForm()); } } -} - - +} \ No newline at end of file Modified: trunk/plugins/FritzBox/Tools/FritzBoxDebugger/Properties/AssemblyInfo.cs =================================================================== --- trunk/plugins/FritzBox/Tools/FritzBoxDebugger/Properties/AssemblyInfo.cs 2009-06-03 10:03:58 UTC (rev 2891) +++ trunk/plugins/FritzBox/Tools/FritzBoxDebugger/Properties/AssemblyInfo.cs 2009-06-03 10:27:01 UTC (rev 2892) @@ -1,25 +1,27 @@ -using System.Reflection; -using System.Runtime.CompilerServices; +using System.Reflection; using System.Runtime.InteropServices; // General Information about an assembly is controlled through the following // set of attributes. Change these attribute values to modify the information // associated with an assembly. + [assembly: AssemblyTitle("MoviesPluginTester")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("MoviesPluginTester")] -[assembly: AssemblyCopyright("Copyright © 2007")] +[assembly: AssemblyCopyright("Copyright \xA9 2007")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] // Setting ComVisible to false makes the types in this assembly not visible // to COM components. If you need to access a type in this assembly from // COM, set the ComVisible attribute to true on that type. + [assembly: ComVisible(false)] // The following GUID is for the ID of the typelib if this project is exposed to COM + [assembly: Guid("a8955056-78bf-4390-9c3a-b3ac6b5072e6")] // Version information for an assembly consists of the following four values: @@ -29,5 +31,6 @@ // Build Number // Revision // + [assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <che...@us...> - 2009-06-03 11:20:45
|
Revision: 2893 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=2893&view=rev Author: chef_koch Date: 2009-06-03 11:20:39 +0000 (Wed, 03 Jun 2009) Log Message: ----------- added option to listen within config updated xmp to use *.mpe1 updated version to 0.3.3.0 Modified Paths: -------------- trunk/plugins/FritzBox/FritzBox/FritzBox.cs trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.Designer.cs trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.cs trunk/plugins/FritzBox/FritzBox/PhoneBook.cs trunk/plugins/FritzBox/FritzBox.xmp trunk/plugins/FritzBox/Tools/FritzBoxDebugger/FritzBoxDebugger.csproj Modified: trunk/plugins/FritzBox/FritzBox/FritzBox.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/FritzBox.cs 2009-06-03 10:27:01 UTC (rev 2892) +++ trunk/plugins/FritzBox/FritzBox/FritzBox.cs 2009-06-03 11:20:39 UTC (rev 2893) @@ -243,7 +243,7 @@ #region Variables - public const string _version = "0.3.2.5"; + public const string _version = "0.3.3.0"; private readonly List<CallAction> actionList = new List<CallAction>(); private object tempNotify = null; Modified: trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.Designer.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.Designer.cs 2009-06-03 10:27:01 UTC (rev 2892) +++ trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.Designer.cs 2009-06-03 11:20:39 UTC (rev 2893) @@ -33,6 +33,8 @@ this.tabGeneral = new System.Windows.Forms.TabPage(); this.checkBoxExtensiveLogging = new MediaPortal.UserInterface.Controls.MPCheckBox(); this.mpGroupBox1 = new MediaPortal.UserInterface.Controls.MPGroupBox(); + this.mpButton2 = new MediaPortal.UserInterface.Controls.MPButton(); + this.mpButton1 = new MediaPortal.UserInterface.Controls.MPButton(); this.numericUpDownPort = new System.Windows.Forms.NumericUpDown(); this.pictureBox1 = new System.Windows.Forms.PictureBox(); this.buttonTest = new MediaPortal.UserInterface.Controls.MPButton(); @@ -41,6 +43,14 @@ this.labelAddress = new MediaPortal.UserInterface.Controls.MPLabel(); this.labelHelp = new MediaPortal.UserInterface.Controls.MPLabel(); this.tabIncoming = new System.Windows.Forms.TabPage(); + this.groupBoxImport = new MediaPortal.UserInterface.Controls.MPGroupBox(); + this.mpLabel3 = new MediaPortal.UserInterface.Controls.MPLabel(); + this.mpLabel2 = new MediaPortal.UserInterface.Controls.MPLabel(); + this.labelSuffixHome = new MediaPortal.UserInterface.Controls.MPLabel(); + this.textBoxSuffixMobile = new MediaPortal.UserInterface.Controls.MPTextBox(); + this.textBoxSuffixHome = new MediaPortal.UserInterface.Controls.MPTextBox(); + this.mpImportFBMonitor = new MediaPortal.UserInterface.Controls.MPButton(); + this.textBoxSuffixWork = new MediaPortal.UserInterface.Controls.MPTextBox(); this.groupBoxPhonebook = new MediaPortal.UserInterface.Controls.MPGroupBox(); this.checkBoxSaveUnknownCaller = new MediaPortal.UserInterface.Controls.MPCheckBox(); this.checkBoxShowUnknownCaller = new MediaPortal.UserInterface.Controls.MPCheckBox(); @@ -60,6 +70,7 @@ this.checkBoxResumeMedia = new MediaPortal.UserInterface.Controls.MPCheckBox(); this.checkBoxStopMedia = new MediaPortal.UserInterface.Controls.MPCheckBox(); this.tabPhonebook = new System.Windows.Forms.TabPage(); + this.buttonClearAll = new MediaPortal.UserInterface.Controls.MPButton(); this.pictureBoxCaller = new System.Windows.Forms.PictureBox(); this.buttonCallerChange = new MediaPortal.UserInterface.Controls.MPButton(); this.checkBoxCallerShow = new MediaPortal.UserInterface.Controls.MPCheckBox(); @@ -76,21 +87,13 @@ this.buttonSave = new MediaPortal.UserInterface.Controls.MPButton(); this.buttonCancel = new MediaPortal.UserInterface.Controls.MPButton(); this.openFileDialog = new System.Windows.Forms.OpenFileDialog(); - this.buttonClearAll = new MediaPortal.UserInterface.Controls.MPButton(); - this.mpImportFBMonitor = new MediaPortal.UserInterface.Controls.MPButton(); - this.textBoxSuffixWork = new MediaPortal.UserInterface.Controls.MPTextBox(); - this.textBoxSuffixHome = new MediaPortal.UserInterface.Controls.MPTextBox(); - this.textBoxSuffixMobile = new MediaPortal.UserInterface.Controls.MPTextBox(); - this.groupBoxImport = new MediaPortal.UserInterface.Controls.MPGroupBox(); - this.labelSuffixHome = new MediaPortal.UserInterface.Controls.MPLabel(); - this.mpLabel2 = new MediaPortal.UserInterface.Controls.MPLabel(); - this.mpLabel3 = new MediaPortal.UserInterface.Controls.MPLabel(); this.tabControlFritzBoxSettings.SuspendLayout(); this.tabGeneral.SuspendLayout(); this.mpGroupBox1.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDownPort)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); this.tabIncoming.SuspendLayout(); + this.groupBoxImport.SuspendLayout(); this.groupBoxPhonebook.SuspendLayout(); this.groupBoxNotify.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDownMaxNotifies)).BeginInit(); @@ -99,7 +102,6 @@ this.tabPhonebook.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.pictureBoxCaller)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.dataGridView)).BeginInit(); - this.groupBoxImport.SuspendLayout(); this.SuspendLayout(); // // tabControlFritzBoxSettings @@ -143,6 +145,8 @@ // this.mpGroupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); + this.mpGroupBox1.Controls.Add(this.mpButton2); + this.mpGroupBox1.Controls.Add(this.mpButton1); this.mpGroupBox1.Controls.Add(this.numericUpDownPort); this.mpGroupBox1.Controls.Add(this.pictureBox1); this.mpGroupBox1.Controls.Add(this.buttonTest); @@ -158,16 +162,38 @@ this.mpGroupBox1.TabStop = false; this.mpGroupBox1.Text = "connection"; // + // mpButton2 + // + this.mpButton2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.mpButton2.Location = new System.Drawing.Point(434, 46); + this.mpButton2.Name = "mpButton2"; + this.mpButton2.Size = new System.Drawing.Size(121, 21); + this.mpButton2.TabIndex = 11; + this.mpButton2.Text = "Stop Listening"; + this.mpButton2.UseVisualStyleBackColor = true; + this.mpButton2.Click += new System.EventHandler(this.mpButton2_Click); + // + // mpButton1 + // + this.mpButton1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.mpButton1.Location = new System.Drawing.Point(434, 19); + this.mpButton1.Name = "mpButton1"; + this.mpButton1.Size = new System.Drawing.Size(121, 21); + this.mpButton1.TabIndex = 10; + this.mpButton1.Text = "Start Listening"; + this.mpButton1.UseVisualStyleBackColor = true; + this.mpButton1.Click += new System.EventHandler(this.mpButton1_Click); + // // numericUpDownPort // - this.numericUpDownPort.Location = new System.Drawing.Point(308, 47); + this.numericUpDownPort.Location = new System.Drawing.Point(163, 47); this.numericUpDownPort.Maximum = new decimal(new int[] { 999999, 0, 0, 0}); this.numericUpDownPort.Name = "numericUpDownPort"; - this.numericUpDownPort.Size = new System.Drawing.Size(116, 20); + this.numericUpDownPort.Size = new System.Drawing.Size(138, 20); this.numericUpDownPort.TabIndex = 9; this.numericUpDownPort.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; this.numericUpDownPort.Value = new decimal(new int[] { @@ -189,11 +215,11 @@ // buttonTest // this.buttonTest.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.buttonTest.Location = new System.Drawing.Point(480, 20); + this.buttonTest.Location = new System.Drawing.Point(307, 19); this.buttonTest.Name = "buttonTest"; - this.buttonTest.Size = new System.Drawing.Size(75, 21); + this.buttonTest.Size = new System.Drawing.Size(121, 21); this.buttonTest.TabIndex = 2; - this.buttonTest.Text = "Test"; + this.buttonTest.Text = "Test Connection"; this.buttonTest.UseVisualStyleBackColor = true; this.buttonTest.Click += new System.EventHandler(this.buttonTest_Click); // @@ -202,9 +228,9 @@ this.textBoxAddress.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.textBoxAddress.BorderColor = System.Drawing.Color.Empty; - this.textBoxAddress.Location = new System.Drawing.Point(165, 20); + this.textBoxAddress.Location = new System.Drawing.Point(163, 20); this.textBoxAddress.Name = "textBoxAddress"; - this.textBoxAddress.Size = new System.Drawing.Size(309, 20); + this.textBoxAddress.Size = new System.Drawing.Size(138, 20); this.textBoxAddress.TabIndex = 0; // // labelPort @@ -249,6 +275,93 @@ this.tabIncoming.Text = "Incoming Call"; this.tabIncoming.UseVisualStyleBackColor = true; // + // groupBoxImport + // + this.groupBoxImport.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.groupBoxImport.Controls.Add(this.mpLabel3); + this.groupBoxImport.Controls.Add(this.mpLabel2); + this.groupBoxImport.Controls.Add(this.labelSuffixHome); + this.groupBoxImport.Controls.Add(this.textBoxSuffixMobile); + this.groupBoxImport.Controls.Add(this.textBoxSuffixHome); + this.groupBoxImport.Controls.Add(this.mpImportFBMonitor); + this.groupBoxImport.Controls.Add(this.textBoxSuffixWork); + this.groupBoxImport.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.groupBoxImport.Location = new System.Drawing.Point(189, 208); + this.groupBoxImport.Name = "groupBoxImport"; + this.groupBoxImport.Size = new System.Drawing.Size(378, 95); + this.groupBoxImport.TabIndex = 3; + this.groupBoxImport.TabStop = false; + this.groupBoxImport.Text = "Fritz!Box CallMonitor import"; + // + // mpLabel3 + // + this.mpLabel3.AutoSize = true; + this.mpLabel3.Location = new System.Drawing.Point(6, 74); + this.mpLabel3.Name = "mpLabel3"; + this.mpLabel3.Size = new System.Drawing.Size(69, 13); + this.mpLabel3.TabIndex = 9; + this.mpLabel3.Text = "Suffix mobile:"; + // + // mpLabel2 + // + this.mpLabel2.AutoSize = true; + this.mpLabel2.Location = new System.Drawing.Point(6, 48); + this.mpLabel2.Name = "mpLabel2"; + this.mpLabel2.Size = new System.Drawing.Size(62, 13); + this.mpLabel2.TabIndex = 8; + this.mpLabel2.Text = "Suffix work:"; + // + // labelSuffixHome + // + this.labelSuffixHome.AutoSize = true; + this.labelSuffixHome.Location = new System.Drawing.Point(6, 22); + this.labelSuffixHome.Name = "labelSuffixHome"; + this.labelSuffixHome.Size = new System.Drawing.Size(65, 13); + this.labelSuffixHome.TabIndex = 7; + this.labelSuffixHome.Text = "Suffix home:"; + // + // textBoxSuffixMobile + // + this.textBoxSuffixMobile.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBoxSuffixMobile.BorderColor = System.Drawing.Color.Empty; + this.textBoxSuffixMobile.Location = new System.Drawing.Point(85, 71); + this.textBoxSuffixMobile.Name = "textBoxSuffixMobile"; + this.textBoxSuffixMobile.Size = new System.Drawing.Size(141, 20); + this.textBoxSuffixMobile.TabIndex = 6; + // + // textBoxSuffixHome + // + this.textBoxSuffixHome.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBoxSuffixHome.BorderColor = System.Drawing.Color.Empty; + this.textBoxSuffixHome.Location = new System.Drawing.Point(85, 19); + this.textBoxSuffixHome.Name = "textBoxSuffixHome"; + this.textBoxSuffixHome.Size = new System.Drawing.Size(141, 20); + this.textBoxSuffixHome.TabIndex = 5; + // + // mpImportFBMonitor + // + this.mpImportFBMonitor.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.mpImportFBMonitor.Location = new System.Drawing.Point(279, 66); + this.mpImportFBMonitor.Name = "mpImportFBMonitor"; + this.mpImportFBMonitor.Size = new System.Drawing.Size(93, 23); + this.mpImportFBMonitor.TabIndex = 3; + this.mpImportFBMonitor.Text = "Import"; + this.mpImportFBMonitor.UseVisualStyleBackColor = true; + this.mpImportFBMonitor.Click += new System.EventHandler(this.mpImportFBMonitor_Click); + // + // textBoxSuffixWork + // + this.textBoxSuffixWork.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBoxSuffixWork.BorderColor = System.Drawing.Color.Empty; + this.textBoxSuffixWork.Location = new System.Drawing.Point(85, 45); + this.textBoxSuffixWork.Name = "textBoxSuffixWork"; + this.textBoxSuffixWork.Size = new System.Drawing.Size(141, 20); + this.textBoxSuffixWork.TabIndex = 4; + // // groupBoxPhonebook // this.groupBoxPhonebook.Controls.Add(this.checkBoxSaveUnknownCaller); @@ -507,6 +620,17 @@ this.tabPhonebook.Text = "Phonebook"; this.tabPhonebook.UseVisualStyleBackColor = true; // + // buttonClearAll + // + this.buttonClearAll.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.buttonClearAll.Location = new System.Drawing.Point(467, 37); + this.buttonClearAll.Name = "buttonClearAll"; + this.buttonClearAll.Size = new System.Drawing.Size(100, 25); + this.buttonClearAll.TabIndex = 14; + this.buttonClearAll.Text = "Clear All"; + this.buttonClearAll.UseVisualStyleBackColor = true; + this.buttonClearAll.Click += new System.EventHandler(this.buttonClearAll_Click); + // // pictureBoxCaller // this.pictureBoxCaller.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); @@ -667,106 +791,8 @@ this.buttonCancel.UseVisualStyleBackColor = true; this.buttonCancel.Click += new System.EventHandler(this.buttonCancel_Click); // - // buttonClearAll + // FritzBoxConfig // - this.buttonClearAll.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.buttonClearAll.Location = new System.Drawing.Point(467, 37); - this.buttonClearAll.Name = "buttonClearAll"; - this.buttonClearAll.Size = new System.Drawing.Size(100, 25); - this.buttonClearAll.TabIndex = 14; - this.buttonClearAll.Text = "Clear All"; - this.buttonClearAll.UseVisualStyleBackColor = true; - this.buttonClearAll.Click += new System.EventHandler(this.buttonClearAll_Click); - // - // mpImportFBMonitor - // - this.mpImportFBMonitor.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.mpImportFBMonitor.Location = new System.Drawing.Point(279, 66); - this.mpImportFBMonitor.Name = "mpImportFBMonitor"; - this.mpImportFBMonitor.Size = new System.Drawing.Size(93, 23); - this.mpImportFBMonitor.TabIndex = 3; - this.mpImportFBMonitor.Text = "Import"; - this.mpImportFBMonitor.UseVisualStyleBackColor = true; - this.mpImportFBMonitor.Click += new System.EventHandler(this.mpImportFBMonitor_Click); - // - // textBoxSuffixWork - // - this.textBoxSuffixWork.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.textBoxSuffixWork.BorderColor = System.Drawing.Color.Empty; - this.textBoxSuffixWork.Location = new System.Drawing.Point(85, 45); - this.textBoxSuffixWork.Name = "textBoxSuffixWork"; - this.textBoxSuffixWork.Size = new System.Drawing.Size(141, 20); - this.textBoxSuffixWork.TabIndex = 4; - // - // textBoxSuffixHome - // - this.textBoxSuffixHome.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.textBoxSuffixHome.BorderColor = System.Drawing.Color.Empty; - this.textBoxSuffixHome.Location = new System.Drawing.Point(85, 19); - this.textBoxSuffixHome.Name = "textBoxSuffixHome"; - this.textBoxSuffixHome.Size = new System.Drawing.Size(141, 20); - this.textBoxSuffixHome.TabIndex = 5; - // - // textBoxSuffixMobile - // - this.textBoxSuffixMobile.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.textBoxSuffixMobile.BorderColor = System.Drawing.Color.Empty; - this.textBoxSuffixMobile.Location = new System.Drawing.Point(85, 71); - this.textBoxSuffixMobile.Name = "textBoxSuffixMobile"; - this.textBoxSuffixMobile.Size = new System.Drawing.Size(141, 20); - this.textBoxSuffixMobile.TabIndex = 6; - // - // groupBoxImport - // - this.groupBoxImport.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.groupBoxImport.Controls.Add(this.mpLabel3); - this.groupBoxImport.Controls.Add(this.mpLabel2); - this.groupBoxImport.Controls.Add(this.labelSuffixHome); - this.groupBoxImport.Controls.Add(this.textBoxSuffixMobile); - this.groupBoxImport.Controls.Add(this.textBoxSuffixHome); - this.groupBoxImport.Controls.Add(this.mpImportFBMonitor); - this.groupBoxImport.Controls.Add(this.textBoxSuffixWork); - this.groupBoxImport.FlatStyle = System.Windows.Forms.FlatStyle.Popup; - this.groupBoxImport.Location = new System.Drawing.Point(189, 208); - this.groupBoxImport.Name = "groupBoxImport"; - this.groupBoxImport.Size = new System.Drawing.Size(378, 95); - this.groupBoxImport.TabIndex = 3; - this.groupBoxImport.TabStop = false; - this.groupBoxImport.Text = "Fritz!Box CallMonitor import"; - // - // labelSuffixHome - // - this.labelSuffixHome.AutoSize = true; - this.labelSuffixHome.Location = new System.Drawing.Point(6, 22); - this.labelSuffixHome.Name = "labelSuffixHome"; - this.labelSuffixHome.Size = new System.Drawing.Size(65, 13); - this.labelSuffixHome.TabIndex = 7; - this.labelSuffixHome.Text = "Suffix home:"; - // - // mpLabel2 - // - this.mpLabel2.AutoSize = true; - this.mpLabel2.Location = new System.Drawing.Point(6, 48); - this.mpLabel2.Name = "mpLabel2"; - this.mpLabel2.Size = new System.Drawing.Size(62, 13); - this.mpLabel2.TabIndex = 8; - this.mpLabel2.Text = "Suffix work:"; - // - // mpLabel3 - // - this.mpLabel3.AutoSize = true; - this.mpLabel3.Location = new System.Drawing.Point(6, 74); - this.mpLabel3.Name = "mpLabel3"; - this.mpLabel3.Size = new System.Drawing.Size(69, 13); - this.mpLabel3.TabIndex = 9; - this.mpLabel3.Text = "Suffix mobile:"; - // - // FritzBoxSetupFrom - // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(602, 439); @@ -778,7 +804,7 @@ this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); this.MaximizeBox = false; this.MinimizeBox = false; - this.Name = "FritzBoxSetupFrom"; + this.Name = "FritzBoxConfig"; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; this.Text = "FRITZ!Box configuration"; this.tabControlFritzBoxSettings.ResumeLayout(false); @@ -789,6 +815,8 @@ ((System.ComponentModel.ISupportInitialize)(this.numericUpDownPort)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); this.tabIncoming.ResumeLayout(false); + this.groupBoxImport.ResumeLayout(false); + this.groupBoxImport.PerformLayout(); this.groupBoxPhonebook.ResumeLayout(false); this.groupBoxPhonebook.PerformLayout(); this.groupBoxNotify.ResumeLayout(false); @@ -801,8 +829,6 @@ this.tabPhonebook.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.pictureBoxCaller)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.dataGridView)).EndInit(); - this.groupBoxImport.ResumeLayout(false); - this.groupBoxImport.PerformLayout(); this.ResumeLayout(false); } @@ -865,5 +891,7 @@ private MediaPortal.UserInterface.Controls.MPLabel mpLabel3; private MediaPortal.UserInterface.Controls.MPLabel mpLabel2; private MediaPortal.UserInterface.Controls.MPLabel labelSuffixHome; + private MediaPortal.UserInterface.Controls.MPButton mpButton2; + private MediaPortal.UserInterface.Controls.MPButton mpButton1; } } \ No newline at end of file Modified: trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.cs 2009-06-03 10:27:01 UTC (rev 2892) +++ trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.cs 2009-06-03 11:20:39 UTC (rev 2893) @@ -7,6 +7,8 @@ { public partial class FritzBoxConfig : Form { + private delegate void SetTextCallback(FritzBoxClient.LogLevel logLevel, string logMessage); + public FritzBoxConfig() { InitializeComponent(); @@ -105,11 +107,13 @@ private void buttonSave_Click(object sender, EventArgs e) { SaveSettings(); + mpButton2_Click(null, null); Close(); } private void buttonCancel_Click(object sender, EventArgs e) { + mpButton2_Click(null, null); Close(); } @@ -342,5 +346,37 @@ dataGridView.Rows.Clear(); } } + + private void OnLogAction(FritzBoxClient.LogLevel logLevel, string logMessage) + { + if (labelHelp.InvokeRequired) + { + SetTextCallback d = new SetTextCallback(OnLogAction); + Invoke(d, new object[] {logLevel, logMessage}); + } + else + { + labelHelp.Text = logMessage; + } + } + + + private void mpButton1_Click(object sender, EventArgs e) + { + FritzBoxClient.StopClient(); + FritzBoxClient.LogEvent -= new FritzBoxClient.LogEventHandler(OnLogAction); + + FritzBoxClient.Address = textBoxAddress.Text; + FritzBoxClient.Port = (int) numericUpDownPort.Value; + + FritzBoxClient.LogEvent += new FritzBoxClient.LogEventHandler(OnLogAction); + FritzBoxClient.StartClient(); + } + + private void mpButton2_Click(object sender, EventArgs e) + { + FritzBoxClient.StopClient(); + FritzBoxClient.LogEvent -= new FritzBoxClient.LogEventHandler(OnLogAction); + } } } \ No newline at end of file Modified: trunk/plugins/FritzBox/FritzBox/PhoneBook.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/PhoneBook.cs 2009-06-03 10:27:01 UTC (rev 2892) +++ trunk/plugins/FritzBox/FritzBox/PhoneBook.cs 2009-06-03 11:20:39 UTC (rev 2893) @@ -188,7 +188,7 @@ string line; line = sr.ReadLine(); // sep=; line = sr.ReadLine(); - // Name;TelNumHome;VanityHome;KurzWahlHome;TelNumWork;VanityWork;KurzWahlWork;TelNumMobile;VanityMobile;KurzWahlMobile;Kommentar;Firma;Bild;Kategorie;ImageUrl;Prio;Email;RingTone;RingVol + // Name;TelNumHome;VanityHome;KurzWahlHome;TelNumWork;VanityWork;KurzWahlWork;TelNumMobile;VanityMobile;KurzWahlMobile;Kommentar;Firma;Bild;Kategorie;ImageUrl;Prio;Email;RingTone;RingVol // Read and display lines from the file until the end of // the file is reached. Modified: trunk/plugins/FritzBox/FritzBox.xmp =================================================================== --- trunk/plugins/FritzBox/FritzBox.xmp 2009-06-03 10:27:01 UTC (rev 2892) +++ trunk/plugins/FritzBox/FritzBox.xmp 2009-06-03 11:20:39 UTC (rev 2893) @@ -8,7 +8,7 @@ <Source>FritzBox\gfx\Thumbs\YAC\_noImage.png</Source> <Id>04010</Id> <Option>OutputFileName=|DefaultFile=False|</Option> - <Guid>50ad31a4-8bb5-46f9-a0de-926c73efd882</Guid> + <Guid>7a7156bf-e392-4642-a000-0479fe5ae78c</Guid> </File> <File> <FileName>_unknown.png</FileName> @@ -17,7 +17,7 @@ <Source>FritzBox\gfx\Thumbs\YAC\_unknown.png</Source> <Id>04010</Id> <Option /> - <Guid>c1ccf2f7-224a-40a0-9638-72534fc56b73</Guid> + <Guid>7adf16d6-658b-4ddc-8e0b-0a2bac04b515</Guid> </File> <File> <FileName>FritzBox.dll</FileName> @@ -26,7 +26,7 @@ <Source>FritzBox\bin\Release\FritzBox.dll</Source> <Id>01020</Id> <Option /> - <Guid>79cdff81-638b-438f-861d-e4269eadd0fb</Guid> + <Guid>56a8e93d-26db-4295-b77e-f813a9dda85b</Guid> </File> </FileList> <StringList /> @@ -36,12 +36,12 @@ <SetupGroups /> <SetupGroupMappings /> <Option> - <BuildFileName>D:\mediaportal\mediaportal_plugins\FritzBox\FritzBox_v0.3.2.5.mpi</BuildFileName> - <ProiectFileName>D:\mediaportal\mediaportal_plugins\FritzBox\FritzBox.xmp</ProiectFileName> + <BuildFileName>G:\MediaPortal\mp-plugins\trunk\plugins\FritzBox\FritzBox_v0.3.3.0.MPE1</BuildFileName> + <ProiectFileName>G:\MediaPortal\mp-plugins\trunk\plugins\FritzBox\FritzBox.xmp</ProiectFileName> <ProiectName>FRITZ!Box CallMonitor</ProiectName> <Author>chefkoch @ Team MediaPortal</Author> <UpdateURL>http://www.team-mediaportal.com/files/Download/MediaPortalInstaller(MPI)/Input/FRITZ!BoxCallMonitor/</UpdateURL> - <Version>0.3.2.5</Version> + <Version>0.3.3.0</Version> <Description>The FRITZ!Box plugin is a process plugin, which is able to notify you within MediaPortal on an incomming call on your FRITZ!Box. All strings are multi language. @@ -53,16 +53,20 @@ The plugin supports pictures for each caller. You can place a picture in "ThumbsYAC"-directory which is in jpg, png or bmp format. The filename have to be the specified name NOT the callerid. </Description> <Group>Input</Group> <Release>Stable </Release> @@ Diff output truncated at 100000 characters. @@ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <che...@us...> - 2009-06-03 11:32:22
|
Revision: 2894 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=2894&view=rev Author: chef_koch Date: 2009-06-03 11:32:20 +0000 (Wed, 03 Jun 2009) Log Message: ----------- change: plugin is enabled by default Modified Paths: -------------- trunk/plugins/FritzBox/FritzBox/ConfigConnector.cs trunk/plugins/FritzBox/FritzBox.xmp Modified: trunk/plugins/FritzBox/FritzBox/ConfigConnector.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/ConfigConnector.cs 2009-06-03 11:20:39 UTC (rev 2893) +++ trunk/plugins/FritzBox/FritzBox/ConfigConnector.cs 2009-06-03 11:32:20 UTC (rev 2894) @@ -53,7 +53,7 @@ public bool DefaultEnabled() { - return false; + return true; } public bool HasSetup() Modified: trunk/plugins/FritzBox/FritzBox.xmp =================================================================== --- trunk/plugins/FritzBox/FritzBox.xmp 2009-06-03 11:20:39 UTC (rev 2893) +++ trunk/plugins/FritzBox/FritzBox.xmp 2009-06-03 11:32:20 UTC (rev 2894) @@ -8,7 +8,7 @@ <Source>FritzBox\gfx\Thumbs\YAC\_noImage.png</Source> <Id>04010</Id> <Option>OutputFileName=|DefaultFile=False|</Option> - <Guid>7a7156bf-e392-4642-a000-0479fe5ae78c</Guid> + <Guid>fb39a919-8c64-4cdd-aabe-32f33081e726</Guid> </File> <File> <FileName>_unknown.png</FileName> @@ -17,7 +17,7 @@ <Source>FritzBox\gfx\Thumbs\YAC\_unknown.png</Source> <Id>04010</Id> <Option /> - <Guid>7adf16d6-658b-4ddc-8e0b-0a2bac04b515</Guid> + <Guid>3afdd58a-7f90-4271-905a-d8b7cfbe0ea7</Guid> </File> <File> <FileName>FritzBox.dll</FileName> @@ -26,7 +26,7 @@ <Source>FritzBox\bin\Release\FritzBox.dll</Source> <Id>01020</Id> <Option /> - <Guid>56a8e93d-26db-4295-b77e-f813a9dda85b</Guid> + <Guid>c1872ff9-27d8-48f5-adc2-8cbf41223e36</Guid> </File> </FileList> <StringList /> @@ -54,7 +54,7 @@ <Group>Input</Group> <Release>Stable </Release> <Script /> - <Logo>iVBORw0KGgoAAAANSUhEUgAAATcAAAD5CAYAAABCt3JCAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAALDgAACw4BQL7hQQAA3FhJREFUeF7t/Qd3VGe27o/uO8b5CPeee84+d5/933l3u9vttrvbbrttt912226Hto0NBoPBYJNzzjnnnHPOCEkgEQRCJCGCCEIEiZxzBpFq3ud5a83irVerSiUM2LIWY8xRQipVWFrrV8/M/69QKCT/EPwLjoB3BK5du/YPe/bs+YebN2/+w//+3//7H5577rl/+B//438Exyc4AmXvCBBugQXH4MaNG9K1a1f5wx/+IC+//LK88sorxv7617/KokWLgnMkuE7K3DnwDwHYArBBpcnnn38uL730kgHaxx9/LC1atJAGDRrIO++8Y2A3ZMiQMndyB+d2+T63A7gFn8jSqVMnef755+X3v/+9vP3229KvXz+BayqbN2+W5s2by+uvv27At2nTpgBwwflSZs6BAG7l/GRFjE3+/d//3cCNAHv//felYcOGMmjQIOnbt698++23Bngvvvii1K9fv8yc2IFqK9+qzeQSgpOgfJ8EmZmZ8s///M+CxIFxST/77DOpUaOG1KtXT+rUqSPVqlWTDz/80MCP8bjgfCnf50tZ+vsHcCvnym3x4sXyj//4jwZub731llSuXNmArWnTptKkSROpXbu2VKhQwcTdfvGLXwRwK+fnSwC34AQoMxBYsmSJ/NM//ZOBG91PKjW6pS1btjRJBYKuYsWK8uqrrwZwC87rMnNeB25pcLKKwu3Xv/61vPvuu/LNN99I48aNpXXr1tKqVSsTZ/vqq6/ktddeMwAsS5/cwWst3y504JaWc8Ap3BhTe++990wCoVmzZtKuXTtp27atNGrUSKpUqWIypgRgAIzyDYyy9PcP4FbO4ZaUlGQSCi+88ILJlNaqVcu4ox06dJD27dubuFvVqlXljTfeMEmFsnRyB6+1fIM4gFsANwM3lnp88MEH8v333xt3tEuXLqb+jSqOruqf//znAG7l/Fwpax8WAdzK+QlL5fYv//IvBm4fffSRKf+gO9qtWzcDOKo4loYw2UB1V9ZO8OD1ll/1FsAtgJuBGwt42XbFBALd0Z49exrAMbFQs2ZN04ZFAAawKL+wKGt/+wBuAdwM3Nh69cknn5h+UrqjvXr1MoCjimMcjplU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... [truncated message content] |
From: <che...@us...> - 2009-06-16 02:53:48
|
Revision: 2923 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=2923&view=rev Author: chef_koch Date: 2009-06-16 00:45:30 +0000 (Tue, 16 Jun 2009) Log Message: ----------- updated file headers Modified Paths: -------------- trunk/plugins/FritzBox/FritzBox/CallAction.cs trunk/plugins/FritzBox/FritzBox/Caller.cs trunk/plugins/FritzBox/FritzBox/FritzBox.cs trunk/plugins/FritzBox/FritzBox/FritzBoxClient.cs trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.cs trunk/plugins/FritzBox/FritzBox/PhoneBook.cs trunk/plugins/FritzBox/FritzBox/Properties/AssemblyInfo.cs trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/Program.cs trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/Properties/AssemblyInfo.cs trunk/plugins/FritzBox/Tools/FritzBoxDebugger/DebugForm.cs trunk/plugins/FritzBox/Tools/FritzBoxDebugger/Program.cs trunk/plugins/FritzBox/Tools/FritzBoxDebugger/Properties/AssemblyInfo.cs Modified: trunk/plugins/FritzBox/FritzBox/CallAction.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/CallAction.cs 2009-06-16 00:22:25 UTC (rev 2922) +++ trunk/plugins/FritzBox/FritzBox/CallAction.cs 2009-06-16 00:45:30 UTC (rev 2923) @@ -1,3 +1,25 @@ +#region Copyright (C) 2005-2009 Team MediaPortal + +// Copyright (C) 2005-2009 Team MediaPortal +// http://www.team-mediaportal.com +// +// 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, 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 GNU Make; see the file COPYING. If not, write to +// the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. +// http://www.gnu.org/copyleft/gpl.html + +#endregion + using System; using MediaPortal.ServiceImplementations; Modified: trunk/plugins/FritzBox/FritzBox/Caller.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/Caller.cs 2009-06-16 00:22:25 UTC (rev 2922) +++ trunk/plugins/FritzBox/FritzBox/Caller.cs 2009-06-16 00:45:30 UTC (rev 2923) @@ -1,25 +1,22 @@ -#region Copyright (C) 2005-2007 Team MediaPortal +#region Copyright (C) 2005-2009 Team MediaPortal -/* - * Copyright (C) 2005-2007 Team MediaPortal - * http://www.team-mediaportal.com - * - * 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, 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 GNU Make; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. - * http://www.gnu.org/copyleft/gpl.html - * - */ +// Copyright (C) 2005-2009 Team MediaPortal +// http://www.team-mediaportal.com +// +// 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, 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 GNU Make; see the file COPYING. If not, write to +// the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. +// http://www.gnu.org/copyleft/gpl.html #endregion Modified: trunk/plugins/FritzBox/FritzBox/FritzBox.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/FritzBox.cs 2009-06-16 00:22:25 UTC (rev 2922) +++ trunk/plugins/FritzBox/FritzBox/FritzBox.cs 2009-06-16 00:45:30 UTC (rev 2923) @@ -1,25 +1,22 @@ -#region Copyright (C) 2005-2007 Team MediaPortal +#region Copyright (C) 2005-2009 Team MediaPortal -/* - * Copyright (C) 2005-2007 Team MediaPortal - * http://www.team-mediaportal.com - * - * 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, 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 GNU Make; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. - * http://www.gnu.org/copyleft/gpl.html - * - */ +// Copyright (C) 2005-2009 Team MediaPortal +// http://www.team-mediaportal.com +// +// 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, 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 GNU Make; see the file COPYING. If not, write to +// the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. +// http://www.gnu.org/copyleft/gpl.html #endregion Modified: trunk/plugins/FritzBox/FritzBox/FritzBoxClient.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/FritzBoxClient.cs 2009-06-16 00:22:25 UTC (rev 2922) +++ trunk/plugins/FritzBox/FritzBox/FritzBoxClient.cs 2009-06-16 00:45:30 UTC (rev 2923) @@ -1,3 +1,25 @@ +#region Copyright (C) 2005-2009 Team MediaPortal + +// Copyright (C) 2005-2009 Team MediaPortal +// http://www.team-mediaportal.com +// +// 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, 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 GNU Make; see the file COPYING. If not, write to +// the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. +// http://www.gnu.org/copyleft/gpl.html + +#endregion + using System; using System.Globalization; using System.Net; Modified: trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.cs 2009-06-16 00:22:25 UTC (rev 2922) +++ trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.cs 2009-06-16 00:45:30 UTC (rev 2923) @@ -1,3 +1,25 @@ +#region Copyright (C) 2005-2009 Team MediaPortal + +// Copyright (C) 2005-2009 Team MediaPortal +// http://www.team-mediaportal.com +// +// 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, 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 GNU Make; see the file COPYING. If not, write to +// the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. +// http://www.gnu.org/copyleft/gpl.html + +#endregion + using System; using System.IO; using System.Windows.Forms; Modified: trunk/plugins/FritzBox/FritzBox/PhoneBook.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/PhoneBook.cs 2009-06-16 00:22:25 UTC (rev 2922) +++ trunk/plugins/FritzBox/FritzBox/PhoneBook.cs 2009-06-16 00:45:30 UTC (rev 2923) @@ -1,25 +1,22 @@ -#region Copyright (C) 2005-2007 Team MediaPortal +#region Copyright (C) 2005-2009 Team MediaPortal -/* - * Copyright (C) 2005-2007 Team MediaPortal - * http://www.team-mediaportal.com - * - * 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, 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 GNU Make; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. - * http://www.gnu.org/copyleft/gpl.html - * - */ +// Copyright (C) 2005-2009 Team MediaPortal +// http://www.team-mediaportal.com +// +// 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, 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 GNU Make; see the file COPYING. If not, write to +// the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. +// http://www.gnu.org/copyleft/gpl.html #endregion Modified: trunk/plugins/FritzBox/FritzBox/Properties/AssemblyInfo.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/Properties/AssemblyInfo.cs 2009-06-16 00:22:25 UTC (rev 2922) +++ trunk/plugins/FritzBox/FritzBox/Properties/AssemblyInfo.cs 2009-06-16 00:45:30 UTC (rev 2923) @@ -1,3 +1,25 @@ +#region Copyright (C) 2005-2009 Team MediaPortal + +// Copyright (C) 2005-2009 Team MediaPortal +// http://www.team-mediaportal.com +// +// 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, 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 GNU Make; see the file COPYING. If not, write to +// the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. +// http://www.gnu.org/copyleft/gpl.html + +#endregion + using System.Reflection; using System.Runtime.InteropServices; Modified: trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/Program.cs =================================================================== --- trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/Program.cs 2009-06-16 00:22:25 UTC (rev 2922) +++ trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/Program.cs 2009-06-16 00:45:30 UTC (rev 2923) @@ -1,3 +1,25 @@ +#region Copyright (C) 2005-2009 Team MediaPortal + +// Copyright (C) 2005-2009 Team MediaPortal +// http://www.team-mediaportal.com +// +// 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, 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 GNU Make; see the file COPYING. If not, write to +// the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. +// http://www.gnu.org/copyleft/gpl.html + +#endregion + using System; using System.Windows.Forms; using FritzBox; Modified: trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/Properties/AssemblyInfo.cs =================================================================== --- trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/Properties/AssemblyInfo.cs 2009-06-16 00:22:25 UTC (rev 2922) +++ trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/Properties/AssemblyInfo.cs 2009-06-16 00:45:30 UTC (rev 2923) @@ -1,3 +1,25 @@ +#region Copyright (C) 2005-2009 Team MediaPortal + +// Copyright (C) 2005-2009 Team MediaPortal +// http://www.team-mediaportal.com +// +// 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, 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 GNU Make; see the file COPYING. If not, write to +// the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. +// http://www.gnu.org/copyleft/gpl.html + +#endregion + using System.Reflection; using System.Runtime.InteropServices; Modified: trunk/plugins/FritzBox/Tools/FritzBoxDebugger/DebugForm.cs =================================================================== --- trunk/plugins/FritzBox/Tools/FritzBoxDebugger/DebugForm.cs 2009-06-16 00:22:25 UTC (rev 2922) +++ trunk/plugins/FritzBox/Tools/FritzBoxDebugger/DebugForm.cs 2009-06-16 00:45:30 UTC (rev 2923) @@ -1,3 +1,25 @@ +#region Copyright (C) 2005-2009 Team MediaPortal + +// Copyright (C) 2005-2009 Team MediaPortal +// http://www.team-mediaportal.com +// +// 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, 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 GNU Make; see the file COPYING. If not, write to +// the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. +// http://www.gnu.org/copyleft/gpl.html + +#endregion + using System; using System.Windows.Forms; using FritzBox; Modified: trunk/plugins/FritzBox/Tools/FritzBoxDebugger/Program.cs =================================================================== --- trunk/plugins/FritzBox/Tools/FritzBoxDebugger/Program.cs 2009-06-16 00:22:25 UTC (rev 2922) +++ trunk/plugins/FritzBox/Tools/FritzBoxDebugger/Program.cs 2009-06-16 00:45:30 UTC (rev 2923) @@ -1,3 +1,25 @@ +#region Copyright (C) 2005-2009 Team MediaPortal + +// Copyright (C) 2005-2009 Team MediaPortal +// http://www.team-mediaportal.com +// +// 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, 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 GNU Make; see the file COPYING. If not, write to +// the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. +// http://www.gnu.org/copyleft/gpl.html + +#endregion + using System; using System.Windows.Forms; Modified: trunk/plugins/FritzBox/Tools/FritzBoxDebugger/Properties/AssemblyInfo.cs =================================================================== --- trunk/plugins/FritzBox/Tools/FritzBoxDebugger/Properties/AssemblyInfo.cs 2009-06-16 00:22:25 UTC (rev 2922) +++ trunk/plugins/FritzBox/Tools/FritzBoxDebugger/Properties/AssemblyInfo.cs 2009-06-16 00:45:30 UTC (rev 2923) @@ -1,3 +1,25 @@ +#region Copyright (C) 2005-2009 Team MediaPortal + +// Copyright (C) 2005-2009 Team MediaPortal +// http://www.team-mediaportal.com +// +// 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, 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 GNU Make; see the file COPYING. If not, write to +// the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. +// http://www.gnu.org/copyleft/gpl.html + +#endregion + using System.Reflection; using System.Runtime.InteropServices; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <che...@us...> - 2009-06-16 02:59:53
|
Revision: 2927 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=2927&view=rev Author: chef_koch Date: 2009-06-16 02:59:51 +0000 (Tue, 16 Jun 2009) Log Message: ----------- fixed starting plugin as process plugin improved connection test in configuration Modified Paths: -------------- trunk/plugins/FritzBox/FritzBox/FritzBox.cs trunk/plugins/FritzBox/FritzBox/FritzBox.csproj trunk/plugins/FritzBox/FritzBox/FritzBoxClient.cs trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.Designer.cs trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.cs trunk/plugins/FritzBox/FritzBox.xmp trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/FritzBoxConfigTester.csproj trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/Program.cs trunk/plugins/FritzBox/Tools/FritzBoxDebugger/DebugForm.cs trunk/plugins/FritzBox/Tools/FritzBoxDebugger/FritzBoxDebugger.csproj Modified: trunk/plugins/FritzBox/FritzBox/FritzBox.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/FritzBox.cs 2009-06-16 02:49:27 UTC (rev 2926) +++ trunk/plugins/FritzBox/FritzBox/FritzBox.cs 2009-06-16 02:59:51 UTC (rev 2927) @@ -33,7 +33,7 @@ namespace FritzBox { [PluginIcons("FritzBox.FritzBox.png", "FritzBox.FritzBoxDisabled.png")] - public class FritzBox : IPlugin + public class FritzBox : ISetupForm, IPlugin { public class Settings { @@ -240,7 +240,7 @@ #region Variables - public const string _version = "0.3.3.0"; + public const string _version = "0.3.3.1"; private readonly List<CallAction> actionList = new List<CallAction>(); private object tempNotify = null; @@ -537,6 +537,68 @@ #endregion + #region ISetupForm Member + + public string PluginName() + { + return "FRITZ!Box CallMonitor"; + } + + public string Author() + { + return "chefkoch"; + } + + public string Description() + { + return "Displays FRITZ!Box calling information."; + } + + public void ShowPlugin() + { + try + { + FritzBoxConfig config = new FritzBoxConfig(); + config.ShowDialog(); + } + catch (Exception ex) + { + Log.Error(ex); + } + } + + public bool CanEnable() + { + return true; + } + + public int GetWindowId() + { + return -1; + } + + public bool DefaultEnabled() + { + return true; + } + + public bool HasSetup() + { + return true; + } + + public bool GetHome(out string strButtonText, out string strButtonImage, out string strButtonImageFocus, + out string strPictureImage) + { + strButtonText = null; + strButtonImage = null; + strButtonImageFocus = null; + strPictureImage = null; + return false; + } + #endregion + + #endregion } } \ No newline at end of file Modified: trunk/plugins/FritzBox/FritzBox/FritzBox.csproj =================================================================== --- trunk/plugins/FritzBox/FritzBox/FritzBox.csproj 2009-06-16 02:49:27 UTC (rev 2926) +++ trunk/plugins/FritzBox/FritzBox/FritzBox.csproj 2009-06-16 02:59:51 UTC (rev 2927) @@ -54,7 +54,6 @@ </Reference> </ItemGroup> <ItemGroup> - <Compile Include="ConfigConnector.cs" /> <Compile Include="FritzBoxClient.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Caller.cs" /> @@ -85,16 +84,10 @@ <SubType>Designer</SubType> <DependentUpon>FritzBoxConfig.cs</DependentUpon> </EmbeddedResource> - <EmbeddedResource Include="FritzBoxDisabled.png" /> - <EmbeddedResource Include="FritzBox.png" /> </ItemGroup> <ItemGroup> - <Content Include="FritzBox.png"> - <CopyToOutputDirectory>Always</CopyToOutputDirectory> - </Content> - <Content Include="FritzBoxDisabled.png"> - <CopyToOutputDirectory>Always</CopyToOutputDirectory> - </Content> + <EmbeddedResource Include="FritzBox.png" /> + <EmbeddedResource Include="FritzBoxDisabled.png" /> </ItemGroup> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> <!-- To modify your build process, add your task inside one of the targets below and uncomment it. @@ -105,7 +98,7 @@ </Target> --> <PropertyGroup> - <PostBuildEvent> - </PostBuildEvent> + <PostBuildEvent>rem xcopy /y "$(TargetPath)" "$(SolutionDir)\xbmc\bin\$(ConfigurationName)\plugins\process" +</PostBuildEvent> </PropertyGroup> </Project> \ No newline at end of file Modified: trunk/plugins/FritzBox/FritzBox/FritzBoxClient.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/FritzBoxClient.cs 2009-06-16 02:49:27 UTC (rev 2926) +++ trunk/plugins/FritzBox/FritzBox/FritzBoxClient.cs 2009-06-16 02:59:51 UTC (rev 2927) @@ -111,44 +111,57 @@ public static void StartClient() { - Log(LogLevel.Debug, "StartClient"); - connectionFailed = DateTime.MinValue; + try + { + connectionFailed = DateTime.MinValue; - Thread thread = new Thread(new ThreadStart(Connect)); - thread.Start(); + Thread thread = new Thread(new ThreadStart(Connect)); + thread.Start(); + } + catch (Exception ex) + { + Log(ex); + } } public static void StopClient() { - Log(LogLevel.Debug, "StopClient"); try { // Release the socket. _client.Shutdown(SocketShutdown.Both); _client.Close(); } - catch (Exception e) + catch (Exception ex) { - Log(LogLevel.Error, e.ToString()); + Log(ex); } } - // todo - public static string TestConnection() + public static void TestConnection() { - TcpClient TcpClient; - try { - TcpClient = new TcpClient(Address, Port); + Log(LogLevel.Info, "Testing port, please wait..."); + TcpClient TcpClient; + + try + { + TcpClient = new TcpClient(Address, Port); + } + catch (Exception) + { + Log(LogLevel.Error, "Port test failed: Make sure you are using the latest firmware and the call monitor is enabled (#96*5*)"); + return; + } + + TcpClient.Close(); + Log(LogLevel.Info, "Testing port succeeded."); } - catch (Exception) + catch (Exception ex) { - return "Error!\nMake sure you are using the latest firmware and the call monitor is enabled (#96*5*)"; + Log(ex); } - - TcpClient.Close(); - return "Succeeded!"; } #endregion @@ -157,17 +170,21 @@ private static void ReConnect() { - Log(LogLevel.Debug, "ReConnect"); - connectionFailed = DateTime.Now; + try + { + connectionFailed = DateTime.Now; - Thread thread = new Thread(new ThreadStart(Connect)); - thread.Start(); + Thread thread = new Thread(new ThreadStart(Connect)); + thread.Start(); + } + catch (Exception ex) + { + Log(ex); + } } private static void Connect() { - Log(LogLevel.Debug, "Connect"); - // Enforce a minimum wait time between connects. DateTime nextconnect = connectionFailed.Add(minConnectWaitTime); if (DateTime.Now < nextconnect) @@ -199,15 +216,14 @@ Log(LogLevel.Info, "FRITZ!BOX connection lost, trying to reconnect."); ReConnect(); } - catch (Exception e) + catch (Exception ex) { - Log(e); + Log(ex); } } private static void ConnectCallback(IAsyncResult ar) { - Log(LogLevel.Debug, "ConnectCallback"); try { // Retrieve the socket from the state object. @@ -227,44 +243,43 @@ Log(LogLevel.Info, "FRITZ!BOX connection lost, trying to reconnect."); ReConnect(); } - catch (Exception e) + catch (Exception ex) { - Log(e); + Log(ex); } } private static void Receive(Socket client) { - Log(LogLevel.Debug, "Receive"); try { // Create the state object. - Log(LogLevel.HeavyDebug, "StateObject state = new StateObject();"); + //Log(LogLevel.HeavyDebug, "StateObject state = new StateObject();"); StateObject state = new StateObject(); - Log(LogLevel.HeavyDebug, "state.workSocket = client;"); + //Log(LogLevel.HeavyDebug, "state.workSocket = client;"); state.workSocket = client; - Log(LogLevel.HeavyDebug, "Available {0}", client.Available); - Log(LogLevel.HeavyDebug, "Connected {0}", client.Connected); - Log(LogLevel.HeavyDebug, "IsBound {0}", client.IsBound); + //Log(LogLevel.HeavyDebug, "Available {0}", client.Available); + //Log(LogLevel.HeavyDebug, "Connected {0}", client.Connected); + //Log(LogLevel.HeavyDebug, "IsBound {0}", client.IsBound); //Log(LogLevel.HeavyDebug, "{0}", client.Connected); // Begin receiving the data from the remote device. - Log(LogLevel.HeavyDebug, "client.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0,"); + //Log(LogLevel.HeavyDebug, "client.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0,"); client.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReceiveCallback), state); } - catch (SocketException e) + catch (SocketException ex) { - Log(LogLevel.HeavyDebug, "{0}", e.NativeErrorCode); - Log(LogLevel.HeavyDebug, "{0}", e.SocketErrorCode); - Log(LogLevel.HeavyDebug, "{0}", e.Data); - Log(LogLevel.HeavyDebug, "{0}", e.ErrorCode); - Log(LogLevel.HeavyDebug, "{0}", e.InnerException); - Log(LogLevel.HeavyDebug, e.Message); - Log(LogLevel.HeavyDebug, e.Source); - Log(LogLevel.HeavyDebug, e.StackTrace); + Log(LogLevel.HeavyDebug, "{0}", ex.NativeErrorCode); + Log(LogLevel.HeavyDebug, "{0}", ex.SocketErrorCode); + Log(LogLevel.HeavyDebug, "{0}", ex.Data); + Log(LogLevel.HeavyDebug, "{0}", ex.ErrorCode); + Log(LogLevel.HeavyDebug, "{0}", ex.InnerException); + Log(LogLevel.HeavyDebug, ex.Message); + Log(LogLevel.HeavyDebug, ex.Source); + Log(LogLevel.HeavyDebug, ex.StackTrace); Log(LogLevel.Debug, "Receive: SocketException"); Log(LogLevel.Info, "FRITZ!BOX connection lost, trying to reconnect."); ReConnect(); @@ -277,7 +292,6 @@ private static void ReceiveCallback(IAsyncResult ar) { - Log(LogLevel.Debug, "ReceiveCallback"); try { // Retrieve the state object and the client socket @@ -364,9 +378,9 @@ Log(LogLevel.Info, "FRITZ!BOX connection lost, trying to reconnect."); ReConnect(); } - catch (Exception e) + catch (Exception ex) { - Log(e); + Log(ex); } } @@ -377,10 +391,10 @@ LogEvent(logLevel, String.Format(format, arg)); } - private static void Log(Exception e) + private static void Log(Exception ex) { if (LogEvent != null) - LogEvent(LogLevel.Error, e.ToString()); + LogEvent(LogLevel.Error, ex.ToString()); } #endregion Modified: trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.Designer.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.Designer.cs 2009-06-16 02:49:27 UTC (rev 2926) +++ trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.Designer.cs 2009-06-16 02:59:51 UTC (rev 2927) @@ -33,15 +33,12 @@ this.tabGeneral = new System.Windows.Forms.TabPage(); this.checkBoxExtensiveLogging = new MediaPortal.UserInterface.Controls.MPCheckBox(); this.mpGroupBox1 = new MediaPortal.UserInterface.Controls.MPGroupBox(); - this.mpButton2 = new MediaPortal.UserInterface.Controls.MPButton(); this.mpButton1 = new MediaPortal.UserInterface.Controls.MPButton(); this.numericUpDownPort = new System.Windows.Forms.NumericUpDown(); this.pictureBox1 = new System.Windows.Forms.PictureBox(); - this.buttonTest = new MediaPortal.UserInterface.Controls.MPButton(); this.textBoxAddress = new MediaPortal.UserInterface.Controls.MPTextBox(); this.labelPort = new MediaPortal.UserInterface.Controls.MPLabel(); this.labelAddress = new MediaPortal.UserInterface.Controls.MPLabel(); - this.labelHelp = new MediaPortal.UserInterface.Controls.MPLabel(); this.tabIncoming = new System.Windows.Forms.TabPage(); this.groupBoxImport = new MediaPortal.UserInterface.Controls.MPGroupBox(); this.mpLabel3 = new MediaPortal.UserInterface.Controls.MPLabel(); @@ -87,6 +84,7 @@ this.buttonSave = new MediaPortal.UserInterface.Controls.MPButton(); this.buttonCancel = new MediaPortal.UserInterface.Controls.MPButton(); this.openFileDialog = new System.Windows.Forms.OpenFileDialog(); + this.labelHelp = new System.Windows.Forms.TextBox(); this.tabControlFritzBoxSettings.SuspendLayout(); this.tabGeneral.SuspendLayout(); this.mpGroupBox1.SuspendLayout(); @@ -120,6 +118,7 @@ // // tabGeneral // + this.tabGeneral.Controls.Add(this.labelHelp); this.tabGeneral.Controls.Add(this.checkBoxExtensiveLogging); this.tabGeneral.Controls.Add(this.mpGroupBox1); this.tabGeneral.Location = new System.Drawing.Point(4, 22); @@ -145,15 +144,12 @@ // this.mpGroupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - this.mpGroupBox1.Controls.Add(this.mpButton2); this.mpGroupBox1.Controls.Add(this.mpButton1); this.mpGroupBox1.Controls.Add(this.numericUpDownPort); this.mpGroupBox1.Controls.Add(this.pictureBox1); - this.mpGroupBox1.Controls.Add(this.buttonTest); this.mpGroupBox1.Controls.Add(this.textBoxAddress); this.mpGroupBox1.Controls.Add(this.labelPort); this.mpGroupBox1.Controls.Add(this.labelAddress); - this.mpGroupBox1.Controls.Add(this.labelHelp); this.mpGroupBox1.FlatStyle = System.Windows.Forms.FlatStyle.Popup; this.mpGroupBox1.Location = new System.Drawing.Point(6, 6); this.mpGroupBox1.Name = "mpGroupBox1"; @@ -162,17 +158,6 @@ this.mpGroupBox1.TabStop = false; this.mpGroupBox1.Text = "connection"; // - // mpButton2 - // - this.mpButton2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.mpButton2.Location = new System.Drawing.Point(434, 46); - this.mpButton2.Name = "mpButton2"; - this.mpButton2.Size = new System.Drawing.Size(121, 21); - this.mpButton2.TabIndex = 11; - this.mpButton2.Text = "Stop Listening"; - this.mpButton2.UseVisualStyleBackColor = true; - this.mpButton2.Click += new System.EventHandler(this.mpButton2_Click); - // // mpButton1 // this.mpButton1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); @@ -180,7 +165,7 @@ this.mpButton1.Name = "mpButton1"; this.mpButton1.Size = new System.Drawing.Size(121, 21); this.mpButton1.TabIndex = 10; - this.mpButton1.Text = "Start Listening"; + this.mpButton1.Text = "(Re)Start Test"; this.mpButton1.UseVisualStyleBackColor = true; this.mpButton1.Click += new System.EventHandler(this.mpButton1_Click); // @@ -212,17 +197,6 @@ this.pictureBox1.TabIndex = 2; this.pictureBox1.TabStop = false; // - // buttonTest - // - this.buttonTest.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.buttonTest.Location = new System.Drawing.Point(307, 19); - this.buttonTest.Name = "buttonTest"; - this.buttonTest.Size = new System.Drawing.Size(121, 21); - this.buttonTest.TabIndex = 2; - this.buttonTest.Text = "Test Connection"; - this.buttonTest.UseVisualStyleBackColor = true; - this.buttonTest.Click += new System.EventHandler(this.buttonTest_Click); - // // textBoxAddress // this.textBoxAddress.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) @@ -251,16 +225,6 @@ this.labelAddress.TabIndex = 7; this.labelAddress.Text = "Address:"; // - // labelHelp - // - this.labelHelp.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.labelHelp.Location = new System.Drawing.Point(165, 73); - this.labelHelp.Name = "labelHelp"; - this.labelHelp.Size = new System.Drawing.Size(390, 49); - this.labelHelp.TabIndex = 6; - // // tabIncoming // this.tabIncoming.Controls.Add(this.groupBoxImport); @@ -791,6 +755,18 @@ this.buttonCancel.UseVisualStyleBackColor = true; this.buttonCancel.Click += new System.EventHandler(this.buttonCancel_Click); // + // labelHelp + // + this.labelHelp.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.labelHelp.Location = new System.Drawing.Point(6, 161); + this.labelHelp.Multiline = true; + this.labelHelp.Name = "labelHelp"; + this.labelHelp.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; + this.labelHelp.Size = new System.Drawing.Size(561, 190); + this.labelHelp.TabIndex = 7; + // // FritzBoxConfig // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); @@ -840,11 +816,9 @@ private MediaPortal.UserInterface.Controls.MPCheckBox checkBoxExtensiveLogging; private MediaPortal.UserInterface.Controls.MPGroupBox mpGroupBox1; private System.Windows.Forms.PictureBox pictureBox1; - private MediaPortal.UserInterface.Controls.MPButton buttonTest; private MediaPortal.UserInterface.Controls.MPTextBox textBoxAddress; private MediaPortal.UserInterface.Controls.MPLabel labelPort; private MediaPortal.UserInterface.Controls.MPLabel labelAddress; - private MediaPortal.UserInterface.Controls.MPLabel labelHelp; private System.Windows.Forms.TabPage tabIncoming; private MediaPortal.UserInterface.Controls.MPGroupBox groupBoxPhonebook; private MediaPortal.UserInterface.Controls.MPCheckBox checkBoxSaveUnknownCaller; @@ -891,7 +865,7 @@ private MediaPortal.UserInterface.Controls.MPLabel mpLabel3; private MediaPortal.UserInterface.Controls.MPLabel mpLabel2; private MediaPortal.UserInterface.Controls.MPLabel labelSuffixHome; - private MediaPortal.UserInterface.Controls.MPButton mpButton2; private MediaPortal.UserInterface.Controls.MPButton mpButton1; + private System.Windows.Forms.TextBox labelHelp; } } \ No newline at end of file Modified: trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.cs 2009-06-16 02:49:27 UTC (rev 2926) +++ trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.cs 2009-06-16 02:59:51 UTC (rev 2927) @@ -129,26 +129,18 @@ private void buttonSave_Click(object sender, EventArgs e) { SaveSettings(); - mpButton2_Click(null, null); + FritzBoxClient.StopClient(); + FritzBoxClient.LogEvent -= new FritzBoxClient.LogEventHandler(OnLogAction); Close(); } private void buttonCancel_Click(object sender, EventArgs e) { - mpButton2_Click(null, null); + FritzBoxClient.StopClient(); + FritzBoxClient.LogEvent -= new FritzBoxClient.LogEventHandler(OnLogAction); Close(); } - private void buttonTest_Click(object sender, EventArgs e) - { - FritzBoxClient.Address = textBoxAddress.Text; - FritzBoxClient.Port = (int) numericUpDownPort.Value; - - labelHelp.Text = "Please wait..."; - labelHelp.Text = FritzBoxClient.TestConnection(); - } - - private void checkBoxCloseOnTimout_CheckedChanged(object sender, EventArgs e) { numericUpDownTimeout.Enabled = checkBoxCloseOnTimout.Checked; @@ -378,27 +370,31 @@ } else { - labelHelp.Text = logMessage; + labelHelp.Text += logMessage + Environment.NewLine; } } private void mpButton1_Click(object sender, EventArgs e) { - FritzBoxClient.StopClient(); FritzBoxClient.LogEvent -= new FritzBoxClient.LogEventHandler(OnLogAction); + FritzBoxClient.LogEvent += new FritzBoxClient.LogEventHandler(OnLogAction); + // stopping client + FritzBoxClient.StopClient(); + // clear text box + labelHelp.Text = String.Empty; + + + // set current used text FritzBoxClient.Address = textBoxAddress.Text; - FritzBoxClient.Port = (int) numericUpDownPort.Value; + FritzBoxClient.Port = (int)numericUpDownPort.Value; - FritzBoxClient.LogEvent += new FritzBoxClient.LogEventHandler(OnLogAction); + // port test + FritzBoxClient.TestConnection(); + + // start client FritzBoxClient.StartClient(); } - - private void mpButton2_Click(object sender, EventArgs e) - { - FritzBoxClient.StopClient(); - FritzBoxClient.LogEvent -= new FritzBoxClient.LogEventHandler(OnLogAction); - } } } \ No newline at end of file Modified: trunk/plugins/FritzBox/FritzBox.xmp =================================================================== --- trunk/plugins/FritzBox/FritzBox.xmp 2009-06-16 02:49:27 UTC (rev 2926) +++ trunk/plugins/FritzBox/FritzBox.xmp 2009-06-16 02:59:51 UTC (rev 2927) @@ -7,8 +7,8 @@ <SubType>YAC</SubType> <Source>FritzBox\gfx\Thumbs\YAC\_noImage.png</Source> <Id>04010</Id> - <Option>OutputFileName=|DefaultFile=False|</Option> - <Guid>fb39a919-8c64-4cdd-aabe-32f33081e726</Guid> + <Option /> + <Guid>b572e856-14e4-4f14-843b-5dd085b37daf</Guid> </File> <File> <FileName>_unknown.png</FileName> @@ -17,7 +17,7 @@ <Source>FritzBox\gfx\Thumbs\YAC\_unknown.png</Source> <Id>04010</Id> <Option /> - <Guid>3afdd58a-7f90-4271-905a-d8b7cfbe0ea7</Guid> + <Guid>42e38b37-e056-4f15-86e2-9f119c0064ae</Guid> </File> <File> <FileName>FritzBox.dll</FileName> @@ -26,7 +26,7 @@ <Source>FritzBox\bin\Release\FritzBox.dll</Source> <Id>01020</Id> <Option /> - <Guid>c1872ff9-27d8-48f5-adc2-8cbf41223e36</Guid> + <Guid>de6ec925-acda-4337-bb1d-71fb08154ea9</Guid> </File> </FileList> <StringList /> @@ -36,12 +36,12 @@ <SetupGroups /> <SetupGroupMappings /> <Option> - <BuildFileName>G:\MediaPortal\mp-plugins\trunk\plugins\FritzBox\FritzBox_v0.3.3.0.MPE1</BuildFileName> + <BuildFileName>G:\MediaPortal\mp-plugins\trunk\plugins\FritzBox\FritzBox.mpe1</BuildFileName> <ProiectFileName>G:\MediaPortal\mp-plugins\trunk\plugins\FritzBox\FritzBox.xmp</ProiectFileName> <ProiectName>FRITZ!Box CallMonitor</ProiectName> <Author>chefkoch @ Team MediaPortal</Author> <UpdateURL>http://www.team-mediaportal.com/files/Download/MediaPortalInstaller(MPI)/Input/FRITZ!BoxCallMonitor/</UpdateURL> - <Version>0.3.3.0</Version> + <Version>0.3.3.1</Version> <Description>The FRITZ!Box plugin is a process plugin, which is able to notify you within MediaPortal on an incomming call on your FRITZ!Box. All strings are multi language. @@ -54,7 +54,7 @@ <Group>Input</Group> <Release>Stable </Release> <Script /> - <Logo>iVBORw0KGgoAAAANSUhEUgAAATcAAAD5CAYAAABCt3JCAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAALDQAACw0B7QfALAAA3FhJREFUeF7t/Qd3VGe27o/uO8b5CPeee84+d5/933l3u9vttrvbbrttt912226Hto0NBoPBYJNzzjnnnHPOCEkgEQRCJCGCCEIEiZxzBpFq3ud5a83irVerSiUM2LIWY8xRQipVWFrrV8/M/69QKCT/EPwLjoB3BK5du/YPe/bs+YebN2/+w//+3//7H5577rl/+B//438Exyc4AmXvCBBugQXH4MaNG9K1a1f5wx/+IC+//LK88sorxv7617/KokWLgnMkuE7K3DnwDwHYArBBpcnnn38uL730kgHaxx9/LC1atJAGDRrIO++8Y2A3ZMiQMndyB+d2+T63A7gFn8jSqVMnef755+X3v/+9vP3229KvXz+BayqbN2+W5s2by+uvv27At2nTpgBwwflSZs6BAG7l/GRFjE3+/d//3cCNAHv//felYcOGMmjQIOnbt698++23Bngvvvii1K9fv8yc2IFqK9+qzeQSgpOgfJ8EmZmZ8s///M+CxIFxST/77DOpUaOG1KtXT+rUqSPVqlWTDz/80MCP8bjgfCnf50tZ+vsHcCvnym3x4sXyj//4jwZub731llSuXNmArWnTptKkSROpXbu2VKhQwcTdfvGLXwRwK+fnSwC34AQoMxBYsmSJ/NM//ZOBG91PKjW6pS1btjRJBYKuYsWK8uqrrwZwC87rMnNeB25pcLKKwu3Xv/61vPvuu/LNN99I48aNpXXr1tKqVSsTZ/vqq6/ktddeMwAsS5/cwWst3y504JaWc8Ap3BhTe++990wCoVmzZtKuXTtp27atNGrUSKpUqWIypgRgAIzyDYyy9PcP4FbO4ZaUlGQSCi+88ILJlNaqVcu4ox06dJD27dubuFvVqlXljTfeMEmFsnRyB6+1fIM4gFsANwM3lnp88MEH8v333xt3tEuXLqb+jSqOruqf//znAG7l/Fwpax8WAdzK+QlL5fYv//IvBm4fffSRKf+gO9qtWzcDOKo4loYw2UB1V9ZO8OD1ll/1FsAtgJuBGwt42XbFBALd0Z49exrAMbFQs2ZN04ZFAAawKL+wKGt/+wBuAdwM3Nh69cknn5h+UrqjvXr1MoCjimMcjplU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... [truncated message content] |
From: <che...@us...> - 2009-06-16 17:45:01
|
Revision: 2929 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=2929&view=rev Author: chef_koch Date: 2009-06-16 17:44:55 +0000 (Tue, 16 Jun 2009) Log Message: ----------- more code cleaning Modified Paths: -------------- trunk/plugins/FritzBox/FritzBox/CallAction.cs trunk/plugins/FritzBox/FritzBox/Caller.cs trunk/plugins/FritzBox/FritzBox/FritzBox.cs trunk/plugins/FritzBox/FritzBox/FritzBoxClient.cs trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.cs trunk/plugins/FritzBox/FritzBox/PhoneBook.cs trunk/plugins/FritzBox/FritzBox/Properties/AssemblyInfo.cs trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/Program.cs Added Paths: ----------- trunk/plugins/FritzBox/FritzBox.4.5.resharper Modified: trunk/plugins/FritzBox/FritzBox/CallAction.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/CallAction.cs 2009-06-16 12:26:37 UTC (rev 2928) +++ trunk/plugins/FritzBox/FritzBox/CallAction.cs 2009-06-16 17:44:55 UTC (rev 2929) @@ -35,19 +35,28 @@ ConnectionClosed, } - public CallType type; - public DateTime time = DateTime.MinValue; - public Caller caller = new Caller(); - public string msn = string.Empty; + public CallType Type { get; set; } + public DateTime Time { get; set; } + public Caller Caller { get; set; } + public string MSN { get; set; } + + public CallAction() + { + Time = DateTime.MinValue; + Caller = new Caller(); + MSN = string.Empty; + } + + public void WriteToLog() { Log.Info("CallAction Info:"); - Log.Info(" CallType: {0}", type.ToString()); - Log.Info(" Date: {0}", time.ToShortDateString()); - Log.Info(" Time: {0}", time.ToShortTimeString()); - Log.Info(" Caller: {0}", caller.ID); - Log.Info(" MSN: {0}", msn); + Log.Info(" CallType: {0}", Type.ToString()); + Log.Info(" Date: {0}", Time.ToShortDateString()); + Log.Info(" Time: {0}", Time.ToShortTimeString()); + Log.Info(" Caller: {0}", Caller.ID); + Log.Info(" MSN: {0}", MSN); } } } \ No newline at end of file Modified: trunk/plugins/FritzBox/FritzBox/Caller.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/Caller.cs 2009-06-16 12:26:37 UTC (rev 2928) +++ trunk/plugins/FritzBox/FritzBox/Caller.cs 2009-06-16 17:44:55 UTC (rev 2929) @@ -24,40 +24,22 @@ { public class Caller { - private string _id; - private string _name; - private bool _show; - public Caller() { - _id = ""; - _name = ""; - _show = true; + ID = string.Empty; + Name = string.Empty; + Show = true; } public Caller(string id, string name, bool show) { - _id = id; - _name = name; - _show = show; + ID = id; + Name = name; + Show = show; } - public string ID - { - get { return _id; } - set { _id = value; } - } - - public string Name - { - get { return _name; } - set { _name = value; } - } - - public bool Show - { - get { return _show; } - set { _show = value; } - } + public string ID { get; set; } + public string Name { get; set; } + public bool Show { get; set; } } } \ No newline at end of file Modified: trunk/plugins/FritzBox/FritzBox/FritzBox.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/FritzBox.cs 2009-06-16 12:26:37 UTC (rev 2928) +++ trunk/plugins/FritzBox/FritzBox/FritzBox.cs 2009-06-16 17:44:55 UTC (rev 2929) @@ -39,103 +39,55 @@ { #region Properties - public static bool ExtensiveLogging - { - get { return extensiveLogging; } - set { extensiveLogging = value; } - } + public static bool ExtensiveLogging { get; set; } - private static bool extensiveLogging = false; - /// <summary> /// stop media when an event happend /// </summary> - public static bool StopMedia - { - get { return stopMedia; } - set { stopMedia = value; } - } + public static bool StopMedia { get; set; } - private static bool stopMedia = true; - /// <summary> /// resume media when notify is closed /// </summary> - public static bool ResumeMedia - { - get { return resumeMedia; } - set { resumeMedia = value; } - } + public static bool ResumeMedia { get; set; } - private static bool resumeMedia = true; + public static int MaxNotifies { get; set; } - - public static int MaxNotifies - { - get { return maxNotifies; } - set { maxNotifies = value; } - } - - private static int maxNotifies = 20; - /// <summary> /// autoclose the dialog after the timeout expired /// </summary> - public static int NotifyTimeout - { - get { return notifyTimeout; } - set { notifyTimeout = value; } - } + public static int NotifyTimeout { get; set; } - private static int notifyTimeout = 10; + public static bool CloseOnTimeout { get; set; } - public static bool CloseOnTimeout - { - get { return closeOnTimeout; } - set { closeOnTimeout = value; } - } + public static bool CloseOnConnectionClosed { get; set; } - private static bool closeOnTimeout = false; + public static bool ShowMsnOnHeading { get; set; } - public static bool CloseOnConnectionClosed - { - get { return closeOnConnectionClosed; } - set { closeOnConnectionClosed = value; } - } + public static bool FilterMSN { get; set; } - private static bool closeOnConnectionClosed = false; - - public static bool ShowMsnOnHeading + public static List<String> MSNList { - get { return showMsnOnHeading; } - set { showMsnOnHeading = value; } - } - - private static bool showMsnOnHeading = false; - - - public static bool FilterMSNs - { - get { return filterMSNs; } - set { filterMSNs = value; } - } - - private static bool filterMSNs = false; - - public static List<String> MsnList - { get { - if (msnList == null) - msnList = new List<String>(); + if (_msnList == null) + _msnList = new List<String>(); - return msnList; + return _msnList; } - set { msnList = value; } + set { _msnList = value; } } - private static List<String> msnList; + private static List<String> _msnList; + static Settings() + { + StopMedia = true; + ResumeMedia = true; + MaxNotifies = 20; + NotifyTimeout = 10; + } + #endregion public static void Load() @@ -162,10 +114,10 @@ //if ((!CloseOnTimeout) || (NotifyTimeout == 0)) // NotifyTimeout = -1; - FilterMSNs = xmlreader.GetValueAsBool("fritzbox", "filterMSNs", false); + FilterMSN = xmlreader.GetValueAsBool("fritzbox", "filterMSNs", false); string strMSN = xmlreader.GetValueAsString("fritzbox", "MSN", ""); char[] charSeparators = new char[] {';'}; - MsnList.AddRange(strMSN.Split(charSeparators, StringSplitOptions.RemoveEmptyEntries)); + MSNList.AddRange(strMSN.Split(charSeparators, StringSplitOptions.RemoveEmptyEntries)); ShowMsnOnHeading = xmlreader.GetValueAsBool("fritzbox", "showMsnOnHeading", false); @@ -196,9 +148,9 @@ xmlwriter.SetValue("fritzbox", "timeout", NotifyTimeout); xmlwriter.SetValueAsBool("fritzbox", "closeOnConnectionClosed", CloseOnConnectionClosed); - xmlwriter.SetValueAsBool("fritzbox", "filterMSNs", FilterMSNs); + xmlwriter.SetValueAsBool("fritzbox", "filterMSNs", FilterMSN); string strMSN = ""; - foreach (string msn in MsnList) + foreach (string msn in MSNList) { strMSN += msn + ";"; } @@ -240,30 +192,18 @@ #region Variables - public const string _version = "0.3.3.1"; + public const string VERSION = "0.3.3.1"; - private readonly List<CallAction> actionList = new List<CallAction>(); - private object tempNotify = null; + private readonly List<CallAction> _actionList = new List<CallAction>(); + private object _tempNotify = null; private int notifyCount = 0; private bool _showNotify = true; - private readonly List<CallAction> notifyQueue = new List<CallAction>(); + private readonly List<CallAction> _notifyQueue = new List<CallAction>(); #endregion - #region Constructors and Destructors - - public FritzBox() - { - } - - ~FritzBox() - { - } - - #endregion - #region Private Functions/Methods private void OnStartExternal(Process proc, bool waitForExit) @@ -282,10 +222,10 @@ { _showNotify = true; - //for (int i = 0; i < notifyQueue.Count; i++) - // OnFritzBoxEvent(notifyQueue[i]); + //for (int i = 0; i < _notifyQueue.Count; i++) + // OnFritzBoxEvent(_notifyQueue[i]); - notifyQueue.Clear(); + _notifyQueue.Clear(); } private void OnCallAction(CallAction callAction) @@ -296,15 +236,15 @@ if (!_showNotify) { Log.Info("External process is running. Notify is queued and will be shown later."); - notifyQueue.Add(callAction); + _notifyQueue.Add(callAction); return; } - switch (callAction.type) + switch (callAction.Type) { case CallAction.CallType.Incoming: if (PhoneBook.Enabled) - callAction.caller = PhoneBook.GetCaller(callAction.caller); + callAction.Caller = PhoneBook.GetCaller(callAction.Caller); OnIncomingCall(callAction); break; case CallAction.CallType.Outgoing: @@ -315,7 +255,7 @@ if (Settings.CloseOnConnectionClosed) { Log.Info("_closeOnConnectionClosed is enabled. try to close active notify."); - if (tempNotify != null) + if (_tempNotify != null) { Action act = new Action(); act.wID = Action.ActionType.ACTION_CLOSE_DIALOG; @@ -354,43 +294,43 @@ { Log.Info("FRITZ!Box: OnIncomingCall()"); - if (tempNotify != null) + if (_tempNotify != null) { Log.Info("yet another dialog is active. action is sent to queue."); - if (actionList.Count < Settings.MaxNotifies - 1) - actionList.Add(callAction); + if (_actionList.Count < Settings.MaxNotifies - 1) + _actionList.Add(callAction); return; } //config settings for dialog - string strHeading = String.Empty; - string strImage = String.Empty; - string strText = String.Empty; + string strHeading = string.Empty; + string strImage = string.Empty; + string strText = string.Empty; // Set Heading for NotifyDialog if (Settings.ShowMsnOnHeading) - strHeading = GUILocalizeStrings.Get(1023) + " on " + callAction.msn; // ???? Incoming call on + strHeading = GUILocalizeStrings.Get(1023) + " on " + callAction.MSN; // ???? Incoming call on else strHeading = GUILocalizeStrings.Get(1023); // 1023 Incoming call // Set Image for NotifyDialog - strImage = GetCallerImage(callAction.caller); + strImage = GetCallerImage(callAction.Caller); // Set MessageText for NotifyDialog - if (callAction.caller.ID == "") + if (callAction.Caller.ID == "") strText = GUILocalizeStrings.Get(2014); // 2014 = unknown - else if (callAction.caller.Name == "") - strText = callAction.caller.ID; + else if (callAction.Caller.Name == "") + strText = callAction.Caller.ID; else - strText = callAction.caller.Name; + strText = callAction.Caller.Name; //config settings for dialog FINISHED //if msn is disabled, stop here - if (!IsMsnEnabled(callAction.msn)) return; + if (!IsMsnEnabled(callAction.MSN)) return; //if notifies are disabled for this call, stop here - if (!IsCallerEnabled(callAction.caller)) return; + if (!IsCallerEnabled(callAction.Caller)) return; ShowNotify(strHeading, strImage, strText); } @@ -430,13 +370,13 @@ private bool IsMsnEnabled(string msn) { - if (!Settings.FilterMSNs) + if (!Settings.FilterMSN) { Log.Info("MSN filter is disabled."); return true; } - if (Settings.MsnList.Contains(msn)) + if (Settings.MSNList.Contains(msn)) { Log.Info("MSN is on list."); return true; @@ -481,17 +421,17 @@ else dlgNotify.TimeOut = -1; - tempNotify = dlgNotify; + _tempNotify = dlgNotify; dlgNotify.DoModal(GUIWindowManager.ActiveWindow); if (g_Player.Playing && g_Player.Paused && Settings.StopMedia && Settings.ResumeMedia) g_Player.Pause(); - tempNotify = null; - if (actionList.Count > 0) + _tempNotify = null; + if (_actionList.Count > 0) { - CallAction tmpAction = actionList[0]; - actionList.RemoveAt(0); + CallAction tmpAction = _actionList[0]; + _actionList.RemoveAt(0); OnCallAction(tmpAction); } } @@ -507,7 +447,7 @@ /// </summary> public void Start() { - Log.Info("FRITZ!Box Plugin {0} starting.", _version); + Log.Info("FRITZ!Box Plugin {0} starting.", VERSION); Settings.Load(); Utils.OnStartExternal += new Utils.UtilEventHandler(OnStartExternal); @@ -523,7 +463,7 @@ /// </summary> public void Stop() { - Log.Info("FRITZ!Box Plugin {0} stopping.", _version); + Log.Info("FRITZ!Box Plugin {0} stopping.", VERSION); FritzBoxClient.StopClient(); FritzBoxClient.CallEvent -= new FritzBoxClient.CallEventHandler(OnCallAction); Modified: trunk/plugins/FritzBox/FritzBox/FritzBoxClient.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/FritzBoxClient.cs 2009-06-16 12:26:37 UTC (rev 2928) +++ trunk/plugins/FritzBox/FritzBox/FritzBoxClient.cs 2009-06-16 17:44:55 UTC (rev 2929) @@ -151,7 +151,8 @@ } catch (Exception) { - Log(LogLevel.Error, "Port test failed: Make sure you are using the latest firmware and the call monitor is enabled (#96*5*)"); + Log(LogLevel.Error, + "Port test failed: Make sure you are using the latest firmware and the call monitor is enabled (#96*5*)"); return; } @@ -323,30 +324,30 @@ CallAction callAction = new CallAction(); // time when action happens - callAction.time = DateTime.Parse(strList[0], new CultureInfo("de-DE", false)); + callAction.Time = DateTime.Parse(strList[0], new CultureInfo("de-DE", false)); // set the type of the callAction switch (strList[1]) { case "RING": - callAction.type = CallAction.CallType.Incoming; + callAction.Type = CallAction.CallType.Incoming; // sets the callerID - callAction.caller.ID = strList[3]; - callAction.msn = strList[4]; + callAction.Caller.ID = strList[3]; + callAction.MSN = strList[4]; break; case "CALL": - callAction.type = CallAction.CallType.Outgoing; + callAction.Type = CallAction.CallType.Outgoing; // sets the callerID - callAction.caller.ID = strList[5]; - callAction.msn = strList[4]; + callAction.Caller.ID = strList[5]; + callAction.MSN = strList[4]; break; case "CONNECT": - callAction.type = CallAction.CallType.ConnectionStarted; + callAction.Type = CallAction.CallType.ConnectionStarted; // sets the callerID - callAction.caller.ID = strList[4]; + callAction.Caller.ID = strList[4]; break; case "DISCONNECT": - callAction.type = CallAction.CallType.ConnectionClosed; + callAction.Type = CallAction.CallType.ConnectionClosed; break; default: callAction = null; Modified: trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.cs 2009-06-16 12:26:37 UTC (rev 2928) +++ trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.cs 2009-06-16 17:44:55 UTC (rev 2929) @@ -40,7 +40,7 @@ private void LoadSettings() { - labelVersion.Text = "v" + FritzBox._version; + labelVersion.Text = "v" + FritzBox.VERSION; FritzBox.Settings.Load(); @@ -57,13 +57,13 @@ numericUpDownTimeout.Enabled = checkBoxCloseOnTimout.Checked; - checkBoxFilterMSNs.Checked = FritzBox.Settings.FilterMSNs; + checkBoxFilterMSNs.Checked = FritzBox.Settings.FilterMSN; comboBoxMSNs.Enabled = checkBoxFilterMSNs.Checked; buttonMSNsAdd.Enabled = checkBoxFilterMSNs.Checked; buttonMSNsRemove.Enabled = checkBoxFilterMSNs.Checked; comboBoxMSNs.Items.Clear(); - comboBoxMSNs.Items.AddRange(FritzBox.Settings.MsnList.ToArray()); + comboBoxMSNs.Items.AddRange(FritzBox.Settings.MSNList.ToArray()); checkBoxShowMsnOnHeading.Checked = FritzBox.Settings.ShowMsnOnHeading; @@ -99,11 +99,11 @@ FritzBox.Settings.NotifyTimeout = (int) numericUpDownTimeout.Value; FritzBox.Settings.CloseOnConnectionClosed = checkBoxCloseOnConnectionClosed.Checked; - FritzBox.Settings.FilterMSNs = checkBoxFilterMSNs.Checked; - FritzBox.Settings.MsnList.Clear(); + FritzBox.Settings.FilterMSN = checkBoxFilterMSNs.Checked; + FritzBox.Settings.MSNList.Clear(); foreach (object obj in comboBoxMSNs.Items) { - FritzBox.Settings.MsnList.Add((string) obj); + FritzBox.Settings.MSNList.Add((string) obj); } FritzBox.Settings.ShowMsnOnHeading = checkBoxShowMsnOnHeading.Checked; @@ -383,12 +383,12 @@ // stopping client FritzBoxClient.StopClient(); // clear text box - labelHelp.Text = String.Empty; + labelHelp.Text = string.Empty; // set current used text FritzBoxClient.Address = textBoxAddress.Text; - FritzBoxClient.Port = (int)numericUpDownPort.Value; + FritzBoxClient.Port = (int) numericUpDownPort.Value; // port test FritzBoxClient.TestConnection(); Modified: trunk/plugins/FritzBox/FritzBox/PhoneBook.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/PhoneBook.cs 2009-06-16 12:26:37 UTC (rev 2928) +++ trunk/plugins/FritzBox/FritzBox/PhoneBook.cs 2009-06-16 17:44:55 UTC (rev 2929) @@ -36,67 +36,28 @@ #region public properties - public static bool Enabled - { - get { return enabled; } - set { enabled = value; } - } + public static bool Enabled { get; set; } - private static bool enabled = false; + public static bool ShowUnknownCaller { get; set; } + public static bool SaveUnknownCaller { get; set; } - public static bool ShowUnknownCaller - { - get { return showUnknownCaller; } - set { showUnknownCaller = value; } - } + public static string SuffixHome { get; set; } + public static string SuffixWork { get; set; } + public static string SuffixMobile { get; set; } - private static bool showUnknownCaller; - - public static bool SaveUnknownCaller - { - get { return saveUnknownCaller; } - set { saveUnknownCaller = value; } - } - - private static bool saveUnknownCaller; - - public static string SuffixHome - { - get { return suffixHome; } - set { suffixHome = value; } - } - - private static string suffixHome; - - public static string SuffixWork - { - get { return suffixWork; } - set { suffixWork = value; } - } - - private static string suffixWork; - - public static string SuffixMobile - { - get { return suffixMobile; } - set { suffixMobile = value; } - } - - private static string suffixMobile; - public static List<Caller> Contacts { get { - if (contacts == null) - contacts = new List<Caller>(); + if (_contacts == null) + _contacts = new List<Caller>(); - return contacts; + return _contacts; } - set { contacts = value; } + set { _contacts = value; } } - private static List<Caller> contacts; + private static List<Caller> _contacts; #endregion Modified: trunk/plugins/FritzBox/FritzBox/Properties/AssemblyInfo.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/Properties/AssemblyInfo.cs 2009-06-16 12:26:37 UTC (rev 2928) +++ trunk/plugins/FritzBox/FritzBox/Properties/AssemblyInfo.cs 2009-06-16 17:44:55 UTC (rev 2929) @@ -56,5 +56,5 @@ // You can specify all the values or you can default the Revision and Build Numbers // by using the '*' as shown below: -[assembly: AssemblyVersion(FritzBox.FritzBox._version)] -[assembly: AssemblyFileVersion(FritzBox.FritzBox._version)] \ No newline at end of file +[assembly: AssemblyVersion(FritzBox.FritzBox.VERSION)] +[assembly: AssemblyFileVersion(FritzBox.FritzBox.VERSION)] \ No newline at end of file Added: trunk/plugins/FritzBox/FritzBox.4.5.resharper =================================================================== --- trunk/plugins/FritzBox/FritzBox.4.5.resharper (rev 0) +++ trunk/plugins/FritzBox/FritzBox.4.5.resharper 2009-06-16 17:44:55 UTC (rev 2929) @@ -0,0 +1,89 @@ +<Configuration> + <CodeStyleSettings> + <ExternalPath IsNull="False"> + </ExternalPath> + <Sharing>SOLUTION</Sharing> + <CSharp> + <FormatSettings> + <MODIFIERS_ORDER IsNull="False"> + <Item>public</Item> + <Item>protected</Item> + <Item>internal</Item> + <Item>private</Item> + <Item>new</Item> + <Item>abstract</Item> + <Item>virtual</Item> + <Item>override</Item> + <Item>sealed</Item> + <Item>static</Item> + <Item>readonly</Item> + <Item>extern</Item> + <Item>unsafe</Item> + <Item>volatile</Item> + </MODIFIERS_ORDER> + </FormatSettings> + <UsingsSettings /> + <Naming2> + <ExceptionName IsNull="False"> + </ExceptionName> + <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="TypesAndNamespaces" /> + <PredefinedRule Inspect="True" Prefix="I" Suffix="" Style="AaBb" ElementKind="Interfaces" /> + <PredefinedRule Inspect="True" Prefix="T" Suffix="" Style="AaBb" ElementKind="TypeParameters" /> + <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="MethodPropertyEvent" /> + <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="aaBb" ElementKind="Locals" /> + <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="aaBb" ElementKind="LocalConstants" /> + <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="aaBb" ElementKind="Parameters" /> + <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="PublicFields" /> + <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="Constants" /> + <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="StaticReadonly" /> + <PredefinedRule Inspect="True" Prefix="_" Suffix="" Style="aaBb" ElementKind="NotPublicStaticFields" /> + <PredefinedRule Inspect="True" Prefix="_" Suffix="" Style="aaBb" ElementKind="NotPublicInstanceFields" /> + <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="EnumMember" /> + <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="Other" /> + </Naming2> + </CSharp> + <VB> + <FormatSettings /> + <ImportsSettings /> + <Naming2 /> + </VB> + <FileHeader Region="Copyright (C) 2005-2009 Team MediaPortal"><![CDATA[Copyright (C) 2005-2009 Team MediaPortal +http://www.team-mediaportal.com + +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, 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 GNU Make; see the file COPYING. If not, write to +the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. +http://www.gnu.org/copyleft/gpl.html]]></FileHeader> + <GenerateMemberBody /> + <Naming2> + <ExceptionName IsNull="False"> + </ExceptionName> + <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="aaBb" ElementKind="Locals" /> + <PredefinedRule Inspect="True" Prefix="_" Suffix="" Style="aaBb" ElementKind="NotPublicInstanceFields" /> + <PredefinedRule Inspect="True" Prefix="_" Suffix="" Style="aaBb" ElementKind="NotPublicStaticFields" /> + <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="aaBb" ElementKind="Parameters" /> + <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="EnumMember" /> + <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="TypesAndNamespaces" /> + <PredefinedRule Inspect="True" Prefix="I" Suffix="" Style="AaBb" ElementKind="Interfaces" /> + <PredefinedRule Inspect="True" Prefix="T" Suffix="" Style="AaBb" ElementKind="TypeParameters" /> + <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="MethodPropertyEvent" /> + <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="aaBb" ElementKind="LocalConstants" /> + <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="PublicFields" /> + <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AA_BB" ElementKind="Constants" /> + <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="StaticReadonly" /> + <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="Other" /> + <Abbreviation Text="MSN" /> + <Abbreviation Text="ID" /> + </Naming2> + </CodeStyleSettings> +</Configuration> \ No newline at end of file Modified: trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/Program.cs =================================================================== --- trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/Program.cs 2009-06-16 12:26:37 UTC (rev 2928) +++ trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/Program.cs 2009-06-16 17:44:55 UTC (rev 2929) @@ -32,8 +32,7 @@ { Application.EnableVisualStyles(); - var plugin = new FritzBox.FritzBox(); - plugin.ShowPlugin(); + new FritzBox.FritzBox().ShowPlugin(); } } } \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <che...@us...> - 2009-12-05 12:21:27
|
Revision: 3204 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=3204&view=rev Author: chef_koch Date: 2009-12-05 12:21:06 +0000 (Sat, 05 Dec 2009) Log Message: ----------- updated svn ignore expressions updated VisualSVN working copy root Modified Paths: -------------- trunk/plugins/FritzBox/FritzBox.sln Property Changed: ---------------- trunk/plugins/FritzBox/ trunk/plugins/FritzBox/FritzBox/ trunk/plugins/FritzBox/FritzBox/Properties/ trunk/plugins/FritzBox/FritzBox/gfx/ trunk/plugins/FritzBox/FritzBox/gfx/Thumbs/ trunk/plugins/FritzBox/FritzBox/gfx/Thumbs/YAC/ trunk/plugins/FritzBox/MP2version/ trunk/plugins/FritzBox/MP2version/HelperClasses/ trunk/plugins/FritzBox/MP2version/Listeners/ trunk/plugins/FritzBox/MP2version/Listeners/BlueTooth_USB/ trunk/plugins/FritzBox/MP2version/Listeners/BlueTooth_USB/Helper/ trunk/plugins/FritzBox/MP2version/Listeners/FritzBox/ trunk/plugins/FritzBox/MP2version/Listeners/FritzBox/Properties/ trunk/plugins/FritzBox/MP2version/Properties/ trunk/plugins/FritzBox/Tools/ trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/ trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/Properties/ trunk/plugins/FritzBox/Tools/FritzBoxDebugger/ trunk/plugins/FritzBox/Tools/FritzBoxDebugger/Properties/ Property changes on: trunk/plugins/FritzBox ___________________________________________________________________ Modified: svn:ignore - bin obj *.suo *.user thumbs.db + *.bak *.cache *.exe *.log *.mpe1 *.patch *.suo *.user _ReSharper.* thumbs.db bin obj _* Property changes on: trunk/plugins/FritzBox/FritzBox ___________________________________________________________________ Modified: svn:ignore - bin obj *.suo *.user thumbs.db + *.bak *.cache *.exe *.log *.mpe1 *.patch *.suo *.user _ReSharper.* thumbs.db bin obj _* Property changes on: trunk/plugins/FritzBox/FritzBox/Properties ___________________________________________________________________ Modified: svn:ignore - bin obj *.suo *.user thumbs.db + *.bak *.cache *.exe *.log *.mpe1 *.patch *.suo *.user _ReSharper.* thumbs.db bin obj _* Property changes on: trunk/plugins/FritzBox/FritzBox/gfx ___________________________________________________________________ Modified: svn:ignore - bin obj *.suo *.user thumbs.db + *.bak *.cache *.exe *.log *.mpe1 *.patch *.suo *.user _ReSharper.* thumbs.db bin obj _* Property changes on: trunk/plugins/FritzBox/FritzBox/gfx/Thumbs ___________________________________________________________________ Modified: svn:ignore - bin obj *.suo *.user thumbs.db + *.bak *.cache *.exe *.log *.mpe1 *.patch *.suo *.user _ReSharper.* thumbs.db bin obj _* Property changes on: trunk/plugins/FritzBox/FritzBox/gfx/Thumbs/YAC ___________________________________________________________________ Modified: svn:ignore - bin obj *.suo *.user thumbs.db + *.bak *.cache *.exe *.log *.mpe1 *.patch *.suo *.user _ReSharper.* thumbs.db bin obj _* Modified: trunk/plugins/FritzBox/FritzBox.sln =================================================================== --- trunk/plugins/FritzBox/FritzBox.sln 2009-12-05 11:50:25 UTC (rev 3203) +++ trunk/plugins/FritzBox/FritzBox.sln 2009-12-05 12:21:06 UTC (rev 3204) @@ -39,4 +39,7 @@ GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + VisualSVNWorkingCopyRoot = . + EndGlobalSection EndGlobal Property changes on: trunk/plugins/FritzBox/MP2version ___________________________________________________________________ Added: svn:ignore + *.bak *.cache *.exe *.log *.mpe1 *.patch *.suo *.user _ReSharper.* thumbs.db bin obj _* Property changes on: trunk/plugins/FritzBox/MP2version/HelperClasses ___________________________________________________________________ Added: svn:ignore + *.bak *.cache *.exe *.log *.mpe1 *.patch *.suo *.user _ReSharper.* thumbs.db bin obj _* Property changes on: trunk/plugins/FritzBox/MP2version/Listeners ___________________________________________________________________ Added: svn:ignore + *.bak *.cache *.exe *.log *.mpe1 *.patch *.suo *.user _ReSharper.* thumbs.db bin obj _* Property changes on: trunk/plugins/FritzBox/MP2version/Listeners/BlueTooth_USB ___________________________________________________________________ Added: svn:ignore + *.bak *.cache *.exe *.log *.mpe1 *.patch *.suo *.user _ReSharper.* thumbs.db bin obj _* Property changes on: trunk/plugins/FritzBox/MP2version/Listeners/BlueTooth_USB/Helper ___________________________________________________________________ Added: svn:ignore + *.bak *.cache *.exe *.log *.mpe1 *.patch *.suo *.user _ReSharper.* thumbs.db bin obj _* Property changes on: trunk/plugins/FritzBox/MP2version/Listeners/FritzBox ___________________________________________________________________ Added: svn:ignore + *.bak *.cache *.exe *.log *.mpe1 *.patch *.suo *.user _ReSharper.* thumbs.db bin obj _* Property changes on: trunk/plugins/FritzBox/MP2version/Listeners/FritzBox/Properties ___________________________________________________________________ Added: svn:ignore + *.bak *.cache *.exe *.log *.mpe1 *.patch *.suo *.user _ReSharper.* thumbs.db bin obj _* Property changes on: trunk/plugins/FritzBox/MP2version/Properties ___________________________________________________________________ Added: svn:ignore + *.bak *.cache *.exe *.log *.mpe1 *.patch *.suo *.user _ReSharper.* thumbs.db bin obj _* Property changes on: trunk/plugins/FritzBox/Tools ___________________________________________________________________ Added: svn:ignore + *.bak *.cache *.exe *.log *.mpe1 *.patch *.suo *.user _ReSharper.* thumbs.db bin obj _* Property changes on: trunk/plugins/FritzBox/Tools/FritzBoxConfigTester ___________________________________________________________________ Added: svn:ignore + *.bak *.cache *.exe *.log *.mpe1 *.patch *.suo *.user _ReSharper.* thumbs.db bin obj _* Property changes on: trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/Properties ___________________________________________________________________ Added: svn:ignore + *.bak *.cache *.exe *.log *.mpe1 *.patch *.suo *.user _ReSharper.* thumbs.db bin obj _* Property changes on: trunk/plugins/FritzBox/Tools/FritzBoxDebugger ___________________________________________________________________ Added: svn:ignore + *.bak *.cache *.exe *.log *.mpe1 *.patch *.suo *.user _ReSharper.* thumbs.db bin obj _* Property changes on: trunk/plugins/FritzBox/Tools/FritzBoxDebugger/Properties ___________________________________________________________________ Added: svn:ignore + *.bak *.cache *.exe *.log *.mpe1 *.patch *.suo *.user _ReSharper.* thumbs.db bin obj _* This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <che...@us...> - 2009-12-05 17:33:26
|
Revision: 3206 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=3206&view=rev Author: chef_koch Date: 2009-12-05 17:33:17 +0000 (Sat, 05 Dec 2009) Log Message: ----------- reworked the way pictures are loaded added build script Modified Paths: -------------- trunk/plugins/FritzBox/FritzBox/FritzBox.cs trunk/plugins/FritzBox/FritzBox/FritzBox.csproj trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.cs trunk/plugins/FritzBox/FritzBox/Properties/AssemblyInfo.cs trunk/plugins/FritzBox/FritzBox/Properties/Resources.Designer.cs trunk/plugins/FritzBox/FritzBox.sln trunk/plugins/FritzBox/Tools/FritzBoxDebugger/FritzBoxDebugger.csproj Added Paths: ----------- trunk/plugins/FritzBox/Build/ trunk/plugins/FritzBox/Build/BUILD_FritzBoxPlugin.bat trunk/plugins/FritzBox/Build/filever.exe trunk/plugins/FritzBox/FritzBox/ContactImages/ trunk/plugins/FritzBox/FritzBox/ContactImages/FritzBox.CallMonitor.Missing.png trunk/plugins/FritzBox/FritzBox/ContactImages/FritzBox.CallMonitor.Unknown.png trunk/plugins/FritzBox/FritzBox/MpeRelease/ trunk/plugins/FritzBox/FritzBox/MpeRelease/FritzBox.xmp2 trunk/plugins/FritzBox/FritzBox/Settings.cs Removed Paths: ------------- trunk/plugins/FritzBox/FritzBox/gfx/Thumbs/ trunk/plugins/FritzBox/FritzBox.xmp Property Changed: ---------------- trunk/plugins/FritzBox/FritzBox/ Added: trunk/plugins/FritzBox/Build/BUILD_FritzBoxPlugin.bat =================================================================== --- trunk/plugins/FritzBox/Build/BUILD_FritzBoxPlugin.bat (rev 0) +++ trunk/plugins/FritzBox/Build/BUILD_FritzBoxPlugin.bat 2009-12-05 17:33:17 UTC (rev 3206) @@ -0,0 +1,49 @@ +@ECHO OFF + + +REM Select program path based on current machine environment +set ProgramDir=%ProgramFiles% +if not "%ProgramFiles(x86)%".=="". set ProgramDir=%ProgramFiles(x86)% + + +REM set logfile where the infos are written to, and clear that file +set LOG=build_%BUILD_TYPE%.log +echo. > %LOG% + + +echo. +echo -= FritzBox CallMonitor =- +echo -========================- +echo. + + +echo. +echo Writing SVN revision assemblies... +"..\..\IR Server Suite\setup\DeployVersionSVN.exe" /svn=".." >> %LOG% + + +echo. +echo Building IR Server Suite... +"%WINDIR%\Microsoft.NET\Framework\v3.5\MSBUILD.exe" /target:Rebuild /property:Configuration=%BUILD_TYPE%;Platform=x86;AllowUnsafeBlocks=true "..\FritzBox.sln" >> %LOG% + + +echo. +echo Reverting assemblies... +"..\..\IR Server Suite\setup\DeployVersionSVN.exe" /svn=".." /revert >> %LOG% + + +echo. +echo Reading the version number... +set plugindll=..\FritzBox\bin\Release\FritzBox.dll +if not exist "%plugindll%" goto version_error +for /f "Tokens=5" %%a in ('filever "%plugindll%"') do set version=%%a +goto :version_done +:version_error +echo "fritzbox.dll not found. version could not be read" >> %LOG% +goto :EOF +:version_done + + +echo Building MpeExtension package... +"%ProgramDir%\Team MediaPortal\MediaPortal\MpeMaker.exe" "..\FritzBox\MpeRelease\FritzBox.xmp2" /B >> %LOG% + Added: trunk/plugins/FritzBox/Build/filever.exe =================================================================== (Binary files differ) Property changes on: trunk/plugins/FritzBox/Build/filever.exe ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Property changes on: trunk/plugins/FritzBox/FritzBox ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.mpe1 *.patch *.suo *.user _ReSharper.* thumbs.db bin obj _* + *.bak *.cache *.exe *.log *.mpe1 *.patch *.suo *.user _ReSharper.* thumbs.db bin obj _* [Bb]in [Dd]ebug [Rr]elease *.aps *.eto Copied: trunk/plugins/FritzBox/FritzBox/ContactImages/FritzBox.CallMonitor.Missing.png (from rev 3205, trunk/plugins/FritzBox/FritzBox/gfx/Thumbs/YAC/_noImage.png) =================================================================== (Binary files differ) Copied: trunk/plugins/FritzBox/FritzBox/ContactImages/FritzBox.CallMonitor.Unknown.png (from rev 3205, trunk/plugins/FritzBox/FritzBox/gfx/Thumbs/YAC/_unknown.png) =================================================================== (Binary files differ) Modified: trunk/plugins/FritzBox/FritzBox/FritzBox.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/FritzBox.cs 2009-12-05 15:12:22 UTC (rev 3205) +++ trunk/plugins/FritzBox/FritzBox/FritzBox.cs 2009-12-05 17:33:17 UTC (rev 3206) @@ -24,6 +24,7 @@ using System.Collections.Generic; using System.Diagnostics; using System.IO; +using System.Reflection; using MediaPortal.Configuration; using MediaPortal.Dialogs; using MediaPortal.GUI.Library; @@ -35,10 +36,16 @@ [PluginIcons("FritzBox.FritzBox.png", "FritzBox.FritzBoxDisabled.png")] public class FritzBox : ISetupForm, IPlugin { + #region Constants + + private static string ContactPicturesFolder = Config.GetSubFolder(Config.Dir.Thumbs, "FritzBox.Contacts"); + + private static string SkinMediaFolder = Path.Combine(GUIGraphicsContext.Skin, "Media"); + + #endregion + #region Variables - public const string VERSION = "0.3.3.2"; - private readonly List<CallAction> _actionList = new List<CallAction>(); private object _tempNotify = null; @@ -49,6 +56,54 @@ #endregion + #region Properties + + public string UnknownCallerImage + { + get + { + string filePath; + + // check if skin supports it's own images + filePath = Utils.GetCoverArt(SkinMediaFolder, "FritzBox.CallMonitor.Unknown"); + if (!String.IsNullOrEmpty(filePath)) return filePath; + + // use new default image + filePath = Utils.GetCoverArt(ContactPicturesFolder, "FritzBox.CallMonitor.Unknown"); + if (!String.IsNullOrEmpty(filePath)) return filePath; + + // use old default image + filePath = Utils.GetCoverArt(Thumbs.Yac, "_unknown"); + if (!String.IsNullOrEmpty(filePath)) return filePath; + + return String.Empty; + } + } + + public string MissingCallerImage + { + get + { + string filePath; + + // check if skin supports it's own images + filePath = Utils.GetCoverArt(SkinMediaFolder, "FritzBox.CallMonitor.Missing"); + if (!String.IsNullOrEmpty(filePath)) return filePath; + + // use new default image + filePath = Utils.GetCoverArt(ContactPicturesFolder, "FritzBox.CallMonitor.Missing"); + if (!String.IsNullOrEmpty(filePath)) return filePath; + + // use old default image + filePath = Utils.GetCoverArt(Thumbs.Yac, "_noImage"); + if (!String.IsNullOrEmpty(filePath)) return filePath; + + return String.Empty; + } + } + + #endregion + #region Private Functions/Methods private void OnStartExternal(Process proc, bool waitForExit) @@ -184,18 +239,35 @@ #region Helper Methods + private string GetCallerImage(string callerId) + { + // search image for caller + if (Settings.ExtensiveLogging) + Log.Info("searching image for callerId: " + callerId); + + string filePath; + + // use new image path + filePath = Utils.GetCoverArt(ContactPicturesFolder, callerId); + if (!String.IsNullOrEmpty(filePath)) return filePath; + Log.Info("found image not in: " + ContactPicturesFolder); + + // use old image path + filePath = Utils.GetCoverArt(Thumbs.Yac, callerId); + if (!String.IsNullOrEmpty(filePath)) return filePath; + Log.Info("found image not in: " + Thumbs.Yac); + + return String.Empty; + } + private string GetCallerImage(Caller caller) { if (caller.ID == "") - return Utils.GetCoverArt(Thumbs.Yac, "_unknown"); + return UnknownCallerImage; else { - string strImage = Utils.GetCoverArtName(Thumbs.Yac, caller.Name); + string strImage = GetCallerImage(caller.Name); - // search image for caller - if (Settings.ExtensiveLogging) - Log.Info("searching image: " + strImage); - if (File.Exists(strImage)) { if (Settings.ExtensiveLogging) @@ -208,7 +280,7 @@ else { Log.Info("found NO image for caller"); - return Utils.GetCoverArt(Thumbs.Yac, "_noImage"); + return MissingCallerImage; } } } @@ -292,7 +364,7 @@ /// </summary> public void Start() { - Log.Info("FRITZ!Box Plugin {0} starting.", VERSION); + Log.Info("FRITZ!Box Plugin {0} starting.", Assembly.GetExecutingAssembly().GetName().Version); Settings.Load(); Utils.OnStartExternal += new Utils.UtilEventHandler(OnStartExternal); @@ -308,7 +380,7 @@ /// </summary> public void Stop() { - Log.Info("FRITZ!Box Plugin {0} stopping.", VERSION); + Log.Info("FRITZ!Box Plugin {0} stopping.", Assembly.GetExecutingAssembly().GetName().Version); FritzBoxClient.StopClient(); FritzBoxClient.CallEvent -= new FritzBoxClient.CallEventHandler(OnCallAction); Modified: trunk/plugins/FritzBox/FritzBox/FritzBox.csproj =================================================================== --- trunk/plugins/FritzBox/FritzBox/FritzBox.csproj 2009-12-05 15:12:22 UTC (rev 3205) +++ trunk/plugins/FritzBox/FritzBox/FritzBox.csproj 2009-12-05 17:33:17 UTC (rev 3206) @@ -90,6 +90,15 @@ <EmbeddedResource Include="FritzBox.png" /> <EmbeddedResource Include="FritzBoxDisabled.png" /> </ItemGroup> + <ItemGroup> + <Content Include="gfx\FritzBox.ico" /> + <Content Include="gfx\FritzBoxIconMadeByHarley.png" /> + <Content Include="ContactImages\FritzBox.CallMonitor.Missing.png" /> + <Content Include="ContactImages\FritzBox.CallMonitor.Unknown.png" /> + </ItemGroup> + <ItemGroup> + <None Include="MpeRelease\FritzBox.xmp2" /> + </ItemGroup> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> <!-- To modify your build process, add your task inside one of the targets below and uncomment it. Other similar extension points exist, see Microsoft.Common.targets. Modified: trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.cs 2009-12-05 15:12:22 UTC (rev 3205) +++ trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.cs 2009-12-05 17:33:17 UTC (rev 3206) @@ -22,6 +22,7 @@ using System; using System.IO; +using System.Reflection; using System.Windows.Forms; using MediaPortal.Util; @@ -41,7 +42,7 @@ private void LoadSettings() { - labelVersion.Text = "v" + FritzBox.VERSION; + labelVersion.Text = "v" + Assembly.GetExecutingAssembly().GetName().Version; Settings.Load(); Copied: trunk/plugins/FritzBox/FritzBox/MpeRelease/FritzBox.xmp2 (from rev 3204, trunk/plugins/FritzBox/FritzBox.xmp) =================================================================== --- trunk/plugins/FritzBox/FritzBox/MpeRelease/FritzBox.xmp2 (rev 0) +++ trunk/plugins/FritzBox/FritzBox/MpeRelease/FritzBox.xmp2 2009-12-05 17:33:17 UTC (rev 3206) @@ -0,0 +1,226 @@ +<?xml version="1.0" encoding="utf-8"?> +<PackageClass xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <Version>2.0</Version> + <Groups> + <Items> + <GroupItem Name="Default"> + <ParentGroup /> + <DisplayName>Default</DisplayName> + <DefaulChecked>true</DefaulChecked> + <Description>Default</Description> + <Files> + <Items> + <FileItem InstallType="CopyFile" SystemFile="false" Modified="true"> + <Param1 /> + <UpdateOption>AlwaysOverwrite</UpdateOption> + <LocalFileName>..\bin\Release\FritzBox.dll</LocalFileName> + <ZipFileName>Installer{CopyFile}\{b3856e80-31e2-4738-a5e0-f1c34511d43a}-FritzBox.dll</ZipFileName> + <DestinationFilename>%Plugins%\process\FritzBox.dll</DestinationFilename> + </FileItem> + <FileItem InstallType="CopyFile" SystemFile="false" Modified="true"> + <Param1 /> + <UpdateOption>AlwaysOverwrite</UpdateOption> + <LocalFileName>..\ContactImages\FritzBox.CallMonitor.Missing.png</LocalFileName> + <ZipFileName>Installer{CopyFile}\{238daa99-19ae-4dcf-8627-c7a87d165129}-FritzBox.CallMonitor.Missing.png</ZipFileName> + <DestinationFilename>%Thumbs%\FritzBox.Contacts\FritzBox.CallMonitor.Missing.png</DestinationFilename> + </FileItem> + <FileItem InstallType="CopyFile" SystemFile="false" Modified="true"> + <Param1 /> + <UpdateOption>AlwaysOverwrite</UpdateOption> + <LocalFileName>..\ContactImages\FritzBox.CallMonitor.Unknown.png</LocalFileName> + <ZipFileName>Installer{CopyFile}\{b1765277-c9f5-4ead-aca4-ebda7b216bd7}-FritzBox.CallMonitor.Unknown.png</ZipFileName> + <DestinationFilename>%Thumbs%\FritzBox.Contacts\FritzBox.CallMonitor.Unknown.png</DestinationFilename> + </FileItem> + </Items> + </Files> + </GroupItem> + </Items> + </Groups> + <Sections> + <Items> + <SectionItem Guid="fea723fd-26bf-4b6b-9991-1b648c22705a" Name="Welcome Screen" ConditionGroup=""> + <Params> + <Items> + <SectionParam Name="Header text"> + <Value>Welcome to the Extension Installer for [Name]</Value> + <ValueType>String</ValueType> + <Description /> + </SectionParam> + <SectionParam Name="Description"> + <Value>This will install [Name] version [Version] on your computer. +It is recommended that you close all other applications before continuing. +Click Next to continue or Cancel to exit Setup.</Value> + <ValueType>String</ValueType> + <Description /> + </SectionParam> + <SectionParam Name="Left part image"> + <Value /> + <ValueType>File</ValueType> + <Description /> + </SectionParam> + <SectionParam Name="Header image"> + <Value /> + <ValueType>File</ValueType> + <Description>Image in upper right part</Description> + </SectionParam> + </Items> + </Params> + <Actions> + <Items /> + </Actions> + <IncludedGroups /> + <PanelName>Welcome Screen</PanelName> + <WizardButtonsEnum>NextCancel</WizardButtonsEnum> + </SectionItem> + <SectionItem Guid="c0b65164-25e4-4a35-a15f-2397c5518058" Name="Install Section" ConditionGroup=""> + <Params> + <Items> + <SectionParam Name="Header Title"> + <Value /> + <ValueType>String</ValueType> + <Description>Header title</Description> + </SectionParam> + <SectionParam Name="Header description"> + <Value /> + <ValueType>String</ValueType> + <Description>Description of section, shown in under section title</Description> + </SectionParam> + <SectionParam Name="Header image"> + <Value /> + <ValueType>File</ValueType> + <Description>Image in upper right part</Description> + </SectionParam> + </Items> + </Params> + <Actions> + <Items> + <ActionItem Name="InstallFiles" ActionType="InstallFiles" ConditionGroup=""> + <Params> + <Items /> + </Params> + <ExecuteLocation>AfterPanelShow</ExecuteLocation> + </ActionItem> + </Items> + </Actions> + <IncludedGroups /> + <PanelName>Install Section</PanelName> + <WizardButtonsEnum>Next</WizardButtonsEnum> + </SectionItem> + <SectionItem Guid="a69ff23b-0fd9-4180-9384-b8b875cea005" Name="Setup Complete" ConditionGroup=""> + <Params> + <Items> + <SectionParam Name="Header text"> + <Value>The Extension Installer Wizard has successfully installed [Name].</Value> + <ValueType>String</ValueType> + <Description /> + </SectionParam> + <SectionParam Name="Left part image"> + <Value /> + <ValueType>File</ValueType> + <Description /> + </SectionParam> + <SectionParam Name="Header image"> + <Value /> + <ValueType>File</ValueType> + <Description>Image in upper right part</Description> + </SectionParam> + </Items> + </Params> + <Actions> + <Items /> + </Actions> + <IncludedGroups /> + <PanelName>Setup Complete</PanelName> + <WizardButtonsEnum>Finish</WizardButtonsEnum> + </SectionItem> + </Items> + </Sections> + <Dependencies> + <Items /> + </Dependencies> + <GeneralInfo> + <Name>FRITZ!Box CallMonitor</Name> + <Id>175eeceb-e965-4e9b-a26e-0956e3bd94fa</Id> + <Author>chefkoch @ Team MediaPortal</Author> + <HomePage>http://wiki.team-mediaportal.com/Extensions-Plugins/FritzBoxCallMonitor</HomePage> + <ForumPage>http://forum.team-mediaportal.com/FRITZ!Box_CallMonitor-t5165.html</ForumPage> + <UpdateUrl /> + <Version> + <Major>0</Major> + <Minor>3</Minor> + <Build>3</Build> + <Revision>3</Revision> + </Version> + <ExtensionDescription>The FRITZ!Box plugin is a process plugin, which is able to notify you within MediaPortal on an incomming call on your FRITZ!Box. + +All strings are multi language. + +You will be informed with a small notify. It is possible to stop media playback automatically or to resume if you close the notify. You can specify your MSNs now, for which the notify should be shown. That avoids showing the notify when you get a fax. + +In the plugin is a small phonebook integrated, so you can define your own name/text for a specifc caller. You can blacklist each entry, then no notify will be shown if he calls you. If someone calls you who is not already in the phonebook, it is possible to add it automatically. + +The plugin supports pictures for each caller. You can place a picture in "ThumbsYAC"-directory which is in jpg, png or bmp format. The filename have to be the specified name NOT the callerid. </ExtensionDescription> + <VersionDescription>First release supporting mp1e extension format</VersionDescription> + <DevelopmentStatus>Stable</DevelopmentStatus> + <OnlineLocation /> + <ReleaseDate>2009-12-05T14:19:38.5618746+01:00</ReleaseDate> + <Tags>input, phone, calls</Tags> + <Location>D:\MediaPortal\mp-plugins\trunk\plugins\FritzBox\FritzBox\MpeRelease\FritzBox.mpe1</Location> + <Params> + <Items> + <SectionParam Name="Icon"> + <Value>..\FritzBox.png</Value> + <ValueType>File</ValueType> + <Description>The icon file of the package (jpg,png,bmp)</Description> + </SectionParam> + <SectionParam Name="Online Icon"> + <Value /> + <ValueType>String</ValueType> + <Description>The icon file of the package stored online (jpg,png,bmp)</Description> + </SectionParam> + <SectionParam Name="Configuration file"> + <Value /> + <ValueType>Template</ValueType> + <Description>The file used to configure the extension. + If have .exe extension the will be executed + If have .dll extension used like MP plugin configuration</Description> + </SectionParam> + </Items> + </Params> + </GeneralInfo> + <UniqueFileList> + <Items> + <FileItem InstallType="CopyFile" SystemFile="false" Modified="true"> + <Param1 /> + <UpdateOption>AlwaysOverwrite</UpdateOption> + <LocalFileName>..\bin\Release\FritzBox.dll</LocalFileName> + <ZipFileName>Installer{CopyFile}\{b3856e80-31e2-4738-a5e0-f1c34511d43a}-FritzBox.dll</ZipFileName> + <DestinationFilename>%Plugins%\process\FritzBox.dll</DestinationFilename> + </FileItem> + <FileItem InstallType="CopyFile" SystemFile="false" Modified="true"> + <Param1 /> + <UpdateOption>AlwaysOverwrite</UpdateOption> + <LocalFileName>..\ContactImages\FritzBox.CallMonitor.Missing.png</LocalFileName> + <ZipFileName>Installer{CopyFile}\{238daa99-19ae-4dcf-8627-c7a87d165129}-FritzBox.CallMonitor.Missing.png</ZipFileName> + <DestinationFilename>%Thumbs%\FritzBox.Contacts\FritzBox.CallMonitor.Missing.png</DestinationFilename> + </FileItem> + <FileItem InstallType="CopyFile" SystemFile="false" Modified="true"> + <Param1 /> + <UpdateOption>AlwaysOverwrite</UpdateOption> + <LocalFileName>..\ContactImages\FritzBox.CallMonitor.Unknown.png</LocalFileName> + <ZipFileName>Installer{CopyFile}\{b1765277-c9f5-4ead-aca4-ebda7b216bd7}-FritzBox.CallMonitor.Unknown.png</ZipFileName> + <DestinationFilename>%Thumbs%\FritzBox.Contacts\FritzBox.CallMonitor.Unknown.png</DestinationFilename> + </FileItem> + <FileItem InstallType="CopyFile" SystemFile="true" Modified="true"> + <Param1 /> + <UpdateOption>OverwriteIfOlder</UpdateOption> + <LocalFileName>..\FritzBox.png</LocalFileName> + <ZipFileName>Installer{CopyFile}\{4b27b176-89e5-4fda-a476-c8d78749c428}-FritzBox.png</ZipFileName> + <DestinationFilename /> + </FileItem> + </Items> + </UniqueFileList> + <ProjectSettings> + <FolderGroups /> + </ProjectSettings> +</PackageClass> \ No newline at end of file Modified: trunk/plugins/FritzBox/FritzBox/Properties/AssemblyInfo.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/Properties/AssemblyInfo.cs 2009-12-05 15:12:22 UTC (rev 3205) +++ trunk/plugins/FritzBox/FritzBox/Properties/AssemblyInfo.cs 2009-12-05 17:33:17 UTC (rev 3206) @@ -28,7 +28,7 @@ // associated with an assembly. [assembly: AssemblyTitle("FRITZ!Box CallMonitor")] -[assembly: AssemblyDescription("")] +[assembly: AssemblyDescription("Displays FRITZ!Box calling information.")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("chefkoch @ Team MediaPortal")] [assembly: AssemblyProduct("FRITZ!Box CallMonitor")] @@ -56,5 +56,5 @@ // You can specify all the values or you can default the Revision and Build Numbers // by using the '*' as shown below: -[assembly: AssemblyVersion(FritzBox.FritzBox.VERSION)] -[assembly: AssemblyFileVersion(FritzBox.FritzBox.VERSION)] \ No newline at end of file +[assembly: AssemblyVersion("0.3.4.0")] +[assembly: AssemblyFileVersion("0.3.4.0")] \ No newline at end of file Modified: trunk/plugins/FritzBox/FritzBox/Properties/Resources.Designer.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/Properties/Resources.Designer.cs 2009-12-05 15:12:22 UTC (rev 3205) +++ trunk/plugins/FritzBox/FritzBox/Properties/Resources.Designer.cs 2009-12-05 17:33:17 UTC (rev 3206) @@ -1,7 +1,7 @@ //------------------------------------------------------------------------------ // <auto-generated> // Dieser Code wurde von einem Tool generiert. -// Laufzeitversion:2.0.50727.1433 +// Laufzeitversion:2.0.50727.4927 // // Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn // der Code erneut generiert wird. Added: trunk/plugins/FritzBox/FritzBox/Settings.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/Settings.cs (rev 0) +++ trunk/plugins/FritzBox/FritzBox/Settings.cs 2009-12-05 17:33:17 UTC (rev 3206) @@ -0,0 +1,175 @@ +#region Copyright (C) 2005-2009 Team MediaPortal + +// Copyright (C) 2005-2009 Team MediaPortal +// http://www.team-mediaportal.com +// +// 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, 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 GNU Make; see the file COPYING. If not, write to +// the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. +// http://www.gnu.org/copyleft/gpl.html + +#endregion + +using System; +using System.Collections.Generic; +using System.Reflection; +using MediaPortal.Configuration; +using MediaPortal.ServiceImplementations; + +namespace FritzBox +{ + internal static class Settings + { + #region Properties + + private const string PLUGIN_NAME = "FRITZ!Box"; + + public static bool ExtensiveLogging { get; set; } + + /// <summary> + /// stop media when an event happend + /// </summary> + public static bool StopMedia { get; set; } + + /// <summary> + /// resume media when notify is closed + /// </summary> + public static bool ResumeMedia { get; set; } + + public static int MaxNotifies { get; set; } + + /// <summary> + /// autoclose the dialog after the timeout expired + /// </summary> + public static int NotifyTimeout { get; set; } + + public static bool CloseOnTimeout { get; set; } + + public static bool CloseOnConnectionClosed { get; set; } + + public static bool ShowMsnOnHeading { get; set; } + + public static bool FilterMSN { get; set; } + + public static List<String> MSNList + { + get + { + if (_msnList == null) + _msnList = new List<String>(); + + return _msnList; + } + set { _msnList = value; } + } + + private static List<String> _msnList; + + static Settings() + { + StopMedia = true; + ResumeMedia = true; + MaxNotifies = 20; + NotifyTimeout = 10; + } + + #endregion + + public static void Load() + { + Log.Info("FRITZ!Box: Settings.Load()"); + + PhoneBook.LoadSettings(); + + using ( + MediaPortal.Profile.Settings xmlreader = + new MediaPortal.Profile.Settings(Config.GetFile(Config.Dir.Config, "MediaPortal.xml"))) + { + ExtensiveLogging = xmlreader.GetValueAsBool("fritzbox", "extensiveLogging", false); + + FritzBoxClient.Address = xmlreader.GetValueAsString("fritzbox", "address", "fritz.box"); + FritzBoxClient.Port = xmlreader.GetValueAsInt("fritzbox", "port", 1012); + + // notify settings + MaxNotifies = xmlreader.GetValueAsInt("fritzbox", "maxNotifies", 20); + CloseOnTimeout = xmlreader.GetValueAsBool("fritzbox", "closeOnTimeout", false); + NotifyTimeout = xmlreader.GetValueAsInt("fritzbox", "timeout", 10); + CloseOnConnectionClosed = xmlreader.GetValueAsBool("fritzbox", "closeOnConnectionClosed", true); + + //if ((!CloseOnTimeout) || (NotifyTimeout == 0)) + // NotifyTimeout = -1; + + FilterMSN = xmlreader.GetValueAsBool("fritzbox", "filterMSNs", false); + string strMSN = xmlreader.GetValueAsString("fritzbox", "MSN", ""); + char[] charSeparators = new char[] {';'}; + MSNList.AddRange(strMSN.Split(charSeparators, StringSplitOptions.RemoveEmptyEntries)); + + ShowMsnOnHeading = xmlreader.GetValueAsBool("fritzbox", "showMsnOnHeading", false); + + // media settings + StopMedia = xmlreader.GetValueAsBool("fritzbox", "stopMedia", true); + ResumeMedia = xmlreader.GetValueAsBool("fritzbox", "resumeMedia", true); + } + + WriteToLog(); + } + + public static void Save() + { + Log.Info("FRITZ!Box: Settings.Save()"); + + using ( + MediaPortal.Profile.Settings xmlwriter = + new MediaPortal.Profile.Settings(Config.GetFile(Config.Dir.Config, "MediaPortal.xml"))) + { + xmlwriter.SetValueAsBool("fritzbox", "extensiveLogging", ExtensiveLogging); + + xmlwriter.SetValue("fritzbox", "address", FritzBoxClient.Address); + xmlwriter.SetValue("fritzbox", "port", FritzBoxClient.Port); + + // notify settings + xmlwriter.SetValue("fritzbox", "maxNotifies", MaxNotifies); + xmlwriter.SetValueAsBool("fritzbox", "closeOnTimeout", CloseOnTimeout); + xmlwriter.SetValue("fritzbox", "timeout", NotifyTimeout); + xmlwriter.SetValueAsBool("fritzbox", "closeOnConnectionClosed", CloseOnConnectionClosed); + + xmlwriter.SetValueAsBool("fritzbox", "filterMSNs", FilterMSN); + string strMSN = ""; + foreach (string msn in MSNList) + { + strMSN += msn + ";"; + } + xmlwriter.SetValue("fritzbox", "MSN", strMSN); + + xmlwriter.SetValueAsBool("fritzbox", "showMsnOnHeading", ShowMsnOnHeading); + + // media settings + xmlwriter.SetValueAsBool("fritzbox", "stopMedia", StopMedia); + xmlwriter.SetValueAsBool("fritzbox", "resumeMedia", ResumeMedia); + } + + PhoneBook.SaveSettings(); + } + + public static void WriteToLog() + { + // get all properties + PropertyInfo[] propertyInfos = typeof (Settings).GetProperties(); + // write property names and values + foreach (PropertyInfo propertyInfo in propertyInfos) + { + Log.Info("{0}: {1} = {2}", PLUGIN_NAME, propertyInfo.Name, propertyInfo.GetValue(null, null).ToString()); + } + } + } +} \ No newline at end of file Modified: trunk/plugins/FritzBox/FritzBox.sln =================================================================== --- trunk/plugins/FritzBox/FritzBox.sln 2009-12-05 15:12:22 UTC (rev 3205) +++ trunk/plugins/FritzBox/FritzBox.sln 2009-12-05 17:33:17 UTC (rev 3206) @@ -17,12 +17,10 @@ GlobalSection(ProjectConfigurationPlatforms) = postSolution {7A458560-A537-429E-A016-1A4513CB586F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {7A458560-A537-429E-A016-1A4513CB586F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7A458560-A537-429E-A016-1A4513CB586F}.Debug|x86.ActiveCfg = Debug|x86 - {7A458560-A537-429E-A016-1A4513CB586F}.Debug|x86.Build.0 = Debug|x86 + {7A458560-A537-429E-A016-1A4513CB586F}.Debug|x86.ActiveCfg = Debug|Any CPU {7A458560-A537-429E-A016-1A4513CB586F}.Release|Any CPU.ActiveCfg = Release|Any CPU {7A458560-A537-429E-A016-1A4513CB586F}.Release|Any CPU.Build.0 = Release|Any CPU - {7A458560-A537-429E-A016-1A4513CB586F}.Release|x86.ActiveCfg = Release|x86 - {7A458560-A537-429E-A016-1A4513CB586F}.Release|x86.Build.0 = Release|x86 + {7A458560-A537-429E-A016-1A4513CB586F}.Release|x86.ActiveCfg = Release|Any CPU {5D751473-DCC5-4044-A6E3-403D97C5B9F9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {5D751473-DCC5-4044-A6E3-403D97C5B9F9}.Debug|Any CPU.Build.0 = Debug|Any CPU {5D751473-DCC5-4044-A6E3-403D97C5B9F9}.Debug|x86.ActiveCfg = Debug|Any CPU Deleted: trunk/plugins/FritzBox/FritzBox.xmp =================================================================== --- trunk/plugins/FritzBox/FritzBox.xmp 2009-12-05 15:12:22 UTC (rev 3205) +++ trunk/plugins/FritzBox/FritzBox.xmp 2009-12-05 17:33:17 UTC (rev 3206) @@ -1,72 +0,0 @@ -<MPinstaler> - <ver>1.00.000</ver> - <FileList> - <File> - <FileName>_noImage.png</FileName> - <Type>Thumbs</Type> - <SubType>YAC</SubType> - <Source>FritzBox\gfx\Thumbs\YAC\_noImage.png</Source> - <Id>04010</Id> - <Option /> - <Guid>b572e856-14e4-4f14-843b-5dd085b37daf</Guid> - </File> - <File> - <FileName>_unknown.png</FileName> - <Type>Thumbs</Type> - <SubType>YAC</SubType> - <Source>FritzBox\gfx\Thumbs\YAC\_unknown.png</Source> - <Id>04010</Id> - <Option /> - <Guid>42e38b37-e056-4f15-86e2-9f119c0064ae</Guid> - </File> - <File> - <FileName>FritzBox.dll</FileName> - <Type>Plugin</Type> - <SubType>Process</SubType> - <Source>FritzBox\bin\Release\FritzBox.dll</Source> - <Id>01020</Id> - <Option /> - <Guid>de6ec925-acda-4337-bb1d-71fb08154ea9</Guid> - </File> - </FileList> - <StringList /> - <Actions> - <Action Place="POSTSETUP" Id="1" Command="FritzBox.dll" /> - </Actions> - <SetupGroups /> - <SetupGroupMappings /> - <Option> - <BuildFileName>G:\MediaPortal\mp-plugins\trunk\plugins\FritzBox\FritzBox.mpe1</BuildFileName> - <ProiectFileName>G:\MediaPortal\mp-plugins\trunk\plugins\FritzBox\FritzBox.xmp</ProiectFileName> - <ProiectName>FRITZ!Box CallMonitor</ProiectName> - <Author>chefkoch @ Team MediaPortal</Author> - <UpdateURL>http://www.team-mediaportal.com/files/Download/MediaPortalInstaller(MPI)/Input/FRITZ!BoxCallMonitor/</UpdateURL> - <Version>0.3.3.1</Version> - <Description>The FRITZ!Box plugin is a process plugin, which is able to notify you within MediaPortal on an incomming call on your FRITZ!Box. - -All strings are multi language. - -You will be informed with a small notify. It is possible to stop media playback automatically or to resume if you close the notify. You can specify your MSNs now, for which the notify should be shown. That avoids showing the notify when you get a fax. - -In the plugin is a small phonebook integrated, so you can define your own name/text for a specifc caller. You can blacklist each entry, then no notify will be shown if he calls you. If someone calls you who is not already in the phonebook, it is possible to add it automatically. - -The plugin supports pictures for each caller. You can place a picture in "ThumbsYAC"-directory which is in jpg, png or bmp format. The filename have to be the specified name NOT the callerid. </Description> - <Group>Input</Group> - <Release>Stable </Release> - <Script /> @@ Diff output truncated at 100000 characters. @@ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <che...@us...> - 2009-12-05 17:41:15
|
Revision: 3208 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=3208&view=rev Author: chef_koch Date: 2009-12-05 17:41:07 +0000 (Sat, 05 Dec 2009) Log Message: ----------- fixed buildscript again Modified Paths: -------------- trunk/plugins/FritzBox/Build/BUILD_FritzBoxPlugin.bat trunk/plugins/FritzBox/FritzBox/Properties/AssemblyInfo.cs trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/Properties/AssemblyInfo.cs trunk/plugins/FritzBox/Tools/FritzBoxDebugger/Properties/AssemblyInfo.cs Modified: trunk/plugins/FritzBox/Build/BUILD_FritzBoxPlugin.bat =================================================================== --- trunk/plugins/FritzBox/Build/BUILD_FritzBoxPlugin.bat 2009-12-05 17:37:22 UTC (rev 3207) +++ trunk/plugins/FritzBox/Build/BUILD_FritzBoxPlugin.bat 2009-12-05 17:41:07 UTC (rev 3208) @@ -45,5 +45,5 @@ echo Building MpeExtension package... -"%ProgramDir%\Team MediaPortal\MediaPortal\MpeMaker.exe" "..\FritzBox\MpeRelease\FritzBox.xmp2" /B >> %LOG% +"%ProgramDir%\Team MediaPortal\MediaPortal\MpeMaker.exe" "..\FritzBox\MpeRelease\FritzBox.xmp2" /V=%version% /B >> %LOG% Modified: trunk/plugins/FritzBox/FritzBox/Properties/AssemblyInfo.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/Properties/AssemblyInfo.cs 2009-12-05 17:37:22 UTC (rev 3207) +++ trunk/plugins/FritzBox/FritzBox/Properties/AssemblyInfo.cs 2009-12-05 17:41:07 UTC (rev 3208) @@ -1,4 +1,4 @@ -#region Copyright (C) 2005-2009 Team MediaPortal +#region Copyright (C) 2005-2009 Team MediaPortal // Copyright (C) 2005-2009 Team MediaPortal // http://www.team-mediaportal.com @@ -32,7 +32,7 @@ [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("chefkoch @ Team MediaPortal")] [assembly: AssemblyProduct("FRITZ!Box CallMonitor")] -[assembly: AssemblyCopyright("Copyright \xA9 chefkoch @ Team MediaPortal 2008")] +[assembly: AssemblyCopyright("Copyright © chefkoch @ Team MediaPortal 2008")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] Modified: trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/Properties/AssemblyInfo.cs =================================================================== --- trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/Properties/AssemblyInfo.cs 2009-12-05 17:37:22 UTC (rev 3207) +++ trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/Properties/AssemblyInfo.cs 2009-12-05 17:41:07 UTC (rev 3208) @@ -1,4 +1,4 @@ -#region Copyright (C) 2005-2009 Team MediaPortal +#region Copyright (C) 2005-2009 Team MediaPortal // Copyright (C) 2005-2009 Team MediaPortal // http://www.team-mediaportal.com @@ -32,7 +32,7 @@ [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("MoviesPluginTester")] -[assembly: AssemblyCopyright("Copyright \xA9 2007")] +[assembly: AssemblyCopyright("Copyright © 2007")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] Modified: trunk/plugins/FritzBox/Tools/FritzBoxDebugger/Properties/AssemblyInfo.cs =================================================================== --- trunk/plugins/FritzBox/Tools/FritzBoxDebugger/Properties/AssemblyInfo.cs 2009-12-05 17:37:22 UTC (rev 3207) +++ trunk/plugins/FritzBox/Tools/FritzBoxDebugger/Properties/AssemblyInfo.cs 2009-12-05 17:41:07 UTC (rev 3208) @@ -1,4 +1,4 @@ -#region Copyright (C) 2005-2009 Team MediaPortal +#region Copyright (C) 2005-2009 Team MediaPortal // Copyright (C) 2005-2009 Team MediaPortal // http://www.team-mediaportal.com @@ -32,7 +32,7 @@ [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("MoviesPluginTester")] -[assembly: AssemblyCopyright("Copyright \xA9 2007")] +[assembly: AssemblyCopyright("Copyright © 2007")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <che...@us...> - 2009-12-11 14:25:39
|
Revision: 3226 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=3226&view=rev Author: chef_koch Date: 2009-12-11 14:24:43 +0000 (Fri, 11 Dec 2009) Log Message: ----------- first commit for merging FritzManager into FritzBoxCallMonitor Modified Paths: -------------- trunk/plugins/FritzBox/FritzBox/FritzBox.cs trunk/plugins/FritzBox/FritzBox/FritzBox.csproj trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.Designer.cs trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.cs trunk/plugins/FritzBox/FritzBox/Settings.cs trunk/plugins/FritzBox/FritzBox.sln Added Paths: ----------- trunk/plugins/FritzBox/FritzBox/FritzCallMonitor/ trunk/plugins/FritzBox/FritzBox/FritzCallMonitor/CallAction.cs trunk/plugins/FritzBox/FritzBox/FritzCallMonitor/Caller.cs trunk/plugins/FritzBox/FritzBox/FritzCallMonitor/FritzBoxClient.cs trunk/plugins/FritzBox/FritzBox/FritzCallMonitor/PhoneBook.cs trunk/plugins/FritzBox/FritzBox/FritzManager/ trunk/plugins/FritzBox/FritzBox/FritzManager/ABReader.cs trunk/plugins/FritzBox/FritzBox/FritzManager/CallItem.cs trunk/plugins/FritzBox/FritzBox/FritzManager/Changes.txt trunk/plugins/FritzBox/FritzBox/FritzManager/Fritz.cs trunk/plugins/FritzBox/FritzBox/FritzManager/GCollections.cs trunk/plugins/FritzBox/FritzBox/FritzManager/Install.txt trunk/plugins/FritzBox/FritzBox/FritzManager/MyBinaryReader.cs trunk/plugins/FritzBox/FritzBox/FritzManager/Skin/ trunk/plugins/FritzBox/FritzBox/FritzManager/Skin/Black & White/ trunk/plugins/FritzBox/FritzBox/FritzManager/Skin/Black & White/FritzManager.xml trunk/plugins/FritzBox/FritzBox/FritzManager/Skin/Black & White/Media/ trunk/plugins/FritzBox/FritzBox/FritzManager/Skin/Black & White/Media/callin.png trunk/plugins/FritzBox/FritzBox/FritzManager/Skin/Black & White/Media/callout.png trunk/plugins/FritzBox/FritzBox/FritzManager/Skin/Black & White/Media/rejected.png trunk/plugins/FritzBox/FritzBox/FritzManager/Skin/Blue3/ trunk/plugins/FritzBox/FritzBox/FritzManager/Skin/Blue3/FritzManager.xml trunk/plugins/FritzBox/FritzBox/FritzManager/Skin/Blue3/Media/ trunk/plugins/FritzBox/FritzBox/FritzManager/Skin/Blue3/Media/callin.png trunk/plugins/FritzBox/FritzBox/FritzManager/Skin/Blue3/Media/callout.png trunk/plugins/FritzBox/FritzBox/FritzManager/Skin/Blue3/Media/rejected.png trunk/plugins/FritzBox/FritzBox/FritzManager/Skin/GenericSkin/ trunk/plugins/FritzBox/FritzBox/FritzManager/Skin/GenericSkin/FritzManager.xml trunk/plugins/FritzBox/FritzBox/FritzManager/Skin/GenericSkin/Media/ trunk/plugins/FritzBox/FritzBox/FritzManager/Skin/GenericSkin/Media/callin.png trunk/plugins/FritzBox/FritzBox/FritzManager/Skin/GenericSkin/Media/callout.png trunk/plugins/FritzBox/FritzBox/FritzManager/Skin/GenericSkin/Media/rejected.png trunk/plugins/FritzBox/FritzBox/FritzManager/VoiceboxItem.cs trunk/plugins/FritzBox/FritzBox/FritzManager/todo.txt trunk/plugins/FritzBox/FritzBox/Resources/ trunk/plugins/FritzBox/FritzBox/Resources/ContactImages/ trunk/plugins/FritzBox/FritzBox/Resources/MpeRelease/ trunk/plugins/FritzBox/FritzBox/Resources/fritzdial.sh trunk/plugins/FritzBox/FritzBox/Resources/gfx/ trunk/plugins/FritzBox/FritzBox/Resources/speexdec.exe Removed Paths: ------------- trunk/plugins/FritzBox/FritzBox/CallAction.cs trunk/plugins/FritzBox/FritzBox/Caller.cs trunk/plugins/FritzBox/FritzBox/ContactImages/ trunk/plugins/FritzBox/FritzBox/FritzBoxClient.cs trunk/plugins/FritzBox/FritzBox/MpeRelease/ trunk/plugins/FritzBox/FritzBox/PhoneBook.cs trunk/plugins/FritzBox/FritzBox/gfx/ Deleted: trunk/plugins/FritzBox/FritzBox/CallAction.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/CallAction.cs 2009-12-11 11:53:48 UTC (rev 3225) +++ trunk/plugins/FritzBox/FritzBox/CallAction.cs 2009-12-11 14:24:43 UTC (rev 3226) @@ -1,62 +0,0 @@ -#region Copyright (C) 2005-2009 Team MediaPortal - -// Copyright (C) 2005-2009 Team MediaPortal -// http://www.team-mediaportal.com -// -// 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, 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 GNU Make; see the file COPYING. If not, write to -// the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. -// http://www.gnu.org/copyleft/gpl.html - -#endregion - -using System; -using MediaPortal.ServiceImplementations; - -namespace FritzBox -{ - public class CallAction - { - public enum CallType - { - Incoming, - Outgoing, - ConnectionStarted, - ConnectionClosed, - } - - public CallType Type { get; set; } - public DateTime Time { get; set; } - public Caller Caller { get; set; } - public string MSN { get; set; } - - - public CallAction() - { - Time = DateTime.MinValue; - Caller = new Caller(); - MSN = string.Empty; - } - - - public void WriteToLog() - { - Log.Info("CallAction Info:"); - Log.Info(" CallType: {0}", Type.ToString()); - Log.Info(" Date: {0}", Time.ToShortDateString()); - Log.Info(" Time: {0}", Time.ToShortTimeString()); - Log.Info(" Caller: {0}", Caller.ID); - Log.Info(" MSN: {0}", MSN); - } - } -} \ No newline at end of file Deleted: trunk/plugins/FritzBox/FritzBox/Caller.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/Caller.cs 2009-12-11 11:53:48 UTC (rev 3225) +++ trunk/plugins/FritzBox/FritzBox/Caller.cs 2009-12-11 14:24:43 UTC (rev 3226) @@ -1,45 +0,0 @@ -#region Copyright (C) 2005-2009 Team MediaPortal - -// Copyright (C) 2005-2009 Team MediaPortal -// http://www.team-mediaportal.com -// -// 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, 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 GNU Make; see the file COPYING. If not, write to -// the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. -// http://www.gnu.org/copyleft/gpl.html - -#endregion - -namespace FritzBox -{ - public class Caller - { - public Caller() - { - ID = string.Empty; - Name = string.Empty; - Show = true; - } - - public Caller(string id, string name, bool show) - { - ID = id; - Name = name; - Show = show; - } - - public string ID { get; set; } - public string Name { get; set; } - public bool Show { get; set; } - } -} \ No newline at end of file Modified: trunk/plugins/FritzBox/FritzBox/FritzBox.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/FritzBox.cs 2009-12-11 11:53:48 UTC (rev 3225) +++ trunk/plugins/FritzBox/FritzBox/FritzBox.cs 2009-12-11 14:24:43 UTC (rev 3226) @@ -23,8 +23,11 @@ using System; using System.Collections.Generic; using System.Diagnostics; +using System.Globalization; using System.IO; using System.Reflection; +using FritzManager; +using GCollections; using MediaPortal.Configuration; using MediaPortal.Dialogs; using MediaPortal.GUI.Library; @@ -34,28 +37,30 @@ namespace FritzBox { [PluginIcons("FritzBox.FritzBox.png", "FritzBox.FritzBoxDisabled.png")] - public class FritzBox : ISetupForm, IPlugin + public class FritzBox : GUIWindow, ISetupForm, IPlugin { + #region CallMonitor + #region Constants - private static string ContactPicturesFolder = Config.GetSubFolder(Config.Dir.Thumbs, "FritzBox.Contacts"); + private static readonly string _contactPicturesFolder = Config.GetSubFolder(Config.Dir.Thumbs, "FritzBox.Contacts"); - private static string SkinMediaFolder = Path.Combine(GUIGraphicsContext.Skin, "Media"); + private static readonly string _skinMediaFolder = + Path.Combine(Config.GetSubFolder(Config.Dir.Skin, Settings.MediaPortalSkin), "Media"); - #endregion + #endregion Constants #region Variables private readonly List<CallAction> _actionList = new List<CallAction>(); - private object _tempNotify = null; + private readonly List<CallAction> _notifyQueue = new List<CallAction>(); + private bool _showNotify = true; + private object _tempNotify; - private int notifyCount = 0; + private int notifyCount; - private bool _showNotify = true; - private readonly List<CallAction> _notifyQueue = new List<CallAction>(); + #endregion Variables - #endregion - #region Properties public string UnknownCallerImage @@ -65,11 +70,11 @@ string filePath; // check if skin supports it's own images - filePath = Utils.GetCoverArt(SkinMediaFolder, "FritzBox.CallMonitor.Unknown"); + filePath = Utils.GetCoverArt(_skinMediaFolder, "FritzBox.CallMonitor.Unknown"); if (!String.IsNullOrEmpty(filePath)) return filePath; // use new default image - filePath = Utils.GetCoverArt(ContactPicturesFolder, "FritzBox.CallMonitor.Unknown"); + filePath = Utils.GetCoverArt(_contactPicturesFolder, "FritzBox.CallMonitor.Unknown"); if (!String.IsNullOrEmpty(filePath)) return filePath; // use old default image @@ -87,11 +92,11 @@ string filePath; // check if skin supports it's own images - filePath = Utils.GetCoverArt(SkinMediaFolder, "FritzBox.CallMonitor.Missing"); + filePath = Utils.GetCoverArt(_skinMediaFolder, "FritzBox.CallMonitor.Missing"); if (!String.IsNullOrEmpty(filePath)) return filePath; // use new default image - filePath = Utils.GetCoverArt(ContactPicturesFolder, "FritzBox.CallMonitor.Missing"); + filePath = Utils.GetCoverArt(_contactPicturesFolder, "FritzBox.CallMonitor.Missing"); if (!String.IsNullOrEmpty(filePath)) return filePath; // use old default image @@ -248,9 +253,9 @@ string filePath; // use new image path - filePath = Utils.GetCoverArt(ContactPicturesFolder, callerId); + filePath = Utils.GetCoverArt(_contactPicturesFolder, callerId); if (!String.IsNullOrEmpty(filePath)) return filePath; - Log.Info("found image not in: " + ContactPicturesFolder); + Log.Info("found image not in: " + _contactPicturesFolder); // use old image path filePath = Utils.GetCoverArt(Thumbs.Yac, callerId); @@ -355,6 +360,8 @@ #endregion + #endregion CallMonitor + #region <Interface> Implementations #region IPlugin Interface @@ -367,11 +374,11 @@ Log.Info("FRITZ!Box Plugin {0} starting.", Assembly.GetExecutingAssembly().GetName().Version); Settings.Load(); - Utils.OnStartExternal += new Utils.UtilEventHandler(OnStartExternal); - Utils.OnStopExternal += new Utils.UtilEventHandler(OnStopExternal); + Utils.OnStartExternal += OnStartExternal; + Utils.OnStopExternal += OnStopExternal; - FritzBoxClient.LogEvent += new FritzBoxClient.LogEventHandler(OnLogAction); - FritzBoxClient.CallEvent += new FritzBoxClient.CallEventHandler(OnCallAction); + FritzBoxClient.LogEvent += OnLogAction; + FritzBoxClient.CallEvent += OnCallAction; FritzBoxClient.StartClient(); } @@ -383,11 +390,11 @@ Log.Info("FRITZ!Box Plugin {0} stopping.", Assembly.GetExecutingAssembly().GetName().Version); FritzBoxClient.StopClient(); - FritzBoxClient.CallEvent -= new FritzBoxClient.CallEventHandler(OnCallAction); - FritzBoxClient.LogEvent -= new FritzBoxClient.LogEventHandler(OnLogAction); + FritzBoxClient.CallEvent -= OnCallAction; + FritzBoxClient.LogEvent -= OnLogAction; - Utils.OnStartExternal -= new Utils.UtilEventHandler(OnStartExternal); - Utils.OnStopExternal -= new Utils.UtilEventHandler(OnStopExternal); + Utils.OnStartExternal -= OnStartExternal; + Utils.OnStopExternal -= OnStopExternal; PhoneBook.SaveSettings(); } @@ -396,6 +403,16 @@ #region ISetupForm Member + /// <summary> + /// With GetID it will be an window-plugin / otherwise a process-plugin + /// Enter the id number here again + /// </summary> + public override int GetID + { + get { return GetWindowId(); } + set { } + } + public string PluginName() { return "FRITZ!Box CallMonitor"; @@ -403,12 +420,12 @@ public string Author() { - return "chefkoch"; + return "chefkoch, S.Rinke"; } public string Description() { - return "Displays FRITZ!Box calling information."; + return "Displays FRITZ!Box caller lists and voice box infos and notifies on incoming calls."; } public void ShowPlugin() @@ -431,7 +448,7 @@ public int GetWindowId() { - return -1; + return 464554871; } public bool DefaultEnabled() @@ -447,15 +464,612 @@ public bool GetHome(out string strButtonText, out string strButtonImage, out string strButtonImageFocus, out string strPictureImage) { - strButtonText = null; - strButtonImage = null; - strButtonImageFocus = null; - strPictureImage = null; - return false; + strButtonText = "Telefon"; + strButtonImage = String.Empty; + strButtonImageFocus = String.Empty; + strPictureImage = String.Empty; + return true; } #endregion #endregion + + #region FritzManager + + #region enums + + #region Nested type: Filter + + private enum Filter + { + All = 0, + Incoming = 1, + Outgoing = 2, + Rejected = 3 + } + + #endregion + + #region Nested type: Mode + + private enum Mode + { + CallList = 0, + Voicebox = 1 + } + + #endregion + + #region Nested type: View + + private enum View + { + List = 0, + Icons = 1, + LargeIcons = 2, + } + + #endregion + + #endregion + + #region skin + + [SkinControl(3)] protected GUISortButtonControl btnFilter; + [SkinControl(4)] protected GUIButtonControl btnModus; + [SkinControl(9)] protected GUIButtonControl btnUpdate; + [SkinControl(2)] protected GUIButtonControl btnViewAs; + [SkinControl(50)] protected GUIFacadeControl facadeView; + + #endregion + + #region fields + + private string abpath; + private List<CallItem> callItemList; + private Filter currentFilter = Filter.All; + private Mode currentMode = Mode.Voicebox; + private View currentView = View.List; + private string dialport; + private Fritz fritz; + private DateTime lastCalllistUpdate = DateTime.Now.AddMinutes(-20.0); + private HashMap<string, string> msns = new HashMap<string, string>(); + + private string passwd; + private HashMap<string, string> phoneBook = new HashMap<string, string>(); + private List<VoiceboxItem> voiceboxItemList; + + #endregion + + private List<string> filesToDelete = new List<string>(); + + public override bool Init() + { + return Load(GUIGraphicsContext.Skin + @"\FritzManager.xml"); + } + + protected override void OnPageLoad() + { + using (MediaPortal.Profile.Settings xmlreader = new MediaPortal.Profile.Settings("MediaPortal.xml")) + { + passwd = xmlreader.GetValue("FritzManager", "passwd"); + abpath = xmlreader.GetValue("FritzManager", "abpath"); + dialport = xmlreader.GetValue("FritzManager", "dialport"); + string modestr = xmlreader.GetValue("FritzManager", "currentMode"); + if (modestr != null && modestr != "") + { + currentMode = (Mode) System.Enum.Parse(typeof (Mode), modestr); + } + } + fritz = new Fritz(); + initMsn(); + update(false); + ShowThumbPanel(); + } + + protected void initMsn() + { + //populate msns + if (File.Exists(Config.GetFolder(Config.Dir.Config) + "\\fritzmanager_msns.txt")) + { + using (StreamReader sr = new StreamReader(Config.GetFolder(Config.Dir.Config) + "\\fritzmanager_msns.txt")) + { + while (!sr.EndOfStream) + { + string line = sr.ReadLine(); + string[] items = line.Split('='); + if (items.GetLength(0) > 1) msns.Add(items[0], items[1]); + } + } + } + } + + public override void DeInit() + { + cleanup(); + base.DeInit(); + } + + protected override void OnPageDestroy(int new_windowId) + { + cleanup(); + base.OnPageDestroy(new_windowId); + } + + private void cleanup() + { + // cleanup temp + foreach (string file in filesToDelete) + { + File.Delete(file); + } + filesToDelete.Clear(); + } + + protected void update(bool force) + { + if (currentMode == Mode.CallList) + { + if (force) + { + loadCallListFromFritzbox(); + } + else + { + if (DateTime.Now.Subtract(lastCalllistUpdate).Minutes > 2) + { + lastCalllistUpdate = DateTime.Now; + loadCallListFromFritzbox(); + } + } + populateCallItems(); + } + else if (currentMode == Mode.Voicebox) + { + if (abpath == null || abpath == "") + { + ShowError("Voicebox path not set"); + return; + } + voiceboxItemList = ABReader.loadVoiceboxDir(abpath); + populateVoiceboxItems(); + } + UpdateButtonStates(); + } + + protected void loadCallListFromFritzbox() + { + if (passwd == null) + { + ShowError("FritzBox Passwd nicht gesetzt"); + return; + } + try + { + Log.Debug("load callitem from fritzbox"); + GUIWaitCursor.Show(); + + + fritz.login(passwd); + fritz.refresh(); + + callItemList = CallItem.load(new MemoryStream(fritz.loadCallListData())); + // populate phonebook + foreach (CallItem i in callItemList) + { + if (i.name != "") + { + phoneBook[i.number] = i.name; + } + } + } + catch (Exception e) + { + Log.Debug("Exception {0}", e.Message); + } + GUIWaitCursor.Hide(); + } + + protected string decode(VoiceboxItem item) + { + System.Diagnostics.Process proc = new System.Diagnostics.Process(); + proc.EnableRaisingEvents = false; + proc.StartInfo.FileName = "speexdec"; + string target = Path.GetTempPath() + item.seq + ".wav"; + proc.StartInfo.Arguments = "\"" + abpath + "\\rec\\" + item.filename + "\" \"" + target + "\""; + proc.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; + + proc.Start(); + proc.WaitForExit(); + proc.Close(); + filesToDelete.Add(target); + return target; + } + + /// <summary> + /// fill in voicebox items in facadeView + /// </summary> + protected void populateVoiceboxItems() + { + CultureInfo ci = CultureInfo.InvariantCulture; + string format = "dd.MM.yy HH:mm"; + facadeView.Clear(); + voiceboxItemList.Sort(VoiceboxItem.CompareByDate); + int i = 0; + foreach (VoiceboxItem item in voiceboxItemList) + { + if (item.type == 3) + { + GUIListItem elem = new GUIListItem(); + string caller = item.callerId; + if (phoneBook.Contains(caller)) + { + caller = phoneBook[caller]; + } + if (caller == "") + { + caller = "Unbekannt"; + } + string msnName = item.mynumber; + if (msns.Contains(item.mynumber)) + msnName = msns[item.mynumber]; + elem.Label = (item.isNew == 1 ? "* " : " ") + item.time.ToString(format, ci); + elem.Label2 = caller + " an " + msnName; + elem.Path = Convert.ToString(i); + elem.IconImageBig = "defaultAudioBig.png"; + elem.IconImage = "defaultAudio.png"; + elem.IsFolder = false; + string thumbDir = Config.GetFolder(Config.Dir.Thumbs) + "\\yac\\"; + if (File.Exists(thumbDir + caller + ".jpg")) + { + elem.ThumbnailImage = thumbDir + caller + ".jpg"; + } + else + { + elem.ThumbnailImage = thumbDir + "_noImage.png"; + } + facadeView.Add(elem); + } + i++; + } + } + + /// <summary> + /// fill in call items in facadeView + /// </summary> + protected void populateCallItems() + { + CultureInfo ci = CultureInfo.InvariantCulture; + string format = "dd.MM.yy HH:mm"; + facadeView.Clear(); + int i = 0; + foreach (CallItem item in callItemList) + { + GUIListItem elem = new GUIListItem(); + if (currentFilter == Filter.Rejected) + { + if (item.type != 2) continue; + } + if (currentFilter == Filter.Incoming) + { + if (item.type != 1) continue; + } + if (currentFilter == Filter.Outgoing) + { + if (item.type != 3) continue; + } + + elem.Label = item.timestamp.ToString(format, ci) + " - " + item.duration.ToString("HH:mm", ci); + if (item.name != "") + { + elem.Label2 = item.name; + } + else + { + elem.Label2 = item.number; + } + elem.Path = Convert.ToString(i); + + string thumbDir = Config.GetFolder(Config.Dir.Thumbs) + "\\yac\\"; + if (File.Exists(thumbDir + item.name + ".jpg")) + { + elem.ThumbnailImage = thumbDir + item.name + ".jpg"; + } + else + { + if (item.name == null || item.name == "") + { + elem.ThumbnailImage = thumbDir + "_unknown.png"; + } + else + { + elem.ThumbnailImage = thumbDir + "_noImage.png"; + } + } + string icon = "defaultAudioBig.png"; + if (item.type == 1) + { + icon = "callin.png"; + } + else if (item.type == 3) + { + icon = "callout.png"; + } + else if (item.type == 2) + { + icon = "rejected.png"; + } + elem.IconImageBig = icon; + elem.IconImage = icon; + + elem.IsFolder = false; + + facadeView.Add(elem); + i++; + } + } + + private void ShowThumbPanel() + { + int itemIndex = facadeView.SelectedListItemIndex; + if (currentView == View.LargeIcons) + { + facadeView.View = GUIFacadeControl.ViewMode.LargeIcons; + } + else if (currentView == View.Icons) + { + facadeView.View = GUIFacadeControl.ViewMode.SmallIcons; + } + else if (currentView == View.List) + { + facadeView.View = GUIFacadeControl.ViewMode.List; + } + + if (itemIndex > -1) + { + GUIControl.SelectItemControl(GetID, facadeView.GetID, itemIndex); + } + UpdateButtonStates(); + } + + protected override void OnShowContextMenu() + { + base.OnShowContextMenu(); + if (currentMode == Mode.Voicebox) + { + int r = ShowVoiceboxContextMenu(); + switch (r) + { + case 0: // play + g_Player.Play(decode(voiceboxItemList[Convert.ToInt16(facadeView.SelectedListItem.Path)])); + break; + case 1: + break; + } + } + else if (currentMode == Mode.CallList) + { + int r = ShowCallListContextMenu(); + switch (r) + { + case 0: // callback + CallItem item = callItemList[Convert.ToInt16(facadeView.SelectedListItem.Path)]; + fritz.dial(item.number, dialport); + break; + } + } + } + + protected override void OnClicked(int controlId, GUIControl control, + MediaPortal.GUI.Library.Action.ActionType actionType) + { + base.OnClicked(controlId, control, actionType); + + if (control == facadeView) + { + GUIMessage msg = new GUIMessage(GUIMessage.MessageType.GUI_MSG_ITEM_SELECTED, GetID, 0, controlId, 0, 0, null); + OnMessage(msg); + int itemIndex = msg.Param1; + + if (actionType == MediaPortal.GUI.Library.Action.ActionType.ACTION_SELECT_ITEM) + { + GUIListItem actual = facadeView.SelectedListItem; + if (currentMode == Mode.Voicebox) + { + string tmp = decode(voiceboxItemList[Convert.ToInt16(actual.Path)]); + g_Player.Play(tmp); + } + } + } + + if (control == btnViewAs) + { + bool shouldContinue = false; + do + { + shouldContinue = false; + switch (currentView) + { + case View.List: + currentView = View.Icons; + if (facadeView.ThumbnailView == null) + shouldContinue = true; + else + facadeView.View = GUIFacadeControl.ViewMode.SmallIcons; + break; + + case View.Icons: + currentView = View.LargeIcons; + if (facadeView.ThumbnailView == null) + shouldContinue = true; + else + facadeView.View = GUIFacadeControl.ViewMode.LargeIcons; + break; + + case View.LargeIcons: + currentView = View.List; + if (facadeView.ListView == null) + shouldContinue = true; + else + facadeView.View = GUIFacadeControl.ViewMode.List; + break; + } + } while (shouldContinue); + + UpdateButtonStates(); + GUIControl.FocusControl(GetID, controlId); + return; + } + if (control == btnFilter) + { + switch (currentFilter) + { + case Filter.All: + currentFilter = Filter.Incoming; + break; + case Filter.Incoming: + currentFilter = Filter.Outgoing; + break; + case Filter.Outgoing: + currentFilter = Filter.Rejected; + break; + case Filter.Rejected: + currentFilter = Filter.All; + break; + } + populateCallItems(); + UpdateButtonStates(); + GUIControl.FocusControl(GetID, controlId); + } + if (control == btnUpdate) + { + update(true); + } + + if (control == btnModus) + { + switch (currentMode) + { + case Mode.CallList: + currentMode = Mode.Voicebox; + break; + case Mode.Voicebox: + currentMode = Mode.CallList; + break; + } + // TODO write currentMode + update(false); + } + } + + private int ShowCallListContextMenu() + { + GUIDialogMenu dlgMenu = (GUIDialogMenu) GUIWindowManager.GetWindow((int) GUIWindow.Window.WINDOW_DIALOG_MENU); + if (dlgMenu != null) + { + dlgMenu.Reset(); + dlgMenu.SetHeading("Anrufe"); + dlgMenu.Add("Zur\xFCckrufen"); + dlgMenu.DoModal(GetID); + + if (dlgMenu.SelectedLabel == -1) // Nothing was selected + return -1; + + return dlgMenu.SelectedLabel; + } + return -1; + } + + private int ShowVoiceboxContextMenu() + { + GUIDialogMenu dlgMenu = (GUIDialogMenu) GUIWindowManager.GetWindow((int) GUIWindow.Window.WINDOW_DIALOG_MENU); + if (dlgMenu != null) + { + dlgMenu.Reset(); + dlgMenu.SetHeading("Nachrichten"); + dlgMenu.Add("Nachricht abspielen"); + dlgMenu.Add("Nachricht als geh\xF6rt markieren"); + dlgMenu.Add("Nachricht l\xF6schen"); + dlgMenu.DoModal(GetID); + + if (dlgMenu.SelectedLabel == -1) // Nothing was selected + return -1; + + return dlgMenu.SelectedLabel; + } + return -1; + } + + private void UpdateButtonStates() + { + facadeView.IsVisible = false; + facadeView.IsVisible = true; + GUIControl.FocusControl(GetID, facadeView.GetID); + + string strLine = string.Empty; + View view = currentView; + switch (view) + { + case View.List: + strLine = GUILocalizeStrings.Get(101); + break; + case View.Icons: + strLine = GUILocalizeStrings.Get(100); + break; + case View.LargeIcons: + strLine = GUILocalizeStrings.Get(417); + break; + } + + if (btnViewAs != null) + { + btnViewAs.Label = strLine; + } + + switch (currentFilter) + { + case Filter.All: + strLine = "Alle"; //GUILocalizeStrings.Get(103); + break; + case Filter.Incoming: + strLine = "Eingehend"; //GUILocalizeStrings.Get(668); + break; + case Filter.Outgoing: + strLine = "Ausgehend"; //GUILocalizeStrings.Get(669); + break; + case Filter.Rejected: + strLine = "Abgelehnt"; + break; + } + + if (btnFilter != null) + { + btnFilter.Label = strLine; + btnFilter.IsAscending = true; + } + switch (currentMode) + { + case Mode.Voicebox: + btnModus.Label = "Anrufliste"; + break; + case Mode.CallList: + btnModus.Label = "Nachrichten"; + break; + } + } + + private void ShowError(string msg) + { + GUIDialogOK dlg = (GUIDialogOK) GUIWindowManager.GetWindow( + (int) GUIWindow.Window.WINDOW_DIALOG_OK); + dlg.SetHeading("Error"); + dlg.SetLine(1, msg); + dlg.SetLine(2, String.Empty); + dlg.SetLine(3, String.Empty); + dlg.DoModal(GUIWindowManager.ActiveWindow); + } + + #endregion FritzManager } } \ No newline at end of file Modified: trunk/plugins/FritzBox/FritzBox/FritzBox.csproj =================================================================== --- trunk/plugins/FritzBox/FritzBox/FritzBox.csproj 2009-12-11 11:53:48 UTC (rev 3225) +++ trunk/plugins/FritzBox/FritzBox/FritzBox.csproj 2009-12-11 14:24:43 UTC (rev 3226) @@ -54,10 +54,16 @@ </Reference> </ItemGroup> <ItemGroup> - <Compile Include="FritzBoxClient.cs" /> + <Compile Include="FritzCallMonitor\FritzBoxClient.cs" /> + <Compile Include="FritzManager\ABReader.cs" /> + <Compile Include="FritzManager\CallItem.cs" /> + <Compile Include="FritzManager\Fritz.cs" /> + <Compile Include="FritzManager\GCollections.cs" /> + <Compile Include="FritzManager\MyBinaryReader.cs" /> + <Compile Include="FritzManager\VoiceboxItem.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> - <Compile Include="Caller.cs" /> - <Compile Include="CallAction.cs" /> + <Compile Include="FritzCallMonitor\Caller.cs" /> + <Compile Include="FritzCallMonitor\CallAction.cs" /> <Compile Include="FritzBoxConfig.cs"> <SubType>Form</SubType> </Compile> @@ -65,7 +71,7 @@ <DependentUpon>FritzBoxConfig.cs</DependentUpon> </Compile> <Compile Include="FritzBox.cs" /> - <Compile Include="PhoneBook.cs" /> + <Compile Include="FritzCallMonitor\PhoneBook.cs" /> <Compile Include="Properties\Resources.Designer.cs"> <AutoGen>True</AutoGen> <DesignTime>True</DesignTime> @@ -91,13 +97,30 @@ <EmbeddedResource Include="FritzBoxDisabled.png" /> </ItemGroup> <ItemGroup> - <Content Include="gfx\FritzBox.ico" /> - <Content Include="gfx\FritzBoxIconMadeByHarley.png" /> - <Content Include="ContactImages\FritzBox.CallMonitor.Missing.png" /> - <Content Include="ContactImages\FritzBox.CallMonitor.Unknown.png" /> + <None Include="FritzManager\Changes.txt" /> + <None Include="FritzManager\todo.txt" /> + <Content Include="FritzManager\Install.txt" /> + <Content Include="FritzManager\Skin\Black & White\FritzManager.xml" /> + <Content Include="FritzManager\Skin\Black & White\Media\callin.png" /> + <Content Include="FritzManager\Skin\Black & White\Media\callout.png" /> + <Content Include="FritzManager\Skin\Black & White\Media\rejected.png" /> + <Content Include="FritzManager\Skin\Blue3\FritzManager.xml" /> + <Content Include="FritzManager\Skin\Blue3\Media\callin.png" /> + <Content Include="FritzManager\Skin\Blue3\Media\callout.png" /> + <Content Include="FritzManager\Skin\Blue3\Media\rejected.png" /> + <Content Include="FritzManager\Skin\GenericSkin\FritzManager.xml" /> + <Content Include="FritzManager\Skin\GenericSkin\Media\callin.png" /> + <Content Include="FritzManager\Skin\GenericSkin\Media\callout.png" /> + <Content Include="FritzManager\Skin\GenericSkin\Media\rejected.png" /> + <Content Include="Resources\gfx\FritzBox.ico" /> + <Content Include="Resources\gfx\FritzBoxIconMadeByHarley.png" /> + <Content Include="Resources\ContactImages\FritzBox.CallMonitor.Missing.png" /> + <Content Include="Resources\ContactImages\FritzBox.CallMonitor.Unknown.png" /> + <Content Include="Resources\speexdec.exe" /> </ItemGroup> <ItemGroup> - <None Include="MpeRelease\FritzBox.xmp2" /> + <None Include="Resources\fritzdial.sh" /> + <None Include="Resources\MpeRelease\FritzBox.xmp2" /> </ItemGroup> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> <!-- To modify your build process, add your task inside one of the targets below and uncomment it. Deleted: trunk/plugins/FritzBox/FritzBox/FritzBoxClient.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/FritzBoxClient.cs 2009-12-11 11:53:48 UTC (rev 3225) +++ trunk/plugins/FritzBox/FritzBox/FritzBoxClient.cs 2009-12-11 14:24:43 UTC (rev 3226) @@ -1,401 +0,0 @@ -#region Copyright (C) 2005-2009 Team MediaPortal - -// Copyright (C) 2005-2009 Team MediaPortal -// http://www.team-mediaportal.com -// -// 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, 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 GNU Make; see the file COPYING. If not, write to -// the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. -// http://www.gnu.org/copyleft/gpl.html - -#endregion - -using System; -using System.Globalization; -using System.Net; -using System.Net.Sockets; -using System.Text; -using System.Threading; - -namespace FritzBox -{ - public static class FritzBoxClient - { - #region class StateObject - - /// <summary> - /// State object for receiving data from remote device. - /// </summary> - private class StateObject - { - /// <summary> - /// Client socket. - /// </summary> - public Socket workSocket = null; - - /// <summary> - /// Size of receive buffer. - /// </summary> - public const int BufferSize = 256; - - /// <summary> - /// Receive buffer. - /// </summary> - public readonly byte[] buffer = new byte[BufferSize]; - - /// <summary> - /// Received data string. - /// </summary> - public StringBuilder sb = new StringBuilder(); - } - - public enum LogLevel - { - Info, - Warning, - Error, - Debug, - HeavyDebug, - } - - #endregion - - private static readonly TimeSpan minConnectWaitTime = new TimeSpan(0, 10, 0); - private static DateTime _connectionFailed; - - private static Socket _client; - - #region Properties - - public static string Address { get; set; } - public static int Port { get; set; } - - static FritzBoxClient() - { - Address = "fritz.box"; - Port = 1012; - } - - #endregion - - #region Public Events and Delegates - - public delegate void CallEventHandler(CallAction callAction); - - public static event CallEventHandler CallEvent; - - public delegate void LogEventHandler(LogLevel logLevel, string logMessage); - - public static event LogEventHandler LogEvent; - - #endregion - - #region Public methods - - public static void StartClient() - { - try - { - _connectionFailed = DateTime.MinValue; - - Thread thread = new Thread(new ThreadStart(Connect)); - thread.Start(); - } - catch (Exception ex) - { - Log(ex); - } - } - - public static void StopClient() - { - try - { - // Release the socket. - _client.Shutdown(SocketShutdown.Both); - _client.Close(); - } - catch (Exception ex) - { - Log(ex); - } - } - - public static bool TestConnection() - { - try - { - Log(LogLevel.Info, "Testing address ({0}) and port ({1})", Address, Port); - TcpClient tcpClient; - - try - { - tcpClient = new TcpClient(Address, Port); - } - catch (Exception) - { - Log(LogLevel.Error, - "Address&Port test failed! :(" + Environment.NewLine + - " Did you entered correct connection information?" + Environment.NewLine + - " Are you using the latest FRITZ!Box firmware?" + Environment.NewLine + - " Did you opened the port on your FRITZ!Box? If not, call #96*5* from your phone."); - return false; - } - - tcpClient.Close(); - Log(LogLevel.Info, "Testing Address&Port succeeded."); - return true; - } - catch (Exception ex) - { - Log(ex); - return false; - } - } - - #endregion - - #region Private methods - - private static void ReConnect() - { - try - { - _connectionFailed = DateTime.Now; - - Thread thread = new Thread(new ThreadStart(Connect)); - thread.Start(); - } - catch (Exception ex) - { - Log(ex); - } - } - - private static void Connect() - { - // Enforce a minimum wait time between connects. - DateTime nextconnect = _connectionFailed.Add(minConnectWaitTime); - if (DateTime.Now < nextconnect) - { - TimeSpan waittime = nextconnect - DateTime.Now; - Log(LogLevel.Debug, "Avoiding too much reconnects, sleeping until {0}.", nextconnect.ToString()); - Thread.Sleep(waittime); - } - - try - { - //Establish the remote endpoint for the socket. - //The name of the - //remote device is "host.contoso.com". - IPHostEntry ipHostInfo = Dns.GetHostEntry(Address); - IPAddress ipAddress = ipHostInfo.AddressList[0]; - IPEndPoint remoteEP = new IPEndPoint(ipAddress, Port); - - // Create a TCP/IP socket. - _client = new Socket(AddressFamily.InterNetwork, - SocketType.Stream, ProtocolType.Tcp); - - // Connect to the remote endpoint. - _client.BeginConnect(Address, Port, new AsyncCallback(ConnectCallback), _client); - } - catch (SocketException) - { - Log(LogLevel.Debug, "Connect: SocketException"); - Log(LogLevel.Info, "FRITZ!BOX connection lost, trying to reconnect."); - ReConnect(); - } - catch (Exception ex) - { - Log(ex); - } - } - - private static void ConnectCallback(IAsyncResult ar) - { - try - { - // Retrieve the socket from the state object. - Socket client = (Socket) ar.AsyncState; - - // Complete the connection. - client.EndConnect(ar); - - Log(LogLevel.Debug, "Socket connected to {0}", - client.RemoteEndPoint.ToString()); - - Receive(client); - } - catch (SocketException) - { - Log(LogLevel.Debug, "Connect: SocketException"); - Log(LogLevel.Info, "FRITZ!BOX connection lost, trying to reconnect."); - ReConnect(); - } - catch (Exception ex) - { - Log(ex); - } - } - - - private static void Receive(Socket client) - { - try - { - // Create the state object. - //Log(LogLevel.HeavyDebug, "StateObject state = new StateObject();"); - StateObject state = new StateObject(); - //Log(LogLevel.HeavyDebug, "state.workSocket = client;"); - state.workSocket = client; - - //Log(LogLevel.HeavyDebug, "Available {0}", client.Available); - //Log(LogLevel.HeavyDebug, "Connected {0}", client.Connected); - //Log(LogLevel.HeavyDebug, "IsBound {0}", client.IsBound); - //Log(LogLevel.HeavyDebug, "{0}", client.Connected); - - // Begin receiving the data from the remote device. - //Log(LogLevel.HeavyDebug, "client.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0,"); - client.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, - new AsyncCallback(ReceiveCallback), state); - } - catch (SocketException ex) - { - Log(LogLevel.HeavyDebug, "{0}", ex.NativeErrorCode); - Log(LogLevel.HeavyDebug, "{0}", ex.SocketErrorCode); - Log(LogLevel.HeavyDebug, "{0}", ex.Data); - Log(LogLevel.HeavyDebug, "{0}", ex.ErrorCode); - Log(LogLevel.HeavyDebug, "{0}", ex.InnerException); - Log(LogLevel.HeavyDebug, ex.Message); - Log(LogLevel.HeavyDebug, ex.Source); - Log(LogLevel.HeavyDebug, ex.StackTrace); - Log(LogLevel.Debug, "Receive: SocketException"); - Log(LogLevel.Info, "FRITZ!BOX connection lost, trying to reconnect."); - ReConnect(); - } - catch (Exception ex) - { - Log(ex); - } - } - - private static void ReceiveCallback(IAsyncResult ar) - { - try - { - // Retrieve the state object and the client socket - // from the asynchronous state object. - StateObject state = (StateObject) ar.AsyncState; - Socket client = state.workSocket; - - // Read data from the remote device. - int bytesRead = client.EndReceive(ar); - - if (bytesRead > 0) - { - // There might be more data, so store the data received so far. - string data = Encoding.ASCII.GetString(state.buffer, 0, bytesRead); - Log(LogLevel.HeavyDebug, "ReceiveCallback : received data: {0}", data); - //Log.Debug();"ReceiveCallback : received data: {0}", data - - // data-stream can be in following format: - // incoming calls: DateTime;RING;ConnectionID;CallerID;MSN;??POTS??; - // outgoing calls: DateTime;CALL;ConnectionID;??Nebenstelle??;MSN;CallerID;??POTS??; - // connection started: DateTime;CONNECT;ConnectionID;??Nebenstelle??;CallerID; - // connection closed: DateTime;DISCONNECT;ConnectionID;ConnectedTime; - - // DateTime format: - // 12.12.06 12:12:12 - // dd.MM.yy hh:mm:ss - - string[] strList = data.Trim().Split(';'); - CallAction callAction = new CallAction(); - - // time when action happens - callAction.Time = DateTime.Parse(strList[0], new CultureInfo("de-DE", false)); - - // set the type of the callAction - switch (strList[1]) - { - case "RING": - callAction.Type = CallAction.CallType.Incoming; - // sets the callerID - callAction.Caller.ID = strList[3]; - callAction.MSN = strList[4]; - break; - case "CALL": - callAction.Type = CallAction.CallType.Outgoing; - // sets the callerID - callAction.Caller.ID = strList[5]; - callAction.MSN = strList[4]; - break; - case "CONNECT": - callAction.Type = CallAction.CallType.ConnectionStarted; - // sets the callerID - callAction.Caller.ID = strList[4]; - break; - case "DISCONNECT": - callAction.Type = CallAction.CallType.ConnectionClosed; - break; - default: - callAction = null; - break; - } - - // continue to listen to the fb - client.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, - new AsyncCallback(ReceiveCallback), state); - - if (CallEvent != null) - CallEvent(callAction); - } - else - { - Log(LogLevel.Debug, "ReceiveCallback: no bytes to read"); - Log(LogLevel.Info, "FRITZ!BOX connection lost, trying to reconnect."); - ReConnect(); - } - } - catch (ObjectDisposedException) - { - Log(LogLevel.Debug, "ReceiveCallback: ObjectDisposedException"); - Log(LogLevel.Info, "FRITZ!BOX connection shut down."); - } - catch (SocketException) - { - Log(LogLevel.Debug, "ReceiveCallback: SocketException"); - Log(LogLevel.Info, "FRITZ!BOX connection lost, trying to reconnect."); - ReConnect(); - } - catch (Exception ex) - { - Log(ex); - } - } - - - private static void Log(LogLevel logLevel, string format, params object[] arg) - { - if (LogEvent != null) - LogEvent(logLevel, String.Format(format, arg)); - } - - private static void Log(Exception ex) - { - if (LogEvent != null) - LogEvent(LogLevel.Error, ex.ToString()); - } - - #endregion - } -} \ No newline at end of file Modified: trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.Designer.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.Designer.cs 2009-12-11 11:53:48 UTC (rev 3225) +++ trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.Designer.cs 2009-12-11 14:24:43 UTC (rev 3226) @@ -84,6 +84,13 @@ this.labelVersion = new MediaPortal.UserInterface.Controls.MPLabel(); this.okButton = new MediaPortal.UserInterface.Controls.MPButton(); this.cancelButton = new MediaPortal.UserInterface.Controls.MPButton(); + this.tabPage1 = new System.Windows.Forms.TabPage(); + this.label3 = new System.Windows.Forms.Label(); + this.dialPort = new System.Windows.Forms.TextBox(); + this.label2 = new System.Windows.Forms.Label(); + this.abpath = new System.Windows.Forms.TextBox(); + this.label1 = new System.Windows.Forms.Label(); + this.passwd = new System.Windows.Forms.TextBox(); this.tabControlFritzBoxSettings.SuspendLayout(); this.tabGeneral.SuspendLayout(); this.mpGroupBox1.SuspendLayout(); @@ -99,6 +106,7 @@ this.tabPhonebook.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.pictureBoxCaller)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.dataGridView)).BeginInit(); + this.tabPage1.SuspendLayout(); this.SuspendLayout(); // // tabControlFritzBoxSettings @@ -109,6 +117,7 @@ this.tabControlFritzBoxSettings.Controls.Add(this.tabGeneral); this.tabControlFritzBoxSettings.Controls.Add(this.tabIncoming); this.tabControlFritzBoxSettings.Controls.Add(this.tabPhonebook); + this.tabControlFritzBoxSettings.Controls.Add(this.tabPage1); this.tabControlFritzBoxSettings.Location = new System.Drawing.Point(11, 12); this.tabControlFritzBoxSettings.Name = "tabControlFritzBoxSettings"; this.tabControlFritzBoxSettings.SelectedIndex = 0; @@ -767,6 +776,72 @@ this.cancelButton.UseVisualStyleBackColor = true; this.cancelButton.Click += new System.EventHandler(this.cancelButton_Click); // + // tabPage1 + // + this.tabPage1.Controls.Add(this.label3); + this.tabPage1.Controls.Add(this.dialPort); + this.tabPage1.Controls.Add(this.label2); + this.tabPage1.Controls.Add(this.abpath); + this.tabPage1.Controls.Add(this.label1); + this.tabPage1.Controls.Add(this.passwd); + this.tabPage1.Location = new System.Drawing.Point(4, 22); + this.tabPage1.Name = "tabPage1"; + this.tabPage1.Padding = new System.Windows.Forms.Padding(3); + this.tabPage1.Size = new System.Drawing.Size(573, 357); + this.tabPage1.TabIndex = 3; + this.tabPage1.Text = "FritzManager"; + this.tabPage1.UseVisualStyleBackColor = true; + // + // label3 + // + this.label3.Location = new System.Drawing.Point(187, 22); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(100, 23); + this.label3.TabIndex = 13; + this.label3.Text = "DialPort"; + this.label3.TextAlign = System.Drawing.ContentAlignment.BottomLeft; + // + // dialPort + // + this.dialPort.Location = new System.Drawing.Point(187, 51); + this.dialPort.Name = "dialPort"; + this.dialPort.Size = new System.Drawing.Size(100, 20); + this.dialPort.TabIndex = 12; + // + // label2 + // + this.label2.Location = new System.Drawing.Point(26, 83); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(195, 23); + this.label2.TabIndex = 11; + this.label2.Text = "Pfad zum Anrufbeantworter"; + this.label2.TextAlign = System.Drawing.ContentAlignment.BottomLeft; + // + // abpath + // + this.abpath.Location = new System.Drawing.Point(26, 112); + this.abpath.Name = "abpath"; + this.abpath.Size = new System.Drawing.Size(236, 20); + this.abpath.TabIndex = 10; + // + // label1 + // + this.label1.Location = new System.Drawing.Point(26, 22); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(100, 23); + this.label1.TabIndex = 9; + this.label1.Text = "Fritzbox-Passwd"; + this.label1.TextAlign = System.Drawing.ContentAlignment.BottomLeft; + // + // passwd + // + this.passwd.Location = new System.Drawing.Point(26, 51); + this.passwd.Name = "passwd"; + this.passwd.PasswordChar = '*'; + this.passwd.Size = new System.Drawing.Size(100, 20); + this.passwd.TabIndex = 8; + this.passwd.Text = "passwd"; + // // FritzBoxConfig // this.AcceptButton = this.okButton; @@ -808,6 +883,8 @@ this.tabPhonebook.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.pictureBoxCaller)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.dataGridView)).EndInit(); + this.tabPage1.ResumeLayout(false); + this.tabPage1.PerformLayout(); this.ResumeLayout(false); } @@ -869,5 +946,12 @@ private MediaPortal.UserInterface.Controls.MPLabel labelSuffixHome; private MediaPortal.UserInterface.Controls.MPButton mpButton1; private System.Windows.Forms.TextBox labelHelp; + private System.Windows.Forms.TabPage tabPage1; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.TextBox dialPort; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.TextBox abpath; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.TextBox passwd; } } \ No newline at end of file Modified: trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.cs 2009-12-11 11:53:48 UTC (rev 3225) +++ trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.cs 2009-12-11 14:24:43 UTC (rev 3226) @@ -30,8 +30,6 @@ { public partial class FritzBoxConfig : Form { - private delegate void SetTextCallback(FritzBoxClient.LogLevel logLevel, string logMessage); - public FritzBoxConfig() { InitializeComponent(); @@ -86,6 +84,11 @@ textBoxSuffixMobile.Text = PhoneBook.SuffixMobile; RefreshDataGridView(); + + // fritzmanager settings + passwd.Text = Settings.FmPassword; + abpath.Text = Settings.FmABPath; + dialPort.Text = Settings.FmDialPort; } private void SaveSettings() @@ -124,6 +127,11 @@ SaveDataGridView(); + // fritzmanager settings + Settings.FmPassword = passwd.Text; + Settings.FmABPath = abpath.Text; + Settings.FmDialPort = dialPort.Text; + Settings.Save(); } @@ -135,14 +143,14 @@ { SaveSettings(); FritzBoxClient.StopClient(); - FritzBoxClient.LogEvent -= new FritzBoxClient.LogEventHandler(OnLogAction); + FritzBoxClient.LogEvent -= OnLogAction; Close(); } private void cancelButton_Click(object sender, EventArgs e) { FritzBoxClient.StopClient(); - FritzBoxClient.LogEvent -= new FritzBoxClient.LogEventHandler(OnLogAction); + FritzBoxClient.LogEvent -= OnLogAction; Close(); } @@ -170,10 +178,10 @@ checkBoxSaveUnknownCaller.Enabled = checkBoxUsePhonebook.Checked; } - + private void buttonMSNsAdd_Click(object sender, EventArgs e) { - if (isMSNvalid(comboBoxMSNs.Text) == true) + if (isMSNvalid(comboBoxMSNs.Text)) comboBoxMSNs.Items.Add(comboBoxMSNs.Text); } @@ -265,7 +273,7 @@ int count = PhoneBook.ImportFritzBoxMonitor(openFileDialog.FileName); RefreshDataGridView(); - MessageBox.Show("Import done!\nAdded " + count.ToString() + " new CallerIDs to phonebook."); + MessageBox.Show("Import done!\nAdded " + count + " new CallerIDs to phonebook."); } } @@ -293,8 +301,8 @@ private void mpButton1_Click(object sender, EventArgs e) { - FritzBoxClient.LogEvent -= new FritzBoxClient.LogEventHandler(OnLogAction); - FritzBoxClient.LogEvent += new FritzBoxClient.LogEventHandler(OnLogAction); + FritzBoxClient.LogEvent -= OnLogAction; + FritzBoxClient.LogEvent += OnLogAction; // stopping client FritzBoxClient.StopClient(); @@ -304,7 +312,7 @@ // set current used text FritzBoxClient.Address = textBoxAddress.Text; - FritzBoxClient.Port = (int)numericUpDownPort.Value; + FritzBoxClient.Port = (int) numericUpDownPort.Value; // port test if (!FritzBoxClient.TestConnection()) @@ -397,7 +405,7 @@ { if (labelHelp.InvokeRequired) { - SetTextCallback d = new SetTextCallback(OnLogAction); + SetTextCallback d = OnLogAction; Invoke(d, new object[] {logLevel, logMessage}); } else @@ -405,5 +413,11 @@ labelHelp.Text += logMessage + Environment.NewLine; } } + + #region Nested type: SetTextCallback + + private delegate void SetTextCallback(FritzBoxClient.LogLevel logLevel, string logMessage); + + #endregion } } \ No newline at end of file Copied: trunk/plugins/FritzBox/FritzBox/FritzCallMonitor/CallAction.cs (from rev 3225, trunk/plugins/FritzBox/FritzBox/CallAction.cs) =================================================================== --- trunk/plugins/FritzBox/FritzBox/FritzCallMonitor/CallAction.cs (rev 0) +++ trunk/plugins/FritzBox/FritzBox/FritzCallMonitor/CallAction.cs 2009-12-11 14:24:43 UTC (rev 3226) @@ -0,0 +1,65 @@ +#region Copyright (C) 2005-2009 Team MediaPortal + +// Copyright (C) 2005-2009 Team MediaPortal +// http://www.team-mediaportal.com +// +// 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, 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 GNU Make; see the file COPYING. If not, write to +// the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. +// http://www.gnu.org/copyleft/gpl.html + +#endregion + +using System; +using MediaPortal.ServiceImplementations; + +namespace FritzBox +{ + public class CallAction + { + #region CallType enum + + public enum CallType + { + Incoming, + Outgoing, + ConnectionStarted, + ConnectionClosed, + } + + #endregion + + public CallAction() + { + Time = DateTime.MinValue; + Caller = new Caller(); + MSN = string.Empty; + } + + public CallType Type { get; set; } + public DateTime Time { get; set; } + public Caller Caller { get; set; } + public string MSN { get; set; } + + + public void WriteToLog() + { + Log.Info("CallAction Info:"); + Log.Info(" CallType: {0}", Type.ToString()); + Log.Info(" Date: {0}", Time.ToShortDateString()); + Log.Info(" Time: {0}", Time.ToShortTimeString()); + Log.Info(" Caller: {0}", Caller.ID); + Log.Info(" MSN: {0}", MSN); + } + } +} \ No newline at end of file Copied: trunk/plugins/FritzBox/FritzBox/FritzCallMonitor/Caller.cs (from rev 3225, trunk/plugins/FritzBox/FritzBox/Caller.cs) =================================================================== --- trunk/plugins/FritzBox/FritzBox/FritzCallMonitor/Caller.cs (rev 0) +++ trunk/plugins/FritzBox/FritzBox/FritzCallMonitor/Caller.cs 2009-12-11 14:24:43 UTC (rev 3226) @@ -0,0 +1,45 @@ +#region Copyright (C) 2005-2009 Team MediaPortal + +// Copyright (C) 2005-2009 Team MediaPortal +// http://www.team-mediaportal.com +// +// 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, 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 GNU Make; see the file COPYING. If not, write to +// the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. +// http://www.gnu.org/copyleft/gpl.html + +#endregion + +namespace FritzBox +{ + public class Caller + { + public Caller() + { + ID = string.Empty; + Name = string.Empty; + Show = true; + } + + public Caller(string id, string name, bool show) + { + ID = id; + Name = name; + Show = show; + } + + public string ID { get; set; } + public string Name { get; set; } + public bool Show { get; set; } + } +} \ No newline at end of file Copied: trunk/plugins/FritzBox/FritzBox/FritzCallMonitor/FritzBoxClient.cs (from rev 3225, trunk/plugins/FritzBox/FritzBox/FritzBoxClient.cs) =================================================================== --- trunk/plugins/FritzBox/FritzBox/FritzCallMonitor/FritzBoxClient.cs (rev 0) +++ trunk/plugins/FritzBox/FritzBox/FritzCallMonitor/FritzBoxClient.cs 2009-12-11 14:24:43 UTC (rev 3226) @@ -0,0 +1,401 @@ +#region Copyright (C) 2005-2009 Team MediaPortal + +// Copyright (C) 2005-2009 Team MediaPortal +// http://www.team-mediaportal.com +// +// This Program is free software; you can re... [truncated message content] |
From: <che...@us...> - 2009-12-11 15:35:53
|
Revision: 3228 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=3228&view=rev Author: chef_koch Date: 2009-12-11 15:35:00 +0000 (Fri, 11 Dec 2009) Log Message: ----------- moved skin and doc files added build script to easily creating a package for release, only copying files for now to new new dir, creating a mediaportal extension package will be added later added DeployVersionSVN.exe to svn to set the svn revision to the assemblyinfo.cs Modified Paths: -------------- trunk/plugins/FritzBox/FritzBox/FritzBox.csproj Added Paths: ----------- trunk/plugins/FritzBox/Build/BUILD_NEW_FritzBoxManager.bat trunk/plugins/FritzBox/Build/DeployVersionSVN.exe trunk/plugins/FritzBox/FritzBox/Skin/ trunk/plugins/FritzBox/FritzBox/Skin/Blue3/Media/FritzBox.CallMonitor.Missing.png trunk/plugins/FritzBox/FritzBox/Skin/Blue3/Media/FritzBox.CallMonitor.Unknown.png trunk/plugins/FritzBox/FritzBox/Skin/GenericSkin/Media/FritzBox.CallMonitor.Missing.png trunk/plugins/FritzBox/FritzBox/Skin/GenericSkin/Media/FritzBox.CallMonitor.Unknown.png trunk/plugins/FritzBox/FritzBox/docs/ trunk/plugins/FritzBox/FritzBox/docs/Changes.txt trunk/plugins/FritzBox/FritzBox/docs/Install.txt trunk/plugins/FritzBox/FritzBox/docs/todo.txt Removed Paths: ------------- trunk/plugins/FritzBox/FritzBox/FritzManager/Changes.txt trunk/plugins/FritzBox/FritzBox/FritzManager/Install.txt trunk/plugins/FritzBox/FritzBox/FritzManager/Skin/ trunk/plugins/FritzBox/FritzBox/FritzManager/todo.txt trunk/plugins/FritzBox/FritzBox/Resources/ContactImages/FritzBox.CallMonitor.Missing.png trunk/plugins/FritzBox/FritzBox/Resources/ContactImages/FritzBox.CallMonitor.Unknown.png Added: trunk/plugins/FritzBox/Build/BUILD_NEW_FritzBoxManager.bat =================================================================== --- trunk/plugins/FritzBox/Build/BUILD_NEW_FritzBoxManager.bat (rev 0) +++ trunk/plugins/FritzBox/Build/BUILD_NEW_FritzBoxManager.bat 2009-12-11 15:35:00 UTC (rev 3228) @@ -0,0 +1,60 @@ +@ECHO OFF + + +REM Select program path based on current machine environment +set ProgramDir=%ProgramFiles% +if not "%ProgramFiles(x86)%".=="". set ProgramDir=%ProgramFiles(x86)% + + +REM set logfile where the infos are written to, and clear that file +set LOG=build_%BUILD_TYPE%.log +echo. > %LOG% + + +echo. +echo -= FRITZ!Box Manager =- +echo -=====================- +echo. + + +echo. +echo Writing SVN revision assemblies... +DeployVersionSVN.exe /svn=".." >> %LOG% + + +echo. +echo Building FRITZ!Box Manager... +"%WINDIR%\Microsoft.NET\Framework\v3.5\MSBUILD.exe" /target:Rebuild /property:Configuration=Release;AllowUnsafeBlocks=true "..\FritzBox.sln" >> %LOG% + + +echo. +echo Reverting assemblies... +DeployVersionSVN.exe /svn=".." /revert >> %LOG% + + + +rmdir /S /Q ..\_release +xcopy ..\FritzBox\bin\Release\FritzBox.dll ..\_release\plugins\windows\ >> %LOG% +xcopy ..\FritzBox\Resources\speexdec.exe ..\_release\WinDir\ >> %LOG% +xcopy ..\FritzBox\docs\* ..\_release\* >> %LOG% +xcopy ..\FritzBox\Skin ..\_release\skin /S /I >> %LOG% + + +exit +rem das erstellen eine MPI paketes kommt erst sp\xE4ter + +echo. +echo Reading the version number... +set plugindll=..\FritzBox\bin\Release\FritzBox.dll +if not exist "%plugindll%" goto version_error +for /f "Tokens=5" %%a in ('filever "%plugindll%"') do set version=%%a +goto :version_done +:version_error +echo "fritzbox.dll not found. version could not be read" >> %LOG% +goto :EOF +:version_done + + +echo Building MpeExtension package... +"%ProgramDir%\Team MediaPortal\MediaPortal\MpeMaker.exe" "..\FritzBox\MpeRelease\FritzBox.xmp2" /V=%version% /B >> %LOG% + Added: trunk/plugins/FritzBox/Build/DeployVersionSVN.exe =================================================================== (Binary files differ) Property changes on: trunk/plugins/FritzBox/Build/DeployVersionSVN.exe ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Modified: trunk/plugins/FritzBox/FritzBox/FritzBox.csproj =================================================================== --- trunk/plugins/FritzBox/FritzBox/FritzBox.csproj 2009-12-11 14:47:06 UTC (rev 3227) +++ trunk/plugins/FritzBox/FritzBox/FritzBox.csproj 2009-12-11 15:35:00 UTC (rev 3228) @@ -97,26 +97,48 @@ <EmbeddedResource Include="FritzBoxDisabled.png" /> </ItemGroup> <ItemGroup> - <None Include="FritzManager\Changes.txt" /> - <None Include="FritzManager\todo.txt" /> - <Content Include="FritzManager\Install.txt" /> - <Content Include="FritzManager\Skin\Black & White\FritzManager.xml" /> - <Content Include="FritzManager\Skin\Black & White\Media\callin.png" /> - <Content Include="FritzManager\Skin\Black & White\Media\callout.png" /> - <Content Include="FritzManager\Skin\Black & White\Media\rejected.png" /> - <Content Include="FritzManager\Skin\Blue3\FritzManager.xml" /> - <Content Include="FritzManager\Skin\Blue3\Media\callin.png" /> - <Content Include="FritzManager\Skin\Blue3\Media\callout.png" /> - <Content Include="FritzManager\Skin\Blue3\Media\rejected.png" /> - <Content Include="FritzManager\Skin\GenericSkin\FritzManager.xml" /> - <Content Include="FritzManager\Skin\GenericSkin\Media\callin.png" /> - <Content Include="FritzManager\Skin\GenericSkin\Media\callout.png" /> - <Content Include="FritzManager\Skin\GenericSkin\Media\rejected.png" /> + <None Include="docs\Changes.txt"> + </None> + <None Include="docs\todo.txt"> + </None> + <Content Include="docs\Install.txt"> + </Content> + <Content Include="Skin\Black & White\FritzManager.xml"> + </Content> + <Content Include="Skin\Black & White\Media\callin.png"> + </Content> + <Content Include="Skin\Black & White\Media\callout.png"> + </Content> + <Content Include="Skin\Black & White\Media\rejected.png"> + </Content> + <Content Include="Skin\Blue3\FritzManager.xml"> + </Content> + <Content Include="Skin\Blue3\Media\callin.png"> + </Content> + <Content Include="Skin\Blue3\Media\callout.png"> + </Content> + <Content Include="Skin\Blue3\Media\FritzBox.CallMonitor.Missing.png"> + </Content> + <Content Include="Skin\Blue3\Media\FritzBox.CallMonitor.Unknown.png"> + </Content> + <Content Include="Skin\Blue3\Media\rejected.png"> + </Content> + <Content Include="Skin\GenericSkin\FritzManager.xml"> + </Content> + <Content Include="Skin\GenericSkin\Media\callin.png"> + </Content> + <Content Include="Skin\GenericSkin\Media\callout.png"> + </Content> + <Content Include="Skin\GenericSkin\Media\rejected.png"> + </Content> <Content Include="Resources\gfx\FritzBox.ico" /> <Content Include="Resources\gfx\FritzBoxIconMadeByHarley.png" /> - <Content Include="Resources\ContactImages\FritzBox.CallMonitor.Missing.png" /> - <Content Include="Resources\ContactImages\FritzBox.CallMonitor.Unknown.png" /> - <Content Include="Resources\speexdec.exe" /> + <Content Include="Skin\GenericSkin\Media\FritzBox.CallMonitor.Missing.png"> + </Content> + <Content Include="Skin\GenericSkin\Media\FritzBox.CallMonitor.Unknown.png"> + </Content> + <Content Include="Resources\speexdec.exe"> + </Content> </ItemGroup> <ItemGroup> <None Include="Resources\fritzdial.sh" /> Deleted: trunk/plugins/FritzBox/FritzBox/FritzManager/Changes.txt =================================================================== (Binary files differ) Deleted: trunk/plugins/FritzBox/FritzBox/FritzManager/Install.txt =================================================================== --- trunk/plugins/FritzBox/FritzBox/FritzManager/Install.txt 2009-12-11 14:47:06 UTC (rev 3227) +++ trunk/plugins/FritzBox/FritzBox/FritzManager/Install.txt 2009-12-11 15:35:00 UTC (rev 3228) @@ -1,10 +0,0 @@ -- copy speexdec to c:\windows -- copy fritzmanager.dll to MPBASEPATH\plugins\Windows -- copy skin folder into your favorite skin - -- run setup to configure your fritz box passwd (and optionally voicebox base path) - -- configure fritz box to use usb storage for voicebox -- allows NAS access to usb store (ftp is not supported) - - \ No newline at end of file Deleted: trunk/plugins/FritzBox/FritzBox/FritzManager/todo.txt =================================================================== (Binary files differ) Deleted: trunk/plugins/FritzBox/FritzBox/Resources/ContactImages/FritzBox.CallMonitor.Missing.png =================================================================== (Binary files differ) Deleted: trunk/plugins/FritzBox/FritzBox/Resources/ContactImages/FritzBox.CallMonitor.Unknown.png =================================================================== (Binary files differ) Copied: trunk/plugins/FritzBox/FritzBox/Skin/Blue3/Media/FritzBox.CallMonitor.Missing.png (from rev 3226, trunk/plugins/FritzBox/FritzBox/Resources/ContactImages/FritzBox.CallMonitor.Missing.png) =================================================================== (Binary files differ) Copied: trunk/plugins/FritzBox/FritzBox/Skin/Blue3/Media/FritzBox.CallMonitor.Unknown.png (from rev 3226, trunk/plugins/FritzBox/FritzBox/Resources/ContactImages/FritzBox.CallMonitor.Unknown.png) =================================================================== (Binary files differ) Copied: trunk/plugins/FritzBox/FritzBox/Skin/GenericSkin/Media/FritzBox.CallMonitor.Missing.png (from rev 3226, trunk/plugins/FritzBox/FritzBox/Resources/ContactImages/FritzBox.CallMonitor.Missing.png) =================================================================== (Binary files differ) Copied: trunk/plugins/FritzBox/FritzBox/Skin/GenericSkin/Media/FritzBox.CallMonitor.Unknown.png (from rev 3226, trunk/plugins/FritzBox/FritzBox/Resources/ContactImages/FritzBox.CallMonitor.Unknown.png) =================================================================== (Binary files differ) Copied: trunk/plugins/FritzBox/FritzBox/docs/Changes.txt (from rev 3226, trunk/plugins/FritzBox/FritzBox/FritzManager/Changes.txt) =================================================================== (Binary files differ) Copied: trunk/plugins/FritzBox/FritzBox/docs/Install.txt (from rev 3226, trunk/plugins/FritzBox/FritzBox/FritzManager/Install.txt) =================================================================== --- trunk/plugins/FritzBox/FritzBox/docs/Install.txt (rev 0) +++ trunk/plugins/FritzBox/FritzBox/docs/Install.txt 2009-12-11 15:35:00 UTC (rev 3228) @@ -0,0 +1,10 @@ +- copy speexdec to c:\windows +- copy fritzmanager.dll to MPBASEPATH\plugins\Windows +- copy skin folder into your favorite skin + +- run setup to configure your fritz box passwd (and optionally voicebox base path) + +- configure fritz box to use usb storage for voicebox +- allows NAS access to usb store (ftp is not supported) + + \ No newline at end of file Copied: trunk/plugins/FritzBox/FritzBox/docs/todo.txt (from rev 3226, trunk/plugins/FritzBox/FritzBox/FritzManager/todo.txt) =================================================================== (Binary files differ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <che...@us...> - 2009-12-15 19:12:59
|
Revision: 3253 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=3253&view=rev Author: chef_koch Date: 2009-12-15 19:12:47 +0000 (Tue, 15 Dec 2009) Log Message: ----------- no code changes, only resharped complete project Modified Paths: -------------- trunk/plugins/FritzBox/FritzBox/FritzBox.cs trunk/plugins/FritzBox/FritzBox/FritzManager/ABReader.cs trunk/plugins/FritzBox/FritzBox/FritzManager/BackGroundWorker.cs trunk/plugins/FritzBox/FritzBox/FritzManager/BlockingQueue.cs trunk/plugins/FritzBox/FritzBox/FritzManager/CallItem.cs trunk/plugins/FritzBox/FritzBox/FritzManager/Fritz.cs trunk/plugins/FritzBox/FritzBox/FritzManager/FritzboxPhonebook.cs trunk/plugins/FritzBox/FritzBox/FritzManager/InversSearch.cs trunk/plugins/FritzBox/FritzBox/FritzManager/InversSearchOert.cs trunk/plugins/FritzBox/FritzBox/FritzManager/MyBinaryReader.cs trunk/plugins/FritzBox/FritzBox/FritzManager/PhonebookItem.cs trunk/plugins/FritzBox/FritzBox/FritzManager/Task.cs trunk/plugins/FritzBox/FritzBox/FritzManager/VoiceboxItem.cs trunk/plugins/FritzBox/FritzBox/Settings.cs trunk/plugins/FritzBox/Tools/FritzBoxDebugger/DebugForm.cs Modified: trunk/plugins/FritzBox/FritzBox/FritzBox.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/FritzBox.cs 2009-12-15 19:07:35 UTC (rev 3252) +++ trunk/plugins/FritzBox/FritzBox/FritzBox.cs 2009-12-15 19:12:47 UTC (rev 3253) @@ -27,6 +27,7 @@ using System.IO; using System.Reflection; using System.Threading; +using System.Xml.Serialization; using FritzManager; using GCollections; using MediaPortal.Configuration; @@ -34,639 +35,636 @@ using MediaPortal.GUI.Library; using MediaPortal.Player; using MediaPortal.Util; -using System.Xml.Serialization; - namespace FritzBox { - enum FritzBoxGuiMode - { - CallList = 0, - Voicebox = 1, - Phonebook = 2 - } + internal enum FritzBoxGuiMode + { + CallList = 0, + Voicebox = 1, + Phonebook = 2 + } - [PluginIcons("FritzBox.FritzBox.png", "FritzBox.FritzBoxDisabled.png")] - public class FritzBox : GUIWindow, ISetupForm, IPlugin { - #region CallMonitor + [PluginIcons("FritzBox.FritzBox.png", "FritzBox.FritzBoxDisabled.png")] + public class FritzBox : GUIWindow, ISetupForm, IPlugin + { + #region CallMonitor - #region Variables + #region Variables - private readonly List<CallAction> _actionList = new List<CallAction>(); - private readonly List<CallAction> _notifyQueue = new List<CallAction>(); - private bool _showNotify = true; - private object _tempNotify; + private readonly List<CallAction> _actionList = new List<CallAction>(); + private readonly List<CallAction> _notifyQueue = new List<CallAction>(); + private bool _showNotify = true; + private object _tempNotify; - private int notifyCount; + private int notifyCount; - #endregion Variables + #endregion Variables - #region Properties + #region Properties - public string ContactPicturesFolder - { - get - { - return Config.GetSubFolder(Config.Dir.Thumbs, "FritzBox.Contacts"); - } - } + public string ContactPicturesFolder + { + get { return Config.GetSubFolder(Config.Dir.Thumbs, "FritzBox.Contacts"); } + } - public string SkinMediaFolder - { - get - { - return Path.Combine(Config.GetSubFolder(Config.Dir.Skin, Settings.MediaPortalSkin), "Media"); - } - } + public string SkinMediaFolder + { + get { return Path.Combine(Config.GetSubFolder(Config.Dir.Skin, Settings.MediaPortalSkin), "Media"); } + } - public string UnknownCallerImage - { - get - { - string filePath; + public string UnknownCallerImage + { + get + { + string filePath; - // check if skin supports it's own images - filePath = Utils.GetCoverArt(SkinMediaFolder, "FritzBox.CallMonitor.Unknown"); - if (!String.IsNullOrEmpty(filePath)) return filePath; + // check if skin supports it's own images + filePath = Utils.GetCoverArt(SkinMediaFolder, "FritzBox.CallMonitor.Unknown"); + if (!String.IsNullOrEmpty(filePath)) return filePath; - // use new default image - filePath = Utils.GetCoverArt(ContactPicturesFolder, "FritzBox.CallMonitor.Unknown"); - if (!String.IsNullOrEmpty(filePath)) return filePath; + // use new default image + filePath = Utils.GetCoverArt(ContactPicturesFolder, "FritzBox.CallMonitor.Unknown"); + if (!String.IsNullOrEmpty(filePath)) return filePath; - // use old default image - filePath = Utils.GetCoverArt(Thumbs.Yac, "_unknown"); - if (!String.IsNullOrEmpty(filePath)) return filePath; + // use old default image + filePath = Utils.GetCoverArt(Thumbs.Yac, "_unknown"); + if (!String.IsNullOrEmpty(filePath)) return filePath; - return String.Empty; - } - } + return String.Empty; + } + } - public string MissingCallerImage - { - get - { - string filePath; + public string MissingCallerImage + { + get + { + string filePath; - // check if skin supports it's own images - filePath = Utils.GetCoverArt(SkinMediaFolder, "FritzBox.CallMonitor.Missing"); - if (!String.IsNullOrEmpty(filePath)) return filePath; + // check if skin supports it's own images + filePath = Utils.GetCoverArt(SkinMediaFolder, "FritzBox.CallMonitor.Missing"); + if (!String.IsNullOrEmpty(filePath)) return filePath; - // use new default image - filePath = Utils.GetCoverArt(ContactPicturesFolder, "FritzBox.CallMonitor.Missing"); - if (!String.IsNullOrEmpty(filePath)) return filePath; + // use new default image + filePath = Utils.GetCoverArt(ContactPicturesFolder, "FritzBox.CallMonitor.Missing"); + if (!String.IsNullOrEmpty(filePath)) return filePath; - // use old default image - filePath = Utils.GetCoverArt(Thumbs.Yac, "_noImage"); - if (!String.IsNullOrEmpty(filePath)) return filePath; + // use old default image + filePath = Utils.GetCoverArt(Thumbs.Yac, "_noImage"); + if (!String.IsNullOrEmpty(filePath)) return filePath; - return String.Empty; - } - } + return String.Empty; + } + } - #endregion + #endregion - #region Private Functions/Methods + #region Private Functions/Methods - private void OnStartExternal(Process proc, bool waitForExit) - { - if (waitForExit) - { - _showNotify = false; - } - else - { - _showNotify = true; - } - } + private void OnStartExternal(Process proc, bool waitForExit) + { + if (waitForExit) + { + _showNotify = false; + } + else + { + _showNotify = true; + } + } - private void OnStopExternal(Process proc, bool waitForExit) - { - _showNotify = true; + private void OnStopExternal(Process proc, bool waitForExit) + { + _showNotify = true; - //for (int i = 0; i < _notifyQueue.Count; i++) - // OnFritzBoxEvent(_notifyQueue[i]); + //for (int i = 0; i < _notifyQueue.Count; i++) + // OnFritzBoxEvent(_notifyQueue[i]); - _notifyQueue.Clear(); - } + _notifyQueue.Clear(); + } - private void OnCallAction(CallAction callAction) - { - Log.Info("FRITZ!Box: OnCallAction()"); - callAction.WriteToLog(); + private void OnCallAction(CallAction callAction) + { + Log.Info("FRITZ!Box: OnCallAction()"); + callAction.WriteToLog(); - if (!_showNotify) - { - Log.Info("External process is running. Notify is queued and will be shown later."); - _notifyQueue.Add(callAction); - return; - } + if (!_showNotify) + { + Log.Info("External process is running. Notify is queued and will be shown later."); + _notifyQueue.Add(callAction); + return; + } - switch (callAction.Type) - { - case CallAction.CallType.Incoming: - if (PhoneBook.Enabled) - callAction.Caller = PhoneBook.GetCaller(callAction.Caller); - OnIncomingCall(callAction); - break; - case CallAction.CallType.Outgoing: - break; - case CallAction.CallType.ConnectionStarted: - break; - case CallAction.CallType.ConnectionClosed: - if (Settings.CloseOnConnectionClosed) - { - Log.Info("_closeOnConnectionClosed is enabled. try to close active notify."); - if (_tempNotify != null) - { - Action act = new Action(); - act.wID = Action.ActionType.ACTION_CLOSE_DIALOG; - GUIWindowManager.GetWindow((int) GUIWindow.Window.WINDOW_DIALOG_NOTIFY).OnAction(act); - } - } - break; - default: - Log.Error("incorrect callaction.type"); - break; - } - } + switch (callAction.Type) + { + case CallAction.CallType.Incoming: + if (PhoneBook.Enabled) + callAction.Caller = PhoneBook.GetCaller(callAction.Caller); + OnIncomingCall(callAction); + break; + case CallAction.CallType.Outgoing: + break; + case CallAction.CallType.ConnectionStarted: + break; + case CallAction.CallType.ConnectionClosed: + if (Settings.CloseOnConnectionClosed) + { + Log.Info("_closeOnConnectionClosed is enabled. try to close active notify."); + if (_tempNotify != null) + { + Action act = new Action(); + act.wID = Action.ActionType.ACTION_CLOSE_DIALOG; + GUIWindowManager.GetWindow((int) GUIWindow.Window.WINDOW_DIALOG_NOTIFY).OnAction(act); + } + } + break; + default: + Log.Error("incorrect callaction.type"); + break; + } + } - private void OnLogAction(FritzBoxClient.LogLevel logLevel, string logMessage) - { - switch (logLevel) - { - case FritzBoxClient.LogLevel.Debug: - Log.Debug(logMessage); - break; - case FritzBoxClient.LogLevel.Error: - Log.Error(logMessage); - break; - case FritzBoxClient.LogLevel.Warning: - Log.Warn(logMessage); - break; - case FritzBoxClient.LogLevel.Info: - Log.Info(logMessage); - break; - default: - break; - } - } + private void OnLogAction(FritzBoxClient.LogLevel logLevel, string logMessage) + { + switch (logLevel) + { + case FritzBoxClient.LogLevel.Debug: + Log.Debug(logMessage); + break; + case FritzBoxClient.LogLevel.Error: + Log.Error(logMessage); + break; + case FritzBoxClient.LogLevel.Warning: + Log.Warn(logMessage); + break; + case FritzBoxClient.LogLevel.Info: + Log.Info(logMessage); + break; + default: + break; + } + } - private void OnIncomingCall(CallAction callAction) - { - Log.Info("FRITZ!Box: OnIncomingCall()"); + private void OnIncomingCall(CallAction callAction) + { + Log.Info("FRITZ!Box: OnIncomingCall()"); - if (_tempNotify != null) - { - Log.Info("yet another dialog is active. action is sent to queue."); - if (_actionList.Count < Settings.MaxNotifies - 1) - _actionList.Add(callAction); - return; - } + if (_tempNotify != null) + { + Log.Info("yet another dialog is active. action is sent to queue."); + if (_actionList.Count < Settings.MaxNotifies - 1) + _actionList.Add(callAction); + return; + } - //config settings for dialog - string strHeading = string.Empty; - string strImage = string.Empty; - string strText = string.Empty; + //config settings for dialog + string strHeading = string.Empty; + string strImage = string.Empty; + string strText = string.Empty; - // Set Heading for NotifyDialog - if (Settings.ShowMsnOnHeading) - strHeading = GUILocalizeStrings.Get(1023) + " on " + callAction.MSN; // ???? Incoming call on - else - strHeading = GUILocalizeStrings.Get(1023); // 1023 Incoming call + // Set Heading for NotifyDialog + if (Settings.ShowMsnOnHeading) + strHeading = GUILocalizeStrings.Get(1023) + " on " + callAction.MSN; // ???? Incoming call on + else + strHeading = GUILocalizeStrings.Get(1023); // 1023 Incoming call - // Set Image for NotifyDialog - strImage = GetCallerImage(callAction.Caller); + // Set Image for NotifyDialog + strImage = GetCallerImage(callAction.Caller); - // Set MessageText for NotifyDialog - if (callAction.Caller.ID == "") - strText = GUILocalizeStrings.Get(2014); // 2014 = unknown - else if (callAction.Caller.Name == "") - strText = callAction.Caller.ID; - else - strText = callAction.Caller.Name; + // Set MessageText for NotifyDialog + if (callAction.Caller.ID == "") + strText = GUILocalizeStrings.Get(2014); // 2014 = unknown + else if (callAction.Caller.Name == "") + strText = callAction.Caller.ID; + else + strText = callAction.Caller.Name; - //config settings for dialog FINISHED + //config settings for dialog FINISHED - //if msn is disabled, stop here - if (!IsMsnEnabled(callAction.MSN)) return; + //if msn is disabled, stop here + if (!IsMsnEnabled(callAction.MSN)) return; - //if notifies are disabled for this call, stop here - if (!IsCallerEnabled(callAction.Caller)) return; + //if notifies are disabled for this call, stop here + if (!IsCallerEnabled(callAction.Caller)) return; - ShowNotify(strHeading, strImage, strText); - } + ShowNotify(strHeading, strImage, strText); + } - #endregion + #endregion - #region Helper Methods + #region Helper Methods - private string GetCallerImage(string callerId) - { - // search image for caller - if (Settings.ExtensiveLogging) - Log.Info("searching image for callerId: " + callerId); + private string GetCallerImage(string callerId) + { + // search image for caller + if (Settings.ExtensiveLogging) + Log.Info("searching image for callerId: " + callerId); - string filePath; + string filePath; - // use new image path - filePath = Utils.GetCoverArt(ContactPicturesFolder, callerId); - if (!String.IsNullOrEmpty(filePath)) return filePath; - Log.Info("found image not in: " + ContactPicturesFolder); + // use new image path + filePath = Utils.GetCoverArt(ContactPicturesFolder, callerId); + if (!String.IsNullOrEmpty(filePath)) return filePath; + Log.Info("found image not in: " + ContactPicturesFolder); - // use old image path - filePath = Utils.GetCoverArt(Thumbs.Yac, callerId); - if (!String.IsNullOrEmpty(filePath)) return filePath; - Log.Info("found image not in: " + Thumbs.Yac); + // use old image path + filePath = Utils.GetCoverArt(Thumbs.Yac, callerId); + if (!String.IsNullOrEmpty(filePath)) return filePath; + Log.Info("found image not in: " + Thumbs.Yac); - return String.Empty; - } + return String.Empty; + } - private string GetCallerImage(Caller caller) - { - if (caller.ID == "") - return UnknownCallerImage; - else - { - string strImage = GetCallerImage(caller.Name); + private string GetCallerImage(Caller caller) + { + if (caller.ID == "") + return UnknownCallerImage; + else + { + string strImage = GetCallerImage(caller.Name); - if (File.Exists(strImage)) - { - if (Settings.ExtensiveLogging) - Log.Info("found image for caller: " + strImage); - else - Log.Info("found image for caller"); + if (File.Exists(strImage)) + { + if (Settings.ExtensiveLogging) + Log.Info("found image for caller: " + strImage); + else + Log.Info("found image for caller"); - return strImage; - } - else - { - Log.Info("found NO image for caller"); - return MissingCallerImage; - } - } - } + return strImage; + } + else + { + Log.Info("found NO image for caller"); + return MissingCallerImage; + } + } + } - private bool IsMsnEnabled(string msn) - { - if (!Settings.FilterMSN) - { - Log.Info("MSN filter is disabled."); - return true; - } + private bool IsMsnEnabled(string msn) + { + if (!Settings.FilterMSN) + { + Log.Info("MSN filter is disabled."); + return true; + } - if (Settings.MSNList.Contains(msn)) - { - Log.Info("MSN is on list."); - return true; - } - else - { - Log.Info("MSN is not on list. Notify won't be shown."); - return false; - } - } + if (Settings.MSNList.Contains(msn)) + { + Log.Info("MSN is on list."); + return true; + } + else + { + Log.Info("MSN is not on list. Notify won't be shown."); + return false; + } + } - private bool IsCallerEnabled(Caller caller) - { - if (!PhoneBook.Enabled) - { - Log.Info("Phonebook is disabled. Notify will be shown."); - return true; - } - else if (caller.Show) return true; - else return false; - } + private bool IsCallerEnabled(Caller caller) + { + if (!PhoneBook.Enabled) + { + Log.Info("Phonebook is disabled. Notify will be shown."); + return true; + } + else if (caller.Show) return true; + else return false; + } - private void ShowNotify(string strHeading, string strImage, string strText) - { - if (notifyCount >= Settings.MaxNotifies) return; + private void ShowNotify(string strHeading, string strImage, string strText) + { + if (notifyCount >= Settings.MaxNotifies) return; - //show dialog - if (g_Player.Playing && !g_Player.Paused && Settings.StopMedia) - g_Player.Pause(); + //show dialog + if (g_Player.Playing && !g_Player.Paused && Settings.StopMedia) + g_Player.Pause(); - GUIDialogNotify dlgNotify = - (GUIDialogNotify) GUIWindowManager.GetWindow((int) GUIWindow.Window.WINDOW_DIALOG_NOTIFY); - if (dlgNotify == null) return; + GUIDialogNotify dlgNotify = + (GUIDialogNotify) GUIWindowManager.GetWindow((int) GUIWindow.Window.WINDOW_DIALOG_NOTIFY); + if (dlgNotify == null) return; - dlgNotify.Reset(); - dlgNotify.ClearAll(); - dlgNotify.SetHeading(strHeading); - dlgNotify.SetImage(strImage); - dlgNotify.SetText(strText); - if (Settings.CloseOnTimeout) - dlgNotify.TimeOut = Settings.NotifyTimeout; - else - dlgNotify.TimeOut = -1; + dlgNotify.Reset(); + dlgNotify.ClearAll(); + dlgNotify.SetHeading(strHeading); + dlgNotify.SetImage(strImage); + dlgNotify.SetText(strText); + if (Settings.CloseOnTimeout) + dlgNotify.TimeOut = Settings.NotifyTimeout; + else + dlgNotify.TimeOut = -1; - _tempNotify = dlgNotify; - dlgNotify.DoModal(GUIWindowManager.ActiveWindow); + _tempNotify = dlgNotify; + dlgNotify.DoModal(GUIWindowManager.ActiveWindow); - if (g_Player.Playing && g_Player.Paused && Settings.StopMedia && Settings.ResumeMedia) - g_Player.Pause(); + if (g_Player.Playing && g_Player.Paused && Settings.StopMedia && Settings.ResumeMedia) + g_Player.Pause(); - _tempNotify = null; - if (_actionList.Count > 0) - { - CallAction tmpAction = _actionList[0]; - _actionList.RemoveAt(0); - OnCallAction(tmpAction); - } - } + _tempNotify = null; + if (_actionList.Count > 0) + { + CallAction tmpAction = _actionList[0]; + _actionList.RemoveAt(0); + OnCallAction(tmpAction); + } + } - #endregion + #endregion - #endregion CallMonitor + #endregion CallMonitor - public FritzBox() { - } - - #region <Interface> Implementations + #region <Interface> Implementations - #region IPlugin Interface + #region IPlugin Interface - /// <summary> - /// This method will be called by mediaportal to start your process plugin - /// </summary> - public void Start() - { - Log.Info("FRITZ!Box Plugin {0} starting.", Assembly.GetExecutingAssembly().GetName().Version); - Settings.Load(); + /// <summary> + /// This method will be called by mediaportal to start your process plugin + /// </summary> + public void Start() + { + Log.Info("FRITZ!Box Plugin {0} starting.", Assembly.GetExecutingAssembly().GetName().Version); + Settings.Load(); - Utils.OnStartExternal += OnStartExternal; - Utils.OnStopExternal += OnStopExternal; + Utils.OnStartExternal += OnStartExternal; + Utils.OnStopExternal += OnStopExternal; - FritzBoxClient.LogEvent += OnLogAction; - FritzBoxClient.CallEvent += OnCallAction; - FritzBoxClient.StartClient(); - } + FritzBoxClient.LogEvent += OnLogAction; + FritzBoxClient.CallEvent += OnCallAction; + FritzBoxClient.StartClient(); + } - /// <summary> - /// This method will be called by mediaportal to stop your process plugin - /// </summary> - public void Stop() - { - Log.Info("FRITZ!Box Plugin {0} stopping.", Assembly.GetExecutingAssembly().GetName().Version); + /// <summary> + /// This method will be called by mediaportal to stop your process plugin + /// </summary> + public void Stop() + { + Log.Info("FRITZ!Box Plugin {0} stopping.", Assembly.GetExecutingAssembly().GetName().Version); - FritzBoxClient.StopClient(); - FritzBoxClient.CallEvent -= OnCallAction; - FritzBoxClient.LogEvent -= OnLogAction; + FritzBoxClient.StopClient(); + FritzBoxClient.CallEvent -= OnCallAction; + FritzBoxClient.LogEvent -= OnLogAction; - Utils.OnStartExternal -= OnStartExternal; - Utils.OnStopExternal -= OnStopExternal; + Utils.OnStartExternal -= OnStartExternal; + Utils.OnStopExternal -= OnStopExternal; - PhoneBook.SaveSettings(); - } + PhoneBook.SaveSettings(); + } - #endregion + #endregion - #region ISetupForm Member + #region ISetupForm Member - /// <summary> - /// With GetID it will be an window-plugin / otherwise a process-plugin - /// Enter the id number here again - /// </summary> - public override int GetID - { - get { return GetWindowId(); } - set { } - } + /// <summary> + /// With GetID it will be an window-plugin / otherwise a process-plugin + /// Enter the id number here again + /// </summary> + public override int GetID + { + get { return GetWindowId(); } + set { } + } - public string PluginName() - { - return "FRITZ!Box Manager"; - } + public string PluginName() + { + return "FRITZ!Box Manager"; + } - public string Author() - { - return "chefkoch, S.Rinke"; - } + public string Author() + { + return "chefkoch, S.Rinke"; + } - public string Description() - { - return "Displays FRITZ!Box caller lists and voice box infos and notifies on incoming calls."; - } + public string Description() + { + return "Displays FRITZ!Box caller lists and voice box infos and notifies on incoming calls."; + } - public void ShowPlugin() - { - try - { - FritzBoxConfig config = new FritzBoxConfig(); - config.ShowDialog(); - } - catch (Exception ex) - { - Log.Error(ex); - } - } + public void ShowPlugin() + { + try + { + FritzBoxConfig config = new FritzBoxConfig(); + config.ShowDialog(); + } + catch (Exception ex) + { + Log.Error(ex); + } + } - public bool CanEnable() - { - return true; - } + public bool CanEnable() + { + return true; + } - public int GetWindowId() - { - return 464554871; - } + public int GetWindowId() + { + return 464554871; + } - public bool DefaultEnabled() - { - return true; - } + public bool DefaultEnabled() + { + return true; + } - public bool HasSetup() - { - return true; - } + public bool HasSetup() + { + return true; + } - public bool GetHome(out string strButtonText, out string strButtonImage, out string strButtonImageFocus, - out string strPictureImage) - { - strButtonText = "Telefon"; - strButtonImage = String.Empty; + public bool GetHome(out string strButtonText, out string strButtonImage, out string strButtonImageFocus, + out string strPictureImage) + { + strButtonText = "Telefon"; + strButtonImage = String.Empty; strButtonImageFocus = String.Empty; strPictureImage = "hover_FritzBox.png"; - return true; - } + return true; + } - #endregion + #endregion - #endregion + #endregion - #region FritzManager + #region FritzManager - #region enums + #region enums - #region Nested type: Filter + #region Nested type: Filter - private enum Filter - { - All = 0, - Incoming = 1, - Outgoing = 2, - Rejected = 3 - } + private enum Filter + { + All = 0, + Incoming = 1, + Outgoing = 2, + Rejected = 3 + } - #endregion + #endregion - #region Nested type: View + #region Nested type: View - private enum View - { - List = 0, - Icons = 1, - LargeIcons = 2, - } + private enum View + { + List = 0, + Icons = 1, + LargeIcons = 2, + } - #endregion + #endregion - #endregion + #endregion - #region skin + #region skin - [SkinControl(3)] - protected GUISortButtonControl btnFilter; - [SkinControl(4)] - protected GUIButtonControl btnModus; - [SkinControl(9)] - protected GUIButtonControl btnUpdate; - [SkinControl(2)] - protected GUIButtonControl btnViewAs; - [SkinControl(50)] - protected GUIFacadeControl facadeView; - [SkinControlAttribute(4711)] - protected GUIFadeLabel headerLabel = null; + [SkinControl(3)] protected GUISortButtonControl btnFilter; + [SkinControl(4)] protected GUIButtonControl btnModus; + [SkinControl(9)] protected GUIButtonControl btnUpdate; + [SkinControl(2)] protected GUIButtonControl btnViewAs; + [SkinControl(50)] protected GUIFacadeControl facadeView; + [SkinControl(4711)] protected GUIFadeLabel headerLabel; - #endregion + #endregion - #region fields + #region fields - private View currentView = View.List; - private Filter currentFilter = Filter.All; - private FritzBoxGuiMode currentMode = FritzBoxGuiMode.CallList; - private List<CallItem> callItemList = null; - private List<VoiceboxItem> voiceboxItemList = null; - public HashMap<string, PhonebookItem> phoneBook = new HashMap<string, PhonebookItem>(); - private HashMap<string, string> msns = new HashMap<string, string>(); - private DateTime lastCalllistUpdate = DateTime.Now.AddMinutes(-20.0); - private List<string> filesToDelete = new List<string>(); - private static System.Timers.Timer updateTimer = new System.Timers.Timer(); - private string phonebookPath; - public string defaultAreacode = ""; - private bool useInversSearch = false; + private static System.Timers.Timer updateTimer = new System.Timers.Timer(); + private string abpath; + private List<CallItem> callItemList; + private Filter currentFilter = Filter.All; + private FritzBoxGuiMode currentMode = FritzBoxGuiMode.CallList; + private View currentView = View.List; + public string defaultAreacode = ""; + private string dialport; + private List<string> filesToDelete = new List<string>(); + private Fritz fritz; + private DateTime lastCalllistUpdate = DateTime.Now.AddMinutes(-20.0); + private HashMap<string, string> msns = new HashMap<string, string>(); + private string passwd; + public HashMap<string, PhonebookItem> phoneBook = new HashMap<string, PhonebookItem>(); + private volatile bool phonebookDirty; + private string phonebookPath; + private bool useInversSearch; + private List<VoiceboxItem> voiceboxItemList; - BackGroundWorker worker; - Thread workerThread; + private BackGroundWorker worker; + private Thread workerThread; - private string passwd = null; - private string abpath = null; - private Fritz fritz = null; - private string dialport = null; - private volatile bool phonebookDirty = false; - #endregion + #endregion + private static FritzBox thePlugin; + protected FritzPhonebooks fritzPhonebooks = new FritzPhonebooks(); + private System.Object sync = new System.Object(); + public override bool Init() { - return Load(GUIGraphicsContext.Skin+@"\FritzManager.xml"); + return Load(GUIGraphicsContext.Skin + @"\FritzManager.xml"); } private void startBackGroundWorker() { - if( worker == null ) { - worker = new BackGroundWorker(fritz,this); - workerThread = new Thread(worker.Run); - workerThread.Start(); - } + if (worker == null) + { + worker = new BackGroundWorker(fritz, this); + workerThread = new Thread(worker.Run); + workerThread.Start(); + } } - - public override void DeInit() { - cleanup(); - if( worker != null ) { - worker.stop(); - workerThread.Abort(); - } - base.DeInit(); + + public override void DeInit() + { + cleanup(); + if (worker != null) + { + worker.stop(); + workerThread.Abort(); + } + base.DeInit(); } - + protected override void OnPageLoad() { using (MediaPortal.Profile.Settings xmlreader = new MediaPortal.Profile.Settings("MediaPortal.xml")) { - phonebookPath = Config.GetFolder(Config.Dir.Config) + "\\fritzmanagerPhonebook.xml"; + phonebookPath = Config.GetFolder(Config.Dir.Config) + "\\fritzmanagerPhonebook.xml"; passwd = xmlreader.GetValue("FritzManager", "passwd"); abpath = xmlreader.GetValue("FritzManager", "abpath"); dialport = xmlreader.GetValue("FritzManager", "dialport"); useInversSearch = xmlreader.GetValueAsBool("FritzManager", "useInversSearch", true); - defaultAreacode = xmlreader.GetValue("FritzManager", "defaultAreacode"); + defaultAreacode = xmlreader.GetValue("FritzManager", "defaultAreacode"); string modestr = xmlreader.GetValue("FritzManager", "currentMode"); if (modestr != null && modestr != "") { - currentMode = (FritzBoxGuiMode)System.Enum.Parse(typeof(FritzBoxGuiMode), modestr); + currentMode = (FritzBoxGuiMode) System.Enum.Parse(typeof (FritzBoxGuiMode), modestr); } - - int interval = xmlreader.GetValueAsInt("FritzManager", "updateInterval",0); - if( interval != 0 ) { - thePlugin = this; - updateTimer.Interval = interval; - updateTimer.Elapsed += new System.Timers.ElapsedEventHandler(OnTimedEvent); - updateTimer.Enabled = true; - } - + + int interval = xmlreader.GetValueAsInt("FritzManager", "updateInterval", 0); + if (interval != 0) + { + thePlugin = this; + updateTimer.Interval = interval; + updateTimer.Elapsed += OnTimedEvent; + updateTimer.Enabled = true; + } } fritz = new Fritz(passwd); initMsn(); phoneBook = InternalPhonebook.loadPhonebook(phonebookPath); startBackGroundWorker(); update(false); - if( currentMode == FritzBoxGuiMode.Voicebox ) { - worker.queue.Enqueue( new Task( Task.TaskAction.LoadCallItems, null )); + if (currentMode == FritzBoxGuiMode.Voicebox) + { + worker.queue.Enqueue(new Task(Task.TaskAction.LoadCallItems, null)); } - + ShowThumbPanel(); } - private static FritzBox thePlugin; - - private static void OnTimedEvent(object source, System.Timers.ElapsedEventArgs e) { - if( thePlugin.phonebookDirty ) { - thePlugin.phonebookDirty = false; - InternalPhonebook.savePhonebook(thePlugin.phoneBook.Values,thePlugin.phonebookPath); - } + + private static void OnTimedEvent(object source, System.Timers.ElapsedEventArgs e) + { + if (thePlugin.phonebookDirty) + { + thePlugin.phonebookDirty = false; + InternalPhonebook.savePhonebook(thePlugin.phoneBook.Values, thePlugin.phonebookPath); + } } - - protected void initMsn() { - //populate msns - if (File.Exists(Config.GetFolder(Config.Dir.Config) + "\\fritzmanager_msns.txt")) - { - using (StreamReader sr = new StreamReader(Config.GetFolder(Config.Dir.Config) + "\\fritzmanager_msns.txt")) - { - while (!sr.EndOfStream) - { - string line = sr.ReadLine(); - string[] items = line.Split('='); - if( items.GetLength(0) > 1 ) msns.Add(items[0], items[1]); - } - } - } - } - - protected override void OnPageDestroy(int new_windowId) { - cleanup(); - base.OnPageDestroy(new_windowId); + protected void initMsn() + { + //populate msns + if (File.Exists(Config.GetFolder(Config.Dir.Config) + "\\fritzmanager_msns.txt")) + { + using (StreamReader sr = new StreamReader(Config.GetFolder(Config.Dir.Config) + "\\fritzmanager_msns.txt")) + { + while (!sr.EndOfStream) + { + string line = sr.ReadLine(); + string[] items = line.Split('='); + if (items.GetLength(0) > 1) msns.Add(items[0], items[1]); + } + } + } } - - private void cleanup() { - // cleanup temp - foreach(string file in filesToDelete) { - File.Delete(file); - } - filesToDelete.Clear(); + + + protected override void OnPageDestroy(int new_windowId) + { + cleanup(); + base.OnPageDestroy(new_windowId); } - + + private void cleanup() + { + // cleanup temp + foreach (string file in filesToDelete) + { + File.Delete(file); + } + filesToDelete.Clear(); + } + protected void update(bool force) { if (currentMode == FritzBoxGuiMode.CallList) @@ -693,79 +691,97 @@ } voiceboxItemList = ABReader.loadVoiceboxDir(abpath); } - else if (currentMode == FritzBoxGuiMode.Phonebook) { - string str = fritz.loadPhoneBook(); - XmlSerializer s = new XmlSerializer(typeof(FritzPhonebooks)); - fritzPhonebooks = (FritzPhonebooks) s.Deserialize(new StringReader(str)); + else if (currentMode == FritzBoxGuiMode.Phonebook) + { + string str = fritz.loadPhoneBook(); + XmlSerializer s = new XmlSerializer(typeof (FritzPhonebooks)); + fritzPhonebooks = (FritzPhonebooks) s.Deserialize(new StringReader(str)); } refreshView(); UpdateButtonStates(); } - - protected void refreshView() { - if( currentMode == FritzBoxGuiMode.CallList ) { - populateCallItems(); - } else if( currentMode == FritzBoxGuiMode.Voicebox ) { - populateVoiceboxItems(); - } else if( currentMode == FritzBoxGuiMode.Phonebook ) { - populatePhonebookItems(); - } + + protected void refreshView() + { + if (currentMode == FritzBoxGuiMode.CallList) + { + populateCallItems(); + } + else if (currentMode == FritzBoxGuiMode.Voicebox) + { + populateVoiceboxItems(); + } + else if (currentMode == FritzBoxGuiMode.Phonebook) + { + populatePhonebookItems(); + } } - - private System.Object sync = new System.Object(); - public void refreshCallData(byte[] data) { - lock(sync) { - callItemList = CallItem.load(new MemoryStream(data)); - // populate phonebook - bool updatePhonebook = false; - int idx = 0; - foreach (CallItem i in callItemList) - { - PhonebookItem pi = phoneBook[i.number]; - if( pi == null ){ - pi = new PhonebookItem(); - pi.number = i.number; - phoneBook[i.number] = pi; - } + public void refreshCallData(byte[] data) + { + lock (sync) + { + callItemList = CallItem.load(new MemoryStream(data)); + // populate phonebook + bool updatePhonebook = false; + int idx = 0; + foreach (CallItem i in callItemList) + { + PhonebookItem pi = phoneBook[i.number]; + if (pi == null) + { + pi = new PhonebookItem(); + pi.number = i.number; + phoneBook[i.number] = pi; + } - if (i.name != "" && pi.name != i.name) { - pi.name = i.name; - pi.fritzEntry = true; - updatePhonebook = true; - } else if( useInversSearch && !pi.inverseLookupDone && !pi.fritzEntry && i.number != "" ) { - worker.queue.Enqueue( new Task( Task.TaskAction.InversLookup, new object[]{i.number,idx} )); - } - idx++; - } - if( updatePhonebook ) { - InternalPhonebook.savePhonebook(phoneBook.Values,phonebookPath); - } - lastCalllistUpdate = DateTime.Now; - } - refreshView(); + if (i.name != "" && pi.name != i.name) + { + pi.name = i.name; + pi.fritzEntry = true; + updatePhonebook = true; + } + else if (useInversSearch && !pi.inverseLookupDone && !pi.fritzEntry && i.number != "") + { + worker.queue.Enqueue(new Task(Task.TaskAction.InversLookup, new object[] {i.number, idx})); + } + idx++; + } + if (updatePhonebook) + { + InternalPhonebook.savePhonebook(phoneBook.Values, phonebookPath); + } + lastCalllistUpdate = DateTime.Now; + } + refreshView(); } - - public void updatePhonebook(string number, string name, int index) { - - if( name != null && name != "" && phoneBook.Contains(number) ) { - lock(sync) { - phoneBook[number].inverseLookupDone = true; - phonebookDirty = true; - if( name != number ) { // search without result - phoneBook[number].name = name; - if( currentMode == FritzBoxGuiMode.CallList ) { - GUIListItem item = facadeView[index]; - if( item != null ) { - Log.Debug("replacing label {0} with {1}", item.Label2, name ); - string l = name; - if( l.Length > 30 ) l = name.Substring(0,30); - item.Label2 = l; - } - } - } - }//lock - } + + public void updatePhonebook(string number, string name, int index) + { + if (name != null && name != "" && phoneBook.Contains(number)) + { + lock (sync) + { + phoneBook[number].inverseLookupDone = true; + phonebookDirty = true; + if (name != number) + { + // search without result + phoneBook[number].name = name; + if (currentMode == FritzBoxGuiMode.CallList) + { + GUIListItem item = facadeView[index]; + if (item != null) + { + Log.Debug("replacing label {0} with {1}", item.Label2, name); + string l = name; + if (l.Length > 30) l = name.Substring(0, 30); + item.Label2 = l; + } + } + } + } //lock + } } protected void loadCallListFromFritzbox() @@ -773,61 +789,66 @@ GUIWaitCursor.Show(); try { - Log.Debug("load callitem from fritzbox"); - byte[] data = fritz.loadCallListData(); - refreshCallData(data); - } + Log.Debug("load callitem from fritzbox"); + byte[] data = fritz.loadCallListData(); + refreshCallData(data); + } catch (Exception e) { Log.Debug("Exception {0}", e.Message); } GUIWaitCursor.Hide(); } - - protected string decode(VoiceboxItem item) { - System.Diagnostics.Process proc = new System.Diagnostics.Process(); - proc.EnableRaisingEvents=false; - proc.StartInfo.FileName="speexdec"; - string target = Path.GetTempPath()+item.seq+".wav"; - proc.StartInfo.Arguments = "\""+abpath+"\\rec\\"+item.filename+"\" \""+target+"\""; - proc.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; - proc.Start(); - proc.WaitForExit(); - proc.Close(); - filesToDelete.Add(target); - return target; + protected string decode(VoiceboxItem item) + { + System.Diagnostics.Process proc = new System.Diagnostics.Process(); + proc.EnableRaisingEvents = false; + proc.StartInfo.FileName = "speexdec"; + string target = Path.GetTempPath() + item.seq + ".wav"; + proc.StartInfo.Arguments = "\"" + abpath + "\\rec\\" + item.filename + "\" \"" + target + "\""; + proc.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; + + proc.Start(); + proc.WaitForExit(); + proc.Close(); + filesToDelete.Add(target); + return target; } - - protected FritzPhonebooks fritzPhonebooks = new FritzPhonebooks(); - - protected void populatePhonebookItems() { - facadeView.Clear(); - if( fritzPhonebooks.Items.GetLength(0) == 0 ) { - Log.Debug( "no fritz phone book items found"); - return; - } - Phonebook p = fritzPhonebooks.Items[0]; // always choose first - int i = 0; - string thumbDir = Config.GetFolder(Config.Dir.Thumbs) + "\\yac\\"; - foreach( Contact c in p.contact ) { - string name = c.person[0].realName; - foreach( TelephonyNumber number in c.telephony ) { - GUIListItem elem = new GUIListItem(); - elem.Label = name; - elem.Label2 = number.Value; - - if (File.Exists(thumbDir + c.person[0].realName + ".jpg" )) { - elem.ThumbnailImage = thumbDir + c.person[0].realName + ".jpg"; - } else { - elem.ThumbnailImage = thumbDir + "_noImage.png"; - } - - elem.Path = Convert.ToString(i++); - facadeView.Add(elem); - } - - } + + protected void populatePhonebookItems() + { + facadeView.Clear(); + if (fritzPhonebooks.Items.GetLength(0) == 0) + { + Log.Debug("no fritz phone book items found"); + return; + } + Phonebook p = fritzPhonebooks.Items[0]; // always choose first + int i = 0; + string thumbDir = Config.GetFolder(Config.Dir.Thumbs) + "\\yac\\"; + foreach (Contact c in p.contact) + { + string name = c.person[0].realName; + foreach (TelephonyNumber number in c.telephony) + { + GUIListItem elem = new GUIListItem(); + elem.Label = name; + elem.Label2 = number.Value; + + if (File.Exists(thumbDir + c.person[0].realName + ".jpg")) + { + elem.ThumbnailImage = thumbDir + c.person[0].realName + ".jpg"; + } + else + { + elem.ThumbnailImage = thumbDir + "_noImage.png"; + } + + elem.Path = Convert.ToString(i++); + facadeView.Add(elem); + } + } } /// <summary> @@ -862,13 +883,16 @@ elem.Path = Convert.ToString(i); elem.IconImageBig = "defaultAudioBig.png"; elem.IconImage = "defaultAudio.png"; - + string thumbDir = Config.GetFolder(Config.Dir.Thumbs) + "\\yac\\"; - if (File.Exists(thumbDir + caller + ".jpg" )) { - elem.ThumbnailImage = thumbDir + caller + ".jpg"; - } else { - elem.ThumbnailImage = thumbDir + "_noImage.png"; + if (File.Exists(thumbDir + caller + ".jpg")) + { + elem.ThumbnailImage = thumbDir + caller + ".jpg"; } + else + { + elem.ThumbnailImage = thumbDir + "_noImage.png"; + } facadeView.Add(elem); } i++; @@ -883,7 +907,7 @@ CultureInfo ci = CultureInfo.InvariantCulture; string format = "dd.MM.yy HH:mm"; facadeView.Clear(); - int i = -1; + int i = -1; foreach (CallItem item in callItemList) { GUIListItem elem = new GUIListItem(); @@ -901,13 +925,15 @@ if (item.type != 3) continue; } - elem.Label = item.timestamp.ToString(format, ci) +" - " +item.duration.ToString("HH:mm",ci); + elem.Label = item.timestamp.ToString(format, ci) + " - " + item.duration.ToString("HH:mm", ci); PhonebookItem pi = phoneBook[item.number]; - if (pi.name!=null) + if (pi.name != null) { - elem.Label2 = pi.inverseLookupDone ? - (pi.name + "(" + pi.number + ")") : - pi.name; + elem.Label2 = pi.inverseLookupDone + ? + (pi.name + "(" + pi.number + ")") + : + pi.name; } else { @@ -916,15 +942,21 @@ elem.Path = Convert.ToString(i); string thumbDir = Config.GetFolder(Config.Dir.Thumbs) + "\\yac\\"; - if (File.Exists(thumbDir + pi.name + ".jpg" )) { - elem.ThumbnailImage = thumbDir + pi.name + ".jpg"; - } else { - if( pi.name == null || pi.name == "" ) { - elem.ThumbnailImage = thumbDir + "_unknown.png"; - } else { - elem.ThumbnailImage = thumbDir + "_noImage.png"; - } + if (File.Exists(thumbDir + pi.name + ".jpg")) + { + elem.ThumbnailImage = thumbDir + pi.name + ".jpg"; } + else + { + if (pi.name == null || pi.name == "") + { + elem.ThumbnailImage = thumbDir + "_unknown.png"; + } + else + { + elem.ThumbnailImage = thumbDir + "_noImage.png"; + } + } string icon = "defaultAudioBig.png"; if (item.type == 1) { @@ -946,7 +978,7 @@ facadeView.Add(elem); } } - + private void ShowThumbPanel() { int itemIndex = facadeView.SelectedListItemIndex; @@ -962,249 +994,260 @@ { facadeView.View = GUIFacadeControl.ViewMode.List; } - + if (itemIndex > -1) { GUIControl.SelectItemControl(GetID, facadeView.GetID, itemIndex); } UpdateButtonStates(); } - - protected override void OnShowContextMenu() - { - base.OnShowContextMenu(); - if( currentMode == FritzBoxGuiMode.Voicebox ) { - int r = ShowVoiceboxContextMenu(); - switch(r) { - case 0: // play - g_Player.Play( decode( voiceboxItemList[Convert.ToInt16(facadeView.SelectedListItem.Path)] )); - break; - case 1: - break; - } - } else if( currentMode == FritzBoxGuiMode.CallList ) { - int r = ShowCallListContextMenu(); - switch(r) { - case 0: // callback - CallItem item = callItemList[Convert.ToInt16(facadeView.SelectedListItem.Path)]; - fritz.dial(item.number, dialport ); - break; - } - } - } - + + protected override void OnShowContextMenu() + { + base.OnShowContextMenu(); + if (currentMode == FritzBoxGuiMode.Voicebox) + { + int r = ShowVoiceboxContextMenu(); + switch (r) + { + case 0: // play + g_Player.Play(decode(voiceboxItemList[Convert.ToInt16(facadeView.SelectedListItem.Path)])); + break; + case 1: + break; + } + } + else if (currentMode == FritzBoxGuiMode.CallList) + { + int r = ShowCallListContextMenu(); + switch (r) + { + case 0: // callback + CallItem item = callItemList[Convert.ToInt16(facadeView.SelectedListItem.Path)]; + fritz.dial(item.number, dialport); + break; + } + } + } + protected override void OnClicked(int controlId, GUIControl control, - MediaPortal.GUI.Library.Action.ActionType actionType) + MediaPortal.GUI.Library.Action.ActionType actionType) { - base.OnClicked (controlId, control, actionType); - if( actionType == Action.ActionType.ACTION_SHOW_INFO ) { - OnShowContextMenu(); - return; + base.OnClicked(controlId, control, actionType); + if (actionType == Action.ActionType.ACTION_SHOW_INFO) + { + OnShowContextMenu(); + return; } - + if (control == facadeView) { GUIMessage msg = new GUIMessage(GUIMessage.MessageType.GUI_MSG_ITEM_SELECTED, GetID, 0, controlId, 0, 0, null); OnMessage(msg); - int itemIndex = (int)msg.Param1; + int itemIndex = msg.Param1; - if (actionType == MediaPortal.GUI.Library.Action.ActionType.ACTION_SELECT_ITEM) - { - GUIListItem actual = facadeView.SelectedListItem; - if( currentMode == FritzBoxGuiMode.Voicebox ) { - string tmp = decode( voiceboxItemList[Convert.ToInt16(actual.Path)] ); - g_Player.Play(tmp); - } - - } + if (actionType == MediaPortal.GUI.Library.Action.ActionType.ACTION_SELECT_ITEM) + { + GUIListItem actual = facadeView.SelectedListItem; + if (currentMode == FritzBoxGuiMode.Voicebox) + { + string tmp = decode(voiceboxItemList[Convert.ToInt16(actual.Path)]); + g_Player.Play(tmp); + } + } } - - if (control == btnViewAs) - { - bool shouldContinue = false; - do - { - shouldContinue = false; - switch (currentView) - { - case View.List: - currentView = View.Icons; - if (facadeView.ThumbnailView == null) - shouldContinue = true; - else - facadeView.View = GUIFacadeControl.ViewMode.SmallIcons; - break; - case View.Icons: - currentView = View.LargeIcons; - if (facadeView.ThumbnailView == null) - shouldContinue = true; - else - facadeView.View = GUIFacadeControl.ViewMode.LargeIcons; - break; + if (control == btnViewAs) + { + bool shouldContinue = false; + do + { + shouldContinue = false; + switch (currentView) + { + case View.List: + currentView = View.Icons; + if (facadeView.ThumbnailView == null) + shouldContinue = true; + else + facadeView.View = GUIFacadeControl.ViewMode.SmallIcons; + break; - case View.LargeIcons: - currentView = View.List; - if (facadeView.ListView == null) - shouldContinue = true; - else - facadeView.View = GUIFacadeControl.ViewMode.List; - break; - } - } while (shouldContinue); + case View.Icons: + currentView = View.LargeIcons; + if (facadeView.ThumbnailView == null) + shouldContinue = true; + else + facadeView.View = GUIFacadeControl.ViewMode.LargeIcons; + break; - UpdateButtonStates(); - GUIControl.FocusControl(GetID, controlId); - return; - } - if (control == btnFilter) - { - switch(currentFilter) { - case Filter.All: - currentFilter = Filter.Incoming; - break; - case Filter.Incoming: - currentFilter = Filter.Outgoing; - break; - case Filter.Outgoing: - currentFilter = Filter.Rejected; - break; - case Filter.Rejected: - currentFilter = Filter.All; - break; - } - populateCallItems(); - UpdateButtonStates(); - GUIControl.FocusControl(GetID, controlId); - } - if( control == btnUpdate ) { - update(true); - } - - // voice -> anrufliste -> phonebook - if( control == btnModus ) { - switch(currentMode) { - case FritzBoxGuiMode.CallList: - currentMode = FritzBoxGuiMode.Phonebook; - break; - case FritzBoxGuiMode.Voicebox: - currentMode = FritzBoxGuiMode.CallList; - break; - case FritzBoxGuiMode.Phonebook: - currentMode = FritzBoxGuiMode.Voicebox; - break; - } - // TODO write currentMode - update(false); - } + case View.LargeIcons: + currentView = View.List; + if (facadeView.ListView == null) + shouldContinue = true; + else + facadeView.View = GUIFacadeControl.ViewMode.List; + break; + } + } while (shouldContinue); + + UpdateButtonStates(); + GUIControl.FocusControl(GetID, controlId); + return; + } + if (control == btnFilter) + { + switch (currentFilter) + { + case Filter.All: + currentFilter = Filter.Incoming; + break; + case Filter.Incoming: + currentFilter = Filter.Outgoing; + break; + case Filter.Outgoing: + currentFilter = Filter.Rejected; + break; + case Filter.Rejected: + currentFilter = Filter.All; + break; + } + populateCallItems(); + UpdateButtonStates(); + GUIControl.FocusControl(GetID, controlId); + } + if (control == btnUpdate) + { + update(true); + } + + // voice -> anrufliste -> phonebook + if (control == btnModus) + { + switch (currentMode) + { + case FritzBoxGuiMode.CallList: + currentMode = FritzBoxGuiMode.Phonebook; + break; + case FritzBoxGuiMode.Voicebox: + currentMode = FritzBoxGuiMode.CallList; + break; + case FritzBoxGuiMode.Phonebook: + currentMode = FritzBoxGuiMode.Voicebox; + break; + } + // TODO write currentMode + update(false); + } } - + private int ShowCallListContextMenu() { - GUIDialogMenu dlgMenu = (GUIDialogMenu)GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_DIALOG_MENU); + GUIDialogMenu dlgMenu = (GUIDialogMenu) GUIWindowManager.GetWindow((int) GUIWindow.Window.WINDOW_DIALOG_MENU); if (dlgMenu != null) { - dlgMenu.Reset(); - dlgMenu.SetHeading("Anrufe"); - dlgMenu.Add("Zur\xFCckrufen"); - dlgMenu.DoModal(GetID); + dlgMenu.Reset(); + dlgMenu.SetHeading("Anrufe"); + dlgMenu.Add("Zur\xFCckrufen"); + dlgMenu.DoModal(GetID); - if (dlgMenu.SelectedLabel == -1) // Nothing was selected - return -1; + if (dlgMenu.SelectedLabel == -1) // Nothing was selected + return -1; - return dlgMenu.SelectedLabel; - } + return dlgMenu.SelectedLabel; + } return -1; } - + private int ShowVoiceboxContextMenu() { - GUIDialogMenu dlgMenu = (GUIDialogMenu)GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_DIALOG_MENU); + GUIDialogMenu dlgMenu = (GUIDialogMenu) GUIWindowManager.GetWindow((int) GUIWindow.Window.WINDOW_DIALOG_MENU); if (dlgMenu != null) { - dlgMenu.Reset(); - dlgMenu.SetHeading("Nachrichten"); - dlgMenu.Add("Nachricht abspielen"); - dlgMenu.Add("Nachricht als geh\xF6rt markieren"); - dlgMenu.Add("Nachricht l\xF6schen"); - dlgMenu.DoModal(GetID); + dlgMenu.Reset(); + dlgMenu.SetHeading("Nachrichten"); + dlgMenu.Add("Nachricht abspielen"); + dlgMenu.Add("Nachricht als geh\xF6rt markieren"); + dlgMenu.Add("Nachricht l\xF6schen"); + dlgMenu.DoModal(GetID); - if (dlgMenu.SelectedLabel == -1) // Nothing was selected - return -1; + if (dlgMenu.SelectedLabel == -1) // Nothing was selected + return -1; - return dlgMenu.SelectedLabel; + return dlgMenu.SelectedLabel; } return -1; - } - + } + private void UpdateButtonStates() - { - facadeView.IsVisible = false; - facadeView.IsVisible = true; - GUIControl.FocusControl(GetID, facadeView.GetID); - - string strLine = string.Empty; - View view = currentView; - switch (view) - { - case View.List: - strLine = GUILocalizeStrings.Get(101); - break; - case View.Icons: - strLine = GUILocalizeStrings.Get(100); - break; - case View.LargeIcons: - strLine = GUILocalizeStrings.Get(417); - break; - } - - if (btnViewAs != null) - { - btnViewAs.Label = strLine; - } - - switch (currentFilter) - { - case Filter.All: - strLine = "Alle";//GUILocalizeStrings.Get(103); - break; - case Filter.Incoming: - strLine = "Eingehend";//GUILocalizeStrings.Get(668); - break; - case Filter.Outgoing: - strLine = "Ausgehend";//GUILocalizeStrings.Get(669); - break; - case Filter.Rejected: - strLine = "Abgelehnt"; - break; - } - - if (btnFilter != null) - { - btnFilter.Label = strLine; - btnFilter.IsAscending = true; - } - // voice -> anrufliste -> phonebook - switch(currentMode) { - case FritzBoxGuiMode.Voicebox: - btnModus.Label = "Anrufliste"; - headerLabel.Label = "FritzBox Nachrichten"; - break; - case FritzBoxGuiMode.CallList: - btnModus.Label = "Telefonbuch"; - headerLabel.Label = "FritzBox Anrufliste"; - break; - case FritzBoxGuiMode.Phonebook: - btnModus.Label = "Nachrichten"; - headerLabel.Label = "FritzBox Telefonbuch"; - break; - } - } - - private void ShowError( string msg ) { - GUIDialogOK dlg = (GUIDialogOK)GUIWindowManager.GetWindow( - (int)GUIWindow.Window.WINDOW_DIALOG_OK); + facadeView.IsVisible = false; + facadeView.IsVisible = true; + GUIControl.FocusControl(GetID, facadeView.GetID); + + string strLine = string.Empty; + View view = currentView; + switch (view) + { + case View.List: + strLine = GUILocalizeStrings.Get(101); + break; + case View.Icons: + strLine = GUILocalizeStrings.Get(100); + break; + case View.LargeIcons: + strLine = GUILocalizeStrings.Get(417); + break; + } + + if (btnViewAs != null) + { + btnViewAs.Label = strLine; + } + + switch (currentFilter) + { + case Filter.All: + strLine = "Alle"; //GUILocalizeStrings.Get(103); + break; + case Filter.Incoming: + strLine = "Eingehend"; //GUILocalizeStrings.Get(668); + break; + case Filter.Outgoing: + strLine = "Ausgehend"; //GUILocalizeStrings.Get(669); + break; + case Filter.Rejected: + strLine = "Abgelehnt"; + break; + } + + if (btnFilter != null) + { + btnFilter.Label = strLine; + btnFilter.IsAscending = true; + } + // voice -> anrufliste -> phonebook + switch (currentMode) + { + case FritzBoxGuiMode.Voicebox: + btnModus.Label = "Anrufliste"; + headerLabel.Label = "FritzBox Nachrichten"; + break; + case FritzBoxGuiMode.CallList: + btnModus.Label = "Telefonbuch"; + headerLabel.Label = "FritzBox Anrufliste"; + break; + case FritzBoxGuiMode.Phonebook: + btnModus.Label = "Nachrichten"; + headerLabel.Label = "FritzBox Telefonbuch"; + break; + ... [truncated message content] |
From: <ste...@us...> - 2009-12-18 08:17:30
|
Revision: 3268 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=3268&view=rev Author: steve44src Date: 2009-12-18 08:17:16 +0000 (Fri, 18 Dec 2009) Log Message: ----------- Modified Paths: -------------- trunk/plugins/FritzBox/FritzBox/FritzBox.cs trunk/plugins/FritzBox/FritzBox/docs/todo.txt trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/FritzBoxConfigTester.csproj trunk/plugins/FritzBox/Tools/FritzBoxDebugger/FritzBoxDebugger.csproj Added Paths: ----------- trunk/plugins/FritzBox/FritzBox/Skin/Black & White/Media/FritzBox/ trunk/plugins/FritzBox/FritzBox/Skin/Blue3/Media/FritzBox/ trunk/plugins/FritzBox/FritzBox/Skin/GenericSkin/Media/FritzBox/ trunk/plugins/FritzBox/FritzBox/Skin/GenericSkin/Media/FritzBox/CallMonitor.Missing.png trunk/plugins/FritzBox/FritzBox/Skin/GenericSkin/Media/FritzBox/CallMonitor.Unknown.png trunk/plugins/FritzBox/FritzBox/Skin/GenericSkin/Media/FritzBox/callin.png trunk/plugins/FritzBox/FritzBox/Skin/GenericSkin/Media/FritzBox/callout.png trunk/plugins/FritzBox/FritzBox/Skin/GenericSkin/Media/FritzBox/rejected.png trunk/plugins/FritzBox/FritzBox/Skin/GenericSkin/Media/hover_FritzBox.png Removed Paths: ------------- trunk/plugins/FritzBox/FritzBox/Skin/GenericSkin/Media/FritzBox.CallMonitor.Missing.png trunk/plugins/FritzBox/FritzBox/Skin/GenericSkin/Media/FritzBox.CallMonitor.Unknown.png trunk/plugins/FritzBox/FritzBox/Skin/GenericSkin/Media/callin.png trunk/plugins/FritzBox/FritzBox/Skin/GenericSkin/Media/callout.png trunk/plugins/FritzBox/FritzBox/Skin/GenericSkin/Media/hover_FritzBox.png trunk/plugins/FritzBox/FritzBox/Skin/GenericSkin/Media/rejected.png Modified: trunk/plugins/FritzBox/FritzBox/FritzBox.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/FritzBox.cs 2009-12-18 07:23:04 UTC (rev 3267) +++ trunk/plugins/FritzBox/FritzBox/FritzBox.cs 2009-12-18 08:17:16 UTC (rev 3268) @@ -80,11 +80,11 @@ string filePath; // check if skin supports it's own images - filePath = Utils.GetCoverArt(SkinMediaFolder, "FritzBox.CallMonitor.Unknown"); + filePath = Utils.GetCoverArt(SkinMediaFolder, @"FritzBox\CallMonitor.Unknown"); if (!String.IsNullOrEmpty(filePath)) return filePath; // use new default image - filePath = Utils.GetCoverArt(ContactPicturesFolder, "FritzBox.CallMonitor.Unknown"); + filePath = Utils.GetCoverArt(ContactPicturesFolder, @"FritzBox\CallMonitor.Unknown"); if (!String.IsNullOrEmpty(filePath)) return filePath; // use old default image @@ -102,11 +102,11 @@ string filePath; // check if skin supports it's own images - filePath = Utils.GetCoverArt(SkinMediaFolder, "FritzBox.CallMonitor.Missing"); + filePath = Utils.GetCoverArt(SkinMediaFolder, @"FritzBox\CallMonitor.Missing"); if (!String.IsNullOrEmpty(filePath)) return filePath; // use new default image - filePath = Utils.GetCoverArt(ContactPicturesFolder, "FritzBox.CallMonitor.Missing"); + filePath = Utils.GetCoverArt(ContactPicturesFolder, @"FritzBox\CallMonitor.Missing"); if (!String.IsNullOrEmpty(filePath)) return filePath; // use old default image Copied: trunk/plugins/FritzBox/FritzBox/Skin/GenericSkin/Media/FritzBox/CallMonitor.Missing.png (from rev 3267, trunk/plugins/FritzBox/FritzBox/Skin/GenericSkin/Media/FritzBox.CallMonitor.Missing.png) =================================================================== (Binary files differ) Copied: trunk/plugins/FritzBox/FritzBox/Skin/GenericSkin/Media/FritzBox/CallMonitor.Unknown.png (from rev 3267, trunk/plugins/FritzBox/FritzBox/Skin/GenericSkin/Media/FritzBox.CallMonitor.Unknown.png) =================================================================== (Binary files differ) Copied: trunk/plugins/FritzBox/FritzBox/Skin/GenericSkin/Media/FritzBox/callin.png (from rev 3267, trunk/plugins/FritzBox/FritzBox/Skin/GenericSkin/Media/callin.png) =================================================================== (Binary files differ) Copied: trunk/plugins/FritzBox/FritzBox/Skin/GenericSkin/Media/FritzBox/callout.png (from rev 3267, trunk/plugins/FritzBox/FritzBox/Skin/GenericSkin/Media/callout.png) =================================================================== (Binary files differ) Copied: trunk/plugins/FritzBox/FritzBox/Skin/GenericSkin/Media/FritzBox/rejected.png (from rev 3267, trunk/plugins/FritzBox/FritzBox/Skin/GenericSkin/Media/rejected.png) =================================================================== (Binary files differ) Deleted: trunk/plugins/FritzBox/FritzBox/Skin/GenericSkin/Media/FritzBox.CallMonitor.Missing.png =================================================================== (Binary files differ) Deleted: trunk/plugins/FritzBox/FritzBox/Skin/GenericSkin/Media/FritzBox.CallMonitor.Unknown.png =================================================================== (Binary files differ) Deleted: trunk/plugins/FritzBox/FritzBox/Skin/GenericSkin/Media/callin.png =================================================================== (Binary files differ) Deleted: trunk/plugins/FritzBox/FritzBox/Skin/GenericSkin/Media/callout.png =================================================================== (Binary files differ) Deleted: trunk/plugins/FritzBox/FritzBox/Skin/GenericSkin/Media/hover_FritzBox.png =================================================================== (Binary files differ) Added: trunk/plugins/FritzBox/FritzBox/Skin/GenericSkin/Media/hover_FritzBox.png =================================================================== --- trunk/plugins/FritzBox/FritzBox/Skin/GenericSkin/Media/hover_FritzBox.png (rev 0) +++ trunk/plugins/FritzBox/FritzBox/Skin/GenericSkin/Media/hover_FritzBox.png 2009-12-18 08:17:16 UTC (rev 3268) @@ -0,0 +1,393 @@ +\x89PNG + + |
From: <che...@us...> - 2010-11-10 15:20:41
|
Revision: 3918 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=3918&view=rev Author: chef_koch Date: 2010-11-10 15:20:34 +0000 (Wed, 10 Nov 2010) Log Message: ----------- added mp extension project added release archive Added Paths: ----------- trunk/plugins/FritzBox/MpeRelease/ trunk/plugins/FritzBox/MpeRelease/FritzBox.xmp trunk/plugins/FritzBox/releases/ trunk/plugins/FritzBox/releases/FritzBox_v0.3.0.1.mpi trunk/plugins/FritzBox/releases/FritzBox_v0.3.0.mpi trunk/plugins/FritzBox/releases/FritzBox_v0.3.1.0.mpi trunk/plugins/FritzBox/releases/FritzBox_v0.3.1.1.mpi trunk/plugins/FritzBox/releases/FritzBox_v0.3.1.5.mpi trunk/plugins/FritzBox/releases/FritzBox_v0.3.1.6.mpi trunk/plugins/FritzBox/releases/FritzBox_v0.3.2.0.mpi trunk/plugins/FritzBox/releases/FritzBox_v0.3.2.1.mpi trunk/plugins/FritzBox/releases/FritzBox_v0.3.2.5.mpi trunk/plugins/FritzBox/releases/FritzBox_v0.3.3.1.mpe1 trunk/plugins/FritzBox/releases/FritzBox_v0.3.3.2.mpe1 Added: trunk/plugins/FritzBox/MpeRelease/FritzBox.xmp =================================================================== --- trunk/plugins/FritzBox/MpeRelease/FritzBox.xmp (rev 0) +++ trunk/plugins/FritzBox/MpeRelease/FritzBox.xmp 2010-11-10 15:20:34 UTC (rev 3918) @@ -0,0 +1,56 @@ +<MPinstaler> + <ver>1.00.000</ver> + <FileList> + <File> + <FileName>_noImage.png</FileName> + <Type>Thumbs</Type> + <SubType>YAC</SubType> + <Source>FritzBox\gfx\Thumbs\YAC\_noImage.png</Source> + <Id>04010</Id> + <Option /> + <Guid>0ff544ed-d1b6-4e7c-927d-f691f0779297</Guid> + </File> + <File> + <FileName>_unknown.png</FileName> + <Type>Thumbs</Type> + <SubType>YAC</SubType> + <Source>FritzBox\gfx\Thumbs\YAC\_unknown.png</Source> + <Id>04010</Id> + <Option /> + <Guid>bc481810-f1bd-4b5c-8f5b-0b11ec7318a7</Guid> + </File> + <File> + <FileName>FritzBox.dll</FileName> + <Type>Plugin</Type> + <SubType>Process</SubType> + <Source>FritzBox\bin\Release\FritzBox.dll</Source> + <Id>01020</Id> + <Option /> + <Guid>eae29586-d006-4b08-81f1-40ab6efba447</Guid> + </File> + </FileList> + <StringList /> + <Actions /> + <SetupGroups /> + <SetupGroupMappings /> + <Option> + <BuildFileName>G:\MediaPortal\mp-plugins\trunk\plugins\FritzBox\FritzBox.mpe1</BuildFileName> + <ProiectFileName>G:\MediaPortal\mp-plugins\trunk\plugins\FritzBox\FritzBox2.xmp</ProiectFileName> + <ProiectName>FRITZ!Box CallMonitor</ProiectName> + <Author>chefkoch @ Team MediaPortal</Author> + <UpdateURL>http://www.team-mediaportal.com/files/Download/MediaPortalInstaller(MPI)/Input/FRITZ!BoxCallMonitor/</UpdateURL> + <Version>0.3.3.1</Version> + <Description>The FRITZ!Box plugin is a process plugin, which is able to notify you within MediaPortal on an incomming call on your FRITZ!Box. + +All strings are multi language. + +You will be informed with a small notify. It is possible to stop media playback automatically or to resume if you close the notify. You can specify your MSNs now, for which the notify should be shown. That avoids showing the notify when you get a fax. + +In the plugin is a small phonebook integrated, so you can define your own name/text for a specifc caller. You can blacklist each entry, then no notify will be shown if he calls you. If someone calls you who is not already in the phonebook, it is possible to add it automatically. + +The plugin supports pictures for each caller. You can place a picture in "ThumbsYAC"-directory which is in jpg, png or bmp format. The filename have to be the specified name NOT the callerid. </Description> + <Group>Input</Group> + <Release>Stable </Release> + <Script /> + </Option> +</MPinstaler> \ No newline at end of file Added: trunk/plugins/FritzBox/releases/FritzBox_v0.3.0.1.mpi =================================================================== (Binary files differ) Property changes on: trunk/plugins/FritzBox/releases/FritzBox_v0.3.0.1.mpi ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/FritzBox/releases/FritzBox_v0.3.0.mpi =================================================================== (Binary files differ) Property changes on: trunk/plugins/FritzBox/releases/FritzBox_v0.3.0.mpi ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/FritzBox/releases/FritzBox_v0.3.1.0.mpi =================================================================== (Binary files differ) Property changes on: trunk/plugins/FritzBox/releases/FritzBox_v0.3.1.0.mpi ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/FritzBox/releases/FritzBox_v0.3.1.1.mpi =================================================================== (Binary files differ) Property changes on: trunk/plugins/FritzBox/releases/FritzBox_v0.3.1.1.mpi ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/FritzBox/releases/FritzBox_v0.3.1.5.mpi =================================================================== (Binary files differ) Property changes on: trunk/plugins/FritzBox/releases/FritzBox_v0.3.1.5.mpi ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/FritzBox/releases/FritzBox_v0.3.1.6.mpi =================================================================== (Binary files differ) Property changes on: trunk/plugins/FritzBox/releases/FritzBox_v0.3.1.6.mpi ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/FritzBox/releases/FritzBox_v0.3.2.0.mpi =================================================================== (Binary files differ) Property changes on: trunk/plugins/FritzBox/releases/FritzBox_v0.3.2.0.mpi ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/FritzBox/releases/FritzBox_v0.3.2.1.mpi =================================================================== (Binary files differ) Property changes on: trunk/plugins/FritzBox/releases/FritzBox_v0.3.2.1.mpi ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/FritzBox/releases/FritzBox_v0.3.2.5.mpi =================================================================== (Binary files differ) Property changes on: trunk/plugins/FritzBox/releases/FritzBox_v0.3.2.5.mpi ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/FritzBox/releases/FritzBox_v0.3.3.1.mpe1 =================================================================== (Binary files differ) Property changes on: trunk/plugins/FritzBox/releases/FritzBox_v0.3.3.1.mpe1 ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/FritzBox/releases/FritzBox_v0.3.3.2.mpe1 =================================================================== (Binary files differ) Property changes on: trunk/plugins/FritzBox/releases/FritzBox_v0.3.3.2.mpe1 ___________________________________________________________________ Added: svn:mime-type + application/octet-stream This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <che...@us...> - 2010-11-10 16:22:56
|
Revision: 3919 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=3919&view=rev Author: chef_koch Date: 2010-11-10 15:41:44 +0000 (Wed, 10 Nov 2010) Log Message: ----------- updated to VS2010 Modified Paths: -------------- trunk/plugins/FritzBox/FritzBox/FritzBox.csproj trunk/plugins/FritzBox/FritzBox/Properties/Resources.Designer.cs trunk/plugins/FritzBox/FritzBox.sln trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/FritzBoxConfigTester.csproj trunk/plugins/FritzBox/Tools/FritzBoxDebugger/FritzBoxDebugger.csproj Modified: trunk/plugins/FritzBox/FritzBox/FritzBox.csproj =================================================================== --- trunk/plugins/FritzBox/FritzBox/FritzBox.csproj 2010-11-10 15:20:34 UTC (rev 3918) +++ trunk/plugins/FritzBox/FritzBox/FritzBox.csproj 2010-11-10 15:41:44 UTC (rev 3919) @@ -1,4 +1,5 @@ -<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5"> +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0"> <PropertyGroup> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> @@ -15,12 +16,27 @@ </FileUpgradeFlags> <UpgradeBackupLocation> </UpgradeBackupLocation> - <OldToolsVersion>2.0</OldToolsVersion> + <OldToolsVersion>3.5</OldToolsVersion> <SourceAnalysisOverrideSettingsFile>C:\Dokumente und Einstellungen\sr\Anwendungsdaten\ICSharpCode/SharpDevelop3.0\Settings.SourceAnalysis</SourceAnalysisOverrideSettingsFile> <TargetFrameworkVersion>v2.0</TargetFrameworkVersion> <AllowUnsafeBlocks>False</AllowUnsafeBlocks> <NoStdLib>False</NoStdLib> <TreatWarningsAsErrors>false</TreatWarningsAsErrors> + <PublishUrl>publish\</PublishUrl> + <Install>true</Install> + <InstallFrom>Disk</InstallFrom> + <UpdateEnabled>false</UpdateEnabled> + <UpdateMode>Foreground</UpdateMode> + <UpdateInterval>7</UpdateInterval> + <UpdateIntervalUnits>Days</UpdateIntervalUnits> + <UpdatePeriodically>false</UpdatePeriodically> + <UpdateRequired>false</UpdateRequired> + <MapFileExtensions>true</MapFileExtensions> + <ApplicationRevision>0</ApplicationRevision> + <ApplicationVersion>1.0.0.%2a</ApplicationVersion> + <IsWebBootstrapper>false</IsWebBootstrapper> + <UseApplicationTrust>false</UseApplicationTrust> + <BootstrapperEnabled>true</BootstrapperEnabled> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <DebugSymbols>true</DebugSymbols> @@ -30,6 +46,7 @@ <DefineConstants>DEBUG;TRACE</DefineConstants> <ErrorReport>prompt</ErrorReport> <WarningLevel>4</WarningLevel> + <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> <DebugType>pdbonly</DebugType> @@ -38,6 +55,7 @@ <DefineConstants>TRACE</DefineConstants> <ErrorReport>prompt</ErrorReport> <WarningLevel>4</WarningLevel> + <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)' == 'Debug' "> <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow> @@ -168,6 +186,23 @@ <None Include="Resources\fritzdial.sh" /> <None Include="Resources\MpeRelease\FritzBox.xmp2" /> </ItemGroup> + <ItemGroup> + <BootstrapperPackage Include="Microsoft.Net.Client.3.5"> + <Visible>False</Visible> + <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName> + <Install>false</Install> + </BootstrapperPackage> + <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1"> + <Visible>False</Visible> + <ProductName>.NET Framework 3.5 SP1</ProductName> + <Install>true</Install> + </BootstrapperPackage> + <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1"> + <Visible>False</Visible> + <ProductName>Windows Installer 3.1</ProductName> + <Install>true</Install> + </BootstrapperPackage> + </ItemGroup> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> <!-- To modify your build process, add your task inside one of the targets below and uncomment it. Other similar extension points exist, see Microsoft.Common.targets. Modified: trunk/plugins/FritzBox/FritzBox/Properties/Resources.Designer.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/Properties/Resources.Designer.cs 2010-11-10 15:20:34 UTC (rev 3918) +++ trunk/plugins/FritzBox/FritzBox/Properties/Resources.Designer.cs 2010-11-10 15:41:44 UTC (rev 3919) @@ -1,7 +1,7 @@ //------------------------------------------------------------------------------ // <auto-generated> // Dieser Code wurde von einem Tool generiert. -// Laufzeitversion:2.0.50727.4927 +// Laufzeitversion:4.0.30319.1 // // Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn // der Code erneut generiert wird. @@ -19,7 +19,7 @@ // -Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert. // Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen // mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] internal class Resources { Modified: trunk/plugins/FritzBox/FritzBox.sln =================================================================== --- trunk/plugins/FritzBox/FritzBox.sln 2010-11-10 15:20:34 UTC (rev 3918) +++ trunk/plugins/FritzBox/FritzBox.sln 2010-11-10 15:41:44 UTC (rev 3919) @@ -1,7 +1,6 @@ -Microsoft Visual Studio Solution File, Format Version 10.00 -# Visual Studio 2008 -# SharpDevelop 3.1.0.4977 +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FritzBox", "FritzBox\FritzBox.csproj", "{7A458560-A537-429E-A016-1A4513CB586F}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FritzBoxConfigTester", "Tools\FritzBoxConfigTester\FritzBoxConfigTester.csproj", "{5D751473-DCC5-4044-A6E3-403D97C5B9F9}" @@ -11,49 +10,21 @@ Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU - Debug|Mixed Platforms = Debug|Mixed Platforms - Debug|x86 = Debug|x86 Release|Any CPU = Release|Any CPU - Release|Mixed Platforms = Release|Mixed Platforms - Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {7A458560-A537-429E-A016-1A4513CB586F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {7A458560-A537-429E-A016-1A4513CB586F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7A458560-A537-429E-A016-1A4513CB586F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {7A458560-A537-429E-A016-1A4513CB586F}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {7A458560-A537-429E-A016-1A4513CB586F}.Debug|x86.ActiveCfg = Debug|Any CPU {7A458560-A537-429E-A016-1A4513CB586F}.Release|Any CPU.ActiveCfg = Release|Any CPU {7A458560-A537-429E-A016-1A4513CB586F}.Release|Any CPU.Build.0 = Release|Any CPU - {7A458560-A537-429E-A016-1A4513CB586F}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {7A458560-A537-429E-A016-1A4513CB586F}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {7A458560-A537-429E-A016-1A4513CB586F}.Release|x86.ActiveCfg = Release|Any CPU {5D751473-DCC5-4044-A6E3-403D97C5B9F9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {5D751473-DCC5-4044-A6E3-403D97C5B9F9}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5D751473-DCC5-4044-A6E3-403D97C5B9F9}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {5D751473-DCC5-4044-A6E3-403D97C5B9F9}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {5D751473-DCC5-4044-A6E3-403D97C5B9F9}.Debug|x86.ActiveCfg = Debug|Any CPU {5D751473-DCC5-4044-A6E3-403D97C5B9F9}.Release|Any CPU.ActiveCfg = Release|Any CPU {5D751473-DCC5-4044-A6E3-403D97C5B9F9}.Release|Any CPU.Build.0 = Release|Any CPU - {5D751473-DCC5-4044-A6E3-403D97C5B9F9}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {5D751473-DCC5-4044-A6E3-403D97C5B9F9}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {5D751473-DCC5-4044-A6E3-403D97C5B9F9}.Release|x86.ActiveCfg = Release|Any CPU {FB2B1D6F-4580-4B3B-95A8-C9800F679D9F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {FB2B1D6F-4580-4B3B-95A8-C9800F679D9F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FB2B1D6F-4580-4B3B-95A8-C9800F679D9F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {FB2B1D6F-4580-4B3B-95A8-C9800F679D9F}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {FB2B1D6F-4580-4B3B-95A8-C9800F679D9F}.Debug|x86.ActiveCfg = Debug|Any CPU {FB2B1D6F-4580-4B3B-95A8-C9800F679D9F}.Release|Any CPU.ActiveCfg = Release|Any CPU {FB2B1D6F-4580-4B3B-95A8-C9800F679D9F}.Release|Any CPU.Build.0 = Release|Any CPU - {FB2B1D6F-4580-4B3B-95A8-C9800F679D9F}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {FB2B1D6F-4580-4B3B-95A8-C9800F679D9F}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {FB2B1D6F-4580-4B3B-95A8-C9800F679D9F}.Release|x86.ActiveCfg = Release|Any CPU - {FB2B1D6F-4580-4B3B-95A8-C9800F679D9F}.Debug|x86.Build.0 = Debug|x86 - {FB2B1D6F-4580-4B3B-95A8-C9800F679D9F}.Release|x86.Build.0 = Release|x86 - {5D751473-DCC5-4044-A6E3-403D97C5B9F9}.Debug|x86.Build.0 = Debug|x86 - {5D751473-DCC5-4044-A6E3-403D97C5B9F9}.Release|x86.Build.0 = Release|x86 - {7A458560-A537-429E-A016-1A4513CB586F}.Debug|x86.Build.0 = Debug|x86 - {7A458560-A537-429E-A016-1A4513CB586F}.Release|x86.Build.0 = Release|x86 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE Modified: trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/FritzBoxConfigTester.csproj =================================================================== --- trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/FritzBoxConfigTester.csproj 2010-11-10 15:20:34 UTC (rev 3918) +++ trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/FritzBoxConfigTester.csproj 2010-11-10 15:41:44 UTC (rev 3919) @@ -1,4 +1,5 @@ -<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5"> +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0"> <PropertyGroup> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> @@ -9,7 +10,7 @@ <RootNamespace>FritzBoxConfigTester</RootNamespace> <FileUpgradeFlags> </FileUpgradeFlags> - <OldToolsVersion>2.0</OldToolsVersion> + <OldToolsVersion>3.5</OldToolsVersion> <UpgradeBackupLocation> </UpgradeBackupLocation> <SccProjectName> @@ -20,6 +21,22 @@ </SccAuxPath> <SccProvider> </SccProvider> + <TargetFrameworkVersion>v2.0</TargetFrameworkVersion> + <PublishUrl>publish\</PublishUrl> + <Install>true</Install> + <InstallFrom>Disk</InstallFrom> + <UpdateEnabled>false</UpdateEnabled> + <UpdateMode>Foreground</UpdateMode> + <UpdateInterval>7</UpdateInterval> + <UpdateIntervalUnits>Days</UpdateIntervalUnits> + <UpdatePeriodically>false</UpdatePeriodically> + <UpdateRequired>false</UpdateRequired> + <MapFileExtensions>true</MapFileExtensions> + <ApplicationRevision>0</ApplicationRevision> + <ApplicationVersion>1.0.0.%2a</ApplicationVersion> + <IsWebBootstrapper>false</IsWebBootstrapper> + <UseApplicationTrust>false</UseApplicationTrust> + <BootstrapperEnabled>true</BootstrapperEnabled> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <DebugSymbols>true</DebugSymbols> @@ -27,12 +44,14 @@ <Optimize>false</Optimize> <OutputPath>.\bin\Debug\</OutputPath> <DefineConstants>DEBUG;TRACE</DefineConstants> + <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> <DebugType>pdbonly</DebugType> <Optimize>true</Optimize> <OutputPath>.\bin\Release\</OutputPath> <DefineConstants>TRACE</DefineConstants> + <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet> </PropertyGroup> <ItemGroup> <Reference Include="Core"> @@ -54,6 +73,23 @@ <Name>FritzBox</Name> </ProjectReference> </ItemGroup> + <ItemGroup> + <BootstrapperPackage Include="Microsoft.Net.Client.3.5"> + <Visible>False</Visible> + <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName> + <Install>false</Install> + </BootstrapperPackage> + <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1"> + <Visible>False</Visible> + <ProductName>.NET Framework 3.5 SP1</ProductName> + <Install>true</Install> + </BootstrapperPackage> + <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1"> + <Visible>False</Visible> + <ProductName>Windows Installer 3.1</ProductName> + <Install>true</Install> + </BootstrapperPackage> + </ItemGroup> <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" /> <ProjectExtensions> <VisualStudio AllowExistingFolder="true" /> Modified: trunk/plugins/FritzBox/Tools/FritzBoxDebugger/FritzBoxDebugger.csproj =================================================================== --- trunk/plugins/FritzBox/Tools/FritzBoxDebugger/FritzBoxDebugger.csproj 2010-11-10 15:20:34 UTC (rev 3918) +++ trunk/plugins/FritzBox/Tools/FritzBoxDebugger/FritzBoxDebugger.csproj 2010-11-10 15:41:44 UTC (rev 3919) @@ -1,4 +1,5 @@ -<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5"> +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0"> <PropertyGroup> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> @@ -9,7 +10,7 @@ <RootNamespace>FritzBoxDebugger</RootNamespace> <FileUpgradeFlags> </FileUpgradeFlags> - <OldToolsVersion>2.0</OldToolsVersion> + <OldToolsVersion>3.5</OldToolsVersion> <UpgradeBackupLocation> </UpgradeBackupLocation> <SccProjectName> @@ -20,6 +21,22 @@ </SccAuxPath> <SccProvider> </SccProvider> + <TargetFrameworkVersion>v2.0</TargetFrameworkVersion> + <PublishUrl>publish\</PublishUrl> + <Install>true</Install> + <InstallFrom>Disk</InstallFrom> + <UpdateEnabled>false</UpdateEnabled> + <UpdateMode>Foreground</UpdateMode> + <UpdateInterval>7</UpdateInterval> + <UpdateIntervalUnits>Days</UpdateIntervalUnits> + <UpdatePeriodically>false</UpdatePeriodically> + <UpdateRequired>false</UpdateRequired> + <MapFileExtensions>true</MapFileExtensions> + <ApplicationRevision>0</ApplicationRevision> + <ApplicationVersion>1.0.0.%2a</ApplicationVersion> + <IsWebBootstrapper>false</IsWebBootstrapper> + <UseApplicationTrust>false</UseApplicationTrust> + <BootstrapperEnabled>true</BootstrapperEnabled> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <DebugSymbols>true</DebugSymbols> @@ -27,12 +44,14 @@ <Optimize>false</Optimize> <OutputPath>.\bin\Debug\</OutputPath> <DefineConstants>DEBUG;TRACE</DefineConstants> + <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> <DebugType>pdbonly</DebugType> <Optimize>true</Optimize> <OutputPath>.\bin\Release\</OutputPath> <DefineConstants>TRACE</DefineConstants> + <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet> </PropertyGroup> <ItemGroup> <Reference Include="Core"> @@ -66,6 +85,23 @@ <SubType>Designer</SubType> </EmbeddedResource> </ItemGroup> + <ItemGroup> + <BootstrapperPackage Include="Microsoft.Net.Client.3.5"> + <Visible>False</Visible> + <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName> + <Install>false</Install> + </BootstrapperPackage> + <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1"> + <Visible>False</Visible> + <ProductName>.NET Framework 3.5 SP1</ProductName> + <Install>true</Install> + </BootstrapperPackage> + <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1"> + <Visible>False</Visible> + <ProductName>Windows Installer 3.1</ProductName> + <Install>true</Install> + </BootstrapperPackage> + </ItemGroup> <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" /> <ProjectExtensions> <VisualStudio AllowExistingFolder="true" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <che...@us...> - 2010-11-10 17:09:49
|
Revision: 3921 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=3921&view=rev Author: chef_koch Date: 2010-11-10 17:09:40 +0000 (Wed, 10 Nov 2010) Log Message: ----------- reverted last commit Modified Paths: -------------- trunk/plugins/FritzBox/FritzBox/FritzBox.csproj trunk/plugins/FritzBox/FritzBox/Properties/Resources.Designer.cs trunk/plugins/FritzBox/FritzBox.sln trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/FritzBoxConfigTester.csproj trunk/plugins/FritzBox/Tools/FritzBoxDebugger/FritzBoxDebugger.csproj Property Changed: ---------------- trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.Designer.cs trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.cs trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.resx Modified: trunk/plugins/FritzBox/FritzBox/FritzBox.csproj =================================================================== --- trunk/plugins/FritzBox/FritzBox/FritzBox.csproj 2010-11-10 16:50:21 UTC (rev 3920) +++ trunk/plugins/FritzBox/FritzBox/FritzBox.csproj 2010-11-10 17:09:40 UTC (rev 3921) @@ -1,5 +1,4 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0"> +<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5"> <PropertyGroup> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> @@ -16,27 +15,12 @@ </FileUpgradeFlags> <UpgradeBackupLocation> </UpgradeBackupLocation> - <OldToolsVersion>3.5</OldToolsVersion> + <OldToolsVersion>2.0</OldToolsVersion> <SourceAnalysisOverrideSettingsFile>C:\Dokumente und Einstellungen\sr\Anwendungsdaten\ICSharpCode/SharpDevelop3.0\Settings.SourceAnalysis</SourceAnalysisOverrideSettingsFile> <TargetFrameworkVersion>v2.0</TargetFrameworkVersion> <AllowUnsafeBlocks>False</AllowUnsafeBlocks> <NoStdLib>False</NoStdLib> <TreatWarningsAsErrors>false</TreatWarningsAsErrors> - <PublishUrl>publish\</PublishUrl> - <Install>true</Install> - <InstallFrom>Disk</InstallFrom> - <UpdateEnabled>false</UpdateEnabled> - <UpdateMode>Foreground</UpdateMode> - <UpdateInterval>7</UpdateInterval> - <UpdateIntervalUnits>Days</UpdateIntervalUnits> - <UpdatePeriodically>false</UpdatePeriodically> - <UpdateRequired>false</UpdateRequired> - <MapFileExtensions>true</MapFileExtensions> - <ApplicationRevision>0</ApplicationRevision> - <ApplicationVersion>1.0.0.%2a</ApplicationVersion> - <IsWebBootstrapper>false</IsWebBootstrapper> - <UseApplicationTrust>false</UseApplicationTrust> - <BootstrapperEnabled>true</BootstrapperEnabled> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <DebugSymbols>true</DebugSymbols> @@ -46,7 +30,6 @@ <DefineConstants>DEBUG;TRACE</DefineConstants> <ErrorReport>prompt</ErrorReport> <WarningLevel>4</WarningLevel> - <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> <DebugType>pdbonly</DebugType> @@ -55,7 +38,6 @@ <DefineConstants>TRACE</DefineConstants> <ErrorReport>prompt</ErrorReport> <WarningLevel>4</WarningLevel> - <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)' == 'Debug' "> <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow> @@ -186,23 +168,6 @@ <None Include="Resources\fritzdial.sh" /> <None Include="Resources\MpeRelease\FritzBox.xmp2" /> </ItemGroup> - <ItemGroup> - <BootstrapperPackage Include="Microsoft.Net.Client.3.5"> - <Visible>False</Visible> - <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName> - <Install>false</Install> - </BootstrapperPackage> - <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1"> - <Visible>False</Visible> - <ProductName>.NET Framework 3.5 SP1</ProductName> - <Install>true</Install> - </BootstrapperPackage> - <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1"> - <Visible>False</Visible> - <ProductName>Windows Installer 3.1</ProductName> - <Install>true</Install> - </BootstrapperPackage> - </ItemGroup> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> <!-- To modify your build process, add your task inside one of the targets below and uncomment it. Other similar extension points exist, see Microsoft.Common.targets. Property changes on: trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.Designer.cs ___________________________________________________________________ Deleted: svn:mergeinfo - Property changes on: trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.cs ___________________________________________________________________ Deleted: svn:mergeinfo - Property changes on: trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.resx ___________________________________________________________________ Deleted: svn:mergeinfo - Modified: trunk/plugins/FritzBox/FritzBox/Properties/Resources.Designer.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/Properties/Resources.Designer.cs 2010-11-10 16:50:21 UTC (rev 3920) +++ trunk/plugins/FritzBox/FritzBox/Properties/Resources.Designer.cs 2010-11-10 17:09:40 UTC (rev 3921) @@ -1,7 +1,7 @@ //------------------------------------------------------------------------------ // <auto-generated> // Dieser Code wurde von einem Tool generiert. -// Laufzeitversion:4.0.30319.1 +// Laufzeitversion:2.0.50727.4927 // // Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn // der Code erneut generiert wird. @@ -19,7 +19,7 @@ // -Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert. // Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen // mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] internal class Resources { Modified: trunk/plugins/FritzBox/FritzBox.sln =================================================================== --- trunk/plugins/FritzBox/FritzBox.sln 2010-11-10 16:50:21 UTC (rev 3920) +++ trunk/plugins/FritzBox/FritzBox.sln 2010-11-10 17:09:40 UTC (rev 3921) @@ -1,6 +1,7 @@ -Microsoft Visual Studio Solution File, Format Version 11.00 -# Visual Studio 2010 +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 +# SharpDevelop 3.1.0.4977 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FritzBox", "FritzBox\FritzBox.csproj", "{7A458560-A537-429E-A016-1A4513CB586F}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FritzBoxConfigTester", "Tools\FritzBoxConfigTester\FritzBoxConfigTester.csproj", "{5D751473-DCC5-4044-A6E3-403D97C5B9F9}" @@ -10,21 +11,49 @@ Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU + Debug|Mixed Platforms = Debug|Mixed Platforms + Debug|x86 = Debug|x86 Release|Any CPU = Release|Any CPU + Release|Mixed Platforms = Release|Mixed Platforms + Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {7A458560-A537-429E-A016-1A4513CB586F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {7A458560-A537-429E-A016-1A4513CB586F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7A458560-A537-429E-A016-1A4513CB586F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {7A458560-A537-429E-A016-1A4513CB586F}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {7A458560-A537-429E-A016-1A4513CB586F}.Debug|x86.ActiveCfg = Debug|Any CPU {7A458560-A537-429E-A016-1A4513CB586F}.Release|Any CPU.ActiveCfg = Release|Any CPU {7A458560-A537-429E-A016-1A4513CB586F}.Release|Any CPU.Build.0 = Release|Any CPU + {7A458560-A537-429E-A016-1A4513CB586F}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {7A458560-A537-429E-A016-1A4513CB586F}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {7A458560-A537-429E-A016-1A4513CB586F}.Release|x86.ActiveCfg = Release|Any CPU {5D751473-DCC5-4044-A6E3-403D97C5B9F9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {5D751473-DCC5-4044-A6E3-403D97C5B9F9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5D751473-DCC5-4044-A6E3-403D97C5B9F9}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {5D751473-DCC5-4044-A6E3-403D97C5B9F9}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {5D751473-DCC5-4044-A6E3-403D97C5B9F9}.Debug|x86.ActiveCfg = Debug|Any CPU {5D751473-DCC5-4044-A6E3-403D97C5B9F9}.Release|Any CPU.ActiveCfg = Release|Any CPU {5D751473-DCC5-4044-A6E3-403D97C5B9F9}.Release|Any CPU.Build.0 = Release|Any CPU + {5D751473-DCC5-4044-A6E3-403D97C5B9F9}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {5D751473-DCC5-4044-A6E3-403D97C5B9F9}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {5D751473-DCC5-4044-A6E3-403D97C5B9F9}.Release|x86.ActiveCfg = Release|Any CPU {FB2B1D6F-4580-4B3B-95A8-C9800F679D9F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {FB2B1D6F-4580-4B3B-95A8-C9800F679D9F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FB2B1D6F-4580-4B3B-95A8-C9800F679D9F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {FB2B1D6F-4580-4B3B-95A8-C9800F679D9F}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {FB2B1D6F-4580-4B3B-95A8-C9800F679D9F}.Debug|x86.ActiveCfg = Debug|Any CPU {FB2B1D6F-4580-4B3B-95A8-C9800F679D9F}.Release|Any CPU.ActiveCfg = Release|Any CPU {FB2B1D6F-4580-4B3B-95A8-C9800F679D9F}.Release|Any CPU.Build.0 = Release|Any CPU + {FB2B1D6F-4580-4B3B-95A8-C9800F679D9F}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {FB2B1D6F-4580-4B3B-95A8-C9800F679D9F}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {FB2B1D6F-4580-4B3B-95A8-C9800F679D9F}.Release|x86.ActiveCfg = Release|Any CPU + {FB2B1D6F-4580-4B3B-95A8-C9800F679D9F}.Debug|x86.Build.0 = Debug|x86 + {FB2B1D6F-4580-4B3B-95A8-C9800F679D9F}.Release|x86.Build.0 = Release|x86 + {5D751473-DCC5-4044-A6E3-403D97C5B9F9}.Debug|x86.Build.0 = Debug|x86 + {5D751473-DCC5-4044-A6E3-403D97C5B9F9}.Release|x86.Build.0 = Release|x86 + {7A458560-A537-429E-A016-1A4513CB586F}.Debug|x86.Build.0 = Debug|x86 + {7A458560-A537-429E-A016-1A4513CB586F}.Release|x86.Build.0 = Release|x86 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE Modified: trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/FritzBoxConfigTester.csproj =================================================================== --- trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/FritzBoxConfigTester.csproj 2010-11-10 16:50:21 UTC (rev 3920) +++ trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/FritzBoxConfigTester.csproj 2010-11-10 17:09:40 UTC (rev 3921) @@ -1,5 +1,4 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0"> +<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5"> <PropertyGroup> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> @@ -10,7 +9,7 @@ <RootNamespace>FritzBoxConfigTester</RootNamespace> <FileUpgradeFlags> </FileUpgradeFlags> - <OldToolsVersion>3.5</OldToolsVersion> + <OldToolsVersion>2.0</OldToolsVersion> <UpgradeBackupLocation> </UpgradeBackupLocation> <SccProjectName> @@ -21,22 +20,6 @@ </SccAuxPath> <SccProvider> </SccProvider> - <TargetFrameworkVersion>v2.0</TargetFrameworkVersion> - <PublishUrl>publish\</PublishUrl> - <Install>true</Install> - <InstallFrom>Disk</InstallFrom> - <UpdateEnabled>false</UpdateEnabled> - <UpdateMode>Foreground</UpdateMode> - <UpdateInterval>7</UpdateInterval> - <UpdateIntervalUnits>Days</UpdateIntervalUnits> - <UpdatePeriodically>false</UpdatePeriodically> - <UpdateRequired>false</UpdateRequired> - <MapFileExtensions>true</MapFileExtensions> - <ApplicationRevision>0</ApplicationRevision> - <ApplicationVersion>1.0.0.%2a</ApplicationVersion> - <IsWebBootstrapper>false</IsWebBootstrapper> - <UseApplicationTrust>false</UseApplicationTrust> - <BootstrapperEnabled>true</BootstrapperEnabled> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <DebugSymbols>true</DebugSymbols> @@ -44,14 +27,12 @@ <Optimize>false</Optimize> <OutputPath>.\bin\Debug\</OutputPath> <DefineConstants>DEBUG;TRACE</DefineConstants> - <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> <DebugType>pdbonly</DebugType> <Optimize>true</Optimize> <OutputPath>.\bin\Release\</OutputPath> <DefineConstants>TRACE</DefineConstants> - <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet> </PropertyGroup> <ItemGroup> <Reference Include="Core"> @@ -73,23 +54,6 @@ <Name>FritzBox</Name> </ProjectReference> </ItemGroup> - <ItemGroup> - <BootstrapperPackage Include="Microsoft.Net.Client.3.5"> - <Visible>False</Visible> - <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName> - <Install>false</Install> - </BootstrapperPackage> - <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1"> - <Visible>False</Visible> - <ProductName>.NET Framework 3.5 SP1</ProductName> - <Install>true</Install> - </BootstrapperPackage> - <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1"> - <Visible>False</Visible> - <ProductName>Windows Installer 3.1</ProductName> - <Install>true</Install> - </BootstrapperPackage> - </ItemGroup> <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" /> <ProjectExtensions> <VisualStudio AllowExistingFolder="true" /> Modified: trunk/plugins/FritzBox/Tools/FritzBoxDebugger/FritzBoxDebugger.csproj =================================================================== --- trunk/plugins/FritzBox/Tools/FritzBoxDebugger/FritzBoxDebugger.csproj 2010-11-10 16:50:21 UTC (rev 3920) +++ trunk/plugins/FritzBox/Tools/FritzBoxDebugger/FritzBoxDebugger.csproj 2010-11-10 17:09:40 UTC (rev 3921) @@ -1,5 +1,4 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0"> +<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5"> <PropertyGroup> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> @@ -10,7 +9,7 @@ <RootNamespace>FritzBoxDebugger</RootNamespace> <FileUpgradeFlags> </FileUpgradeFlags> - <OldToolsVersion>3.5</OldToolsVersion> + <OldToolsVersion>2.0</OldToolsVersion> <UpgradeBackupLocation> </UpgradeBackupLocation> <SccProjectName> @@ -21,22 +20,6 @@ </SccAuxPath> <SccProvider> </SccProvider> - <TargetFrameworkVersion>v2.0</TargetFrameworkVersion> - <PublishUrl>publish\</PublishUrl> - <Install>true</Install> - <InstallFrom>Disk</InstallFrom> - <UpdateEnabled>false</UpdateEnabled> - <UpdateMode>Foreground</UpdateMode> - <UpdateInterval>7</UpdateInterval> - <UpdateIntervalUnits>Days</UpdateIntervalUnits> - <UpdatePeriodically>false</UpdatePeriodically> - <UpdateRequired>false</UpdateRequired> - <MapFileExtensions>true</MapFileExtensions> - <ApplicationRevision>0</ApplicationRevision> - <ApplicationVersion>1.0.0.%2a</ApplicationVersion> - <IsWebBootstrapper>false</IsWebBootstrapper> - <UseApplicationTrust>false</UseApplicationTrust> - <BootstrapperEnabled>true</BootstrapperEnabled> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <DebugSymbols>true</DebugSymbols> @@ -44,14 +27,12 @@ <Optimize>false</Optimize> <OutputPath>.\bin\Debug\</OutputPath> <DefineConstants>DEBUG;TRACE</DefineConstants> - <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> <DebugType>pdbonly</DebugType> <Optimize>true</Optimize> <OutputPath>.\bin\Release\</OutputPath> <DefineConstants>TRACE</DefineConstants> - <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet> </PropertyGroup> <ItemGroup> <Reference Include="Core"> @@ -85,23 +66,6 @@ <SubType>Designer</SubType> </EmbeddedResource> </ItemGroup> - <ItemGroup> - <BootstrapperPackage Include="Microsoft.Net.Client.3.5"> - <Visible>False</Visible> - <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName> - <Install>false</Install> - </BootstrapperPackage> - <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1"> - <Visible>False</Visible> - <ProductName>.NET Framework 3.5 SP1</ProductName> - <Install>true</Install> - </BootstrapperPackage> - <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1"> - <Visible>False</Visible> - <ProductName>Windows Installer 3.1</ProductName> - <Install>true</Install> - </BootstrapperPackage> - </ItemGroup> <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" /> <ProjectExtensions> <VisualStudio AllowExistingFolder="true" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hor...@us...> - 2011-11-29 10:23:19
|
Revision: 4354 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=4354&view=rev Author: horned-reaper Date: 2011-11-29 10:23:07 +0000 (Tue, 29 Nov 2011) Log Message: ----------- Build 0.3.5 Added Paths: ----------- trunk/plugins/FritzBox/FritzBox/ trunk/plugins/FritzBox/FritzBox/FritzBox.cs trunk/plugins/FritzBox/FritzBox/FritzBox.csproj trunk/plugins/FritzBox/FritzBox/FritzBox.png trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.Designer.cs trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.cs trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.resx trunk/plugins/FritzBox/FritzBox/FritzBoxDisabled.png trunk/plugins/FritzBox/FritzBox/FritzCallMonitor/ trunk/plugins/FritzBox/FritzBox/FritzCallMonitor/CallAction.cs trunk/plugins/FritzBox/FritzBox/FritzCallMonitor/Caller.cs trunk/plugins/FritzBox/FritzBox/FritzCallMonitor/FritzBoxClient.cs trunk/plugins/FritzBox/FritzBox/FritzCallMonitor/PhoneBook.cs trunk/plugins/FritzBox/FritzBox/FritzManager/ trunk/plugins/FritzBox/FritzBox/FritzManager/BackGroundWorker.cs trunk/plugins/FritzBox/FritzBox/FritzManager/BlockingQueue.cs trunk/plugins/FritzBox/FritzBox/FritzManager/CallItem.cs trunk/plugins/FritzBox/FritzBox/FritzManager/Fritz.cs trunk/plugins/FritzBox/FritzBox/FritzManager/FritzboxPhonebook.cs trunk/plugins/FritzBox/FritzBox/FritzManager/GCollections.cs trunk/plugins/FritzBox/FritzBox/FritzManager/InversSearch.cs trunk/plugins/FritzBox/FritzBox/FritzManager/InversSearchOert.cs trunk/plugins/FritzBox/FritzBox/FritzManager/Logger.cs trunk/plugins/FritzBox/FritzBox/FritzManager/LoggerFactory.cs trunk/plugins/FritzBox/FritzBox/FritzManager/MyBinaryReader.cs trunk/plugins/FritzBox/FritzBox/FritzManager/PhonebookItem.cs trunk/plugins/FritzBox/FritzBox/FritzManager/Task.cs trunk/plugins/FritzBox/FritzBox/FritzManager/VoiceboxItem.cs trunk/plugins/FritzBox/FritzBox/LocalizeStrings.cs trunk/plugins/FritzBox/FritzBox/Properties/ trunk/plugins/FritzBox/FritzBox/Properties/AssemblyInfo.cs trunk/plugins/FritzBox/FritzBox/Properties/Resources.Designer.cs trunk/plugins/FritzBox/FritzBox/Properties/Resources.resx trunk/plugins/FritzBox/FritzBox/Resources/ trunk/plugins/FritzBox/FritzBox/Resources/fritzdial.sh trunk/plugins/FritzBox/FritzBox/Resources/gfx/ trunk/plugins/FritzBox/FritzBox/Resources/gfx/FritzBox.ico trunk/plugins/FritzBox/FritzBox/Resources/gfx/FritzBoxIconMadeByHarley.png trunk/plugins/FritzBox/FritzBox/Resources/speexdec.exe trunk/plugins/FritzBox/FritzBox/Settings.cs trunk/plugins/FritzBox/FritzBox/Skin/ trunk/plugins/FritzBox/FritzBox/Skin/Black & White/ trunk/plugins/FritzBox/FritzBox/Skin/Black & White/FritzManager.xml trunk/plugins/FritzBox/FritzBox/Skin/Black & White/Media/ trunk/plugins/FritzBox/FritzBox/Skin/Black & White/Media/hover_FritzBox.png trunk/plugins/FritzBox/FritzBox/Skin/Blue3/ trunk/plugins/FritzBox/FritzBox/Skin/Blue3/FritzManager.xml trunk/plugins/FritzBox/FritzBox/Skin/Blue3/Media/ trunk/plugins/FritzBox/FritzBox/Skin/Blue3/Media/hover_FritzBox.png trunk/plugins/FritzBox/FritzBox/docs/ trunk/plugins/FritzBox/FritzBox/docs/Changes.txt trunk/plugins/FritzBox/FritzBox/docs/Install.txt trunk/plugins/FritzBox/FritzBox/docs/todo.txt trunk/plugins/FritzBox/FritzBox.sln trunk/plugins/FritzBox/Tools/ trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/ trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/FritzBoxConfigTester.csproj trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/Program.cs trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/Properties/ trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/Properties/AssemblyInfo.cs trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/app.config trunk/plugins/FritzBox/Tools/FritzBoxDebugger/ trunk/plugins/FritzBox/Tools/FritzBoxDebugger/DebugForm.Designer.cs trunk/plugins/FritzBox/Tools/FritzBoxDebugger/DebugForm.cs trunk/plugins/FritzBox/Tools/FritzBoxDebugger/DebugForm.resx trunk/plugins/FritzBox/Tools/FritzBoxDebugger/FritzBoxDebugger.csproj trunk/plugins/FritzBox/Tools/FritzBoxDebugger/Program.cs trunk/plugins/FritzBox/Tools/FritzBoxDebugger/Properties/ trunk/plugins/FritzBox/Tools/FritzBoxDebugger/Properties/AssemblyInfo.cs trunk/plugins/FritzBox/Tools/FritzBoxDebugger/app.config Removed Paths: ------------- trunk/plugins/FritzBox/Build/ trunk/plugins/FritzBox/FritzBox/ trunk/plugins/FritzBox/FritzBox.5.1.resharper trunk/plugins/FritzBox/FritzBox.sln trunk/plugins/FritzBox/MP2version/ trunk/plugins/FritzBox/MpeRelease/ trunk/plugins/FritzBox/Tools/ trunk/plugins/FritzBox/releases/ Added: trunk/plugins/FritzBox/FritzBox/FritzBox.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/FritzBox.cs (rev 0) +++ trunk/plugins/FritzBox/FritzBox/FritzBox.cs 2011-11-29 10:23:07 UTC (rev 4354) @@ -0,0 +1,1423 @@ +#region Copyright (C) 2005-2009 Team MediaPortal + +// Copyright (C) 2005-2009 Team MediaPortal +// http://www.team-mediaportal.com +// +// 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, 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 GNU Make; see the file COPYING. If not, write to +// the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. +// http://www.gnu.org/copyleft/gpl.html + +#endregion + +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Globalization; +using System.IO; +using System.Reflection; +using System.Threading; +using System.Xml.Serialization; +using FritzManager; +using GCollections; +using MediaPortal.Configuration; +using MediaPortal.Dialogs; +using MediaPortal.GUI.Library; +using MediaPortal.Player; +using MediaPortal.Util; +using Microsoft.Win32; + +namespace FritzBox +{ + internal enum FritzBoxGuiMode + { + CallList = 0, + VoiceBox = 1, + PhoneBook = 2 + } + + [PluginIcons("FritzBox.FritzBox.png", "FritzBox.FritzBoxDisabled.png")] + public class FritzBox : GUIWindow, ISetupForm, IPlugin + { + static Logger Log = LoggerFactory.getLogger("FritzBox"); + + #region CallMonitor + + #region Variables + + private readonly List<CallAction> _actionList = new List<CallAction>(); + private readonly List<CallAction> _notifyQueue = new List<CallAction>(); + private bool _showNotify = true; + private object _tempNotify; + + private int notifyCount = 0; + + #endregion Variables + + #region Properties + + public string ContactPicturesFolder + { + get { return Config.GetSubFolder(Config.Dir.Thumbs, "FritzBox.Contacts"); } + } + + public string YacFolder + { + get { return Config.GetSubFolder(Config.Dir.Thumbs, "yac"); } + } + + public string SkinMediaFolder + { + get { return Path.Combine(Config.GetSubFolder(Config.Dir.Skin, Settings.MediaPortalSkin), "Media"); } + } + + public string UnknownCallerImage + { + get + { + string filePath; + + // check if skin supports it's own images + filePath = Utils.GetCoverArt(SkinMediaFolder, @"FritzBox\CallMonitor.Unknown"); + if (!String.IsNullOrEmpty(filePath)) return filePath; + + // use new default image + filePath = Utils.GetCoverArt(ContactPicturesFolder, @"FritzBox\CallMonitor.Unknown"); + if (!String.IsNullOrEmpty(filePath)) return filePath; + + // use old default image + filePath = Utils.GetCoverArt(YacFolder, "_unknown"); + if (!String.IsNullOrEmpty(filePath)) return filePath; + + return String.Empty; + } + } + + public string MissingCallerImage + { + get + { + string filePath; + + // check if skin supports it's own images + filePath = Utils.GetCoverArt(SkinMediaFolder, @"FritzBox\CallMonitor.Missing"); + if (!String.IsNullOrEmpty(filePath)) return filePath; + + // use new default image + filePath = Utils.GetCoverArt(ContactPicturesFolder, @"FritzBox\CallMonitor.Missing"); + if (!String.IsNullOrEmpty(filePath)) return filePath; + + // use old default image + filePath = Utils.GetCoverArt(YacFolder, "_noImage"); + if (!String.IsNullOrEmpty(filePath)) return filePath; + + return String.Empty; + } + } + + #endregion + + #region Private Functions/Methods + + private void OnStartExternal(Process proc, bool waitForExit) + { + if (waitForExit) _showNotify = false; + else _showNotify = true; + } + + private void OnStopExternal(Process proc, bool waitForExit) + { + _showNotify = true; + + //for (int i = 0; i < _notifyQueue.Count; i++) + // OnFritzBoxEvent(_notifyQueue[i]); + + _notifyQueue.Clear(); + } + + private void OnCallAction(CallAction callAction) + { + Log.Info("FRITZ!Box: OnCallAction()"); + callAction.WriteToLog(); + + if (!_showNotify) + { + Log.Info("External process is running. Notify is queued and will be shown later."); + _notifyQueue.Add(callAction); + return; + } + + switch (callAction.Type) + { + case CallAction.CallType.Incoming: + if (PhoneBook.Enabled) callAction.Caller = PhoneBook.GetCaller(phoneBook, callAction.Caller); + OnCall(callAction); + break; + case CallAction.CallType.Outgoing: + if (PhoneBook.Enabled) callAction.Caller = PhoneBook.GetCaller(phoneBook, callAction.Caller); + OnCall(callAction); + break; + case CallAction.CallType.ConnectionStarted: + break; + case CallAction.CallType.ConnectionClosed: + if (Settings.CloseOnConnectionClosed) + { + Log.Info("_closeOnConnectionClosed is enabled. Try to close active notify."); + if (_tempNotify != null) + { + MediaPortal.GUI.Library.Action act = new MediaPortal.GUI.Library.Action(); + act.wID = MediaPortal.GUI.Library.Action.ActionType.ACTION_CLOSE_DIALOG; + GUIWindowManager.GetWindow((int) GUIWindow.Window.WINDOW_DIALOG_NOTIFY).OnAction(act); + } + } + break; + default: + Log.Error("incorrect callAction.Type"); + break; + } + } + + private void OnLogAction(FritzBoxClient.LogLevel logLevel, string logMessage) + { + switch (logLevel) + { + case FritzBoxClient.LogLevel.Debug: + Log.Debug(logMessage); + break; + case FritzBoxClient.LogLevel.Error: + Log.Error(logMessage); + break; + case FritzBoxClient.LogLevel.Warning: + Log.Warn(logMessage); + break; + case FritzBoxClient.LogLevel.Info: + Log.Info(logMessage); + break; + default: + break; + } + } + + private void OnCall(CallAction callAction) + { + Log.Info("FRITZ!Box: OnCall()"); + + if (_tempNotify != null) + { + Log.Info("yet another dialog is active. action is sent to queue."); + if (_actionList.Count < Settings.MaxNotifies - 1) _actionList.Add(callAction); + return; + } + + // config settings for dialog + string strHeading = string.Empty; + string strImage = string.Empty; + string strText = string.Empty; + + // set heading for NotifyDialog + switch (callAction.Type) + { + case CallAction.CallType.Incoming: + strHeading = GUILocalizeStrings.Get(1); // 1 = Incoming call + break; + case CallAction.CallType.Outgoing: + strHeading = GUILocalizeStrings.Get(2); // 2 = Outgoing call + break; + } + + // set Image for NotifyDialog + strImage = GetCallerImage(callAction.Caller); + + // set message text for NotifyDialog + strText = Environment.NewLine; + if (callAction.Caller.ID == "") strText += GUILocalizeStrings.Get(3); // 3 = Unknown + else if (callAction.Caller.Name == "") strText += callAction.Caller.ID; + else + { + strText += callAction.Caller.Name; + if (Settings.ShowMSNOnNotify) strText += Environment.NewLine + callAction.Caller.ID; + } + + // config settings for dialog FINISHED + + // if MSN is disabled, stop here + if (!IsMsnEnabled(callAction.MSN)) return; + + // if notifies are disabled for this call, stop here + if (!IsCallerEnabled(callAction.Caller)) return; + + if (callAction.Type == CallAction.CallType.Incoming && Settings.IncomingSound != null && Settings.IncomingSound.Length > 0 ) Utils.PlaySound(Settings.IncomingSound, false, true); + + ShowNotify(strHeading, strImage, strText); + } + + #endregion + + #region Helper Methods + + private string GetCallerImage(string callerId) + { + // search image for caller + if (Settings.ExtensiveLogging) + Log.Info("searching image for callerId: " + callerId); + + string filePath; + + // use new image path + filePath = Utils.GetCoverArt(ContactPicturesFolder, callerId); + if (!String.IsNullOrEmpty(filePath)) return filePath; + Log.Info("found image not in: " + ContactPicturesFolder); + + // use old image path + filePath = Utils.GetCoverArt(YacFolder, callerId); + if (!String.IsNullOrEmpty(filePath)) return filePath; + Log.Info("found image not in: " + YacFolder); + + return String.Empty; + } + + private string GetCallerImage(Caller caller) + { + if (caller.ID == "") + return UnknownCallerImage; + else + { + string strImage = GetCallerImage(caller.Name); + + if (File.Exists(strImage)) + { + if (Settings.ExtensiveLogging) Log.Info("found image for caller: " + strImage); + else Log.Info("found image for caller"); + + return strImage; + } + else + { + Log.Info("found NO image for caller"); + return MissingCallerImage; + } + } + } + + private bool IsMsnEnabled(string msn) + { + if (!Settings.FilterMSN) + { + Log.Info("MSN filter is disabled."); + return true; + } + + if (Settings.MSNList.Contains(msn)) + { + Log.Info("MSN is on list."); + return true; + } + else + { + Log.Info("MSN is not on list. Notify won't be shown."); + return false; + } + } + + private bool IsCallerEnabled(Caller caller) + { + if (!PhoneBook.Enabled) + { + Log.Info("Phone book is disabled. Notify will be shown."); + return true; + } + else if (caller.Show) return true; + else return false; + } + + private void ShowNotify(string strHeading, string strImage, string strText) + { + bool resumePlayer = false; + + if (notifyCount >= Settings.MaxNotifies) return; + + // pause player + if (g_Player.Playing && !g_Player.Paused && Settings.StopMedia) + { + g_Player.Pause(); + resumePlayer = true; + } + + // show dialog + GUIDialogNotify dlgNotify = (GUIDialogNotify)GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_DIALOG_NOTIFY); + if (dlgNotify == null) return; + + dlgNotify.Reset(); + dlgNotify.ClearAll(); + dlgNotify.SetHeading(strHeading); + dlgNotify.SetImage(strImage); + dlgNotify.SetText(strText); + if (Settings.CloseOnTimeout) dlgNotify.TimeOut = Settings.NotifyTimeout; + else dlgNotify.TimeOut = -1; + + _tempNotify = dlgNotify; + dlgNotify.DoModal(GUIWindowManager.ActiveWindow); + + // resume player + if (resumePlayer && g_Player.Playing && g_Player.Paused && Settings.StopMedia && Settings.ResumeMedia) g_Player.Pause(); + + _tempNotify = null; + if (_actionList.Count > 0) + { + CallAction tmpAction = _actionList[0]; + _actionList.RemoveAt(0); + OnCallAction(tmpAction); + } + } + + #endregion + + #endregion CallMonitor + + #region <Interface> Implementations + + #region IPlugin Interface + + /// <summary> + /// This method will be called by mediaportal to start your process plugin + /// </summary> + public void Start() + { + Log.Info("FRITZ!Box Plugin {0} starting.", Assembly.GetExecutingAssembly().GetName().Version); + Settings.Load(); + + Utils.OnStartExternal += OnStartExternal; + Utils.OnStopExternal += OnStopExternal; + + FritzBoxClient.LogEvent += OnLogAction; + FritzBoxClient.CallEvent += OnCallAction; + FritzBoxClient.StartClient(); + + // start monitoring Windows power mode changes (Standby & Hibernate) + SystemEvents.PowerModeChanged += new PowerModeChangedEventHandler(SystemEvents_PowerModeChanged); + } + + /// <summary> + /// this method will be called by mediaportal to stop your process plugin + /// </summary> + public void Stop() + { + Log.Info("FRITZ!Box Plugin {0} stopping.", Assembly.GetExecutingAssembly().GetName().Version); + + FritzBoxClient.StopClient(); + FritzBoxClient.CallEvent -= OnCallAction; + FritzBoxClient.LogEvent -= OnLogAction; + + Utils.OnStartExternal -= OnStartExternal; + Utils.OnStopExternal -= OnStopExternal; + + // stop monitoring power changes + SystemEvents.PowerModeChanged -= new PowerModeChangedEventHandler(SystemEvents_PowerModeChanged); + + PhoneBook.SaveSettings(); + } + + #endregion + + #region ISetupForm Member + + /// <summary> + /// With GetID it will be an window-plugin / otherwise a process-plugin + /// Enter the id number here again + /// </summary> + public override int GetID + { + get { return GetWindowId(); } + set { } + } + + public string PluginName() + { + return "FRITZ!Box Manager"; + } + + public string Author() + { + return "chefkoch, S.Rinke"; + } + + public string Description() + { + return "Displays FRITZ!Box caller lists and voice box infos and notifies on incoming calls."; + } + + public void ShowPlugin() + { + try + { + FritzBoxConfig config = new FritzBoxConfig(); + config.ShowDialog(); + } + catch (Exception ex) + { + Log.Error(ex.ToString()); + } + } + + public bool CanEnable() + { + return true; + } + + public int GetWindowId() + { + return 464554871; + } + + public bool DefaultEnabled() + { + return true; + } + + public bool HasSetup() + { + return true; + } + + public bool GetHome(out string strButtonText, out string strButtonImage, out string strButtonImageFocus, out string strPictureImage) + { + strButtonText = GUILocalizeStrings.Get(28); // 28 = Telefon + strButtonImage = String.Empty; + strButtonImageFocus = String.Empty; + strPictureImage = "hover_FritzBox.png"; + + return true; + } + + #endregion + + #endregion + + #region FritzManager + + #region enums + + #region Nested type: Filter + + private enum Filter + { + All = 0, + Incoming = 1, + Outgoing = 2, + Rejected = 3 + } + + #endregion + + #region Nested type: View + + private enum View + { + List = 0, + Icons = 1, + LargeIcons = 2, + } + + #endregion + + #endregion + + #region skin + + [SkinControl(3)] protected GUISortButtonControl btnFilter; + [SkinControl(4)] protected GUIButtonControl btnModus; + [SkinControl(9)] protected GUIButtonControl btnUpdate; + [SkinControl(2)] protected GUIButtonControl btnViewAs; + [SkinControl(50)] protected GUIFacadeControl facadeView; + [SkinControl(4711)] protected GUIFadeLabel headerLabel; + + #endregion + + #region fields + + // update timer for background thread + private static System.Timers.Timer updateTimer = new System.Timers.Timer(); + // path to voice box files + private string vBPath; + // FRITZBox password + private string passwd; + // list of call items (callers) + private List<CallItem> callItemList; + // filter on callitems used in list view + private Filter currentFilter = Filter.All; + // what kind of items is shown (callers, phoneBook, voicebox) + private FritzBoxGuiMode currentMode = FritzBoxGuiMode.CallList; + // state of facede view + private View currentView = View.List; + // list of tmp files to delete when deinit + // TODO should called in timer callback also + private List<string> filesToDelete = new List<string>(); + // FritzBox WebGUI Client + private Fritz fritz; + // stores mapped msns + private HashMap<string, string> msns = new HashMap<string, string>(); + // phone book + public HashMap<string, PhonebookItem> phoneBook = new HashMap<string, PhonebookItem>(); + // dirty marker, if set the timer task will save phoneBook + private volatile bool phoneBookDirty; + // stores pathname for internal pb save file + private string phoneBookPath; + private string mediaPortalLanguage; + // if set true, use revers lookup + private bool useInversSearch; + // list of voivebox messages + private List<VoiceBoxItem> voiceboxItemList; + // worker for task + private BackGroundWorker worker; + // and the thread + private Thread workerThread; + + #endregion + + // the instance + private static FritzBox thePlugin; + // fritz phoneBook + protected FritzPhonebooks fritzPhonebooks = new FritzPhonebooks(); + // sync the access to phoneBook / calllist + private System.Object sync = new System.Object(); + + public override bool Init() + { + Start(); + updateGUIProperties(0,0,""); + loadConfig(); + GUILocalizeStrings.ChangeLanguage(mediaPortalLanguage); + + return Load(GUIGraphicsContext.Skin + @"\FritzManager.xml"); + } + + private void startBackGroundWorker(InversSearch search) + { + if (worker == null) + { + worker = new BackGroundWorker(fritz, this, search); + workerThread = new Thread(worker.Run); + workerThread.Start(); + } + } + + public override void DeInit() + { + cleanup(); + + if (worker != null) + { + worker.stop(); + workerThread.Abort(); + } + + Stop(); + + // persist some props for next time + Log.Debug("DeInit called: persisting current props" ); + using (MediaPortal.Profile.Settings xmlwriter = new MediaPortal.Profile.Settings(Config.GetFile(Config.Dir.Config, "MediaPortal.xml"))) + { + xmlwriter.SetValue("FritzManager", "currentMode", (int)currentFilter); + xmlwriter.SetValue("FritzManager", "currentFilter", (int)currentMode); + } + + base.DeInit(); + } + + protected void loadConfig() + { + string dialport = "0"; + string areacode = ""; + + using (MediaPortal.Profile.Settings xmlreader = new MediaPortal.Profile.Settings("MediaPortal.xml")) + { + phoneBookPath = Config.GetFolder(Config.Dir.Config) + "\\fritzmanagerPhonebook.xml"; + mediaPortalLanguage = xmlreader.GetValue("gui", "language"); + + passwd = xmlreader.GetValue("FritzManager", "passwd"); + vBPath = xmlreader.GetValue("FritzManager", "vBPath"); + dialport = xmlreader.GetValue("FritzManager", "dialport"); + useInversSearch = xmlreader.GetValueAsBool("FritzManager", "useInversSearch", true); + areacode = xmlreader.GetValue("FritzManager", "defaultAreacode"); + + string str = xmlreader.GetValue("FritzManager", "currentMode"); + + if (str != null && str != "") currentMode = (FritzBoxGuiMode)System.Enum.Parse(typeof(FritzBoxGuiMode), str); + + str = xmlreader.GetValue("FritzManager", "currentFilter"); + + if (str != null && str != "") currentFilter = (Filter)System.Enum.Parse(typeof(Filter), str); + + int interval = xmlreader.GetValueAsInt("FritzManager", "updateInterval", 0); + + if (interval != 0) + { + thePlugin = this; + updateTimer.Interval = interval * 1000; // interval is in sec + updateTimer.Elapsed += OnTimedEvent; + updateTimer.Enabled = true; + } + } + + fritz = new Fritz(passwd, Config.GetFolder(Config.Dir.Config), FritzBoxClient.Address, dialport); + + initMSN(); + + InversSearch search = new InversSearchOert(areacode); + + startBackGroundWorker(search); + } + + protected override void OnPageLoad() + { + phoneBook = InternalPhoneBook.loadPhoneBook(phoneBookPath); + + update(false); + + if (currentMode == FritzBoxGuiMode.VoiceBox) worker.queue.Enqueue(new Task(Task.TaskAction.LoadCallItems, null)); + + ShowThumbPanel(); + } + + private static void OnTimedEvent(object source, System.Timers.ElapsedEventArgs e) + { + Log.Debug("FritzBox Manager processing timer event"); + + if (thePlugin.phoneBookDirty) + { + thePlugin.phoneBookDirty = false; + InternalPhoneBook.savePhonebook(thePlugin.phoneBook.Values, thePlugin.phoneBookPath); + } + + thePlugin.fritz.keepAlive(); + + List<VoiceBoxItem> items = VBReader.loadVoiceBoxDir(thePlugin.vBPath); + + int newItems = 0; + string caller = null; + + foreach(VoiceBoxItem item in items) + { + if (item.isNew != 0 && item.type == 3) + { + if (caller == null ) caller = thePlugin.lookupCaller(item.callerId); + newItems++; + } + } + + thePlugin.updateGUIProperties(newItems, items.Count, caller); + } + + protected void initMSN() + { + // populate MSNs + if (File.Exists(Config.GetFolder(Config.Dir.Config) + "\\fritzmanager_msns.txt")) + { + using (StreamReader sr = new StreamReader(Config.GetFolder(Config.Dir.Config) + "\\fritzmanager_msns.txt")) + { + while (!sr.EndOfStream) + { + string line = sr.ReadLine(); + string[] items = line.Split('='); + if (items.GetLength(0) > 1) msns.Add(items[0], items[1]); + } + } + } + } + + protected override void OnPageDestroy(int new_windowId) + { + cleanup(); + base.OnPageDestroy(new_windowId); + } + + /// <summary> + /// deletes temp files (decoded voicebox messages) + /// </summary> + private void cleanup() + { + // cleanup temp + foreach (string file in filesToDelete) + { + File.Delete(file); + } + + filesToDelete.Clear(); + } + + /// <summary> + /// update data for the views. + /// </summary> + /// <param name="forceReload">if set the update is forced, and data will be fetched in + /// any case.</param> + protected void update(bool forceReload) + { + if (currentMode == FritzBoxGuiMode.CallList) loadCallListFromFritzbox(forceReload); + else if (currentMode == FritzBoxGuiMode.VoiceBox) + { + if (!String.IsNullOrEmpty(vBPath)) voiceboxItemList = VBReader.loadVoiceBoxDir(vBPath); + else + { + Log.Debug("voice box path is not set"); + return; + } + } + else if (currentMode == FritzBoxGuiMode.PhoneBook) + { + string str = fritz.loadPhoneBook(); + + if (str == "") ShowError(GUILocalizeStrings.Get(24)); // 24 = "Could not load phone book" + else + { + XmlSerializer s = new XmlSerializer(typeof (FritzPhonebooks)); + fritzPhonebooks = (FritzPhonebooks) s.Deserialize(new StringReader(str)); + } + } + + refreshView(); + + UpdateButtonStates(); + } + + /// <summary> + /// refreshes the view. call when backing lists / maps have changed + /// </summary> + protected void refreshView() + { + if (currentMode == FritzBoxGuiMode.CallList) populateCallItems(); + else if (currentMode == FritzBoxGuiMode.VoiceBox) populateVoiceBoxItems(); + else if (currentMode == FritzBoxGuiMode.PhoneBook) populatePhonebookItems(); + } + + /// <summary> + /// load internal callers list from csv contained in data + /// </summary> + /// <param name="data">holds csv list</param> + public void refreshCallData(byte[] data) + { + lock (sync) + { + callItemList = CallItem.load(new MemoryStream(data)); + + // populate phoneBook + bool updatePhonebook = false; + int idx = 0; + + foreach (CallItem i in callItemList) + { + PhonebookItem pi = phoneBook[i.number]; + + if (pi == null) + { + pi = new PhonebookItem(); + pi.number = i.number; + phoneBook[i.number] = pi; + } + + if (i.name != "" && pi.name != i.name) + { + pi.name = i.name; + pi.fritzEntry = true; + pi.inverseLookupDone = false; + updatePhonebook = true; + } + else if (useInversSearch && !pi.inverseLookupDone && !pi.fritzEntry && i.number != "") worker.queue.Enqueue(new Task(Task.TaskAction.InversLookup, new object[] { i.number, idx })); + + idx++; + } + + if (updatePhonebook) InternalPhoneBook.savePhonebook(phoneBook.Values, phoneBookPath); + } + + refreshView(); + } + + public void updatePhonebook(string number, string name, int index) + { + if (name != null && name != "" && phoneBook.Contains(number)) + { + lock (sync) + { + phoneBook[number].inverseLookupDone = true; + phoneBookDirty = true; + + if (name != number) + { + // search without result + phoneBook[number].name = name; + + if (currentMode == FritzBoxGuiMode.CallList) + { + GUIListItem item = facadeView[index]; + + if (item != null) + { + Log.Debug("replacing label {0} with {1}", item.Label2, name); + string l = name; + + if (l.Length > 30) l = name.Substring(0, 30); + + item.Label2 = l; + } + } + } + } + } + } + + protected void loadCallListFromFritzbox(bool forceReload) + { + GUIWaitCursor.Show(); + try + { + Log.Debug("load callitem from fritzbox"); + byte[] data = fritz.loadCallListData(forceReload); + refreshCallData(data); + } + catch (Exception e) + { + Log.Debug("Exception {0}", e.Message); + } + GUIWaitCursor.Hide(); + } + + protected string decode(VoiceBoxItem item) + { + System.Diagnostics.Process proc = new System.Diagnostics.Process(); + proc.EnableRaisingEvents = false; + proc.StartInfo.FileName = "speexdec"; + string target = Path.GetTempPath() + item.seq + ".wav"; + proc.StartInfo.Arguments = "\"" + vBPath + "\\rec\\" + item.filename + "\" \"" + target + "\""; + proc.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; + + proc.Start(); + proc.WaitForExit(); + proc.Close(); + + filesToDelete.Add(target); + + return target; + } + + protected void populatePhonebookItems() + { + facadeView.Clear(); + + if (fritzPhonebooks.Items == null || fritzPhonebooks.Items.GetLength(0) == 0) + { + Log.Debug("no fritz phone book items found"); + + return; + } + + Phonebook p = fritzPhonebooks.Items[0]; // always choose first phone book + int i = 0; + string thumbDir = Config.GetFolder(Config.Dir.Thumbs) + "\\yac\\"; + + foreach (Contact c in p.contact) + { + string name = c.person[0].realName; + + foreach (TelephonyNumber number in c.telephony) + { + GUIListItem elem = new GUIListItem(); + elem.Label = name; + elem.Label2 = number.Value; + + if (elem.Label2.Length > 0) + { + if (File.Exists(thumbDir + c.person[0].realName + ".jpg")) elem.ThumbnailImage = thumbDir + c.person[0].realName + ".jpg"; + else elem.ThumbnailImage = thumbDir + "_noImage.png"; + + elem.Path = Convert.ToString(i++); + + facadeView.Add(elem); + } + } + } + } + + /// <summary> + /// fill in voice box items in facadeView + /// </summary> + protected void populateVoiceBoxItems() + { + CultureInfo ci = CultureInfo.InvariantCulture; + string format = "dd.MM.yy HH:mm"; + facadeView.Clear(); + voiceboxItemList.Sort(VoiceBoxItem.CompareByDate); + int i = 0; + int newItems = 0; + string callerNotify = null; + + foreach (VoiceBoxItem item in voiceboxItemList) + { + if (item.type == 3) + { + GUIListItem elem = new GUIListItem(); + string caller = lookupCaller(item.callerId); + + if (item.isNew != 0 ) + { + if (callerNotify == null) callerNotify = caller; + + newItems++; + } + string msnName = item.mynumber; + + if (msns.Contains(item.mynumber)) msnName = msns[item.mynumber]; + + elem.Label = (item.isNew == 1 ? "* " : " ") + item.time.ToString(format, ci); + elem.Label2 = caller + " " + GUILocalizeStrings.Get(26) + " " + msnName; // 26 = to + elem.Path = Convert.ToString(i); + elem.IconImageBig = "defaultAudioBig.png"; + elem.IconImage = "defaultAudio.png"; + + string thumbDir = Config.GetFolder(Config.Dir.Thumbs) + "\\yac\\"; + + if (File.Exists(thumbDir + caller + ".jpg")) elem.ThumbnailImage = thumbDir + caller + ".jpg"; + else elem.ThumbnailImage = thumbDir + "_noImage.png"; + + facadeView.Add(elem); + } + + i++; + } + + updateGUIProperties(newItems, voiceboxItemList.Count, callerNotify); + } + + private string lookupCaller(string caller) + { + if (phoneBook.Contains(caller)) caller = phoneBook[caller].name; + if (caller == "" || caller == null) caller = GUILocalizeStrings.Get(3); // 3 = Unknown + + return caller; + } + + public void updateGUIProperties(int newItems, int total, string name) + { + if (newItems == 0) + { + GUIPropertyManager.SetProperty("#FritzManager.NewMessages", " "); + GUIPropertyManager.SetProperty("#FritzManager.Caller", " "); + GUIPropertyManager.SetProperty("#FritzManager.NewMessageCount", string.Empty); + GUIPropertyManager.SetProperty("#FritzManager.NewMessagesAvail", "false"); + } + else + { + if (newItems > 1) GUIPropertyManager.SetProperty("#FritzManager.NewMessages", newItems + " " + GUILocalizeStrings.Get(7)); // 7 = Messages + else GUIPropertyManager.SetProperty("#FritzManager.NewMessages", newItems + " " + GUILocalizeStrings.Get(27)); // 27 = Message + + GUIPropertyManager.SetProperty("#FritzManager.Caller", name); + GUIPropertyManager.SetProperty("#FritzManager.NewMessageCount", newItems.ToString()); + GUIPropertyManager.SetProperty("#FritzManager.NewMessagesAvail", "true"); + } + + if (total == 0) + { + GUIPropertyManager.SetProperty("#FritzManager.TotalMessages", " "); + GUIPropertyManager.SetProperty("#FritzManager.TotalMessageCount", string.Empty); + } + else + { + if (newItems > 1) GUIPropertyManager.SetProperty("#FritzManager.TotalMessages", total + " " + GUILocalizeStrings.Get(7)); // 7 = Messages + else GUIPropertyManager.SetProperty("#FritzManager.TotalMessages", total + " " + GUILocalizeStrings.Get(27)); // 27 = Message + + GUIPropertyManager.SetProperty("#FritzManager.TotalMessageCount", total.ToString()); + } + + // set properties for skin file labels + GUIPropertyManager.SetProperty("#FritzManager.LabelCallList", GUILocalizeStrings.Get(18)); // 18 = Call list + GUIPropertyManager.SetProperty("#FritzManager.LabelUpdate", GUILocalizeStrings.Get(25)); // 25 = Update + } + + /// <summary> + /// fill in call items in facadeView + /// </summary> + protected void populateCallItems() + { + CultureInfo ci = CultureInfo.InvariantCulture; + string format = "dd.MM.yy HH:mm"; + facadeView.Clear(); + int i = -1; + + if (callItemList == null) + { + Log.Debug("callItemList is not initialized"); + + return; + } + + foreach (CallItem item in callItemList) + { + GUIListItem elem = new GUIListItem(); + + i++; + + if (currentFilter == Filter.Rejected) if (item.type != 2) continue; + if (currentFilter == Filter.Incoming) if (item.type != 1) continue; + if (currentFilter == Filter.Outgoing) if (item.type != 3) continue; + + elem.Label = item.timestamp.ToString(format, ci) + " - " + item.duration.ToString("HH:mm", ci); + PhonebookItem pi = phoneBook[item.number]; + + if (pi.name != null) + { + elem.Label2 = pi.inverseLookupDone + ? + (pi.name + " (" + pi.number + ")") + : + pi.name; + } + else elem.Label2 = pi.number; + + elem.DVDLabel = item.mynumber + item.extension; + elem.Path = Convert.ToString(i); + + string thumbDir = Config.GetFolder(Config.Dir.Thumbs) + "\\yac\\"; + + if (File.Exists(thumbDir + pi.name + ".jpg")) elem.ThumbnailImage = thumbDir + pi.name + ".jpg"; + else + { + if (pi.name == null || pi.name == "") elem.ThumbnailImage = thumbDir + "_unknown.png"; + else elem.ThumbnailImage = thumbDir + "_noImage.png"; + } + + string prefix = "FritzBox\\"; + string icon = "defaultAudioBig.png"; + + if (item.type == 1) icon = prefix + "callin.png"; + else if (item.type == 3) icon = prefix + "callout.png"; + else if (item.type == 2) icon = prefix + "rejected.png"; + + elem.IconImageBig = icon; + elem.IconImage = icon; + elem.IsFolder = false; + + facadeView.Add(elem); + } + } + + private void ShowThumbPanel() + { + int itemIndex = facadeView.SelectedListItemIndex; + + if (currentView == View.LargeIcons) facadeView.CurrentLayout = GUIFacadeControl.Layout.LargeIcons; + else if (currentView == View.Icons) facadeView.CurrentLayout = GUIFacadeControl.Layout.SmallIcons; + else if (currentView == View.List) facadeView.CurrentLayout = GUIFacadeControl.Layout.List; + + if (itemIndex > -1) GUIControl.SelectItemControl(GetID, facadeView.GetID, itemIndex); + + UpdateButtonStates(); + } + + protected override void OnShowContextMenu() + { + base.OnShowContextMenu(); + + if (currentMode == FritzBoxGuiMode.VoiceBox) + { + int r = ShowVoiceboxContextMenu(); + + switch (r) + { + case 0: // play + g_Player.Play(decode(voiceboxItemList[Convert.ToInt16(facadeView.SelectedListItem.Path)])); + break; + case 1: + break; + } + } + else if (currentMode == FritzBoxGuiMode.CallList) + { + int r = ShowCallListContextMenu(); + int idx = Convert.ToInt16(facadeView.SelectedListItem.Path); + CallItem item = callItemList[idx]; + + switch (r) + { + case 0: // call back + fritz.dial(item.number); + break; + case 1: // reverse search + worker.queue.Enqueue(new Task(Task.TaskAction.InversLookup, new object[] {item.number, idx})); + break; + } + } + } + + protected override void OnClicked(int controlId, GUIControl control, MediaPortal.GUI.Library.Action.ActionType actionType) + { + base.OnClicked(controlId, control, actionType); + + if (actionType == MediaPortal.GUI.Library.Action.ActionType.ACTION_SHOW_INFO) + { + OnShowContextMenu(); + + return; + } + + if (control == facadeView) + { + GUIMessage msg = new GUIMessage(GUIMessage.MessageType.GUI_MSG_ITEM_SELECTED, GetID, 0, controlId, 0, 0, null); + OnMessage(msg); + int itemIndex = msg.Param1; + + if (actionType == MediaPortal.GUI.Library.Action.ActionType.ACTION_SELECT_ITEM) + { + GUIListItem actual = facadeView.SelectedListItem; + + if (currentMode == FritzBoxGuiMode.VoiceBox) + { + string tmp = decode(voiceboxItemList[Convert.ToInt16(actual.Path)]); + g_Player.Play(tmp); + } + } + } + + if (control == btnViewAs) + { + bool shouldContinue = false; + + do + { + shouldContinue = false; + + switch (currentView) + { + case View.List: + currentView = View.Icons; + + if (facadeView.ThumbnailLayout == null) + shouldContinue = true; + else + facadeView.CurrentLayout = GUIFacadeControl.Layout.SmallIcons; + + break; + + case View.Icons: + currentView = View.LargeIcons; + + if (facadeView.ThumbnailLayout == null) + shouldContinue = true; + else + facadeView.CurrentLayout = GUIFacadeControl.Layout.LargeIcons; + + break; + + case View.LargeIcons: + currentView = View.List; + + if (facadeView.ListLayout == null) shouldContinue = true; + + else facadeView.CurrentLayout = GUIFacadeControl.Layout.List; + + break; + } + } + while (shouldContinue); + + UpdateButtonStates(); + + GUIControl.FocusControl(GetID, controlId); + + return; + } + + if (control == btnFilter) + { + switch (currentFilter) + { + case Filter.All: + currentFilter = Filter.Incoming; + break; + case Filter.Incoming: + currentFilter = Filter.Outgoing; + break; + case Filter.Outgoing: + currentFilter = Filter.Rejected; + break; + case Filter.Rejected: + currentFilter = Filter.All; + break; + } + + populateCallItems(); + + UpdateButtonStates(); + + GUIControl.FocusControl(GetID, controlId); + } + + if (control == btnUpdate) update(true); + + // Messages -> Call list -> Phone book + if (control == btnModus) + { + switch (currentMode) + { + case FritzBoxGuiMode.VoiceBox: + currentMode = FritzBoxGuiMode.CallList; + break; + case FritzBoxGuiMode.CallList: + currentMode = FritzBoxGuiMode.PhoneBook; + break; + case FritzBoxGuiMode.PhoneBook: + currentMode = FritzBoxGuiMode.VoiceBox; + break; + } + + if (currentMode == FritzBoxGuiMode.CallList) + { + // when switching into caller item list, then schedule a task + worker.queue.Enqueue(new Task(Task.TaskAction.LoadCallItems, null)); + } + + // TODO write currentMode + update(false); + } + } + + private int ShowCallListContextMenu() + { + GUIDialogMenu dlgMenu = (GUIDialogMenu) GUIWindowManager.GetWindow((int) GUIWindow.Window.WINDOW_DIALOG_MENU); + + if (dlgMenu != null) + { + dlgMenu.Reset(); + dlgMenu.SetHeading(GUILocalizeStrings.Get(4)); // 4 = Calls + dlgMenu.Add(GUILocalizeStrings.Get(5)); // 5 = Call back + dlgMenu.Add(GUILocalizeStrings.Get(6)); // 6 = New reverse search + dlgMenu.DoModal(GetID); + + if (dlgMenu.SelectedLabel == -1) return -1; // nothing was selected + + return dlgMenu.SelectedLabel; + } + + return -1; + } + + private int ShowVoiceboxContextMenu() + { + GUIDialogMenu dlgMenu = (GUIDialogMenu) GUIWindowManager.GetWindow((int) GUIWindow.Window.WINDOW_DIALOG_MENU); + + if (dlgMenu != null) + { + dlgMenu.Reset(); + dlgMenu.SetHeading(GUILocalizeStrings.Get(7)); // 7 = Messages + dlgMenu.Add(GUILocalizeStrings.Get(8)); // 8 = Play message + dlgMenu.Add(GUILocalizeStrings.Get(9)); // 9 = Mark message as heared + dlgMenu.Add(GUILocalizeStrings.Get(10)); // 10 = Delete message + dlgMenu.DoModal(GetID); + + if (dlgMenu.SelectedLabel == -1) return -1; // Nothing was selected + + return dlgMenu.SelectedLabel; + } + + return -1; + } + + private void UpdateButtonStates() + { + facadeView.IsVisible = false; + facadeView.IsVisible = true; + GUIControl.FocusControl(GetID, facadeView.GetID); + + string strLine = string.Empty; + View view = currentView; + + switch (view) + { + case View.List: + strLine = GUILocalizeStrings.Get(11); // 11 = View: List + break; + case View.Icons: + strLine = GUILocalizeStrings.Get(12); // 12 = View: Small icons + break; + case View.LargeIcons: + strLine = GUILocalizeStrings.Get(13); // 13 = View: Large icons + break; + } + + if (btnViewAs != null) btnViewAs.Label = strLine; + + switch (currentFilter) + { + case Filter.All: + strLine = GUILocalizeStrings.Get(14); // 14 = All + break; + case Filter.Incoming: + strLine = GUILocalizeStrings.Get(15); // 15 = Incoming + break; + case Filter.Outgoing: + strLine = GUILocalizeStrings.Get(16); // 16 = Outgoing + break; + case Filter.Rejected: + strLine = GUILocalizeStrings.Get(17); // 17 = Rejected + break; + } + + if (btnFilter != null) + { + btnFilter.Label = strLine; + btnFilter.IsAscending = true; + } + + // Messages -> Call list -> Phone book + switch (currentMode) + { + case FritzBoxGuiMode.VoiceBox: + if (headerLabel != null) headerLabel.Label = GUILocalizeStrings.Get(19); // 19 = FritzBox messages + btnModus.Label = GUILocalizeStrings.Get(18); // 18 = Call list + break; + case FritzBoxGuiMode.CallList: + if (headerLabel != null) headerLabel.Label = GUILocalizeStrings.Get(21); // 21 = FritzBox call list + btnModus.Label = GUILocalizeStrings.Get(20); // 20 = Phone book + break; + case FritzBoxGuiMode.PhoneBook: + if (headerLabel != null) headerLabel.Label = GUILocalizeStrings.Get(22); // 22 = FritzBox phone book + btnModus.Label = GUILocalizeStrings.Get(7); // 7 = Messages + break; + } + } + + private void ShowError(string msg) + { + GUIDialogOK dlg = (GUIDialogOK) GUIWindowManager.GetWindow((int) GUIWindow.Window.WINDOW_DIALOG_OK); + dlg.SetHeading(GUILocalizeStrings.Get(23)); // 23 = Error + dlg.SetLine(1, msg); + dlg.SetLine(2, String.Empty); + dlg.SetLine(3, String.Empty); + dlg.DoModal(GUIWindowManager.ActiveWindow); + } + + private void SystemEvents_PowerModeChanged(object sender, Microsoft.Win32.PowerModeChangedEventArgs e) + { + switch (e.Mode) + { + case PowerModes.Suspend: + FritzBoxClient.StopClient(); + break; + + case PowerModes.Resume: + FritzBoxClient.StartClient(); + break; + } + } + + #endregion FritzManager + } +} \ No newline at end of file Added: trunk/plugins/FritzBox/FritzBox/FritzBox.csproj =================================================================== --- trunk/plugins/FritzBox/FritzBox/FritzBox.csproj (rev 0) +++ trunk/plugins/FritzBox/FritzBox/FritzBox.csproj 2011-11-29 10:23:07 UTC (rev 4354) @@ -0,0 +1,223 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0"> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <ProductVersion>9.0.21022</ProductVersion> + <SchemaVersion>2.0</SchemaVersion> + <ProjectGuid>{7A458560-A537-429E-A016-1A4513CB586F}</ProjectGuid> + <OutputType>Library</OutputType> + <AppDesignerFolder>Properties</AppDesignerFolder> + <RootNamespace>FritzBox</RootNamespace> + <AssemblyName>FritzBox</AssemblyName> + <ApplicationIcon> + </ApplicationIcon> + <FileUpgradeFlags> + </FileUpgradeFlags> + <UpgradeBackupLocation> + </UpgradeBackupLocation> + <OldToolsVersion>3.5</OldToolsVersion> + <SourceAnalysisOverrideSettingsFile>C:\Dokumente und Einstellungen\sr\Anwendungsdaten\ICSharpCode/SharpDevelop3.0\Settings.SourceAnalysis</SourceAnalysisOverrideSettingsFile> + <TargetFrameworkVersion>v4.0</TargetFrameworkVersion> + <AllowUnsafeBlocks>False</AllowUnsafeBlocks> + <NoStdLib>False</NoStdLib> + <TreatWarningsAsErrors>false</TreatWarningsAsErrors> + <TargetFrameworkProfile /> + <PublishUrl>publish\</PublishUrl> + <Install>true</Install> + <InstallFrom>Disk</InstallFrom> + <UpdateEnabled>false</UpdateEnabled> + <UpdateMode>Foreground</UpdateMode> + <UpdateInterval>7</UpdateInterval> + <UpdateIntervalUnits>Days</UpdateIntervalUnits> + <UpdatePeriodically>false</UpdatePeriodically> + <UpdateRequired>false</UpdateRequired> + <MapFileExtensions>true</MapFileExtensions> + <ApplicationRevision>0</ApplicationRevision> + <ApplicationVersion>1.0.0.%2a</ApplicationVersion> + <IsWebBootstrapper>false</IsWebBootstrapper> + <UseApplicationTrust>false</UseApplicationTrust> + <BootstrapperEnabled>true</BootstrapperEnabled> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> + <DebugSymbols>true</DebugSymbols> + <DebugType>Full</DebugType> + <Optimize>false</Optimize> + <OutputPath>bin\Release\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> + <DebugType>pdbonly</DebugType> + <Optimize>true</Optimize> + <OutputPath>bin\Release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)' == 'Debug' "> + <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow> + <StartAction>Program</StartAction> + <StartProgram>..\..\..\..\..\..\Programme\Team MediaPortal\MediaPortal\MediaPortal.exe</StartProgram> + </PropertyGroup> + <PropertyGroup Condition=" '$(Platform)' == 'AnyCPU' "> + <RegisterForComInterop>False</RegisterForComInterop> + <GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies> + <BaseAddress>4194304</BaseAddress> + <PlatformTarget>AnyCPU</PlatformTarget> + <FileAlignment>4096</FileAlignment> + </PropertyGroup> + <ItemGroup> + <Reference Include="Common.Utils"> + <HintPath>C:\Program Files\Team MediaPortal\MediaPortal\Common.Utils.dll</HintPath> + </Reference> + <Reference Include="Core"> + <HintPath>C:\Program Files\Team MediaPortal\MediaPortal\Core.dll</HintPath> + </Reference> + <Reference Include="Dialogs"> + <HintPath>C:\Program Files\Team MediaPortal\MediaPortal\plugins\Windows\Dialogs.dll</HintPath> + </Reference> + <Reference Include="System" /> + <Reference Include="System.Data" /> + <Reference Include="System.Drawing" /> + <Reference Include="System.Windows.Forms" /> + <Reference Include="System.Xml" /> + <Reference Include="Utils"> + <HintPath>C:\Program Files\Team MediaPortal\MediaPortal\Utils.dll</HintPath> + </Reference> + </ItemGroup> + <ItemGroup> + <Compile Include="FritzCallMonitor\FritzBoxClient.cs" /> + <Compile Include="FritzManager\VBReader.cs" /> + <Compile Include="FritzManager\BackGroundWorker.cs" /> + <Compile Include="FritzManager\BlockingQueue.cs" /> + <Compile Include="FritzManager\CallItem.cs" /> + <Compile Include="FritzManager\Fritz.cs" /> + <Compile Include="FritzManager\FritzboxPhonebook.cs" /> + <Compile Include="FritzManager\GCollections.cs" /> + <Compile Include="FritzManager\InversSearch.cs" /> + <Compile Include="FritzManager\InversSearchOert.cs" /> + <Compile Include="FritzManager\Logger.cs" /> + <Compile Include="FritzManager\LoggerFactory.cs" /> + <Compile Include="FritzManager\MyBinaryReader.cs" /> + <Compile Include="FritzManager\PhonebookItem.cs" /> + <Compile Include="FritzManager\Task.cs" /> + <Compile Include="FritzManager\VoiceBoxItem.cs" /> + <Compile Include="LocalizeStrings.cs" /> + <Compile Include="Properties\AssemblyInfo.cs" /> + <Compile Include="FritzCallMonitor\Caller.cs" /> + <Compile Include="FritzCallMonitor\CallAction.cs" /> + <Compile Include="FritzBoxConfig.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="FritzBoxConfig.Designer.cs"> + <DependentUpon>FritzBoxConfig.cs</DependentUpon> + </Compile> + <Compile Include="FritzBox.cs" /> + <Compile Include="FritzCallMonitor\PhoneBook.cs" /> + <Compile Include="Properties\Resources.Designer.cs"> + <AutoGen>True</AutoGen> + <DesignTime>True</DesignTime> + <DependentUpon>Resources.resx</DependentUpon> + </Compile> + <Compile Include="Settings.cs" /> + </ItemGroup> + <ItemGroup> + <EmbeddedResource Include="Properties\Resources.resx"> + <Generator>ResXFileCodeGenerator</Generator> + <LastGenOutput>Resources.Designer.cs</LastGenOutput> + <SubType>Designer</SubType> + </EmbeddedResource> + </ItemGroup> + <ItemGroup> + <EmbeddedResource Include="FritzBoxConfig.resx"> + <SubType>Designer</SubType> + <DependentUpon>FritzBoxConfig.cs</DependentUpon> + </EmbeddedResource> + </ItemGroup> + <ItemGroup> + <EmbeddedResource Include="FritzBox.png" /> + <EmbeddedResource Include="FritzBoxDisabled.png" /> + </ItemGroup> + <ItemGroup> + <None Include="docs\Changes.txt"> + </None> + <None Include="docs\todo.txt"> + </None> + <Content Include="docs\Install.txt"> + </Content> + <Content Include="Skin\Black & White\FritzManager.xml"> + </Content> + <Content Include="Skin\Black & White\Media\callin.png"> + </Content> + <Content Include="Skin\Black & White\Media\callout.png"> + </Content> + <Content Include="Skin\Black & White\Media\hover_FritzBox.png" /> + <Content Include="Skin\Black & White\Media\rejected.png"> + </Content> + <Content Include="Skin\Blue3\FritzManager.xml"> + </Content> + <Content Include="Skin\Blue3\Media\callin.png"> + </Content> + <Content Include="Skin\Blue3\Media\callout.png"> + </Content> + <Content Include="Skin\Blue3\Media\FritzBox.CallMonitor.Missing.png"> + </Content> + <Content Include="Skin\Blue3\Media\FritzBox.CallMonitor.Unknown.png"> + </Content> + <Content Include="Skin\Blue3\Media\hover_FritzBox.png" /> + <Content Include="Skin\Blue3\Media\rejected.png"> + </Content> + <Content Include="Skin\GenericSkin\FritzManager.xml"> + </Content> + <Content Include="Skin\GenericSkin\Media\callin.png"> + </Content> + <Content Include="Skin\GenericSkin\Media\callout.png"> + </Content> + <Content Include="Skin\GenericSkin\Media\hover_FritzBox.png" /> + <Content Include="Skin\GenericSkin\Media\rejected.png"> + </Content> + <Content Include="Resources\gfx\FritzBox.ico" /> + <Content Include="Resources\gfx\FritzBoxIconMadeByHarley.png" /> + <Content Include="Skin\GenericSkin\Media\FritzBox.CallMonitor.Missing.png"> + </Content> + <Content Include="Skin\GenericSkin\Media\FritzBox.CallMonitor.Unknown.png"> + </Content> + <Content Include="Resources\speexdec.exe"> + </Content> + </ItemGroup> + <ItemGroup> + <None Include="Resources\fritzdial.sh" /> + <None Include="Resources\MpeRelease\FritzBox.xmp2" /> + </ItemGroup> + <ItemGroup> + <BootstrapperPackage Include="Microsoft.Net.Client.3.5"> + <Visible>False</Visible> + <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName> + <Install>false</Install> + </BootstrapperPackage> + <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1"> + <Visible>False</Visible> + <ProductName>.NET Framework 3.5 SP1</ProductName> + <Install>true</Install> + </BootstrapperPackage> + <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1"> + <Visible>False</Visible> + <ProductName>Windows Installer 3.1</ProductName> + <Install>true</Install> + </BootstrapperPackage> + </ItemGroup> + <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> + <!-- To modify your build process, add your task inside one of the targets below and uncomment it. + Other similar extension points exist, see Microsoft.Common.targets. + <Target Name="BeforeBuild"> + </Target> + <Target Name="AfterBuild"> + </Target> + --> + <PropertyGroup> + <PostBuildEvent>rem xcopy /y "$(TargetPath)" "$(SolutionDir)\xbmc\bin\$(ConfigurationName)\plugins\windows" +rem xcopy /y "$(TargetPath)" "$(SolutionDir)\Configuration\bin\$(ConfigurationName)\plugins\windows"</PostBuildEvent> + </PropertyGroup> +</Project> \ No newline at end of file Added: trunk/plugins/FritzBox/FritzBox/FritzBox.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/FritzBox/FritzBox/FritzBox.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.Designer.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.Designer.cs (rev 0) +++ trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.Designer.cs 2011-11-29 10:23:07 UTC (rev 4354) @@ -0,0 +1,1102 @@ +namespace FritzBox +{ + partial class FritzBoxConfig + { + /// <summary> + /// Erforderliche Designervariable. + /// </summary> + private System.ComponentModel.IContainer components = null; + + /// <summary> + /// Verwendete Ressourcen bereinigen. + /// </summary> + /// <param name="disposing">True, wenn verwaltete Ressourcen gelöscht werden sollen; andernfalls False.</param> + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Vom Windows Form-Designer generierter Code + + /// <summary> + /// Erforderliche Methode für die Designerunterstützung. + /// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden. + /// </summary> + private void InitializeComponent() + { + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle(); + System.ComponentModel.ComponentResourceManager resources = new System.Co... [truncated message content] |
From: <hor...@us...> - 2011-11-29 11:06:24
|
Revision: 4355 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=4355&view=rev Author: horned-reaper Date: 2011-11-29 11:06:08 +0000 (Tue, 29 Nov 2011) Log Message: ----------- Added Paths: ----------- trunk/plugins/FritzBox/Build/ trunk/plugins/FritzBox/Build/Build FritzBoxManager.bat trunk/plugins/FritzBox/Build/DeployVersionSVN.exe trunk/plugins/FritzBox/Build/build_.log trunk/plugins/FritzBox/Build/filever.exe trunk/plugins/FritzBox/FritzBox/FritzBox.csproj.user trunk/plugins/FritzBox/FritzBox/FritzManager/VBReader.cs trunk/plugins/FritzBox/FritzBox/Languages/ trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/ trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_bg.xml trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_ca.xml trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_cs.xml trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_cy-GB.xml trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_da.xml trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_et.xml trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_eu.xml trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_fi.xml trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_fo.xml trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_he.xml trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_hr.xml trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_hu.xml trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_id.xml trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_is.xml trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_ko.xml trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_mk.xml trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_no.xml trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_pl.xml trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_pt-BR.xml trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_pt.xml trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_ro.xml trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_sk.xml trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_sl.xml trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_sv.xml trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_tr.xml trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_uk.xml trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_zh-CN.xml trunk/plugins/FritzBox/FritzBox/Languages/strings_de.xml trunk/plugins/FritzBox/FritzBox/Languages/strings_el.xml trunk/plugins/FritzBox/FritzBox/Languages/strings_en-US.xml trunk/plugins/FritzBox/FritzBox/Languages/strings_en.xml trunk/plugins/FritzBox/FritzBox/Languages/strings_es.xml trunk/plugins/FritzBox/FritzBox/Languages/strings_fr.xml trunk/plugins/FritzBox/FritzBox/Languages/strings_it.xml trunk/plugins/FritzBox/FritzBox/Languages/strings_nl.xml trunk/plugins/FritzBox/FritzBox/Languages/strings_ru.xml trunk/plugins/FritzBox/FritzBox/Resources/ContactImages/ trunk/plugins/FritzBox/FritzBox/Resources/MpeRelease/ trunk/plugins/FritzBox/FritzBox/Skin/Black & White/Media/FritzBox/ trunk/plugins/FritzBox/FritzBox/Skin/Black & White/Media/FritzBox/CallMonitor.Missing.png trunk/plugins/FritzBox/FritzBox/Skin/Black & White/Media/FritzBox/CallMonitor.Unknown.png trunk/plugins/FritzBox/FritzBox/Skin/Black & White/Media/FritzBox/callin.png trunk/plugins/FritzBox/FritzBox/Skin/Black & White/Media/FritzBox/callout.png trunk/plugins/FritzBox/FritzBox/Skin/Black & White/Media/FritzBox/rejected.png trunk/plugins/FritzBox/FritzBox/Skin/Blue3/Media/FritzBox/ trunk/plugins/FritzBox/FritzBox/Skin/Blue3/Media/FritzBox/CallMonitor.Missing.png trunk/plugins/FritzBox/FritzBox/Skin/Blue3/Media/FritzBox/CallMonitor.Unknown.png trunk/plugins/FritzBox/FritzBox/Skin/Blue3/Media/FritzBox/callin.png trunk/plugins/FritzBox/FritzBox/Skin/Blue3/Media/FritzBox/callout.png trunk/plugins/FritzBox/FritzBox/Skin/Blue3/Media/FritzBox/rejected.png trunk/plugins/FritzBox/FritzBox/Skin/Default/ trunk/plugins/FritzBox/FritzBox/Skin/Default/FritzManager.xml trunk/plugins/FritzBox/FritzBox/Skin/Default/Media/ trunk/plugins/FritzBox/FritzBox/Skin/Default/Media/FritzBox/ trunk/plugins/FritzBox/FritzBox/Skin/Default/Media/FritzBox/CallMonitor.Missing.png trunk/plugins/FritzBox/FritzBox/Skin/Default/Media/FritzBox/CallMonitor.Unknown.png trunk/plugins/FritzBox/FritzBox/Skin/Default/Media/FritzBox/callin.png trunk/plugins/FritzBox/FritzBox/Skin/Default/Media/FritzBox/callout.png trunk/plugins/FritzBox/FritzBox/Skin/Default/Media/FritzBox/rejected.png trunk/plugins/FritzBox/FritzBox/Skin/Default/Media/hover_FritzBox.png trunk/plugins/FritzBox/FritzBox/Skin/DefaultWide/ trunk/plugins/FritzBox/FritzBox/Skin/DefaultWide/FritzManager.xml trunk/plugins/FritzBox/FritzBox/Skin/DefaultWide/Media/ trunk/plugins/FritzBox/FritzBox/Skin/DefaultWide/Media/FritzBox/ trunk/plugins/FritzBox/FritzBox/Skin/DefaultWide/Media/FritzBox/CallMonitor.Missing.png trunk/plugins/FritzBox/FritzBox/Skin/DefaultWide/Media/FritzBox/CallMonitor.Unknown.png trunk/plugins/FritzBox/FritzBox/Skin/DefaultWide/Media/FritzBox/callin.png trunk/plugins/FritzBox/FritzBox/Skin/DefaultWide/Media/FritzBox/callout.png trunk/plugins/FritzBox/FritzBox/Skin/DefaultWide/Media/FritzBox/rejected.png trunk/plugins/FritzBox/FritzBox/Skin/DefaultWide/Media/hover_FritzBox.png trunk/plugins/FritzBox/FritzBox/Skin/GenericSkin/ trunk/plugins/FritzBox/FritzBox/Skin/GenericSkin/Media/ trunk/plugins/FritzBox/FritzBox/Skin/Maya/ trunk/plugins/FritzBox/FritzBox/Skin/Maya/FritzManager.xml trunk/plugins/FritzBox/FritzBox/Skin/Maya/Media/ trunk/plugins/FritzBox/FritzBox/Skin/Maya/Media/FritzBox/ trunk/plugins/FritzBox/FritzBox/Skin/Maya/Media/FritzBox/CallMonitor.Missing.png trunk/plugins/FritzBox/FritzBox/Skin/Maya/Media/FritzBox/CallMonitor.Unknown.png trunk/plugins/FritzBox/FritzBox/Skin/Maya/Media/FritzBox/callin.png trunk/plugins/FritzBox/FritzBox/Skin/Maya/Media/FritzBox/callout.png trunk/plugins/FritzBox/FritzBox/Skin/Maya/Media/FritzBox/rejected.png trunk/plugins/FritzBox/FritzBox/Skin/Maya/Media/hover_FritzBox.png trunk/plugins/FritzBox/FritzBox/bin/ trunk/plugins/FritzBox/FritzBox/bin/Release/ trunk/plugins/FritzBox/FritzBox/bin/Release/AxInterop.WMPLib.dll trunk/plugins/FritzBox/FritzBox/bin/Release/Bass.Net.dll trunk/plugins/FritzBox/FritzBox/bin/Release/BassRegistration.dll trunk/plugins/FritzBox/FritzBox/bin/Release/BassVisAPI.Net.dll trunk/plugins/FritzBox/FritzBox/bin/Release/Common.Utils.dll trunk/plugins/FritzBox/FritzBox/bin/Release/Core.dll trunk/plugins/FritzBox/FritzBox/bin/Release/Dialogs.dll trunk/plugins/FritzBox/FritzBox/bin/Release/DirectShowLib.dll trunk/plugins/FritzBox/FritzBox/bin/Release/FritzBox.dll trunk/plugins/FritzBox/FritzBox/bin/Release/FritzBox.pdb trunk/plugins/FritzBox/FritzBox/bin/Release/Interop.SHDocVw.dll trunk/plugins/FritzBox/FritzBox/bin/Release/Interop.WMPLib.dll trunk/plugins/FritzBox/FritzBox/bin/Release/Ionic.Zip.dll trunk/plugins/FritzBox/FritzBox/bin/Release/MediaPortal.Support.dll trunk/plugins/FritzBox/FritzBox/bin/Release/Utils.dll trunk/plugins/FritzBox/FritzBox/bin/Release/edtftpnet-1.2.2.dll trunk/plugins/FritzBox/FritzBox/bin/Release/log4net.dll trunk/plugins/FritzBox/FritzBox/bin/Release/taglib-sharp.dll trunk/plugins/FritzBox/FritzBox/docs/Install-de.txt trunk/plugins/FritzBox/FritzBox/obj/ trunk/plugins/FritzBox/FritzBox/obj/Debug/ trunk/plugins/FritzBox/FritzBox/obj/Debug/DesignTimeResolveAssemblyReferences.cache trunk/plugins/FritzBox/FritzBox/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache trunk/plugins/FritzBox/FritzBox/obj/Debug/FritzBox.FritzBoxConfig.resources trunk/plugins/FritzBox/FritzBox/obj/Debug/FritzBox.Properties.Resources.resources trunk/plugins/FritzBox/FritzBox/obj/Debug/FritzBox.csproj.FileListAbsolute.txt trunk/plugins/FritzBox/FritzBox/obj/Debug/FritzBox.dll trunk/plugins/FritzBox/FritzBox/obj/Debug/FritzBox.pdb trunk/plugins/FritzBox/FritzBox/obj/Debug/GenerateResource.read.1.tlog trunk/plugins/FritzBox/FritzBox/obj/Debug/GenerateResource.write.1.tlog trunk/plugins/FritzBox/FritzBox/obj/Debug/ResolveAssemblyReference.cache trunk/plugins/FritzBox/FritzBox/obj/Debug/TempPE/ trunk/plugins/FritzBox/FritzBox/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll trunk/plugins/FritzBox/FritzBox/obj/Release/ trunk/plugins/FritzBox/FritzBox/obj/Release/FritzBox.FritzBoxConfig.resources trunk/plugins/FritzBox/FritzBox/obj/Release/FritzBox.Properties.Resources.resources trunk/plugins/FritzBox/FritzBox/obj/Release/FritzBox.csproj.FileListAbsolute.txt trunk/plugins/FritzBox/FritzBox/obj/Release/FritzBox.csproj.GenerateResource.Cache trunk/plugins/FritzBox/FritzBox/obj/Release/FritzBox.dll trunk/plugins/FritzBox/FritzBox/obj/Release/FritzBox.pdb trunk/plugins/FritzBox/FritzBox/obj/Release/ResolveAssemblyReference.cache trunk/plugins/FritzBox/FritzBox.5.1.resharper trunk/plugins/FritzBox/MP2version/ trunk/plugins/FritzBox/MP2version/CallMonitor.cs trunk/plugins/FritzBox/MP2version/CallMonitor.csproj trunk/plugins/FritzBox/MP2version/CallMonitor.plugin trunk/plugins/FritzBox/MP2version/HelperClasses/ trunk/plugins/FritzBox/MP2version/HelperClasses/CallAction.cs trunk/plugins/FritzBox/MP2version/HelperClasses/Caller.cs trunk/plugins/FritzBox/MP2version/HelperClasses/ICallMonitor.cs trunk/plugins/FritzBox/MP2version/HelperClasses/IListener.cs trunk/plugins/FritzBox/MP2version/ListenerBuilder.cs trunk/plugins/FritzBox/MP2version/Listeners/ trunk/plugins/FritzBox/MP2version/Listeners/BlueTooth_USB/ trunk/plugins/FritzBox/MP2version/Listeners/BlueTooth_USB/BlueTooth_USB.cs trunk/plugins/FritzBox/MP2version/Listeners/BlueTooth_USB/BlueTooth_USB.csproj trunk/plugins/FritzBox/MP2version/Listeners/BlueTooth_USB/BlueTooth_USB.plugin trunk/plugins/FritzBox/MP2version/Listeners/BlueTooth_USB/Helper/ trunk/plugins/FritzBox/MP2version/Listeners/BlueTooth_USB/Helper/ATcommand.cs trunk/plugins/FritzBox/MP2version/Listeners/FritzBox/ trunk/plugins/FritzBox/MP2version/Listeners/FritzBox/FritzBox.cs trunk/plugins/FritzBox/MP2version/Listeners/FritzBox/FritzBox.csproj trunk/plugins/FritzBox/MP2version/Listeners/FritzBox/FritzBox.plugin trunk/plugins/FritzBox/MP2version/Listeners/FritzBox/Properties/ trunk/plugins/FritzBox/MP2version/Listeners/FritzBox/Properties/AssemblyInfo.cs trunk/plugins/FritzBox/MP2version/Properties/ trunk/plugins/FritzBox/MP2version/Properties/AssemblyInfo.cs trunk/plugins/FritzBox/MpeRelease/ trunk/plugins/FritzBox/MpeRelease/FritzBox.mpe1 trunk/plugins/FritzBox/MpeRelease/FritzBox.xmp trunk/plugins/FritzBox/MpeRelease/FritzBox.xmp2 trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/FritzBoxConfigTester.csproj.user trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/bin/ trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/bin/Debug/ trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/bin/Debug/AxInterop.WMPLib.dll trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/bin/Debug/Bass.Net.dll trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/bin/Debug/BassRegistration.dll trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/bin/Debug/BassVisAPI.Net.dll trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/bin/Debug/Common.Utils.dll trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/bin/Debug/Core.dll trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/bin/Debug/Dialogs.dll trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/bin/Debug/DirectShowLib.dll trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/bin/Debug/FritzBox.dll trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/bin/Debug/FritzBox.pdb trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/bin/Debug/FritzBoxConfigTester.exe trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/bin/Debug/FritzBoxConfigTester.exe.config trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/bin/Debug/FritzBoxConfigTester.pdb trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/bin/Debug/Interop.SHDocVw.dll trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/bin/Debug/Interop.WMPLib.dll trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/bin/Debug/Ionic.Zip.dll trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/bin/Debug/MediaPortal.Support.dll trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/bin/Debug/Utils.dll trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/bin/Debug/edtftpnet-1.2.2.dll trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/bin/Debug/log4net.dll trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/bin/Debug/taglib-sharp.dll trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/bin/Release/ trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/bin/Release/FritzBoxConfigTester.exe trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/bin/Release/FritzBoxConfigTester.exe.config trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/bin/Release/FritzBoxConfigTester.pdb trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/obj/ trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/obj/Debug/ trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/obj/Debug/FritzBoxConfigTester.csproj.FileListAbsolute.txt trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/obj/Debug/FritzBoxConfigTester.exe trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/obj/Debug/FritzBoxConfigTester.pdb trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/obj/Debug/ResolveAssemblyReference.cache trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/obj/Debug/TempPE/ trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/obj/Release/ trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/obj/Release/FritzBoxConfigTester.csproj.FileListAbsolute.txt trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/obj/Release/FritzBoxConfigTester.exe trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/obj/Release/FritzBoxConfigTester.pdb trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/obj/Release/ResolveAssemblyReference.cache trunk/plugins/FritzBox/Tools/FritzBoxDebugger/FritzBoxDebugger.csproj.user trunk/plugins/FritzBox/Tools/FritzBoxDebugger/bin/ trunk/plugins/FritzBox/Tools/FritzBoxDebugger/bin/Debug/ trunk/plugins/FritzBox/Tools/FritzBoxDebugger/bin/Debug/AxInterop.WMPLib.dll trunk/plugins/FritzBox/Tools/FritzBoxDebugger/bin/Debug/Bass.Net.dll trunk/plugins/FritzBox/Tools/FritzBoxDebugger/bin/Debug/BassRegistration.dll trunk/plugins/FritzBox/Tools/FritzBoxDebugger/bin/Debug/BassVisAPI.Net.dll trunk/plugins/FritzBox/Tools/FritzBoxDebugger/bin/Debug/Common.Utils.dll trunk/plugins/FritzBox/Tools/FritzBoxDebugger/bin/Debug/Core.dll trunk/plugins/FritzBox/Tools/FritzBoxDebugger/bin/Debug/Dialogs.dll trunk/plugins/FritzBox/Tools/FritzBoxDebugger/bin/Debug/DirectShowLib.dll trunk/plugins/FritzBox/Tools/FritzBoxDebugger/bin/Debug/FritzBox.dll trunk/plugins/FritzBox/Tools/FritzBoxDebugger/bin/Debug/FritzBox.pdb trunk/plugins/FritzBox/Tools/FritzBoxDebugger/bin/Debug/FritzBoxDebugger.exe trunk/plugins/FritzBox/Tools/FritzBoxDebugger/bin/Debug/FritzBoxDebugger.exe.config trunk/plugins/FritzBox/Tools/FritzBoxDebugger/bin/Debug/FritzBoxDebugger.pdb trunk/plugins/FritzBox/Tools/FritzBoxDebugger/bin/Debug/Interop.SHDocVw.dll trunk/plugins/FritzBox/Tools/FritzBoxDebugger/bin/Debug/Interop.WMPLib.dll trunk/plugins/FritzBox/Tools/FritzBoxDebugger/bin/Debug/Ionic.Zip.dll trunk/plugins/FritzBox/Tools/FritzBoxDebugger/bin/Debug/MediaPortal.Support.dll trunk/plugins/FritzBox/Tools/FritzBoxDebugger/bin/Debug/Utils.dll trunk/plugins/FritzBox/Tools/FritzBoxDebugger/bin/Debug/edtftpnet-1.2.2.dll trunk/plugins/FritzBox/Tools/FritzBoxDebugger/bin/Debug/log4net.dll trunk/plugins/FritzBox/Tools/FritzBoxDebugger/bin/Debug/taglib-sharp.dll trunk/plugins/FritzBox/Tools/FritzBoxDebugger/bin/Release/ trunk/plugins/FritzBox/Tools/FritzBoxDebugger/bin/Release/FritzBoxDebugger.exe trunk/plugins/FritzBox/Tools/FritzBoxDebugger/bin/Release/FritzBoxDebugger.exe.config trunk/plugins/FritzBox/Tools/FritzBoxDebugger/bin/Release/FritzBoxDebugger.pdb trunk/plugins/FritzBox/Tools/FritzBoxDebugger/obj/ trunk/plugins/FritzBox/Tools/FritzBoxDebugger/obj/Debug/ trunk/plugins/FritzBox/Tools/FritzBoxDebugger/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache trunk/plugins/FritzBox/Tools/FritzBoxDebugger/obj/Debug/FritzBoxDebugger.DebugForm.resources trunk/plugins/FritzBox/Tools/FritzBoxDebugger/obj/Debug/FritzBoxDebugger.csproj.FileListAbsolute.txt trunk/plugins/FritzBox/Tools/FritzBoxDebugger/obj/Debug/FritzBoxDebugger.exe trunk/plugins/FritzBox/Tools/FritzBoxDebugger/obj/Debug/FritzBoxDebugger.pdb trunk/plugins/FritzBox/Tools/FritzBoxDebugger/obj/Debug/GenerateResource.read.1.tlog trunk/plugins/FritzBox/Tools/FritzBoxDebugger/obj/Debug/GenerateResource.write.1.tlog trunk/plugins/FritzBox/Tools/FritzBoxDebugger/obj/Debug/TempPE/ trunk/plugins/FritzBox/Tools/FritzBoxDebugger/obj/Release/ trunk/plugins/FritzBox/Tools/FritzBoxDebugger/obj/Release/FritzBoxDebugger.DebugForm.resources trunk/plugins/FritzBox/Tools/FritzBoxDebugger/obj/Release/FritzBoxDebugger.csproj.FileListAbsolute.txt trunk/plugins/FritzBox/Tools/FritzBoxDebugger/obj/Release/FritzBoxDebugger.csproj.GenerateResource.Cache trunk/plugins/FritzBox/Tools/FritzBoxDebugger/obj/Release/FritzBoxDebugger.exe trunk/plugins/FritzBox/Tools/FritzBoxDebugger/obj/Release/FritzBoxDebugger.pdb trunk/plugins/FritzBox/UpgradeLog.XML trunk/plugins/FritzBox/releases/ trunk/plugins/FritzBox/releases/FritzBox_v0.3.0.0.mpi trunk/plugins/FritzBox/releases/FritzBox_v0.3.0.1.mpi trunk/plugins/FritzBox/releases/FritzBox_v0.3.1.0.mpi trunk/plugins/FritzBox/releases/FritzBox_v0.3.1.1.mpi trunk/plugins/FritzBox/releases/FritzBox_v0.3.1.5.mpi trunk/plugins/FritzBox/releases/FritzBox_v0.3.1.6.mpi trunk/plugins/FritzBox/releases/FritzBox_v0.3.2.0.mpi trunk/plugins/FritzBox/releases/FritzBox_v0.3.2.1.mpi trunk/plugins/FritzBox/releases/FritzBox_v0.3.2.5.mpi trunk/plugins/FritzBox/releases/FritzBox_v0.3.3.1.mpe1 trunk/plugins/FritzBox/releases/FritzBox_v0.3.3.2.mpe1 trunk/plugins/FritzBox/releases/FritzBox_v0.3.4.9.mpe1 trunk/plugins/FritzBox/releases/FritzBox_v0.3.5.4349.mpe1 Added: trunk/plugins/FritzBox/Build/Build FritzBoxManager.bat =================================================================== --- trunk/plugins/FritzBox/Build/Build FritzBoxManager.bat (rev 0) +++ trunk/plugins/FritzBox/Build/Build FritzBoxManager.bat 2011-11-29 11:06:08 UTC (rev 4355) @@ -0,0 +1,51 @@ +@echo off + +REM Select program path based on current machine environment +set ProgramDir=%ProgramFiles% +if not "%ProgramFiles(x86)%".=="". set ProgramDir=%ProgramFiles(x86)% + +REM set logfile where the infos are written to, and clear that file +set LOG=build_%BUILD_TYPE%.log +echo. > %LOG% + +echo. +echo -= FRITZ!Box Manager =- +echo -=====================- +echo. + +echo. +echo Writing SVN revision assemblies... +DeployVersionSVN.exe /svn=".." >> %LOG% + +echo. +echo Building FRITZ!Box Manager... +"%WINDIR%\Microsoft.NET\Framework\v3.5\MSBUILD.exe" /target:Rebuild /property:Configuration=Release;AllowUnsafeBlocks=true "..\FritzBox.sln" >> %LOG% + +echo. +echo Reverting assemblies... +DeployVersionSVN.exe /svn=".." /revert >> %LOG% + +rmdir /S /Q ..\_release +xcopy ..\FritzBox\bin\Release\FritzBox.dll ..\_release\plugins\windows\ >> %LOG% +xcopy ..\FritzBox\Resources\speexdec.exe ..\_release\base\ >> %LOG% +xcopy ..\FritzBox\Skin ..\_release\skin /S /I >> %LOG% +xcopy ..\FritzBox\Languages ..\_release\language /S /I >> %LOG% + +echo. +echo Reading the version number... +set plugindll=..\FritzBox\bin\Release\FritzBox.dll +if not exist "%plugindll%" goto version_error +for /f "Tokens=5" %%a in ('filever "%plugindll%"') do set version=%%a +goto :version_done +:version_error +echo "fritzbox.dll not found. version could not be read" >> %LOG% +goto :EOF +:version_done + +echo. +echo Building MpeExtension package... +"%ProgramDir%\Team MediaPortal\MediaPortal\MpeMaker.exe" "..\MpeRelease\FritzBox.xmp2" /V=%version% /B >> %LOG% + +echo. +echo Copying installer file to releases folder +copy ..\MpeRelease\FritzBox.mpe1 ..\releases\FritzBox_v%Version%.mpe1 /Y Added: trunk/plugins/FritzBox/Build/DeployVersionSVN.exe =================================================================== (Binary files differ) Property changes on: trunk/plugins/FritzBox/Build/DeployVersionSVN.exe ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/FritzBox/Build/build_.log =================================================================== --- trunk/plugins/FritzBox/Build/build_.log (rev 0) +++ trunk/plugins/FritzBox/Build/build_.log 2011-11-29 11:06:08 UTC (rev 4355) @@ -0,0 +1,195 @@ + +Running : C:\Program Files\TortoiseSVN\bin\SubWCRev.exe +SVN Version: 4349 +Updating: D:\FritzBox\FritzBox\Properties\AssemblyInfo.cs +Updating: D:\FritzBox\MP2version\Listeners\FritzBox\Properties\AssemblyInfo.cs +Updating: D:\FritzBox\MP2version\Properties\AssemblyInfo.cs +Updating: D:\FritzBox\Tools\FritzBoxConfigTester\Properties\AssemblyInfo.cs +Updating: D:\FritzBox\Tools\FritzBoxDebugger\Properties\AssemblyInfo.cs +Microsoft (R) Build Engine Version 3.5.30729.1 +[Microsoft .NET Framework, Version 2.0.50727.3625] +Copyright (C) Microsoft Corporation 2007. All rights reserved. + +Build started 28.11.2011 23:50:43. +Project "D:\FritzBox\FritzBox.sln" on node 0 (Rebuild target(s)). + Building solution configuration "Release|Mixed Platforms". +Project "D:\FritzBox\FritzBox.sln" (1) is building "D:\FritzBox\FritzBox\FritzBox.csproj" (2) on node 0 (Rebuild target(s)). +Project file contains ToolsVersion="4.0", which is not supported by this version of MSBuild. Treating the project as if it had ToolsVersion="3.5". +CoreClean: + Deleting file "D:\FritzBox\FritzBox\bin\Release\FritzBox.dll". + Deleting file "D:\FritzBox\FritzBox\bin\Release\FritzBox.pdb". + Deleting file "D:\FritzBox\FritzBox\obj\Release\ResolveAssemblyReference.cache". + Deleting file "D:\FritzBox\FritzBox\obj\Release\FritzBox.Properties.Resources.resources". + Deleting file "D:\FritzBox\FritzBox\obj\Release\FritzBox.FritzBoxConfig.resources". + Deleting file "D:\FritzBox\FritzBox\obj\Release\FritzBox.csproj.GenerateResource.Cache". + Deleting file "D:\FritzBox\FritzBox\obj\Release\FritzBox.dll". + Deleting file "D:\FritzBox\FritzBox\obj\Release\FritzBox.pdb". +CoreResGen: + Processing resource file "Properties\Resources.resx" into "obj\Release\FritzBox.Properties.Resources.resources". + Processing resource file "FritzBoxConfig.resx" into "obj\Release\FritzBox.FritzBoxConfig.resources". +CopyFilesToOutputDirectory: + Copying file from "obj\Release\FritzBox.dll" to "bin\Release\FritzBox.dll". + FritzBox -> D:\FritzBox\FritzBox\bin\Release\FritzBox.dll + Copying file from "obj\Release\FritzBox.pdb" to "bin\Release\FritzBox.pdb". +Done Building Project "D:\FritzBox\FritzBox\FritzBox.csproj" (Rebuild target(s)). +Project "D:\FritzBox\FritzBox.sln" (1) is building "D:\FritzBox\Tools\FritzBoxConfigTester\FritzBoxConfigTester.csproj" (3) on node 0 (Rebuild target(s)). +Project file contains ToolsVersion="4.0", which is not supported by this version of MSBuild. Treating the project as if it had ToolsVersion="3.5". +CoreClean: + Deleting file "D:\FritzBox\Tools\FritzBoxConfigTester\bin\Release\FritzBoxConfigTester.exe.config". + Deleting file "D:\FritzBox\Tools\FritzBoxConfigTester\bin\Release\FritzBoxConfigTester.exe". + Deleting file "D:\FritzBox\Tools\FritzBoxConfigTester\bin\Release\FritzBoxConfigTester.pdb". + Deleting file "D:\FritzBox\Tools\FritzBoxConfigTester\obj\Release\ResolveAssemblyReference.cache". + Deleting file "D:\FritzBox\Tools\FritzBoxConfigTester\obj\Release\FritzBoxConfigTester.exe". + Deleting file "D:\FritzBox\Tools\FritzBoxConfigTester\obj\Release\FritzBoxConfigTester.pdb". +Project "D:\FritzBox\Tools\FritzBoxConfigTester\FritzBoxConfigTester.csproj" (3) is building "D:\FritzBox\FritzBox\FritzBox.csproj" (2:2) on node 0 (GetTargetPath target(s)). +Project file contains ToolsVersion="4.0", which is not supported by this version of MSBuild. Treating the project as if it had ToolsVersion="3.5". +Done Building Project "D:\FritzBox\FritzBox\FritzBox.csproj" (GetTargetPath target(s)). +Project "D:\FritzBox\Tools\FritzBoxConfigTester\FritzBoxConfigTester.csproj" (3) is building "D:\FritzBox\FritzBox\FritzBox.csproj" (2:3) on node 0 (GetNativeManifest target(s)). +Project file contains ToolsVersion="4.0", which is not supported by this version of MSBuild. Treating the project as if it had ToolsVersion="3.5". +Done Building Project "D:\FritzBox\FritzBox\FritzBox.csproj" (GetNativeManifest target(s)). +ResolveAssemblyReferences: + Consider app.config remapping of assembly "System, Culture=neutral, PublicKeyToken=b77a5c561934e089" from Version "1.0.5000.0" [] to Version "2.0.0.0" [C:\WINDOWS\assembly\GAC_MSIL\System\2.0.0.0__b77a5c561934e089\System.dll] to solve conflict and get rid of warning. + Consider app.config remapping of assembly "System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089" from Version "1.0.5000.0" [] to Version "2.0.0.0" [C:\WINDOWS\assembly\GAC_MSIL\System.Windows.Forms\2.0.0.0__b77a5c561934e089\System.Windows.Forms.dll] to solve conflict and get rid of warning. + Consider app.config remapping of assembly "Microsoft.VisualC, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" from Version "7.0.5000.0" [] to Version "8.0.0.0" [C:\WINDOWS\assembly\GAC_MSIL\Microsoft.VisualC\8.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualC.dll] to solve conflict and get rid of warning. + Consider app.config remapping of assembly "System.Drawing, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" from Version "1.0.5000.0" [] to Version "2.0.0.0" [C:\WINDOWS\assembly\GAC_MSIL\System.Drawing\2.0.0.0__b03f5f7f11d50a3a\System.Drawing.dll] to solve conflict and get rid of warning. +C:\WINDOWS\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets : warning MSB3247: Found conflicts between different versions of the same dependent assembly. +Project "D:\FritzBox\Tools\FritzBoxConfigTester\FritzBoxConfigTester.csproj" (3) is building "D:\FritzBox\FritzBox\FritzBox.csproj" (2:4) on node 0 (GetCopyToOutputDirectoryItems target(s)). +Project file contains ToolsVersion="4.0", which is not supported by this version of MSBuild. Treating the project as if it had ToolsVersion="3.5". +Done Building Project "D:\FritzBox\FritzBox\FritzBox.csproj" (GetCopyToOutputDirectoryItems target(s)). +_CopyAppConfigFile: + Copying file from "app.config" to ".\bin\Release\FritzBoxConfigTester.exe.config". +CopyFilesToOutputDirectory: + Copying file from "obj\Release\FritzBoxConfigTester.exe" to ".\bin\Release\FritzBoxConfigTester.exe". + FritzBoxConfigTester -> D:\FritzBox\Tools\FritzBoxConfigTester\bin\Release\FritzBoxConfigTester.exe + Copying file from "obj\Release\FritzBoxConfigTester.pdb" to ".\bin\Release\FritzBoxConfigTester.pdb". +Done Building Project "D:\FritzBox\Tools\FritzBoxConfigTester\FritzBoxConfigTester.csproj" (Rebuild target(s)). +Project "D:\FritzBox\FritzBox.sln" (1) is building "D:\FritzBox\Tools\FritzBoxDebugger\FritzBoxDebugger.csproj" (4) on node 0 (Rebuild target(s)). +Project file contains ToolsVersion="4.0", which is not supported by this version of MSBuild. Treating the project as if it had ToolsVersion="3.5". +CoreClean: + Deleting file "D:\FritzBox\Tools\FritzBoxDebugger\bin\Release\FritzBoxDebugger.exe.config". + Deleting file "D:\FritzBox\Tools\FritzBoxDebugger\bin\Release\FritzBoxDebugger.exe". + Deleting file "D:\FritzBox\Tools\FritzBoxDebugger\bin\Release\FritzBoxDebugger.pdb". + Deleting file "D:\FritzBox\Tools\FritzBoxDebugger\obj\Release\FritzBoxDebugger.DebugForm.resources". + Deleting file "D:\FritzBox\Tools\FritzBoxDebugger\obj\Release\FritzBoxDebugger.csproj.GenerateResource.Cache". + Deleting file "D:\FritzBox\Tools\FritzBoxDebugger\obj\Release\FritzBoxDebugger.exe". + Deleting file "D:\FritzBox\Tools\FritzBoxDebugger\obj\Release\FritzBoxDebugger.pdb". +ResolveAssemblyReferences: + Consider app.config remapping of assembly "System, Culture=neutral, PublicKeyToken=b77a5c561934e089" from Version "1.0.5000.0" [] to Version "2.0.0.0" [C:\WINDOWS\assembly\GAC_MSIL\System\2.0.0.0__b77a5c561934e089\System.dll] to solve conflict and get rid of warning. + Consider app.config remapping of assembly "System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089" from Version "1.0.5000.0" [] to Version "2.0.0.0" [C:\WINDOWS\assembly\GAC_MSIL\System.Windows.Forms\2.0.0.0__b77a5c561934e089\System.Windows.Forms.dll] to solve conflict and get rid of warning. + Consider app.config remapping of assembly "Microsoft.VisualC, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" from Version "7.0.5000.0" [] to Version "8.0.0.0" [C:\WINDOWS\assembly\GAC_MSIL\Microsoft.VisualC\8.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualC.dll] to solve conflict and get rid of warning. + Consider app.config remapping of assembly "System.Drawing, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" from Version "1.0.5000.0" [] to Version "2.0.0.0" [C:\WINDOWS\assembly\GAC_MSIL\System.Drawing\2.0.0.0__b03f5f7f11d50a3a\System.Drawing.dll] to solve conflict and get rid of warning. +C:\WINDOWS\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets : warning MSB3247: Found conflicts between different versions of the same dependent assembly. +CoreResGen: + Processing resource file "DebugForm.resx" into "obj\Release\FritzBoxDebugger.DebugForm.resources". +_CopyAppConfigFile: + Copying file from "app.config" to ".\bin\Release\FritzBoxDebugger.exe.config". +CopyFilesToOutputDirectory: + Copying file from "obj\Release\FritzBoxDebugger.exe" to ".\bin\Release\FritzBoxDebugger.exe". + FritzBoxDebugger -> D:\FritzBox\Tools\FritzBoxDebugger\bin\Release\FritzBoxDebugger.exe + Copying file from "obj\Release\FritzBoxDebugger.pdb" to ".\bin\Release\FritzBoxDebugger.pdb". +Done Building Project "D:\FritzBox\Tools\FritzBoxDebugger\FritzBoxDebugger.csproj" (Rebuild target(s)). +Done Building Project "D:\FritzBox\FritzBox.sln" (Rebuild target(s)). + +Build succeeded. + +"D:\FritzBox\FritzBox.sln" (Rebuild target) (1) -> +"D:\FritzBox\Tools\FritzBoxConfigTester\FritzBoxConfigTester.csproj" (Rebuild target) (3) -> +(ResolveAssemblyReferences target) -> + C:\WINDOWS\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets : warning MSB3247: Found conflicts between different versions of the same dependent assembly. + + +"D:\FritzBox\FritzBox.sln" (Rebuild target) (1) -> +"D:\FritzBox\Tools\FritzBoxDebugger\FritzBoxDebugger.csproj" (Rebuild target) (4) -> + C:\WINDOWS\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets : warning MSB3247: Found conflicts between different versions of the same dependent assembly. + + 2 Warning(s) + 0 Error(s) + +Time Elapsed 00:00:02.39 +Reverting to build 0 +Updating: D:\FritzBox\FritzBox\Properties\AssemblyInfo.cs +Updating: D:\FritzBox\MP2version\Listeners\FritzBox\Properties\AssemblyInfo.cs +Updating: D:\FritzBox\MP2version\Properties\AssemblyInfo.cs +Updating: D:\FritzBox\Tools\FritzBoxConfigTester\Properties\AssemblyInfo.cs +Updating: D:\FritzBox\Tools\FritzBoxDebugger\Properties\AssemblyInfo.cs +..\FritzBox\bin\Release\FritzBox.dll +1 File(s) copied +..\FritzBox\Resources\speexdec.exe +1 File(s) copied +..\FritzBox\Skin\Black & White\FritzManager.xml +..\FritzBox\Skin\Black & White\Media\hover_FritzBox.png +..\FritzBox\Skin\Black & White\Media\FritzBox\callin.png +..\FritzBox\Skin\Black & White\Media\FritzBox\CallMonitor.Missing.png +..\FritzBox\Skin\Black & White\Media\FritzBox\CallMonitor.Unknown.png +..\FritzBox\Skin\Black & White\Media\FritzBox\callout.png +..\FritzBox\Skin\Black & White\Media\FritzBox\rejected.png +..\FritzBox\Skin\Blue3\FritzManager.xml +..\FritzBox\Skin\Blue3\Media\hover_FritzBox.png +..\FritzBox\Skin\Blue3\Media\FritzBox\callin.png +..\FritzBox\Skin\Blue3\Media\FritzBox\CallMonitor.Missing.png +..\FritzBox\Skin\Blue3\Media\FritzBox\CallMonitor.Unknown.png +..\FritzBox\Skin\Blue3\Media\FritzBox\callout.png +..\FritzBox\Skin\Blue3\Media\FritzBox\rejected.png +..\FritzBox\Skin\Default\FritzManager.xml +..\FritzBox\Skin\Default\Media\hover_FritzBox.png +..\FritzBox\Skin\Default\Media\FritzBox\callin.png +..\FritzBox\Skin\Default\Media\FritzBox\CallMonitor.Missing.png +..\FritzBox\Skin\Default\Media\FritzBox\CallMonitor.Unknown.png +..\FritzBox\Skin\Default\Media\FritzBox\callout.png +..\FritzBox\Skin\Default\Media\FritzBox\rejected.png +..\FritzBox\Skin\DefaultWide\FritzManager.xml +..\FritzBox\Skin\DefaultWide\Media\hover_FritzBox.png +..\FritzBox\Skin\DefaultWide\Media\FritzBox\callin.png +..\FritzBox\Skin\DefaultWide\Media\FritzBox\CallMonitor.Missing.png +..\FritzBox\Skin\DefaultWide\Media\FritzBox\CallMonitor.Unknown.png +..\FritzBox\Skin\DefaultWide\Media\FritzBox\callout.png +..\FritzBox\Skin\DefaultWide\Media\FritzBox\rejected.png +..\FritzBox\Skin\Maya\FritzManager.xml +..\FritzBox\Skin\Maya\Media\hover_FritzBox.png +..\FritzBox\Skin\Maya\Media\FritzBox\callin.png +..\FritzBox\Skin\Maya\Media\FritzBox\CallMonitor.Missing.png +..\FritzBox\Skin\Maya\Media\FritzBox\CallMonitor.Unknown.png +..\FritzBox\Skin\Maya\Media\FritzBox\callout.png +..\FritzBox\Skin\Maya\Media\FritzBox\rejected.png +35 File(s) copied +..\FritzBox\Languages\strings_de.xml +..\FritzBox\Languages\strings_el.xml +..\FritzBox\Languages\strings_en-US.xml +..\FritzBox\Languages\strings_en.xml +..\FritzBox\Languages\strings_es.xml +..\FritzBox\Languages\strings_fr.xml +..\FritzBox\Languages\strings_it.xml +..\FritzBox\Languages\strings_nl.xml +..\FritzBox\Languages\strings_ru.xml +..\FritzBox\Languages\Unsupported\strings_bg.xml +..\FritzBox\Languages\Unsupported\strings_ca.xml +..\FritzBox\Languages\Unsupported\strings_cs.xml +..\FritzBox\Languages\Unsupported\strings_cy-GB.xml +..\FritzBox\Languages\Unsupported\strings_da.xml +..\FritzBox\Languages\Unsupported\strings_et.xml +..\FritzBox\Languages\Unsupported\strings_eu.xml +..\FritzBox\Languages\Unsupported\strings_fi.xml +..\FritzBox\Languages\Unsupported\strings_fo.xml +..\FritzBox\Languages\Unsupported\strings_he.xml +..\FritzBox\Languages\Unsupported\strings_hr.xml +..\FritzBox\Languages\Unsupported\strings_hu.xml +..\FritzBox\Languages\Unsupported\strings_id.xml +..\FritzBox\Languages\Unsupported\strings_is.xml +..\FritzBox\Languages\Unsupported\strings_ko.xml +..\FritzBox\Languages\Unsupported\strings_mk.xml +..\FritzBox\Languages\Unsupported\strings_no.xml +..\FritzBox\Languages\Unsupported\strings_pl.xml +..\FritzBox\Languages\Unsupported\strings_pt-BR.xml +..\FritzBox\Languages\Unsupported\strings_pt.xml +..\FritzBox\Languages\Unsupported\strings_ro.xml +..\FritzBox\Languages\Unsupported\strings_sk.xml +..\FritzBox\Languages\Unsupported\strings_sl.xml +..\FritzBox\Languages\Unsupported\strings_sv.xml +..\FritzBox\Languages\Unsupported\strings_tr.xml +..\FritzBox\Languages\Unsupported\strings_uk.xml +..\FritzBox\Languages\Unsupported\strings_zh-CN.xml +36 File(s) copied +MpeMaker version: 1.2.1.0 +Build started at 23:50:48 +Building "D:\FritzBox\MpeRelease\FritzBox.xmp2" +Output: "..\MpeRelease\FritzBox.mpe1" Added: trunk/plugins/FritzBox/Build/filever.exe =================================================================== (Binary files differ) Property changes on: trunk/plugins/FritzBox/Build/filever.exe ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/FritzBox/FritzBox/FritzBox.csproj.user =================================================================== --- trunk/plugins/FritzBox/FritzBox/FritzBox.csproj.user (rev 0) +++ trunk/plugins/FritzBox/FritzBox/FritzBox.csproj.user 2011-11-29 11:06:08 UTC (rev 4355) @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup> + <PublishUrlHistory /> + <InstallUrlHistory /> + <SupportUrlHistory /> + <UpdateUrlHistory /> + <BootstrapperUrlHistory /> + <ErrorReportUrlHistory /> + <FallbackCulture>en-US</FallbackCulture> + <VerifyUploadedFiles>false</VerifyUploadedFiles> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'"> + <StartProgram>C:\Program Files\Team MediaPortal\MediaPortal\MediaPortal.exe</StartProgram> + </PropertyGroup> +</Project> \ No newline at end of file Added: trunk/plugins/FritzBox/FritzBox/FritzManager/VBReader.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/FritzManager/VBReader.cs (rev 0) +++ trunk/plugins/FritzBox/FritzBox/FritzManager/VBReader.cs 2011-11-29 11:06:08 UTC (rev 4355) @@ -0,0 +1,90 @@ +/* + * Erstellt mit SharpDevelop. + * Benutzer: sr + * Datum: 27.11.2009 + * Zeit: 11:28 + * + */ +using System; +using System.Collections.Generic; +using System.IO; + +namespace FritzManager +{ + internal class VBReader + { + static Logger Log = LoggerFactory.getLogger("VBReader"); + + public static List<VoiceBoxItem> loadVoiceBoxDir(string basePath) + { + //string basePath = @"C:\Dokumente und Einstellungen\sr\Eigene Dateien\sharpproj\FritzABBrowser\voicebox\"; + List<VoiceBoxItem> result = new List<VoiceBoxItem>(); + try + { + for (int i = 0; i < 5; i++) + { + string meta = String.Format("{0}\\meta{1}", basePath, i); + Log.Debug("Reading voice box items from {0}", meta); + FileStream stream = File.OpenRead(meta); + MyBinaryReader r = new MyBinaryReader(stream); + int p = 0; + while (stream.Position < stream.Length) + { + stream.Position = p * 348; + int len = r.ReadInt32(); + if (len == 348) + { + VoiceBoxItem item = new VoiceBoxItem(); + item.voicebox = i; // what voice box + item.seq = r.ReadInt32(); + item.type = r.ReadInt32(); + r.ReadInt32(); + item.filelen = r.ReadInt32(); + item.lenInSec = r.ReadInt32(); + item.isNew = r.ReadInt32(); + // 24 Bytes + stream.Position += 24; + long pos = stream.Position + 18 * 4; + item.callerId = r.ReadCString(); + stream.Position = pos; + pos += 32; + item.filename = r.ReadCString(); + stream.Position = pos; + pos += 32 * 4; + item.pathname = r.ReadCString(); + stream.Position = pos; + pos += 9 * 4; + // read date + int Day = r.ReadByte(); + int Month = r.ReadByte(); + int Year = r.ReadByte() + 2000; + int Hour = r.ReadByte(); + int Minute = r.ReadByte(); + int Second = r.ReadByte(); + item.time = new DateTime(Year, Month, Day, Hour, Minute, Second); + + stream.Position = pos; + pos += 32; + item.mynumber = r.ReadCString(); + stream.Position = pos; + result.Add(item); + Log.Debug("found voice box item {0}", item); + } + else + { + Log.Debug("Bad length inidcator: {0}", len); + } + p++; + } // while + stream.Close(); + //Console.ReadLine(); + } // for + } + catch (Exception e) + { + Log.Debug("Exception {0}", e.Message); + } + return result; + } + } +} \ No newline at end of file Added: trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_bg.xml =================================================================== --- trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_bg.xml (rev 0) +++ trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_bg.xml 2011-11-29 11:06:08 UTC (rev 4355) @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Language name="Bulgarian" characters="255"> + <Section name="unmapped"> + </Section> +</Language> \ No newline at end of file Added: trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_ca.xml =================================================================== --- trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_ca.xml (rev 0) +++ trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_ca.xml 2011-11-29 11:06:08 UTC (rev 4355) @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Language name="Catalan" characters="255"> + <Section name="unmapped"> + </Section> +</Language> \ No newline at end of file Added: trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_cs.xml =================================================================== --- trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_cs.xml (rev 0) +++ trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_cs.xml 2011-11-29 11:06:08 UTC (rev 4355) @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Language name="Czech" characters="255"> + <Section name="unmapped"> + </Section> +</Language> \ No newline at end of file Added: trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_cy-GB.xml =================================================================== --- trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_cy-GB.xml (rev 0) +++ trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_cy-GB.xml 2011-11-29 11:06:08 UTC (rev 4355) @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Language name="Welsh" characters="255"> + <Section name="unmapped"> + </Section> +</Language> \ No newline at end of file Added: trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_da.xml =================================================================== --- trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_da.xml (rev 0) +++ trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_da.xml 2011-11-29 11:06:08 UTC (rev 4355) @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Language name="Danish" characters="255"> + <Section name="unmapped"> + </Section> +</Language> \ No newline at end of file Added: trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_et.xml =================================================================== --- trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_et.xml (rev 0) +++ trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_et.xml 2011-11-29 11:06:08 UTC (rev 4355) @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Language name="Estonian" characters="255"> + <Section name="unmapped"> + </Section> +</Language> \ No newline at end of file Added: trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_eu.xml =================================================================== --- trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_eu.xml (rev 0) +++ trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_eu.xml 2011-11-29 11:06:08 UTC (rev 4355) @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Language name="Basque" characters="255"> + <Section name="unmapped"> + </Section> +</Language> \ No newline at end of file Added: trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_fi.xml =================================================================== --- trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_fi.xml (rev 0) +++ trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_fi.xml 2011-11-29 11:06:08 UTC (rev 4355) @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Language name="Finnish" characters="255"> + <Section name="unmapped"> + </Section> +</Language> \ No newline at end of file Added: trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_fo.xml =================================================================== --- trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_fo.xml (rev 0) +++ trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_fo.xml 2011-11-29 11:06:08 UTC (rev 4355) @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Language name="Faroese" characters="255"> + <Section name="unmapped"> + </Section> +</Language> \ No newline at end of file Added: trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_he.xml =================================================================== --- trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_he.xml (rev 0) +++ trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_he.xml 2011-11-29 11:06:08 UTC (rev 4355) @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Language name="Hebrew" characters="255"> + <Section name="unmapped"> + </Section> +</Language> \ No newline at end of file Added: trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_hr.xml =================================================================== --- trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_hr.xml (rev 0) +++ trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_hr.xml 2011-11-29 11:06:08 UTC (rev 4355) @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Language name="Croatian" characters="255"> + <Section name="unmapped"> + </Section> +</Language> \ No newline at end of file Added: trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_hu.xml =================================================================== --- trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_hu.xml (rev 0) +++ trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_hu.xml 2011-11-29 11:06:08 UTC (rev 4355) @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Language name="Hungarian" characters="255"> + <Section name="unmapped"> + </Section> +</Language> \ No newline at end of file Added: trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_id.xml =================================================================== --- trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_id.xml (rev 0) +++ trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_id.xml 2011-11-29 11:06:08 UTC (rev 4355) @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Language name="Indonesian" characters="255"> + <Section name="unmapped"> + </Section> +</Language> \ No newline at end of file Added: trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_is.xml =================================================================== --- trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_is.xml (rev 0) +++ trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_is.xml 2011-11-29 11:06:08 UTC (rev 4355) @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Language name="German" characters="255"> + <Section name="unmapped"> + </Section> +</Language> \ No newline at end of file Added: trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_ko.xml =================================================================== --- trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_ko.xml (rev 0) +++ trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_ko.xml 2011-11-29 11:06:08 UTC (rev 4355) @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Language name="Korean" characters="255"> + <Section name="unmapped"> + </Section> +</Language> \ No newline at end of file Added: trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_mk.xml =================================================================== --- trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_mk.xml (rev 0) +++ trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_mk.xml 2011-11-29 11:06:08 UTC (rev 4355) @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Language name="Macedonian" characters="255"> + <Section name="unmapped"> + </Section> +</Language> \ No newline at end of file Added: trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_no.xml =================================================================== --- trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_no.xml (rev 0) +++ trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_no.xml 2011-11-29 11:06:08 UTC (rev 4355) @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Language name="Norwegian" characters="255"> + <Section name="unmapped"> + </Section> +</Language> \ No newline at end of file Added: trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_pl.xml =================================================================== --- trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_pl.xml (rev 0) +++ trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_pl.xml 2011-11-29 11:06:08 UTC (rev 4355) @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Language name="Polish" characters="255"> + <Section name="unmapped"> + </Section> +</Language> \ No newline at end of file Added: trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_pt-BR.xml =================================================================== --- trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_pt-BR.xml (rev 0) +++ trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_pt-BR.xml 2011-11-29 11:06:08 UTC (rev 4355) @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Language name="Portuguese (Brazil)" characters="255"> + <Section name="unmapped"> + </Section> +</Language> \ No newline at end of file Added: trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_pt.xml =================================================================== --- trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_pt.xml (rev 0) +++ trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_pt.xml 2011-11-29 11:06:08 UTC (rev 4355) @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Language name="Portuguese" characters="255"> + <Section name="unmapped"> + </Section> +</Language> \ No newline at end of file Added: trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_ro.xml =================================================================== --- trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_ro.xml (rev 0) +++ trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_ro.xml 2011-11-29 11:06:08 UTC (rev 4355) @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Language name="Romanian" characters="255"> + <Section name="unmapped"> + </Section> +</Language> \ No newline at end of file Added: trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_sk.xml =================================================================== --- trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_sk.xml (rev 0) +++ trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_sk.xml 2011-11-29 11:06:08 UTC (rev 4355) @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Language name="Slovak" characters="255"> + <Section name="unmapped"> + </Section> +</Language> \ No newline at end of file Added: trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_sl.xml =================================================================== --- trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_sl.xml (rev 0) +++ trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_sl.xml 2011-11-29 11:06:08 UTC (rev 4355) @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Language name="Slovenian" characters="255"> + <Section name="unmapped"> + </Section> +</Language> \ No newline at end of file Added: trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_sv.xml =================================================================== --- trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_sv.xml (rev 0) +++ trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_sv.xml 2011-11-29 11:06:08 UTC (rev 4355) @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Language name="Swedish" characters="255"> + <Section name="unmapped"> + </Section> +</Language> \ No newline at end of file Added: trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_tr.xml =================================================================== --- trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_tr.xml (rev 0) +++ trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_tr.xml 2011-11-29 11:06:08 UTC (rev 4355) @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Language name="Turkish" characters="255"> + <Section name="unmapped"> + </Section> +</Language> \ No newline at end of file Added: trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_uk.xml =================================================================== --- trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_uk.xml (rev 0) +++ trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_uk.xml 2011-11-29 11:06:08 UTC (rev 4355) @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Language name="Ukrainian" characters="255"> + <Section name="unmapped"> + </Section> +</Language> \ No newline at end of file Added: trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_zh-CN.xml =================================================================== --- trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_zh-CN.xml (rev 0) +++ trunk/plugins/FritzBox/FritzBox/Languages/Unsupported/strings_zh-CN.xml 2011-11-29 11:06:08 UTC (rev 4355) @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Language name="Chinese" characters="255"> + <Section name="unmapped"> + </Section> +</Language> \ No newline at end of file Added: trunk/plugins/FritzBox/FritzBox/Languages/strings_de.xml =================================================================== --- trunk/plugins/FritzBox/FritzBox/Languages/strings_de.xml (rev 0) +++ trunk/plugins/FritzBox/FritzBox/Languages/strings_de.xml 2011-11-29 11:06:08 UTC (rev 4355) @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Language name="German" characters="255"> + <Section name="unmapped"> + <String id="1">Eingehender Anruf</String> + <String id="2">Ausgehender Anruf</String> + <String id="3">Unbekannt</String> + <String id="4">Anrufe</String> + <String id="5">Zurückrufen</String> + <String id="6">Erneute Inverssuche</String> + <String id="7">Nachrichten</String> + <String id="8">Nachricht abspielen</String> + <String id="9">Nachricht als gehört markieren</String> + <String id="10">Nachricht löschen</String> + <String id="11">Ansicht: Liste</String> + <String id="12">Ansicht: Kleine Symbole</String> + <String id="13">Ansicht: Große Symbole</String> + <String id="14">Alle</String> + <String id="15">Eingehend</String> + <String id="16">Ausgehend</String> + <String id="17">Abgelehnt</String> + <String id="18">Anrufliste</String> + <String id="19">FritzBox Nachrichten</String> + <String id="20">Telefonbuch</String> + <String id="21">FritzBox Anrufliste</String> + <String id="22">FritzBox Telefonbuch</String> + <String id="23">Fehler</String> + <String id="24">Telefonbuch konnte nicht geladen werden!</String> + <String id="25">Update</String> + <String id="26">an</String> + <String id="27">Nachricht</String> + <String id="28">Telefon</String> + </Section> +</Language> \ No newline at end of file Added: trunk/plugins/FritzBox/FritzBox/Languages/strings_el.xml =================================================================== --- trunk/plugins/FritzBox/FritzBox/Languages/strings_el.xml (rev 0) +++ trunk/plugins/FritzBox/FritzBox/Languages/strings_el.xml 2011-11-29 11:06:08 UTC (rev 4355) @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Language name="Greek" characters="255"> + <Section name="unmapped"> + <String id="1">Λήψη κλήσης</String> + <String id="2">Εξερχόμενη κλήση</String> + <String id="3">Άγνωστη</String> + <String id="4">Προσκλήσεις</String> + <String id="5">Επιστροφή κλήσης</String> + <String id="6">Re-αντίστροφη αναζήτηση</String> + <String id="7">Ειδήσεις</String> + <String id="8">Παίξτε το μήνυμα</String> + <String id="9">Σήμανση μηνύματος ως μέρος της</String> + <String id="10">Διαγραφή του μηνύματος</String> + <String id="11">Προβολή: Λίστα</String> + <String id="12">Προβολή: Μικρά εικονίδια</String> + <String id="13">Προβολή: Μεγάλα εικονίδια</String> + <String id="14">Όλες</String> + <String id="15">Εισερχόμενη</String> + <String id="16">Ξεκινώντας</String> + <String id="17">Απορρίφθηκε</String> + <String id="18">Λίστα κλήσεων</String> + <String id="19">FritzBox ειδήσεις</String> + <String id="20">Τηλεφωνικός κατάλογος</String> + <String id="21">FritzBox λίστα κλήσεων</String> + <String id="22">FritzBox Telefonbuch</String> + <String id="23">Fehler</String> + <String id="24">τηλεφωνικό κατάλογο δεν θα μπορούσε να φορτωθεί!</String> + <String id="25">Ενημέρωση</String> + <String id="26">στο</String> + <String id="27">μήνυμα</String> + <String id="28">Τηλέφωνο</String> + </Section> +</Language> \ No newline at end of file Added: trunk/plugins/FritzBox/FritzBox/Languages/strings_en-US.xml =================================================================== --- trunk/plugins/FritzBox/FritzBox/Languages/strings_en-US.xml (rev 0) +++ trunk/plugins/FritzBox/FritzBox/Languages/strings_en-US.xml 2011-11-29 11:06:08 UTC (rev 4355) @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Language name="English" characters="255"> + <Section name="unmapped"> + <String id="1">Incoming call</String> + <String id="2">Outgoing call</String> + <String id="3">Unknown</String> + <String id="4">Calls</String> + <String id="5">Call back</String> + <String id="6">New reverse search</String> + <String id="7">Messages</String> + <String id="8">Play message</String> + <String id="9">Mark message as heared</String> + <String id="10">Delete message</String> + <String id="11">View: List</String> + <String id="12">View: Small icons</String> + <String id="13">View: Large icons</String> + <String id="14">All</String> + <String id="15">Incoming</String> + <String id="16">Ougoing</String> + <String id="17">Rejected</String> + <String id="18">Call list</String> + <String id="19">FritzBox messages</String> + <String id="20">Phone book</String> + <String id="21">FritzBox call list</String> + <String id="22">FritzBox phone book</String> + <String id="23">Error</String> + <String id="24">Could not load phone book!</String> + <String id="25">Update</String> + <String id="26">to</String> + <String id="27">Message</String> + <String id="28">Phone</String> + </Section> +</Language> \ No ne... [truncated message content] |
From: <hor...@us...> - 2011-11-29 19:40:11
|
Revision: 4356 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=4356&view=rev Author: horned-reaper Date: 2011-11-29 19:40:00 +0000 (Tue, 29 Nov 2011) Log Message: ----------- Modified Paths: -------------- trunk/plugins/FritzBox/Build/Build FritzBoxManager.bat trunk/plugins/FritzBox/FritzBox/FritzBox.cs trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.Designer.cs trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.cs trunk/plugins/FritzBox/FritzBox/FritzCallMonitor/FritzBoxClient.cs trunk/plugins/FritzBox/FritzBox/FritzCallMonitor/PhoneBook.cs trunk/plugins/FritzBox/FritzBox/FritzManager/BackGroundWorker.cs trunk/plugins/FritzBox/FritzBox/FritzManager/CallItem.cs trunk/plugins/FritzBox/FritzBox/FritzManager/Fritz.cs trunk/plugins/FritzBox/FritzBox/FritzManager/PhonebookItem.cs trunk/plugins/FritzBox/FritzBox/FritzManager/VBReader.cs trunk/plugins/FritzBox/FritzBox/Languages/strings_en-US.xml trunk/plugins/FritzBox/FritzBox/Languages/strings_en.xml trunk/plugins/FritzBox/FritzBox/Settings.cs trunk/plugins/FritzBox/FritzBox/bin/Release/FritzBox.dll trunk/plugins/FritzBox/FritzBox/bin/Release/FritzBox.pdb trunk/plugins/FritzBox/FritzBox/obj/Debug/FritzBox.dll trunk/plugins/FritzBox/FritzBox/obj/Debug/FritzBox.pdb trunk/plugins/FritzBox/FritzBox/obj/Release/FritzBox.csproj.GenerateResource.Cache trunk/plugins/FritzBox/FritzBox/obj/Release/FritzBox.dll trunk/plugins/FritzBox/FritzBox/obj/Release/FritzBox.pdb trunk/plugins/FritzBox/MpeRelease/FritzBox.mpe1 trunk/plugins/FritzBox/MpeRelease/FritzBox.xmp2 trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/bin/Debug/FritzBox.dll trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/bin/Debug/FritzBox.pdb trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/bin/Debug/FritzBoxConfigTester.exe trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/bin/Debug/FritzBoxConfigTester.pdb trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/bin/Release/FritzBoxConfigTester.exe trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/bin/Release/FritzBoxConfigTester.pdb trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/obj/Debug/FritzBoxConfigTester.exe trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/obj/Debug/FritzBoxConfigTester.pdb trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/obj/Debug/ResolveAssemblyReference.cache trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/obj/Release/FritzBoxConfigTester.exe trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/obj/Release/FritzBoxConfigTester.pdb trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/obj/Release/ResolveAssemblyReference.cache trunk/plugins/FritzBox/Tools/FritzBoxDebugger/bin/Debug/FritzBox.dll trunk/plugins/FritzBox/Tools/FritzBoxDebugger/bin/Debug/FritzBox.pdb trunk/plugins/FritzBox/Tools/FritzBoxDebugger/bin/Debug/FritzBoxDebugger.exe trunk/plugins/FritzBox/Tools/FritzBoxDebugger/bin/Debug/FritzBoxDebugger.pdb trunk/plugins/FritzBox/Tools/FritzBoxDebugger/bin/Release/FritzBoxDebugger.exe trunk/plugins/FritzBox/Tools/FritzBoxDebugger/bin/Release/FritzBoxDebugger.pdb trunk/plugins/FritzBox/Tools/FritzBoxDebugger/obj/Debug/FritzBoxDebugger.exe trunk/plugins/FritzBox/Tools/FritzBoxDebugger/obj/Debug/FritzBoxDebugger.pdb trunk/plugins/FritzBox/Tools/FritzBoxDebugger/obj/Release/FritzBoxDebugger.exe trunk/plugins/FritzBox/Tools/FritzBoxDebugger/obj/Release/FritzBoxDebugger.pdb Modified: trunk/plugins/FritzBox/Build/Build FritzBoxManager.bat =================================================================== --- trunk/plugins/FritzBox/Build/Build FritzBoxManager.bat 2011-11-29 11:06:08 UTC (rev 4355) +++ trunk/plugins/FritzBox/Build/Build FritzBoxManager.bat 2011-11-29 19:40:00 UTC (rev 4356) @@ -1,3 +1,6 @@ +D: +cd \FritzBox\Build + @echo off REM Select program path based on current machine environment @@ -5,7 +8,7 @@ if not "%ProgramFiles(x86)%".=="". set ProgramDir=%ProgramFiles(x86)% REM set logfile where the infos are written to, and clear that file -set LOG=build_%BUILD_TYPE%.log +set LOG=Build.log echo. > %LOG% echo. Modified: trunk/plugins/FritzBox/FritzBox/FritzBox.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/FritzBox.cs 2011-11-29 11:06:08 UTC (rev 4355) +++ trunk/plugins/FritzBox/FritzBox/FritzBox.cs 2011-11-29 19:40:00 UTC (rev 4356) @@ -39,1385 +39,1398 @@ namespace FritzBox { - internal enum FritzBoxGuiMode - { - CallList = 0, - VoiceBox = 1, - PhoneBook = 2 - } + internal enum FritzBoxGuiMode + { + CallList = 0, + VoiceBox = 1, + PhoneBook = 2 + } - [PluginIcons("FritzBox.FritzBox.png", "FritzBox.FritzBoxDisabled.png")] - public class FritzBox : GUIWindow, ISetupForm, IPlugin - { - static Logger Log = LoggerFactory.getLogger("FritzBox"); - - #region CallMonitor + [PluginIcons("FritzBox.FritzBox.png", "FritzBox.FritzBoxDisabled.png")] + public class FritzBox : GUIWindow, ISetupForm, IPlugin + { + static Logger Log = LoggerFactory.getLogger("FritzBox"); - #region Variables + #region CallMonitor - private readonly List<CallAction> _actionList = new List<CallAction>(); - private readonly List<CallAction> _notifyQueue = new List<CallAction>(); - private bool _showNotify = true; - private object _tempNotify; + #region Variables - private int notifyCount = 0; + private readonly List<CallAction> _actionList = new List<CallAction>(); + private readonly List<CallAction> _notifyQueue = new List<CallAction>(); + private bool _showNotify = true; + private object _tempNotify; - #endregion Variables + private int notifyCount = 0; - #region Properties + #endregion Variables - public string ContactPicturesFolder - { - get { return Config.GetSubFolder(Config.Dir.Thumbs, "FritzBox.Contacts"); } - } - - public string YacFolder - { - get { return Config.GetSubFolder(Config.Dir.Thumbs, "yac"); } - } + #region Properties - public string SkinMediaFolder - { - get { return Path.Combine(Config.GetSubFolder(Config.Dir.Skin, Settings.MediaPortalSkin), "Media"); } - } + public string ContactPicturesFolder + { + get { return Config.GetSubFolder(Config.Dir.Thumbs, "FritzBox.Contacts"); } + } - public string UnknownCallerImage - { - get - { - string filePath; + public string YacFolder + { + get { return Config.GetSubFolder(Config.Dir.Thumbs, "yac"); } + } - // check if skin supports it's own images - filePath = Utils.GetCoverArt(SkinMediaFolder, @"FritzBox\CallMonitor.Unknown"); - if (!String.IsNullOrEmpty(filePath)) return filePath; + public string SkinMediaFolder + { + get { return Path.Combine(Config.GetSubFolder(Config.Dir.Skin, Settings.MediaPortalSkin), "Media"); } + } - // use new default image - filePath = Utils.GetCoverArt(ContactPicturesFolder, @"FritzBox\CallMonitor.Unknown"); - if (!String.IsNullOrEmpty(filePath)) return filePath; + public string UnknownCallerImage + { + get + { + string filePath; - // use old default image - filePath = Utils.GetCoverArt(YacFolder, "_unknown"); - if (!String.IsNullOrEmpty(filePath)) return filePath; + // check if skin supports it's own images + filePath = Utils.GetCoverArt(SkinMediaFolder, @"FritzBox\CallMonitor.Unknown"); + if (!String.IsNullOrEmpty(filePath)) return filePath; - return String.Empty; - } - } + // use new default image + filePath = Utils.GetCoverArt(ContactPicturesFolder, @"FritzBox\CallMonitor.Unknown"); + if (!String.IsNullOrEmpty(filePath)) return filePath; - public string MissingCallerImage - { - get - { - string filePath; + // use old default image + filePath = Utils.GetCoverArt(YacFolder, "_unknown"); + if (!String.IsNullOrEmpty(filePath)) return filePath; - // check if skin supports it's own images - filePath = Utils.GetCoverArt(SkinMediaFolder, @"FritzBox\CallMonitor.Missing"); - if (!String.IsNullOrEmpty(filePath)) return filePath; + return String.Empty; + } + } - // use new default image - filePath = Utils.GetCoverArt(ContactPicturesFolder, @"FritzBox\CallMonitor.Missing"); - if (!String.IsNullOrEmpty(filePath)) return filePath; + public string MissingCallerImage + { + get + { + string filePath; - // use old default image - filePath = Utils.GetCoverArt(YacFolder, "_noImage"); - if (!String.IsNullOrEmpty(filePath)) return filePath; + // check if skin supports it's own images + filePath = Utils.GetCoverArt(SkinMediaFolder, @"FritzBox\CallMonitor.Missing"); + if (!String.IsNullOrEmpty(filePath)) return filePath; - return String.Empty; - } - } + // use new default image + filePath = Utils.GetCoverArt(ContactPicturesFolder, @"FritzBox\CallMonitor.Missing"); + if (!String.IsNullOrEmpty(filePath)) return filePath; - #endregion + // use old default image + filePath = Utils.GetCoverArt(YacFolder, "_noImage"); + if (!String.IsNullOrEmpty(filePath)) return filePath; - #region Private Functions/Methods + return String.Empty; + } + } - private void OnStartExternal(Process proc, bool waitForExit) - { - if (waitForExit) _showNotify = false; - else _showNotify = true; - } + #endregion - private void OnStopExternal(Process proc, bool waitForExit) - { - _showNotify = true; + #region Private Functions/Methods - //for (int i = 0; i < _notifyQueue.Count; i++) - // OnFritzBoxEvent(_notifyQueue[i]); + private void OnStartExternal(Process proc, bool waitForExit) + { + if (waitForExit) _showNotify = false; + else _showNotify = true; + } - _notifyQueue.Clear(); - } + private void OnStopExternal(Process proc, bool waitForExit) + { + _showNotify = true; - private void OnCallAction(CallAction callAction) - { - Log.Info("FRITZ!Box: OnCallAction()"); - callAction.WriteToLog(); + //for (int i = 0; i < _notifyQueue.Count; i++) + // OnFritzBoxEvent(_notifyQueue[i]); - if (!_showNotify) - { - Log.Info("External process is running. Notify is queued and will be shown later."); - _notifyQueue.Add(callAction); - return; - } + _notifyQueue.Clear(); + } - switch (callAction.Type) - { - case CallAction.CallType.Incoming: - if (PhoneBook.Enabled) callAction.Caller = PhoneBook.GetCaller(phoneBook, callAction.Caller); - OnCall(callAction); - break; - case CallAction.CallType.Outgoing: - if (PhoneBook.Enabled) callAction.Caller = PhoneBook.GetCaller(phoneBook, callAction.Caller); - OnCall(callAction); - break; - case CallAction.CallType.ConnectionStarted: - break; - case CallAction.CallType.ConnectionClosed: - if (Settings.CloseOnConnectionClosed) - { - Log.Info("_closeOnConnectionClosed is enabled. Try to close active notify."); + private void OnCallAction(CallAction callAction) + { + Log.Info("FRITZ!Box: OnCallAction()"); + callAction.WriteToLog(); + + if (!_showNotify) + { + Log.Info("external process is running. Notify is queued and will be shown later."); + _notifyQueue.Add(callAction); + return; + } + + switch (callAction.Type) + { + case CallAction.CallType.Incoming: + if (PhoneBook.Enabled) callAction.Caller = PhoneBook.GetCaller(phoneBook, callAction.Caller); + OnCall(callAction); + break; + case CallAction.CallType.Outgoing: + if (PhoneBook.Enabled) callAction.Caller = PhoneBook.GetCaller(phoneBook, callAction.Caller); + OnCall(callAction); + break; + case CallAction.CallType.ConnectionStarted: + break; + case CallAction.CallType.ConnectionClosed: + if (Settings.CloseOnConnectionClosed) + { + Log.Info("_closeOnConnectionClosed is enabled. Try to close active notify."); + if (_tempNotify != null) + { + MediaPortal.GUI.Library.Action act = new MediaPortal.GUI.Library.Action(); + act.wID = MediaPortal.GUI.Library.Action.ActionType.ACTION_CLOSE_DIALOG; + GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_DIALOG_NOTIFY).OnAction(act); + } + } + break; + default: + Log.Error("incorrect callAction.Type"); + break; + } + } + + private void OnLogAction(FritzBoxClient.LogLevel logLevel, string logMessage) + { + switch (logLevel) + { + case FritzBoxClient.LogLevel.Debug: + Log.Debug(logMessage); + break; + case FritzBoxClient.LogLevel.Error: + Log.Error(logMessage); + break; + case FritzBoxClient.LogLevel.Warning: + Log.Warn(logMessage); + break; + case FritzBoxClient.LogLevel.Info: + Log.Info(logMessage); + break; + default: + break; + } + } + + private void OnCall(CallAction callAction) + { + Log.Info("FRITZ!Box: OnCall()"); + if (_tempNotify != null) { - MediaPortal.GUI.Library.Action act = new MediaPortal.GUI.Library.Action(); - act.wID = MediaPortal.GUI.Library.Action.ActionType.ACTION_CLOSE_DIALOG; - GUIWindowManager.GetWindow((int) GUIWindow.Window.WINDOW_DIALOG_NOTIFY).OnAction(act); + Log.Info("yet another dialog is active. action is sent to queue."); + + if (_actionList.Count < Settings.MaxNotifies - 1) _actionList.Add(callAction); + + return; } - } - break; - default: - Log.Error("incorrect callAction.Type"); - break; - } - } - private void OnLogAction(FritzBoxClient.LogLevel logLevel, string logMessage) - { - switch (logLevel) - { - case FritzBoxClient.LogLevel.Debug: - Log.Debug(logMessage); - break; - case FritzBoxClient.LogLevel.Error: - Log.Error(logMessage); - break; - case FritzBoxClient.LogLevel.Warning: - Log.Warn(logMessage); - break; - case FritzBoxClient.LogLevel.Info: - Log.Info(logMessage); - break; - default: - break; - } - } + // config settings for dialog + string strHeading = string.Empty; + string strImage = string.Empty; + string strText = string.Empty; - private void OnCall(CallAction callAction) - { - Log.Info("FRITZ!Box: OnCall()"); + // set heading for NotifyDialog + switch (callAction.Type) + { + case CallAction.CallType.Incoming: + strHeading = GUILocalizeStrings.Get(1); // 1 = Incoming call + break; + case CallAction.CallType.Outgoing: + strHeading = GUILocalizeStrings.Get(2); // 2 = Outgoing call + break; + } - if (_tempNotify != null) - { - Log.Info("yet another dialog is active. action is sent to queue."); - if (_actionList.Count < Settings.MaxNotifies - 1) _actionList.Add(callAction); - return; - } + // set Image for NotifyDialog + strImage = GetCallerImage(callAction.Caller); - // config settings for dialog - string strHeading = string.Empty; - string strImage = string.Empty; - string strText = string.Empty; - - // set heading for NotifyDialog - switch (callAction.Type) - { - case CallAction.CallType.Incoming: - strHeading = GUILocalizeStrings.Get(1); // 1 = Incoming call - break; - case CallAction.CallType.Outgoing: - strHeading = GUILocalizeStrings.Get(2); // 2 = Outgoing call - break; - } + // set message text for NotifyDialog + strText = Environment.NewLine; - // set Image for NotifyDialog - strImage = GetCallerImage(callAction.Caller); + if (callAction.Caller.ID == "") strText += GUILocalizeStrings.Get(3); // 3 = Unknown + else if (callAction.Caller.Name == "") strText += callAction.Caller.ID; + else + { + strText += callAction.Caller.Name; - // set message text for NotifyDialog - strText = Environment.NewLine; - if (callAction.Caller.ID == "") strText += GUILocalizeStrings.Get(3); // 3 = Unknown - else if (callAction.Caller.Name == "") strText += callAction.Caller.ID; - else - { - strText += callAction.Caller.Name; - if (Settings.ShowMSNOnNotify) strText += Environment.NewLine + callAction.Caller.ID; - } + if (Settings.ShowMSNOnNotify) strText += Environment.NewLine + callAction.Caller.ID; + } - // config settings for dialog FINISHED + // config settings for dialog FINISHED - // if MSN is disabled, stop here - if (!IsMsnEnabled(callAction.MSN)) return; + // if MSN is disabled, stop here + if (!IsMSNEnabled(callAction.MSN)) return; - // if notifies are disabled for this call, stop here - if (!IsCallerEnabled(callAction.Caller)) return; - - if (callAction.Type == CallAction.CallType.Incoming && Settings.IncomingSound != null && Settings.IncomingSound.Length > 0 ) Utils.PlaySound(Settings.IncomingSound, false, true); + // if notifies are disabled for this call, stop here + if (!IsCallerEnabled(callAction.Caller)) return; - ShowNotify(strHeading, strImage, strText); - } + if (callAction.Type == CallAction.CallType.Incoming && Settings.IncomingSound != null && Settings.IncomingSound.Length > 0) Utils.PlaySound(Settings.IncomingSound, false, true); - #endregion + ShowNotify(strHeading, strImage, strText); + } - #region Helper Methods + #endregion - private string GetCallerImage(string callerId) - { - // search image for caller - if (Settings.ExtensiveLogging) - Log.Info("searching image for callerId: " + callerId); + #region Helper Methods - string filePath; + private string GetCallerImage(string callerId) + { + // search image for caller + if (Settings.ExtensiveLogging) + Log.Info("searching image for callerId: " + callerId); - // use new image path - filePath = Utils.GetCoverArt(ContactPicturesFolder, callerId); - if (!String.IsNullOrEmpty(filePath)) return filePath; - Log.Info("found image not in: " + ContactPicturesFolder); + string filePath; - // use old image path - filePath = Utils.GetCoverArt(YacFolder, callerId); - if (!String.IsNullOrEmpty(filePath)) return filePath; - Log.Info("found image not in: " + YacFolder); + // use new image path + filePath = Utils.GetCoverArt(ContactPicturesFolder, callerId); + if (!String.IsNullOrEmpty(filePath)) return filePath; + Log.Info("found image not in: " + ContactPicturesFolder); - return String.Empty; - } + // use old image path + filePath = Utils.GetCoverArt(YacFolder, callerId); + if (!String.IsNullOrEmpty(filePath)) return filePath; + Log.Info("found image not in: " + YacFolder); - private string GetCallerImage(Caller caller) - { - if (caller.ID == "") - return UnknownCallerImage; - else - { - string strImage = GetCallerImage(caller.Name); + return String.Empty; + } - if (File.Exists(strImage)) + private string GetCallerImage(Caller caller) { - if (Settings.ExtensiveLogging) Log.Info("found image for caller: " + strImage); - else Log.Info("found image for caller"); + if (caller.ID == "") + return UnknownCallerImage; + else + { + string strImage = GetCallerImage(caller.Name); - return strImage; + if (File.Exists(strImage)) + { + if (Settings.ExtensiveLogging) Log.Info("found image for caller: " + strImage); + else Log.Info("found image for caller"); + + return strImage; + } + else + { + Log.Info("found NO image for caller"); + return MissingCallerImage; + } + } } - else + + private bool IsMSNEnabled(string mSN) { - Log.Info("found NO image for caller"); - return MissingCallerImage; + if (!Settings.FilterMSN) + { + Log.Info("MSN filter is disabled."); + return true; + } + + if (Settings.MSNList.Contains(mSN)) + { + Log.Info("MSN is on list."); + return true; + } + else + { + Log.Info("MSN is not on list. Notify won't be shown."); + return false; + } } - } - } - private bool IsMsnEnabled(string msn) - { - if (!Settings.FilterMSN) - { - Log.Info("MSN filter is disabled."); - return true; - } + private bool IsCallerEnabled(Caller caller) + { + if (!PhoneBook.Enabled) + { + Log.Info("Phone book is disabled. Notify will be shown."); + return true; + } + else if (caller.Show) return true; + else return false; + } - if (Settings.MSNList.Contains(msn)) - { - Log.Info("MSN is on list."); - return true; - } - else - { - Log.Info("MSN is not on list. Notify won't be shown."); - return false; - } - } + private void ShowNotify(string strHeading, string strImage, string strText) + { + bool resumePlayer = false; - private bool IsCallerEnabled(Caller caller) - { - if (!PhoneBook.Enabled) - { - Log.Info("Phone book is disabled. Notify will be shown."); - return true; - } - else if (caller.Show) return true; - else return false; - } + if (notifyCount >= Settings.MaxNotifies) return; - private void ShowNotify(string strHeading, string strImage, string strText) - { - bool resumePlayer = false; + // pause player + if (g_Player.Playing && !g_Player.Paused && Settings.StopMedia) + { + g_Player.Pause(); + resumePlayer = true; + } - if (notifyCount >= Settings.MaxNotifies) return; + // show dialog + GUIDialogNotify dlgNotify = (GUIDialogNotify)GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_DIALOG_NOTIFY); + if (dlgNotify == null) return; - // pause player - if (g_Player.Playing && !g_Player.Paused && Settings.StopMedia) - { - g_Player.Pause(); - resumePlayer = true; + dlgNotify.Reset(); + dlgNotify.ClearAll(); + dlgNotify.SetHeading(strHeading); + dlgNotify.SetImage(strImage); + dlgNotify.SetText(strText); + if (Settings.CloseOnTimeout) dlgNotify.TimeOut = Settings.NotifyTimeout; + else dlgNotify.TimeOut = -1; + + _tempNotify = dlgNotify; + dlgNotify.DoModal(GUIWindowManager.ActiveWindow); + + // resume player + if (resumePlayer && g_Player.Playing && g_Player.Paused && Settings.StopMedia && Settings.ResumeMedia) g_Player.Pause(); + + _tempNotify = null; + if (_actionList.Count > 0) + { + CallAction tmpAction = _actionList[0]; + _actionList.RemoveAt(0); + OnCallAction(tmpAction); + } } - // show dialog - GUIDialogNotify dlgNotify = (GUIDialogNotify)GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_DIALOG_NOTIFY); - if (dlgNotify == null) return; + #endregion - dlgNotify.Reset(); - dlgNotify.ClearAll(); - dlgNotify.SetHeading(strHeading); - dlgNotify.SetImage(strImage); - dlgNotify.SetText(strText); - if (Settings.CloseOnTimeout) dlgNotify.TimeOut = Settings.NotifyTimeout; - else dlgNotify.TimeOut = -1; + #endregion CallMonitor - _tempNotify = dlgNotify; - dlgNotify.DoModal(GUIWindowManager.ActiveWindow); + #region <Interface> Implementations - // resume player - if (resumePlayer && g_Player.Playing && g_Player.Paused && Settings.StopMedia && Settings.ResumeMedia) g_Player.Pause(); + #region IPlugin Interface - _tempNotify = null; - if (_actionList.Count > 0) + /// <summary> + /// This method will be called by mediaportal to start your process plugin + /// </summary> + public void Start() { - CallAction tmpAction = _actionList[0]; - _actionList.RemoveAt(0); - OnCallAction(tmpAction); + Log.Info("FRITZ!Box Plugin {0} starting.", Assembly.GetExecutingAssembly().GetName().Version); + Settings.Load(); + + Utils.OnStartExternal += OnStartExternal; + Utils.OnStopExternal += OnStopExternal; + + FritzBoxClient.LogEvent += OnLogAction; + FritzBoxClient.CallEvent += OnCallAction; + FritzBoxClient.StartClient(); + + // start monitoring Windows power mode changes (Standby & Hibernate) + SystemEvents.PowerModeChanged += new PowerModeChangedEventHandler(SystemEvents_PowerModeChanged); } - } - #endregion + /// <summary> + /// this method will be called by mediaportal to stop your process plugin + /// </summary> + public void Stop() + { + Log.Info("FRITZ!Box Plugin {0} stopping.", Assembly.GetExecutingAssembly().GetName().Version); - #endregion CallMonitor + FritzBoxClient.StopClient(); + FritzBoxClient.CallEvent -= OnCallAction; + FritzBoxClient.LogEvent -= OnLogAction; - #region <Interface> Implementations + Utils.OnStartExternal -= OnStartExternal; + Utils.OnStopExternal -= OnStopExternal; - #region IPlugin Interface + // stop monitoring power changes + SystemEvents.PowerModeChanged -= new PowerModeChangedEventHandler(SystemEvents_PowerModeChanged); - /// <summary> - /// This method will be called by mediaportal to start your process plugin - /// </summary> - public void Start() - { - Log.Info("FRITZ!Box Plugin {0} starting.", Assembly.GetExecutingAssembly().GetName().Version); - Settings.Load(); + PhoneBook.SaveSettings(); + } - Utils.OnStartExternal += OnStartExternal; - Utils.OnStopExternal += OnStopExternal; + #endregion - FritzBoxClient.LogEvent += OnLogAction; - FritzBoxClient.CallEvent += OnCallAction; - FritzBoxClient.StartClient(); + #region ISetupForm Member - // start monitoring Windows power mode changes (Standby & Hibernate) - SystemEvents.PowerModeChanged += new PowerModeChangedEventHandler(SystemEvents_PowerModeChanged); - } + /// <summary> + /// With GetID it will be an window-plugin / otherwise a process-plugin + /// Enter the id number here again + /// </summary> + public override int GetID + { + get { return GetWindowId(); } + set { } + } - /// <summary> - /// this method will be called by mediaportal to stop your process plugin - /// </summary> - public void Stop() - { - Log.Info("FRITZ!Box Plugin {0} stopping.", Assembly.GetExecutingAssembly().GetName().Version); + public string PluginName() + { + return "FRITZ!Box Manager"; + } - FritzBoxClient.StopClient(); - FritzBoxClient.CallEvent -= OnCallAction; - FritzBoxClient.LogEvent -= OnLogAction; + public string Author() + { + return "chefkoch, S.Rinke"; + } - Utils.OnStartExternal -= OnStartExternal; - Utils.OnStopExternal -= OnStopExternal; + public string Description() + { + return "Displays FRITZ!Box caller lists and voice box infos and notifies on incoming calls."; + } - // stop monitoring power changes - SystemEvents.PowerModeChanged -= new PowerModeChangedEventHandler(SystemEvents_PowerModeChanged); + public void ShowPlugin() + { + try + { + FritzBoxConfig config = new FritzBoxConfig(); + config.ShowDialog(); + } + catch (Exception ex) + { + Log.Error(ex.ToString()); + } + } - PhoneBook.SaveSettings(); - } + public bool CanEnable() + { + return true; + } - #endregion + public int GetWindowId() + { + return 464554871; + } - #region ISetupForm Member + public bool DefaultEnabled() + { + return true; + } - /// <summary> - /// With GetID it will be an window-plugin / otherwise a process-plugin - /// Enter the id number here again - /// </summary> - public override int GetID - { - get { return GetWindowId(); } - set { } - } + public bool HasSetup() + { + return true; + } - public string PluginName() - { - return "FRITZ!Box Manager"; - } + public bool GetHome(out string strButtonText, out string strButtonImage, out string strButtonImageFocus, out string strPictureImage) + { + strButtonText = GUILocalizeStrings.Get(28); // 28 = Telefon + strButtonImage = String.Empty; + strButtonImageFocus = String.Empty; + strPictureImage = "hover_FritzBox.png"; - public string Author() - { - return "chefkoch, S.Rinke"; - } + return true; + } - public string Description() - { - return "Displays FRITZ!Box caller lists and voice box infos and notifies on incoming calls."; - } + #endregion - public void ShowPlugin() - { - try - { - FritzBoxConfig config = new FritzBoxConfig(); - config.ShowDialog(); - } - catch (Exception ex) - { - Log.Error(ex.ToString()); - } - } + #endregion - public bool CanEnable() - { - return true; - } + #region FritzManager - public int GetWindowId() - { - return 464554871; - } + #region enums - public bool DefaultEnabled() - { - return true; - } + #region Nested type: Filter - public bool HasSetup() - { - return true; - } + private enum Filter + { + All = 0, + Incoming = 1, + Outgoing = 2, + Rejected = 3 + } - public bool GetHome(out string strButtonText, out string strButtonImage, out string strButtonImageFocus, out string strPictureImage) - { - strButtonText = GUILocalizeStrings.Get(28); // 28 = Telefon - strButtonImage = String.Empty; - strButtonImageFocus = String.Empty; - strPictureImage = "hover_FritzBox.png"; + #endregion - return true; - } + #region Nested type: View - #endregion + private enum View + { + List = 0, + Icons = 1, + LargeIcons = 2, + } - #endregion + #endregion - #region FritzManager + #endregion - #region enums + #region skin - #region Nested type: Filter + [SkinControl(3)] + protected GUISortButtonControl btnFilter; + [SkinControl(4)] + protected GUIButtonControl btnModus; + [SkinControl(9)] + protected GUIButtonControl btnUpdate; + [SkinControl(2)] + protected GUIButtonControl btnViewAs; + [SkinControl(50)] + protected GUIFacadeControl facadeView; + [SkinControl(4711)] + protected GUIFadeLabel headerLabel; - private enum Filter - { - All = 0, - Incoming = 1, - Outgoing = 2, - Rejected = 3 - } + #endregion - #endregion + #region fields - #region Nested type: View + // update timer for background thread + private static System.Timers.Timer updateTimer = new System.Timers.Timer(); + // path to voice box files + private string vBPath; + // FRITZBox password + private string passwd; + // list of call items (callers) + private List<CallItem> callItemList; + // filter on callitems used in list view + private Filter currentFilter = Filter.All; + // what kind of items is shown (callers, phoneBook, voicebox) + private FritzBoxGuiMode currentMode = FritzBoxGuiMode.CallList; + // state of facede view + private View currentView = View.List; + // list of tmp files to delete when deinit + // TODO should called in timer callback also + private List<string> filesToDelete = new List<string>(); + // FritzBox WebGUI Client + private Fritz fritz; + // stores mapped msns + private HashMap<string, string> msns = new HashMap<string, string>(); + // phone book + public HashMap<string, PhonebookItem> phoneBook = new HashMap<string, PhonebookItem>(); + // dirty marker, if set the timer task will save phoneBook + private volatile bool phoneBookDirty; + // stores pathname for internal pb save file + private string phoneBookPath; + private string mediaPortalLanguage; + // if set true, use revers lookup + private bool useInversSearch; + // list of voivebox messages + private List<VoiceBoxItem> voiceboxItemList; + // worker for task + private BackGroundWorker worker; + // and the thread + private Thread workerThread; - private enum View - { - List = 0, - Icons = 1, - LargeIcons = 2, - } + #endregion - #endregion + // the instance + private static FritzBox thePlugin; + // fritz phoneBook + protected FritzPhonebooks fritzPhonebooks = new FritzPhonebooks(); + // sync the access to phoneBook / calllist + private System.Object sync = new System.Object(); - #endregion + public override bool Init() + { + Start(); + updateGUIProperties(0, 0, ""); + loadConfig(); + GUILocalizeStrings.ChangeLanguage(mediaPortalLanguage); - #region skin + return Load(GUIGraphicsContext.Skin + @"\FritzManager.xml"); + } - [SkinControl(3)] protected GUISortButtonControl btnFilter; - [SkinControl(4)] protected GUIButtonControl btnModus; - [SkinControl(9)] protected GUIButtonControl btnUpdate; - [SkinControl(2)] protected GUIButtonControl btnViewAs; - [SkinControl(50)] protected GUIFacadeControl facadeView; - [SkinControl(4711)] protected GUIFadeLabel headerLabel; + private void startBackGroundWorker(InversSearch search) + { + if (worker == null) + { + worker = new BackGroundWorker(fritz, this, search); + workerThread = new Thread(worker.Run); + workerThread.Start(); + } + } - #endregion + public override void DeInit() + { + cleanup(); - #region fields + if (worker != null) + { + worker.stop(); + workerThread.Abort(); + } - // update timer for background thread - private static System.Timers.Timer updateTimer = new System.Timers.Timer(); - // path to voice box files - private string vBPath; - // FRITZBox password - private string passwd; - // list of call items (callers) - private List<CallItem> callItemList; - // filter on callitems used in list view - private Filter currentFilter = Filter.All; - // what kind of items is shown (callers, phoneBook, voicebox) - private FritzBoxGuiMode currentMode = FritzBoxGuiMode.CallList; - // state of facede view - private View currentView = View.List; - // list of tmp files to delete when deinit - // TODO should called in timer callback also - private List<string> filesToDelete = new List<string>(); - // FritzBox WebGUI Client - private Fritz fritz; - // stores mapped msns - private HashMap<string, string> msns = new HashMap<string, string>(); - // phone book - public HashMap<string, PhonebookItem> phoneBook = new HashMap<string, PhonebookItem>(); - // dirty marker, if set the timer task will save phoneBook - private volatile bool phoneBookDirty; - // stores pathname for internal pb save file - private string phoneBookPath; - private string mediaPortalLanguage; - // if set true, use revers lookup - private bool useInversSearch; - // list of voivebox messages - private List<VoiceBoxItem> voiceboxItemList; - // worker for task - private BackGroundWorker worker; - // and the thread - private Thread workerThread; + Stop(); - #endregion + // persist some props for next time + Log.Debug("DeInit called: persisting current props"); + using (MediaPortal.Profile.Settings xmlwriter = new MediaPortal.Profile.Settings(Config.GetFile(Config.Dir.Config, "MediaPortal.xml"))) + { + xmlwriter.SetValue("FritzManager", "currentMode", (int)currentFilter); + xmlwriter.SetValue("FritzManager", "currentFilter", (int)currentMode); + } - // the instance - private static FritzBox thePlugin; - // fritz phoneBook - protected FritzPhonebooks fritzPhonebooks = new FritzPhonebooks(); - // sync the access to phoneBook / calllist - private System.Object sync = new System.Object(); + base.DeInit(); + } - public override bool Init() - { - Start(); - updateGUIProperties(0,0,""); - loadConfig(); - GUILocalizeStrings.ChangeLanguage(mediaPortalLanguage); + protected void loadConfig() + { + string dialport = "0"; + string areacode = ""; - return Load(GUIGraphicsContext.Skin + @"\FritzManager.xml"); - } + using (MediaPortal.Profile.Settings xmlreader = new MediaPortal.Profile.Settings("MediaPortal.xml")) + { + phoneBookPath = Config.GetFolder(Config.Dir.Config) + "\\fritzmanagerPhonebook.xml"; + mediaPortalLanguage = xmlreader.GetValue("gui", "language"); - private void startBackGroundWorker(InversSearch search) - { - if (worker == null) - { - worker = new BackGroundWorker(fritz, this, search); - workerThread = new Thread(worker.Run); - workerThread.Start(); - } - } + passwd = xmlreader.GetValue("FritzManager", "passwd"); + vBPath = xmlreader.GetValue("FritzManager", "vBPath"); + dialport = xmlreader.GetValue("FritzManager", "dialport"); + useInversSearch = xmlreader.GetValueAsBool("FritzManager", "useInversSearch", true); + areacode = xmlreader.GetValue("FritzManager", "defaultAreacode"); - public override void DeInit() - { - cleanup(); + string str = xmlreader.GetValue("FritzManager", "currentMode"); - if (worker != null) - { - worker.stop(); - workerThread.Abort(); - } + if (str != null && str != "") currentMode = (FritzBoxGuiMode)System.Enum.Parse(typeof(FritzBoxGuiMode), str); - Stop(); + str = xmlreader.GetValue("FritzManager", "currentFilter"); - // persist some props for next time - Log.Debug("DeInit called: persisting current props" ); - using (MediaPortal.Profile.Settings xmlwriter = new MediaPortal.Profile.Settings(Config.GetFile(Config.Dir.Config, "MediaPortal.xml"))) - { - xmlwriter.SetValue("FritzManager", "currentMode", (int)currentFilter); - xmlwriter.SetValue("FritzManager", "currentFilter", (int)currentMode); - } - - base.DeInit(); - } - - protected void loadConfig() - { - string dialport = "0"; - string areacode = ""; + if (str != null && str != "") currentFilter = (Filter)System.Enum.Parse(typeof(Filter), str); - using (MediaPortal.Profile.Settings xmlreader = new MediaPortal.Profile.Settings("MediaPortal.xml")) - { - phoneBookPath = Config.GetFolder(Config.Dir.Config) + "\\fritzmanagerPhonebook.xml"; - mediaPortalLanguage = xmlreader.GetValue("gui", "language"); + int interval = xmlreader.GetValueAsInt("FritzManager", "updateInterval", 0); - passwd = xmlreader.GetValue("FritzManager", "passwd"); - vBPath = xmlreader.GetValue("FritzManager", "vBPath"); - dialport = xmlreader.GetValue("FritzManager", "dialport"); - useInversSearch = xmlreader.GetValueAsBool("FritzManager", "useInversSearch", true); - areacode = xmlreader.GetValue("FritzManager", "defaultAreacode"); + if (interval != 0) + { + thePlugin = this; + updateTimer.Interval = interval * 1000; // interval is in sec + updateTimer.Elapsed += OnTimedEvent; + updateTimer.Enabled = true; + } + } - string str = xmlreader.GetValue("FritzManager", "currentMode"); + fritz = new Fritz(passwd, Config.GetFolder(Config.Dir.Config), FritzBoxClient.Address, dialport); - if (str != null && str != "") currentMode = (FritzBoxGuiMode)System.Enum.Parse(typeof(FritzBoxGuiMode), str); - - str = xmlreader.GetValue("FritzManager", "currentFilter"); + initMSN(); - if (str != null && str != "") currentFilter = (Filter)System.Enum.Parse(typeof(Filter), str); + InversSearch search = new InversSearchOert(areacode); - int interval = xmlreader.GetValueAsInt("FritzManager", "updateInterval", 0); + startBackGroundWorker(search); + } - if (interval != 0) + protected override void OnPageLoad() { - thePlugin = this; - updateTimer.Interval = interval * 1000; // interval is in sec - updateTimer.Elapsed += OnTimedEvent; - updateTimer.Enabled = true; - } - } - - fritz = new Fritz(passwd, Config.GetFolder(Config.Dir.Config), FritzBoxClient.Address, dialport); + phoneBook = InternalPhoneBook.loadPhoneBook(phoneBookPath); - initMSN(); + update(false); - InversSearch search = new InversSearchOert(areacode); + if (currentMode == FritzBoxGuiMode.VoiceBox) worker.queue.Enqueue(new Task(Task.TaskAction.LoadCallItems, null)); - startBackGroundWorker(search); - } + ShowThumbPanel(); - protected override void OnPageLoad() - { - phoneBook = InternalPhoneBook.loadPhoneBook(phoneBookPath); - - update(false); - - if (currentMode == FritzBoxGuiMode.VoiceBox) worker.queue.Enqueue(new Task(Task.TaskAction.LoadCallItems, null)); - - ShowThumbPanel(); - } + if (String.IsNullOrEmpty(passwd) && String.IsNullOrEmpty(vBPath)) ShowError(GUILocalizeStrings.Get(24)); // 24 = "Could not load phone book" + } - private static void OnTimedEvent(object source, System.Timers.ElapsedEventArgs e) - { - Log.Debug("FritzBox Manager processing timer event"); + private static void OnTimedEvent(object source, System.Timers.ElapsedEventArgs e) + { + Log.Debug("FritzBox Manager processing timer event"); - if (thePlugin.phoneBookDirty) - { - thePlugin.phoneBookDirty = false; - InternalPhoneBook.savePhonebook(thePlugin.phoneBook.Values, thePlugin.phoneBookPath); - } + if (thePlugin.phoneBookDirty) + { + thePlugin.phoneBookDirty = false; + InternalPhoneBook.savePhonebook(thePlugin.phoneBook.Values, thePlugin.phoneBookPath); + } - thePlugin.fritz.keepAlive(); + thePlugin.fritz.keepAlive(); - List<VoiceBoxItem> items = VBReader.loadVoiceBoxDir(thePlugin.vBPath); + List<VoiceBoxItem> items = VBReader.loadVoiceBoxDir(thePlugin.vBPath); - int newItems = 0; - string caller = null; + int newItems = 0; + string caller = null; - foreach(VoiceBoxItem item in items) - { - if (item.isNew != 0 && item.type == 3) + foreach (VoiceBoxItem item in items) + { + if (item.isNew != 0 && item.type == 3) + { + if (caller == null) caller = thePlugin.lookupCaller(item.callerId); + newItems++; + } + } + + thePlugin.updateGUIProperties(newItems, items.Count, caller); + } + + protected void initMSN() { - if (caller == null ) caller = thePlugin.lookupCaller(item.callerId); - newItems++; + // populate MSNs + if (File.Exists(Config.GetFolder(Config.Dir.Config) + "\\fritzmanager_msns.txt")) + { + using (StreamReader sr = new StreamReader(Config.GetFolder(Config.Dir.Config) + "\\fritzmanager_msns.txt")) + { + while (!sr.EndOfStream) + { + string line = sr.ReadLine(); + string[] items = line.Split('='); + if (items.GetLength(0) > 1) msns.Add(items[0], items[1]); + } + } + } } - } - thePlugin.updateGUIProperties(newItems, items.Count, caller); - } + protected override void OnPageDestroy(int new_windowId) + { + cleanup(); + base.OnPageDestroy(new_windowId); + } - protected void initMSN() - { - // populate MSNs - if (File.Exists(Config.GetFolder(Config.Dir.Config) + "\\fritzmanager_msns.txt")) - { - using (StreamReader sr = new StreamReader(Config.GetFolder(Config.Dir.Config) + "\\fritzmanager_msns.txt")) + /// <summary> + /// deletes temp files (decoded voicebox messages) + /// </summary> + private void cleanup() { - while (!sr.EndOfStream) - { - string line = sr.ReadLine(); - string[] items = line.Split('='); - if (items.GetLength(0) > 1) msns.Add(items[0], items[1]); - } + // cleanup temp + foreach (string file in filesToDelete) + { + File.Delete(file); + } + + filesToDelete.Clear(); } - } - } - protected override void OnPageDestroy(int new_windowId) - { - cleanup(); - base.OnPageDestroy(new_windowId); - } + /// <summary> + /// update data for the views. + /// </summary> + /// <param name="forceReload">if set the update is forced, and data will be fetched in + /// any case.</param> + protected void update(bool forceReload) + { + if (currentMode == FritzBoxGuiMode.CallList) loadCallListFromFritzbox(forceReload); + else if (currentMode == FritzBoxGuiMode.VoiceBox) voiceboxItemList = VBReader.loadVoiceBoxDir(vBPath); + else if (currentMode == FritzBoxGuiMode.PhoneBook) + { + string str = fritz.loadPhoneBook(); - /// <summary> - /// deletes temp files (decoded voicebox messages) - /// </summary> - private void cleanup() - { - // cleanup temp - foreach (string file in filesToDelete) - { - File.Delete(file); - } + if (str != "") + { + XmlSerializer s = new XmlSerializer(typeof(FritzPhonebooks)); + fritzPhonebooks = (FritzPhonebooks)s.Deserialize(new StringReader(str)); + } + } - filesToDelete.Clear(); - } + refreshView(); - /// <summary> - /// update data for the views. - /// </summary> - /// <param name="forceReload">if set the update is forced, and data will be fetched in - /// any case.</param> - protected void update(bool forceReload) - { - if (currentMode == FritzBoxGuiMode.CallList) loadCallListFromFritzbox(forceReload); - else if (currentMode == FritzBoxGuiMode.VoiceBox) - { - if (!String.IsNullOrEmpty(vBPath)) voiceboxItemList = VBReader.loadVoiceBoxDir(vBPath); - else - { - Log.Debug("voice box path is not set"); - return; - } - } - else if (currentMode == FritzBoxGuiMode.PhoneBook) - { - string str = fritz.loadPhoneBook(); + UpdateButtonStates(); + } - if (str == "") ShowError(GUILocalizeStrings.Get(24)); // 24 = "Could not load phone book" - else + /// <summary> + /// refreshes the view. call when backing lists / maps have changed + /// </summary> + protected void refreshView() { - XmlSerializer s = new XmlSerializer(typeof (FritzPhonebooks)); - fritzPhonebooks = (FritzPhonebooks) s.Deserialize(new StringReader(str)); + if (currentMode == FritzBoxGuiMode.CallList) populateCallItems(); + else if (currentMode == FritzBoxGuiMode.VoiceBox) populateVoiceBoxItems(); + else if (currentMode == FritzBoxGuiMode.PhoneBook) populatePhonebookItems(); } - } - refreshView(); + /// <summary> + /// load internal callers list from csv contained in data + /// </summary> + /// <param name="data">holds csv list</param> + public void refreshCallData(byte[] data) + { + lock (sync) + { + callItemList = CallItem.load(new MemoryStream(data)); - UpdateButtonStates(); - } + // populate phone book + bool updatePhonebook = false; + int idx = 0; - /// <summary> - /// refreshes the view. call when backing lists / maps have changed - /// </summary> - protected void refreshView() - { - if (currentMode == FritzBoxGuiMode.CallList) populateCallItems(); - else if (currentMode == FritzBoxGuiMode.VoiceBox) populateVoiceBoxItems(); - else if (currentMode == FritzBoxGuiMode.PhoneBook) populatePhonebookItems(); - } + foreach (CallItem i in callItemList) + { + PhonebookItem pi = phoneBook[i.number]; - /// <summary> - /// load internal callers list from csv contained in data - /// </summary> - /// <param name="data">holds csv list</param> - public void refreshCallData(byte[] data) - { - lock (sync) - { - callItemList = CallItem.load(new MemoryStream(data)); + if (pi == null) + { + pi = new PhonebookItem(); + pi.number = i.number; + phoneBook[i.number] = pi; + } - // populate phoneBook - bool updatePhonebook = false; - int idx = 0; + if (i.name != "" && pi.name != i.name) + { + pi.name = i.name; + pi.fritzEntry = true; + pi.inverseLookupDone = false; + updatePhonebook = true; + } + else if (useInversSearch && !pi.inverseLookupDone && !pi.fritzEntry && i.number != "") worker.queue.Enqueue(new Task(Task.TaskAction.InversLookup, new object[] { i.number, idx })); - foreach (CallItem i in callItemList) - { - PhonebookItem pi = phoneBook[i.number]; + idx++; + } - if (pi == null) - { - pi = new PhonebookItem(); - pi.number = i.number; - phoneBook[i.number] = pi; - } + if (updatePhonebook) InternalPhoneBook.savePhonebook(phoneBook.Values, phoneBookPath); + } - if (i.name != "" && pi.name != i.name) - { - pi.name = i.name; - pi.fritzEntry = true; - pi.inverseLookupDone = false; - updatePhonebook = true; - } - else if (useInversSearch && !pi.inverseLookupDone && !pi.fritzEntry && i.number != "") worker.queue.Enqueue(new Task(Task.TaskAction.InversLookup, new object[] { i.number, idx })); - - idx++; + refreshView(); } - if (updatePhonebook) InternalPhoneBook.savePhonebook(phoneBook.Values, phoneBookPath); - } - - refreshView(); - } - - public void updatePhonebook(string number, string name, int index) - { - if (name != null && name != "" && phoneBook.Contains(number)) - { - lock (sync) + public void updatePhonebook(string number, string name, int index) { - phoneBook[number].inverseLookupDone = true; - phoneBookDirty = true; + if (name != null && name != "" && phoneBook.Contains(number)) + { + lock (sync) + { + phoneBook[number].inverseLookupDone = true; + phoneBookDirty = true; - if (name != number) - { - // search without result - phoneBook[number].name = name; + if (name != number) + { + // search without result + phoneBook[number].name = name; - if (currentMode == FritzBoxGuiMode.CallList) - { - GUIListItem item = facadeView[index]; + if (currentMode == FritzBoxGuiMode.CallList) + { + GUIListItem item = facadeView[index]; - if (item != null) - { - Log.Debug("replacing label {0} with {1}", item.Label2, name); - string l = name; + if (item != null) + { + Log.Debug("replacing label {0} with {1}", item.Label2, name); + string l = name; - if (l.Length > 30) l = name.Substring(0, 30); + if (l.Length > 30) l = name.Substring(0, 30); - item.Label2 = l; - } + item.Label2 = l; + } + } + } + } } - } } - } - } - protected void loadCallListFromFritzbox(bool forceReload) - { - GUIWaitCursor.Show(); - try - { - Log.Debug("load callitem from fritzbox"); - byte[] data = fritz.loadCallListData(forceReload); - refreshCallData(data); - } - catch (Exception e) - { - Log.Debug("Exception {0}", e.Message); - } - GUIWaitCursor.Hide(); - } + protected void loadCallListFromFritzbox(bool forceReload) + { + if (!String.IsNullOrEmpty(passwd)) + { + GUIWaitCursor.Show(); - protected string decode(VoiceBoxItem item) - { - System.Diagnostics.Process proc = new System.Diagnostics.Process(); - proc.EnableRaisingEvents = false; - proc.StartInfo.FileName = "speexdec"; - string target = Path.GetTempPath() + item.seq + ".wav"; - proc.StartInfo.Arguments = "\"" + vBPath + "\\rec\\" + item.filename + "\" \"" + target + "\""; - proc.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; + try + { + Log.Debug("load call list from FritzBox"); - proc.Start(); - proc.WaitForExit(); - proc.Close(); + byte[] data = fritz.loadCallListData(forceReload); - filesToDelete.Add(target); + refreshCallData(data); + } + catch (Exception e) + { + Log.Debug("Exception {0}", e.Message); + } - return target; - } + GUIWaitCursor.Hide(); + } + else Log.Debug("FritzBox password is not set. Call list cannot be loaded"); + } - protected void populatePhonebookItems() - { - facadeView.Clear(); - - if (fritzPhonebooks.Items == null || fritzPhonebooks.Items.GetLength(0) == 0) - { - Log.Debug("no fritz phone book items found"); + protected string decode(VoiceBoxItem item) + { + System.Diagnostics.Process proc = new System.Diagnostics.Process(); + proc.EnableRaisingEvents = false; + proc.StartInfo.FileName = "speexdec"; + string target = Path.GetTempPath() + item.seq + ".wav"; + proc.StartInfo.Arguments = "\"" + vBPath + "\\rec\\" + item.filename + "\" \"" + target + "\""; + proc.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; - return; - } - - Phonebook p = fritzPhonebooks.Items[0]; // always choose first phone book - int i = 0; - string thumbDir = Config.GetFolder(Config.Dir.Thumbs) + "\\yac\\"; + proc.Start(); + proc.WaitForExit(); + proc.Close(); - foreach (Contact c in p.contact) - { - string name = c.person[0].realName; + filesToDelete.Add(target); - foreach (TelephonyNumber number in c.telephony) - { - GUIListItem elem = new GUIListItem(); - elem.Label = name; - elem.Label2 = number.Value; - - if (elem.Label2.Length > 0) - { - if (File.Exists(thumbDir + c.person[0].realName + ".jpg")) elem.ThumbnailImage = thumbDir + c.person[0].realName + ".jpg"; - else elem.ThumbnailImage = thumbDir + "_noImage.png"; - - elem.Path = Convert.ToString(i++); - - facadeView.Add(elem); - } + return target; } - } - } - /// <summary> - /// fill in voice box i... [truncated message content] |
From: <hor...@us...> - 2011-11-29 19:50:36
|
Revision: 4357 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=4357&view=rev Author: horned-reaper Date: 2011-11-29 19:50:29 +0000 (Tue, 29 Nov 2011) Log Message: ----------- Modified Paths: -------------- trunk/plugins/FritzBox/Build/Build FritzBoxManager.bat trunk/plugins/FritzBox/FritzBox/bin/Release/FritzBox.dll trunk/plugins/FritzBox/FritzBox/bin/Release/FritzBox.pdb trunk/plugins/FritzBox/FritzBox/obj/Release/FritzBox.dll trunk/plugins/FritzBox/FritzBox/obj/Release/FritzBox.pdb trunk/plugins/FritzBox/MpeRelease/FritzBox.mpe1 trunk/plugins/FritzBox/MpeRelease/FritzBox.xmp2 trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/bin/Release/FritzBoxConfigTester.exe trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/bin/Release/FritzBoxConfigTester.pdb trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/obj/Release/FritzBoxConfigTester.exe trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/obj/Release/FritzBoxConfigTester.pdb trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/obj/Release/ResolveAssemblyReference.cache trunk/plugins/FritzBox/Tools/FritzBoxDebugger/bin/Release/FritzBoxDebugger.exe trunk/plugins/FritzBox/Tools/FritzBoxDebugger/bin/Release/FritzBoxDebugger.pdb trunk/plugins/FritzBox/Tools/FritzBoxDebugger/obj/Release/FritzBoxDebugger.exe trunk/plugins/FritzBox/Tools/FritzBoxDebugger/obj/Release/FritzBoxDebugger.pdb Added Paths: ----------- trunk/plugins/FritzBox/Build/Build.log trunk/plugins/FritzBox/releases/FritzBox_v0.3.5.0.mpe1 trunk/plugins/FritzBox/releases/FritzBox_v0.3.5.4356.mpe1 Removed Paths: ------------- trunk/plugins/FritzBox/Build/build_.log trunk/plugins/FritzBox/FritzBox/Skin/GenericSkin/ Modified: trunk/plugins/FritzBox/Build/Build FritzBoxManager.bat =================================================================== --- trunk/plugins/FritzBox/Build/Build FritzBoxManager.bat 2011-11-29 19:40:00 UTC (rev 4356) +++ trunk/plugins/FritzBox/Build/Build FritzBoxManager.bat 2011-11-29 19:50:29 UTC (rev 4357) @@ -1,6 +1,3 @@ -D: -cd \FritzBox\Build - @echo off REM Select program path based on current machine environment Added: trunk/plugins/FritzBox/Build/Build.log =================================================================== --- trunk/plugins/FritzBox/Build/Build.log (rev 0) +++ trunk/plugins/FritzBox/Build/Build.log 2011-11-29 19:50:29 UTC (rev 4357) @@ -0,0 +1,195 @@ + +Running : C:\Program Files\TortoiseSVN\bin\SubWCRev.exe +SVN Version: 4356 +Updating: D:\FritzBox\FritzBox\Properties\AssemblyInfo.cs +Updating: D:\FritzBox\MP2version\Listeners\FritzBox\Properties\AssemblyInfo.cs +Updating: D:\FritzBox\MP2version\Properties\AssemblyInfo.cs +Updating: D:\FritzBox\Tools\FritzBoxConfigTester\Properties\AssemblyInfo.cs +Updating: D:\FritzBox\Tools\FritzBoxDebugger\Properties\AssemblyInfo.cs +Microsoft (R) Build Engine Version 3.5.30729.1 +[Microsoft .NET Framework, Version 2.0.50727.3625] +Copyright (C) Microsoft Corporation 2007. All rights reserved. + +Build started 29.11.2011 20:48:19. +Project "D:\FritzBox\FritzBox.sln" on node 0 (Rebuild target(s)). + Building solution configuration "Release|Mixed Platforms". +Project "D:\FritzBox\FritzBox.sln" (1) is building "D:\FritzBox\FritzBox\FritzBox.csproj" (2) on node 0 (Rebuild target(s)). +Project file contains ToolsVersion="4.0", which is not supported by this version of MSBuild. Treating the project as if it had ToolsVersion="3.5". +CoreClean: + Deleting file "D:\FritzBox\FritzBox\bin\Release\FritzBox.dll". + Deleting file "D:\FritzBox\FritzBox\bin\Release\FritzBox.pdb". + Deleting file "D:\FritzBox\FritzBox\obj\Release\ResolveAssemblyReference.cache". + Deleting file "D:\FritzBox\FritzBox\obj\Release\FritzBox.Properties.Resources.resources". + Deleting file "D:\FritzBox\FritzBox\obj\Release\FritzBox.FritzBoxConfig.resources". + Deleting file "D:\FritzBox\FritzBox\obj\Release\FritzBox.csproj.GenerateResource.Cache". + Deleting file "D:\FritzBox\FritzBox\obj\Release\FritzBox.dll". + Deleting file "D:\FritzBox\FritzBox\obj\Release\FritzBox.pdb". +CoreResGen: + Processing resource file "Properties\Resources.resx" into "obj\Release\FritzBox.Properties.Resources.resources". + Processing resource file "FritzBoxConfig.resx" into "obj\Release\FritzBox.FritzBoxConfig.resources". +CopyFilesToOutputDirectory: + Copying file from "obj\Release\FritzBox.dll" to "bin\Release\FritzBox.dll". + FritzBox -> D:\FritzBox\FritzBox\bin\Release\FritzBox.dll + Copying file from "obj\Release\FritzBox.pdb" to "bin\Release\FritzBox.pdb". +Done Building Project "D:\FritzBox\FritzBox\FritzBox.csproj" (Rebuild target(s)). +Project "D:\FritzBox\FritzBox.sln" (1) is building "D:\FritzBox\Tools\FritzBoxConfigTester\FritzBoxConfigTester.csproj" (3) on node 0 (Rebuild target(s)). +Project file contains ToolsVersion="4.0", which is not supported by this version of MSBuild. Treating the project as if it had ToolsVersion="3.5". +CoreClean: + Deleting file "D:\FritzBox\Tools\FritzBoxConfigTester\bin\Release\FritzBoxConfigTester.exe.config". + Deleting file "D:\FritzBox\Tools\FritzBoxConfigTester\bin\Release\FritzBoxConfigTester.exe". + Deleting file "D:\FritzBox\Tools\FritzBoxConfigTester\bin\Release\FritzBoxConfigTester.pdb". + Deleting file "D:\FritzBox\Tools\FritzBoxConfigTester\obj\Release\ResolveAssemblyReference.cache". + Deleting file "D:\FritzBox\Tools\FritzBoxConfigTester\obj\Release\FritzBoxConfigTester.exe". + Deleting file "D:\FritzBox\Tools\FritzBoxConfigTester\obj\Release\FritzBoxConfigTester.pdb". +Project "D:\FritzBox\Tools\FritzBoxConfigTester\FritzBoxConfigTester.csproj" (3) is building "D:\FritzBox\FritzBox\FritzBox.csproj" (2:2) on node 0 (GetTargetPath target(s)). +Project file contains ToolsVersion="4.0", which is not supported by this version of MSBuild. Treating the project as if it had ToolsVersion="3.5". +Done Building Project "D:\FritzBox\FritzBox\FritzBox.csproj" (GetTargetPath target(s)). +Project "D:\FritzBox\Tools\FritzBoxConfigTester\FritzBoxConfigTester.csproj" (3) is building "D:\FritzBox\FritzBox\FritzBox.csproj" (2:3) on node 0 (GetNativeManifest target(s)). +Project file contains ToolsVersion="4.0", which is not supported by this version of MSBuild. Treating the project as if it had ToolsVersion="3.5". +Done Building Project "D:\FritzBox\FritzBox\FritzBox.csproj" (GetNativeManifest target(s)). +ResolveAssemblyReferences: + Consider app.config remapping of assembly "System, Culture=neutral, PublicKeyToken=b77a5c561934e089" from Version "1.0.5000.0" [] to Version "2.0.0.0" [C:\WINDOWS\assembly\GAC_MSIL\System\2.0.0.0__b77a5c561934e089\System.dll] to solve conflict and get rid of warning. + Consider app.config remapping of assembly "System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089" from Version "1.0.5000.0" [] to Version "2.0.0.0" [C:\WINDOWS\assembly\GAC_MSIL\System.Windows.Forms\2.0.0.0__b77a5c561934e089\System.Windows.Forms.dll] to solve conflict and get rid of warning. + Consider app.config remapping of assembly "Microsoft.VisualC, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" from Version "7.0.5000.0" [] to Version "8.0.0.0" [C:\WINDOWS\assembly\GAC_MSIL\Microsoft.VisualC\8.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualC.dll] to solve conflict and get rid of warning. + Consider app.config remapping of assembly "System.Drawing, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" from Version "1.0.5000.0" [] to Version "2.0.0.0" [C:\WINDOWS\assembly\GAC_MSIL\System.Drawing\2.0.0.0__b03f5f7f11d50a3a\System.Drawing.dll] to solve conflict and get rid of warning. +C:\WINDOWS\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets : warning MSB3247: Found conflicts between different versions of the same dependent assembly. +Project "D:\FritzBox\Tools\FritzBoxConfigTester\FritzBoxConfigTester.csproj" (3) is building "D:\FritzBox\FritzBox\FritzBox.csproj" (2:4) on node 0 (GetCopyToOutputDirectoryItems target(s)). +Project file contains ToolsVersion="4.0", which is not supported by this version of MSBuild. Treating the project as if it had ToolsVersion="3.5". +Done Building Project "D:\FritzBox\FritzBox\FritzBox.csproj" (GetCopyToOutputDirectoryItems target(s)). +_CopyAppConfigFile: + Copying file from "app.config" to ".\bin\Release\FritzBoxConfigTester.exe.config". +CopyFilesToOutputDirectory: + Copying file from "obj\Release\FritzBoxConfigTester.exe" to ".\bin\Release\FritzBoxConfigTester.exe". + FritzBoxConfigTester -> D:\FritzBox\Tools\FritzBoxConfigTester\bin\Release\FritzBoxConfigTester.exe + Copying file from "obj\Release\FritzBoxConfigTester.pdb" to ".\bin\Release\FritzBoxConfigTester.pdb". +Done Building Project "D:\FritzBox\Tools\FritzBoxConfigTester\FritzBoxConfigTester.csproj" (Rebuild target(s)). +Project "D:\FritzBox\FritzBox.sln" (1) is building "D:\FritzBox\Tools\FritzBoxDebugger\FritzBoxDebugger.csproj" (4) on node 0 (Rebuild target(s)). +Project file contains ToolsVersion="4.0", which is not supported by this version of MSBuild. Treating the project as if it had ToolsVersion="3.5". +CoreClean: + Deleting file "D:\FritzBox\Tools\FritzBoxDebugger\bin\Release\FritzBoxDebugger.exe.config". + Deleting file "D:\FritzBox\Tools\FritzBoxDebugger\bin\Release\FritzBoxDebugger.exe". + Deleting file "D:\FritzBox\Tools\FritzBoxDebugger\bin\Release\FritzBoxDebugger.pdb". + Deleting file "D:\FritzBox\Tools\FritzBoxDebugger\obj\Release\FritzBoxDebugger.DebugForm.resources". + Deleting file "D:\FritzBox\Tools\FritzBoxDebugger\obj\Release\FritzBoxDebugger.csproj.GenerateResource.Cache". + Deleting file "D:\FritzBox\Tools\FritzBoxDebugger\obj\Release\FritzBoxDebugger.exe". + Deleting file "D:\FritzBox\Tools\FritzBoxDebugger\obj\Release\FritzBoxDebugger.pdb". +ResolveAssemblyReferences: + Consider app.config remapping of assembly "System, Culture=neutral, PublicKeyToken=b77a5c561934e089" from Version "1.0.5000.0" [] to Version "2.0.0.0" [C:\WINDOWS\assembly\GAC_MSIL\System\2.0.0.0__b77a5c561934e089\System.dll] to solve conflict and get rid of warning. + Consider app.config remapping of assembly "System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089" from Version "1.0.5000.0" [] to Version "2.0.0.0" [C:\WINDOWS\assembly\GAC_MSIL\System.Windows.Forms\2.0.0.0__b77a5c561934e089\System.Windows.Forms.dll] to solve conflict and get rid of warning. + Consider app.config remapping of assembly "Microsoft.VisualC, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" from Version "7.0.5000.0" [] to Version "8.0.0.0" [C:\WINDOWS\assembly\GAC_MSIL\Microsoft.VisualC\8.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualC.dll] to solve conflict and get rid of warning. + Consider app.config remapping of assembly "System.Drawing, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" from Version "1.0.5000.0" [] to Version "2.0.0.0" [C:\WINDOWS\assembly\GAC_MSIL\System.Drawing\2.0.0.0__b03f5f7f11d50a3a\System.Drawing.dll] to solve conflict and get rid of warning. +C:\WINDOWS\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets : warning MSB3247: Found conflicts between different versions of the same dependent assembly. +CoreResGen: + Processing resource file "DebugForm.resx" into "obj\Release\FritzBoxDebugger.DebugForm.resources". +_CopyAppConfigFile: + Copying file from "app.config" to ".\bin\Release\FritzBoxDebugger.exe.config". +CopyFilesToOutputDirectory: + Copying file from "obj\Release\FritzBoxDebugger.exe" to ".\bin\Release\FritzBoxDebugger.exe". + FritzBoxDebugger -> D:\FritzBox\Tools\FritzBoxDebugger\bin\Release\FritzBoxDebugger.exe + Copying file from "obj\Release\FritzBoxDebugger.pdb" to ".\bin\Release\FritzBoxDebugger.pdb". +Done Building Project "D:\FritzBox\Tools\FritzBoxDebugger\FritzBoxDebugger.csproj" (Rebuild target(s)). +Done Building Project "D:\FritzBox\FritzBox.sln" (Rebuild target(s)). + +Build succeeded. + +"D:\FritzBox\FritzBox.sln" (Rebuild target) (1) -> +"D:\FritzBox\Tools\FritzBoxConfigTester\FritzBoxConfigTester.csproj" (Rebuild target) (3) -> +(ResolveAssemblyReferences target) -> + C:\WINDOWS\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets : warning MSB3247: Found conflicts between different versions of the same dependent assembly. + + +"D:\FritzBox\FritzBox.sln" (Rebuild target) (1) -> +"D:\FritzBox\Tools\FritzBoxDebugger\FritzBoxDebugger.csproj" (Rebuild target) (4) -> + C:\WINDOWS\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets : warning MSB3247: Found conflicts between different versions of the same dependent assembly. + + 2 Warning(s) + 0 Error(s) + +Time Elapsed 00:00:02.06 +Reverting to build 0 +Updating: D:\FritzBox\FritzBox\Properties\AssemblyInfo.cs +Updating: D:\FritzBox\MP2version\Listeners\FritzBox\Properties\AssemblyInfo.cs +Updating: D:\FritzBox\MP2version\Properties\AssemblyInfo.cs +Updating: D:\FritzBox\Tools\FritzBoxConfigTester\Properties\AssemblyInfo.cs +Updating: D:\FritzBox\Tools\FritzBoxDebugger\Properties\AssemblyInfo.cs +..\FritzBox\bin\Release\FritzBox.dll +1 File(s) copied +..\FritzBox\Resources\speexdec.exe +1 File(s) copied +..\FritzBox\Skin\Black & White\FritzManager.xml +..\FritzBox\Skin\Black & White\Media\hover_FritzBox.png +..\FritzBox\Skin\Black & White\Media\FritzBox\callin.png +..\FritzBox\Skin\Black & White\Media\FritzBox\CallMonitor.Missing.png +..\FritzBox\Skin\Black & White\Media\FritzBox\CallMonitor.Unknown.png +..\FritzBox\Skin\Black & White\Media\FritzBox\callout.png +..\FritzBox\Skin\Black & White\Media\FritzBox\rejected.png +..\FritzBox\Skin\Blue3\FritzManager.xml +..\FritzBox\Skin\Blue3\Media\hover_FritzBox.png +..\FritzBox\Skin\Blue3\Media\FritzBox\callin.png +..\FritzBox\Skin\Blue3\Media\FritzBox\CallMonitor.Missing.png +..\FritzBox\Skin\Blue3\Media\FritzBox\CallMonitor.Unknown.png +..\FritzBox\Skin\Blue3\Media\FritzBox\callout.png +..\FritzBox\Skin\Blue3\Media\FritzBox\rejected.png +..\FritzBox\Skin\Default\FritzManager.xml +..\FritzBox\Skin\Default\Media\hover_FritzBox.png +..\FritzBox\Skin\Default\Media\FritzBox\callin.png +..\FritzBox\Skin\Default\Media\FritzBox\CallMonitor.Missing.png +..\FritzBox\Skin\Default\Media\FritzBox\CallMonitor.Unknown.png +..\FritzBox\Skin\Default\Media\FritzBox\callout.png +..\FritzBox\Skin\Default\Media\FritzBox\rejected.png +..\FritzBox\Skin\DefaultWide\FritzManager.xml +..\FritzBox\Skin\DefaultWide\Media\hover_FritzBox.png +..\FritzBox\Skin\DefaultWide\Media\FritzBox\callin.png +..\FritzBox\Skin\DefaultWide\Media\FritzBox\CallMonitor.Missing.png +..\FritzBox\Skin\DefaultWide\Media\FritzBox\CallMonitor.Unknown.png +..\FritzBox\Skin\DefaultWide\Media\FritzBox\callout.png +..\FritzBox\Skin\DefaultWide\Media\FritzBox\rejected.png +..\FritzBox\Skin\Maya\FritzManager.xml +..\FritzBox\Skin\Maya\Media\hover_FritzBox.png +..\FritzBox\Skin\Maya\Media\FritzBox\callin.png +..\FritzBox\Skin\Maya\Media\FritzBox\CallMonitor.Missing.png +..\FritzBox\Skin\Maya\Media\FritzBox\CallMonitor.Unknown.png +..\FritzBox\Skin\Maya\Media\FritzBox\callout.png +..\FritzBox\Skin\Maya\Media\FritzBox\rejected.png +35 File(s) copied +..\FritzBox\Languages\strings_de.xml +..\FritzBox\Languages\strings_el.xml +..\FritzBox\Languages\strings_en-US.xml +..\FritzBox\Languages\strings_en.xml +..\FritzBox\Languages\strings_es.xml +..\FritzBox\Languages\strings_fr.xml +..\FritzBox\Languages\strings_it.xml +..\FritzBox\Languages\strings_nl.xml +..\FritzBox\Languages\strings_ru.xml +..\FritzBox\Languages\Unsupported\strings_bg.xml +..\FritzBox\Languages\Unsupported\strings_ca.xml +..\FritzBox\Languages\Unsupported\strings_cs.xml +..\FritzBox\Languages\Unsupported\strings_cy-GB.xml +..\FritzBox\Languages\Unsupported\strings_da.xml +..\FritzBox\Languages\Unsupported\strings_et.xml +..\FritzBox\Languages\Unsupported\strings_eu.xml +..\FritzBox\Languages\Unsupported\strings_fi.xml +..\FritzBox\Languages\Unsupported\strings_fo.xml +..\FritzBox\Languages\Unsupported\strings_he.xml +..\FritzBox\Languages\Unsupported\strings_hr.xml +..\FritzBox\Languages\Unsupported\strings_hu.xml +..\FritzBox\Languages\Unsupported\strings_id.xml +..\FritzBox\Languages\Unsupported\strings_is.xml +..\FritzBox\Languages\Unsupported\strings_ko.xml +..\FritzBox\Languages\Unsupported\strings_mk.xml +..\FritzBox\Languages\Unsupported\strings_no.xml +..\FritzBox\Languages\Unsupported\strings_pl.xml +..\FritzBox\Languages\Unsupported\strings_pt-BR.xml +..\FritzBox\Languages\Unsupported\strings_pt.xml +..\FritzBox\Languages\Unsupported\strings_ro.xml +..\FritzBox\Languages\Unsupported\strings_sk.xml +..\FritzBox\Languages\Unsupported\strings_sl.xml +..\FritzBox\Languages\Unsupported\strings_sv.xml +..\FritzBox\Languages\Unsupported\strings_tr.xml +..\FritzBox\Languages\Unsupported\strings_uk.xml +..\FritzBox\Languages\Unsupported\strings_zh-CN.xml +36 File(s) copied +MpeMaker version: 1.2.1.0 +Build started at 20:48:23 +Building "D:\FritzBox\MpeRelease\FritzBox.xmp2" +Output: "..\MpeRelease\FritzBox.mpe1" Deleted: trunk/plugins/FritzBox/Build/build_.log =================================================================== --- trunk/plugins/FritzBox/Build/build_.log 2011-11-29 19:40:00 UTC (rev 4356) +++ trunk/plugins/FritzBox/Build/build_.log 2011-11-29 19:50:29 UTC (rev 4357) @@ -1,195 +0,0 @@ - -Running : C:\Program Files\TortoiseSVN\bin\SubWCRev.exe -SVN Version: 4349 -Updating: D:\FritzBox\FritzBox\Properties\AssemblyInfo.cs -Updating: D:\FritzBox\MP2version\Listeners\FritzBox\Properties\AssemblyInfo.cs -Updating: D:\FritzBox\MP2version\Properties\AssemblyInfo.cs -Updating: D:\FritzBox\Tools\FritzBoxConfigTester\Properties\AssemblyInfo.cs -Updating: D:\FritzBox\Tools\FritzBoxDebugger\Properties\AssemblyInfo.cs -Microsoft (R) Build Engine Version 3.5.30729.1 -[Microsoft .NET Framework, Version 2.0.50727.3625] -Copyright (C) Microsoft Corporation 2007. All rights reserved. - -Build started 28.11.2011 23:50:43. -Project "D:\FritzBox\FritzBox.sln" on node 0 (Rebuild target(s)). - Building solution configuration "Release|Mixed Platforms". -Project "D:\FritzBox\FritzBox.sln" (1) is building "D:\FritzBox\FritzBox\FritzBox.csproj" (2) on node 0 (Rebuild target(s)). -Project file contains ToolsVersion="4.0", which is not supported by this version of MSBuild. Treating the project as if it had ToolsVersion="3.5". -CoreClean: - Deleting file "D:\FritzBox\FritzBox\bin\Release\FritzBox.dll". - Deleting file "D:\FritzBox\FritzBox\bin\Release\FritzBox.pdb". - Deleting file "D:\FritzBox\FritzBox\obj\Release\ResolveAssemblyReference.cache". - Deleting file "D:\FritzBox\FritzBox\obj\Release\FritzBox.Properties.Resources.resources". - Deleting file "D:\FritzBox\FritzBox\obj\Release\FritzBox.FritzBoxConfig.resources". - Deleting file "D:\FritzBox\FritzBox\obj\Release\FritzBox.csproj.GenerateResource.Cache". - Deleting file "D:\FritzBox\FritzBox\obj\Release\FritzBox.dll". - Deleting file "D:\FritzBox\FritzBox\obj\Release\FritzBox.pdb". -CoreResGen: - Processing resource file "Properties\Resources.resx" into "obj\Release\FritzBox.Properties.Resources.resources". - Processing resource file "FritzBoxConfig.resx" into "obj\Release\FritzBox.FritzBoxConfig.resources". -CopyFilesToOutputDirectory: - Copying file from "obj\Release\FritzBox.dll" to "bin\Release\FritzBox.dll". - FritzBox -> D:\FritzBox\FritzBox\bin\Release\FritzBox.dll - Copying file from "obj\Release\FritzBox.pdb" to "bin\Release\FritzBox.pdb". -Done Building Project "D:\FritzBox\FritzBox\FritzBox.csproj" (Rebuild target(s)). -Project "D:\FritzBox\FritzBox.sln" (1) is building "D:\FritzBox\Tools\FritzBoxConfigTester\FritzBoxConfigTester.csproj" (3) on node 0 (Rebuild target(s)). -Project file contains ToolsVersion="4.0", which is not supported by this version of MSBuild. Treating the project as if it had ToolsVersion="3.5". -CoreClean: - Deleting file "D:\FritzBox\Tools\FritzBoxConfigTester\bin\Release\FritzBoxConfigTester.exe.config". - Deleting file "D:\FritzBox\Tools\FritzBoxConfigTester\bin\Release\FritzBoxConfigTester.exe". - Deleting file "D:\FritzBox\Tools\FritzBoxConfigTester\bin\Release\FritzBoxConfigTester.pdb". - Deleting file "D:\FritzBox\Tools\FritzBoxConfigTester\obj\Release\ResolveAssemblyReference.cache". - Deleting file "D:\FritzBox\Tools\FritzBoxConfigTester\obj\Release\FritzBoxConfigTester.exe". - Deleting file "D:\FritzBox\Tools\FritzBoxConfigTester\obj\Release\FritzBoxConfigTester.pdb". -Project "D:\FritzBox\Tools\FritzBoxConfigTester\FritzBoxConfigTester.csproj" (3) is building "D:\FritzBox\FritzBox\FritzBox.csproj" (2:2) on node 0 (GetTargetPath target(s)). -Project file contains ToolsVersion="4.0", which is not supported by this version of MSBuild. Treating the project as if it had ToolsVersion="3.5". -Done Building Project "D:\FritzBox\FritzBox\FritzBox.csproj" (GetTargetPath target(s)). -Project "D:\FritzBox\Tools\FritzBoxConfigTester\FritzBoxConfigTester.csproj" (3) is building "D:\FritzBox\FritzBox\FritzBox.csproj" (2:3) on node 0 (GetNativeManifest target(s)). -Project file contains ToolsVersion="4.0", which is not supported by this version of MSBuild. Treating the project as if it had ToolsVersion="3.5". -Done Building Project "D:\FritzBox\FritzBox\FritzBox.csproj" (GetNativeManifest target(s)). -ResolveAssemblyReferences: - Consider app.config remapping of assembly "System, Culture=neutral, PublicKeyToken=b77a5c561934e089" from Version "1.0.5000.0" [] to Version "2.0.0.0" [C:\WINDOWS\assembly\GAC_MSIL\System\2.0.0.0__b77a5c561934e089\System.dll] to solve conflict and get rid of warning. - Consider app.config remapping of assembly "System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089" from Version "1.0.5000.0" [] to Version "2.0.0.0" [C:\WINDOWS\assembly\GAC_MSIL\System.Windows.Forms\2.0.0.0__b77a5c561934e089\System.Windows.Forms.dll] to solve conflict and get rid of warning. - Consider app.config remapping of assembly "Microsoft.VisualC, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" from Version "7.0.5000.0" [] to Version "8.0.0.0" [C:\WINDOWS\assembly\GAC_MSIL\Microsoft.VisualC\8.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualC.dll] to solve conflict and get rid of warning. - Consider app.config remapping of assembly "System.Drawing, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" from Version "1.0.5000.0" [] to Version "2.0.0.0" [C:\WINDOWS\assembly\GAC_MSIL\System.Drawing\2.0.0.0__b03f5f7f11d50a3a\System.Drawing.dll] to solve conflict and get rid of warning. -C:\WINDOWS\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets : warning MSB3247: Found conflicts between different versions of the same dependent assembly. -Project "D:\FritzBox\Tools\FritzBoxConfigTester\FritzBoxConfigTester.csproj" (3) is building "D:\FritzBox\FritzBox\FritzBox.csproj" (2:4) on node 0 (GetCopyToOutputDirectoryItems target(s)). -Project file contains ToolsVersion="4.0", which is not supported by this version of MSBuild. Treating the project as if it had ToolsVersion="3.5". -Done Building Project "D:\FritzBox\FritzBox\FritzBox.csproj" (GetCopyToOutputDirectoryItems target(s)). -_CopyAppConfigFile: - Copying file from "app.config" to ".\bin\Release\FritzBoxConfigTester.exe.config". -CopyFilesToOutputDirectory: - Copying file from "obj\Release\FritzBoxConfigTester.exe" to ".\bin\Release\FritzBoxConfigTester.exe". - FritzBoxConfigTester -> D:\FritzBox\Tools\FritzBoxConfigTester\bin\Release\FritzBoxConfigTester.exe - Copying file from "obj\Release\FritzBoxConfigTester.pdb" to ".\bin\Release\FritzBoxConfigTester.pdb". -Done Building Project "D:\FritzBox\Tools\FritzBoxConfigTester\FritzBoxConfigTester.csproj" (Rebuild target(s)). -Project "D:\FritzBox\FritzBox.sln" (1) is building "D:\FritzBox\Tools\FritzBoxDebugger\FritzBoxDebugger.csproj" (4) on node 0 (Rebuild target(s)). -Project file contains ToolsVersion="4.0", which is not supported by this version of MSBuild. Treating the project as if it had ToolsVersion="3.5". -CoreClean: - Deleting file "D:\FritzBox\Tools\FritzBoxDebugger\bin\Release\FritzBoxDebugger.exe.config". - Deleting file "D:\FritzBox\Tools\FritzBoxDebugger\bin\Release\FritzBoxDebugger.exe". - Deleting file "D:\FritzBox\Tools\FritzBoxDebugger\bin\Release\FritzBoxDebugger.pdb". - Deleting file "D:\FritzBox\Tools\FritzBoxDebugger\obj\Release\FritzBoxDebugger.DebugForm.resources". - Deleting file "D:\FritzBox\Tools\FritzBoxDebugger\obj\Release\FritzBoxDebugger.csproj.GenerateResource.Cache". - Deleting file "D:\FritzBox\Tools\FritzBoxDebugger\obj\Release\FritzBoxDebugger.exe". - Deleting file "D:\FritzBox\Tools\FritzBoxDebugger\obj\Release\FritzBoxDebugger.pdb". -ResolveAssemblyReferences: - Consider app.config remapping of assembly "System, Culture=neutral, PublicKeyToken=b77a5c561934e089" from Version "1.0.5000.0" [] to Version "2.0.0.0" [C:\WINDOWS\assembly\GAC_MSIL\System\2.0.0.0__b77a5c561934e089\System.dll] to solve conflict and get rid of warning. - Consider app.config remapping of assembly "System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089" from Version "1.0.5000.0" [] to Version "2.0.0.0" [C:\WINDOWS\assembly\GAC_MSIL\System.Windows.Forms\2.0.0.0__b77a5c561934e089\System.Windows.Forms.dll] to solve conflict and get rid of warning. - Consider app.config remapping of assembly "Microsoft.VisualC, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" from Version "7.0.5000.0" [] to Version "8.0.0.0" [C:\WINDOWS\assembly\GAC_MSIL\Microsoft.VisualC\8.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualC.dll] to solve conflict and get rid of warning. - Consider app.config remapping of assembly "System.Drawing, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" from Version "1.0.5000.0" [] to Version "2.0.0.0" [C:\WINDOWS\assembly\GAC_MSIL\System.Drawing\2.0.0.0__b03f5f7f11d50a3a\System.Drawing.dll] to solve conflict and get rid of warning. -C:\WINDOWS\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets : warning MSB3247: Found conflicts between different versions of the same dependent assembly. -CoreResGen: - Processing resource file "DebugForm.resx" into "obj\Release\FritzBoxDebugger.DebugForm.resources". -_CopyAppConfigFile: - Copying file from "app.config" to ".\bin\Release\FritzBoxDebugger.exe.config". -CopyFilesToOutputDirectory: - Copying file from "obj\Release\FritzBoxDebugger.exe" to ".\bin\Release\FritzBoxDebugger.exe". - FritzBoxDebugger -> D:\FritzBox\Tools\FritzBoxDebugger\bin\Release\FritzBoxDebugger.exe - Copying file from "obj\Release\FritzBoxDebugger.pdb" to ".\bin\Release\FritzBoxDebugger.pdb". -Done Building Project "D:\FritzBox\Tools\FritzBoxDebugger\FritzBoxDebugger.csproj" (Rebuild target(s)). -Done Building Project "D:\FritzBox\FritzBox.sln" (Rebuild target(s)). - -Build succeeded. - -"D:\FritzBox\FritzBox.sln" (Rebuild target) (1) -> -"D:\FritzBox\Tools\FritzBoxConfigTester\FritzBoxConfigTester.csproj" (Rebuild target) (3) -> -(ResolveAssemblyReferences target) -> - C:\WINDOWS\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets : warning MSB3247: Found conflicts between different versions of the same dependent assembly. - - -"D:\FritzBox\FritzBox.sln" (Rebuild target) (1) -> -"D:\FritzBox\Tools\FritzBoxDebugger\FritzBoxDebugger.csproj" (Rebuild target) (4) -> - C:\WINDOWS\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets : warning MSB3247: Found conflicts between different versions of the same dependent assembly. - - 2 Warning(s) - 0 Error(s) - -Time Elapsed 00:00:02.39 -Reverting to build 0 -Updating: D:\FritzBox\FritzBox\Properties\AssemblyInfo.cs -Updating: D:\FritzBox\MP2version\Listeners\FritzBox\Properties\AssemblyInfo.cs -Updating: D:\FritzBox\MP2version\Properties\AssemblyInfo.cs -Updating: D:\FritzBox\Tools\FritzBoxConfigTester\Properties\AssemblyInfo.cs -Updating: D:\FritzBox\Tools\FritzBoxDebugger\Properties\AssemblyInfo.cs -..\FritzBox\bin\Release\FritzBox.dll -1 File(s) copied -..\FritzBox\Resources\speexdec.exe -1 File(s) copied -..\FritzBox\Skin\Black & White\FritzManager.xml -..\FritzBox\Skin\Black & White\Media\hover_FritzBox.png -..\FritzBox\Skin\Black & White\Media\FritzBox\callin.png -..\FritzBox\Skin\Black & White\Media\FritzBox\CallMonitor.Missing.png -..\FritzBox\Skin\Black & White\Media\FritzBox\CallMonitor.Unknown.png -..\FritzBox\Skin\Black & White\Media\FritzBox\callout.png -..\FritzBox\Skin\Black & White\Media\FritzBox\rejected.png -..\FritzBox\Skin\Blue3\FritzManager.xml -..\FritzBox\Skin\Blue3\Media\hover_FritzBox.png -..\FritzBox\Skin\Blue3\Media\FritzBox\callin.png -..\FritzBox\Skin\Blue3\Media\FritzBox\CallMonitor.Missing.png -..\FritzBox\Skin\Blue3\Media\FritzBox\CallMonitor.Unknown.png -..\FritzBox\Skin\Blue3\Media\FritzBox\callout.png -..\FritzBox\Skin\Blue3\Media\FritzBox\rejected.png -..\FritzBox\Skin\Default\FritzManager.xml -..\FritzBox\Skin\Default\Media\hover_FritzBox.png -..\FritzBox\Skin\Default\Media\FritzBox\callin.png -..\FritzBox\Skin\Default\Media\FritzBox\CallMonitor.Missing.png -..\FritzBox\Skin\Default\Media\FritzBox\CallMonitor.Unknown.png -..\FritzBox\Skin\Default\Media\FritzBox\callout.png -..\FritzBox\Skin\Default\Media\FritzBox\rejected.png -..\FritzBox\Skin\DefaultWide\FritzManager.xml -..\FritzBox\Skin\DefaultWide\Media\hover_FritzBox.png -..\FritzBox\Skin\DefaultWide\Media\FritzBox\callin.png -..\FritzBox\Skin\DefaultWide\Media\FritzBox\CallMonitor.Missing.png -..\FritzBox\Skin\DefaultWide\Media\FritzBox\CallMonitor.Unknown.png -..\FritzBox\Skin\DefaultWide\Media\FritzBox\callout.png -..\FritzBox\Skin\DefaultWide\Media\FritzBox\rejected.png -..\FritzBox\Skin\Maya\FritzManager.xml -..\FritzBox\Skin\Maya\Media\hover_FritzBox.png -..\FritzBox\Skin\Maya\Media\FritzBox\callin.png -..\FritzBox\Skin\Maya\Media\FritzBox\CallMonitor.Missing.png -..\FritzBox\Skin\Maya\Media\FritzBox\CallMonitor.Unknown.png -..\FritzBox\Skin\Maya\Media\FritzBox\callout.png -..\FritzBox\Skin\Maya\Media\FritzBox\rejected.png -35 File(s) copied -..\FritzBox\Languages\strings_de.xml -..\FritzBox\Languages\strings_el.xml -..\FritzBox\Languages\strings_en-US.xml -..\FritzBox\Languages\strings_en.xml -..\FritzBox\Languages\strings_es.xml -..\FritzBox\Languages\strings_fr.xml -..\FritzBox\Languages\strings_it.xml -..\FritzBox\Languages\strings_nl.xml -..\FritzBox\Languages\strings_ru.xml -..\FritzBox\Languages\Unsupported\strings_bg.xml -..\FritzBox\Languages\Unsupported\strings_ca.xml -..\FritzBox\Languages\Unsupported\strings_cs.xml -..\FritzBox\Languages\Unsupported\strings_cy-GB.xml -..\FritzBox\Languages\Unsupported\strings_da.xml -..\FritzBox\Languages\Unsupported\strings_et.xml -..\FritzBox\Languages\Unsupported\strings_eu.xml -..\FritzBox\Languages\Unsupported\strings_fi.xml -..\FritzBox\Languages\Unsupported\strings_fo.xml -..\FritzBox\Languages\Unsupported\strings_he.xml -..\FritzBox\Languages\Unsupported\strings_hr.xml -..\FritzBox\Languages\Unsupported\strings_hu.xml -..\FritzBox\Languages\Unsupported\strings_id.xml -..\FritzBox\Languages\Unsupported\strings_is.xml -..\FritzBox\Languages\Unsupported\strings_ko.xml -..\FritzBox\Languages\Unsupported\strings_mk.xml -..\FritzBox\Languages\Unsupported\strings_no.xml -..\FritzBox\Languages\Unsupported\strings_pl.xml -..\FritzBox\Languages\Unsupported\strings_pt-BR.xml -..\FritzBox\Languages\Unsupported\strings_pt.xml -..\FritzBox\Languages\Unsupported\strings_ro.xml -..\FritzBox\Languages\Unsupported\strings_sk.xml -..\FritzBox\Languages\Unsupported\strings_sl.xml -..\FritzBox\Languages\Unsupported\strings_sv.xml -..\FritzBox\Languages\Unsupported\strings_tr.xml -..\FritzBox\Languages\Unsupported\strings_uk.xml -..\FritzBox\Languages\Unsupported\strings_zh-CN.xml -36 File(s) copied -MpeMaker version: 1.2.1.0 -Build started at 23:50:48 -Building "D:\FritzBox\MpeRelease\FritzBox.xmp2" -Output: "..\MpeRelease\FritzBox.mpe1" Modified: trunk/plugins/FritzBox/FritzBox/bin/Release/FritzBox.dll =================================================================== (Binary files differ) Modified: trunk/plugins/FritzBox/FritzBox/bin/Release/FritzBox.pdb =================================================================== (Binary files differ) Modified: trunk/plugins/FritzBox/FritzBox/obj/Release/FritzBox.dll =================================================================== (Binary files differ) Modified: trunk/plugins/FritzBox/FritzBox/obj/Release/FritzBox.pdb =================================================================== (Binary files differ) Modified: trunk/plugins/FritzBox/MpeRelease/FritzBox.mpe1 =================================================================== (Binary files differ) Modified: trunk/plugins/FritzBox/MpeRelease/FritzBox.xmp2 =================================================================== --- trunk/plugins/FritzBox/MpeRelease/FritzBox.xmp2 2011-11-29 19:40:00 UTC (rev 4356) +++ trunk/plugins/FritzBox/MpeRelease/FritzBox.xmp2 2011-11-29 19:50:29 UTC (rev 4357) @@ -559,7 +559,7 @@ <Items> <CompatibleVersionItem> <MinRequiredVersion>1.1.0.0</MinRequiredVersion> - <DesignedForVersion>1.1.7.0</DesignedForVersion> + <DesignedForVersion>1.1.7.4356</DesignedForVersion> </CompatibleVersionItem> </Items> </CompatibleVersion> @@ -582,13 +582,13 @@ <Major>0</Major> <Minor>3</Minor> <Build>5</Build> - <Revision>0</Revision> + <Revision>4356</Revision> </Version> <ExtensionDescription>This plugin is a combination of the former fritz call monitor and the new fritz manager.</ExtensionDescription> <VersionDescription /> <DevelopmentStatus>Stable</DevelopmentStatus> <OnlineLocation /> - <ReleaseDate>2011-11-29T20:35:10.4484883+01:00</ReleaseDate> + <ReleaseDate>2011-11-29T20:48:23.2293344+01:00</ReleaseDate> <Tags /> <Location>..\MpeRelease\FritzBox.mpe1</Location> <Params> Modified: trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/bin/Release/FritzBoxConfigTester.exe =================================================================== (Binary files differ) Modified: trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/bin/Release/FritzBoxConfigTester.pdb =================================================================== (Binary files differ) Modified: trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/obj/Release/FritzBoxConfigTester.exe =================================================================== (Binary files differ) Modified: trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/obj/Release/FritzBoxConfigTester.pdb =================================================================== (Binary files differ) Modified: trunk/plugins/FritzBox/Tools/FritzBoxConfigTester/obj/Release/ResolveAssemblyReference.cache =================================================================== (Binary files differ) Modified: trunk/plugins/FritzBox/Tools/FritzBoxDebugger/bin/Release/FritzBoxDebugger.exe =================================================================== (Binary files differ) Modified: trunk/plugins/FritzBox/Tools/FritzBoxDebugger/bin/Release/FritzBoxDebugger.pdb =================================================================== (Binary files differ) Modified: trunk/plugins/FritzBox/Tools/FritzBoxDebugger/obj/Release/FritzBoxDebugger.exe =================================================================== (Binary files differ) Modified: trunk/plugins/FritzBox/Tools/FritzBoxDebugger/obj/Release/FritzBoxDebugger.pdb =================================================================== (Binary files differ) Added: trunk/plugins/FritzBox/releases/FritzBox_v0.3.5.0.mpe1 =================================================================== (Binary files differ) Property changes on: trunk/plugins/FritzBox/releases/FritzBox_v0.3.5.0.mpe1 ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/FritzBox/releases/FritzBox_v0.3.5.4356.mpe1 =================================================================== (Binary files differ) Property changes on: trunk/plugins/FritzBox/releases/FritzBox_v0.3.5.4356.mpe1 ___________________________________________________________________ Added: svn:mime-type + application/octet-stream This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |