diff options
Diffstat (limited to 'plugins/CurrencyRates')
87 files changed, 0 insertions, 8057 deletions
diff --git a/plugins/CurrencyRates/CurrencyRatesChart/CurrencyRatesChart.csproj b/plugins/CurrencyRates/CurrencyRatesChart/CurrencyRatesChart.csproj deleted file mode 100644 index d58b687ce4..0000000000 --- a/plugins/CurrencyRates/CurrencyRatesChart/CurrencyRatesChart.csproj +++ /dev/null @@ -1,124 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <PropertyGroup> - <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> - <Platform Condition=" '$(Platform)' == '' ">x86</Platform> - <ProductVersion>8.0.30703</ProductVersion> - <SchemaVersion>2.0</SchemaVersion> - <ProjectGuid>{C255CA56-D05E-4389-A32E-CA3EBE412684}</ProjectGuid> - <OutputType>WinExe</OutputType> - <AppDesignerFolder>Properties</AppDesignerFolder> - <RootNamespace>CurrencyRatesChart</RootNamespace> - <AssemblyName>CurrencyRatesChart</AssemblyName> - <TargetFrameworkVersion>v4.0</TargetFrameworkVersion> - <FileAlignment>512</FileAlignment> - <TargetFrameworkProfile /> - </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' "> - <PlatformTarget>x86</PlatformTarget> - <DebugSymbols>true</DebugSymbols> - <DebugType>full</DebugType> - <Optimize>false</Optimize> - <OutputPath>bin\x32\Debug\</OutputPath> - <DefineConstants>DEBUG;TRACE</DefineConstants> - <ErrorReport>prompt</ErrorReport> - <WarningLevel>4</WarningLevel> - </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' "> - <PlatformTarget>x86</PlatformTarget> - <DebugType>pdbonly</DebugType> - <Optimize>true</Optimize> - <OutputPath>bin\x32\Release\</OutputPath> - <DefineConstants>TRACE</DefineConstants> - <ErrorReport>prompt</ErrorReport> - <WarningLevel>4</WarningLevel> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'"> - <DebugSymbols>true</DebugSymbols> - <OutputPath>bin\x64\Debug\</OutputPath> - <DefineConstants>DEBUG;TRACE</DefineConstants> - <DebugType>full</DebugType> - <PlatformTarget>x64</PlatformTarget> - <CodeAnalysisLogFile>bin\Debug\CurrencyRatesChart.exe.CodeAnalysisLog.xml</CodeAnalysisLogFile> - <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression> - <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile> - <ErrorReport>prompt</ErrorReport> - <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRuleSetDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories> - <CodeAnalysisRuleDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'"> - <OutputPath>bin\x64\Release\</OutputPath> - <DefineConstants>TRACE</DefineConstants> - <Optimize>true</Optimize> - <DebugType>pdbonly</DebugType> - <PlatformTarget>x64</PlatformTarget> - <CodeAnalysisLogFile>bin\Release\CurrencyRatesChart.exe.CodeAnalysisLog.xml</CodeAnalysisLogFile> - <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression> - <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile> - <ErrorReport>prompt</ErrorReport> - <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRuleSetDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories> - <CodeAnalysisRuleDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories> - </PropertyGroup> - <PropertyGroup> - <ApplicationIcon>main.ico</ApplicationIcon> - </PropertyGroup> - <ItemGroup> - <Reference Include="Microsoft.VisualBasic" /> - <Reference Include="System" /> - <Reference Include="System.Core" /> - <Reference Include="System.Windows.Forms.DataVisualization" /> - <Reference Include="System.Xml.Linq" /> - <Reference Include="System.Data.DataSetExtensions" /> - <Reference Include="System.Data" /> - <Reference Include="System.Deployment" /> - <Reference Include="System.Drawing" /> - <Reference Include="System.Windows.Forms" /> - <Reference Include="System.Xml" /> - </ItemGroup> - <ItemGroup> - <Compile Include="Form1.cs"> - <SubType>Form</SubType> - </Compile> - <Compile Include="Form1.Designer.cs"> - <DependentUpon>Form1.cs</DependentUpon> - </Compile> - <Compile Include="Program.cs" /> - <Compile Include="Properties\AssemblyInfo.cs" /> - <EmbeddedResource Include="Form1.resx"> - <DependentUpon>Form1.cs</DependentUpon> - </EmbeddedResource> - <EmbeddedResource Include="Properties\Resources.resx"> - <Generator>ResXFileCodeGenerator</Generator> - <LastGenOutput>Resources.Designer.cs</LastGenOutput> - <SubType>Designer</SubType> - </EmbeddedResource> - <Compile Include="Properties\Resources.Designer.cs"> - <AutoGen>True</AutoGen> - <DependentUpon>Resources.resx</DependentUpon> - <DesignTime>True</DesignTime> - </Compile> - <None Include="app.config" /> - <None Include="Properties\Settings.settings"> - <Generator>SettingsSingleFileGenerator</Generator> - <LastGenOutput>Settings.Designer.cs</LastGenOutput> - </None> - <Compile Include="Properties\Settings.Designer.cs"> - <AutoGen>True</AutoGen> - <DependentUpon>Settings.settings</DependentUpon> - <DesignTimeSharedInput>True</DesignTimeSharedInput> - </Compile> - </ItemGroup> - <ItemGroup> - <Content Include="main.ico" /> - </ItemGroup> - <Import Project="$(MSBuildToolsPath)\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> - --> -</Project>
\ No newline at end of file diff --git a/plugins/CurrencyRates/CurrencyRatesChart/Form1.Designer.cs b/plugins/CurrencyRates/CurrencyRatesChart/Form1.Designer.cs deleted file mode 100644 index f00dc61cf4..0000000000 --- a/plugins/CurrencyRates/CurrencyRatesChart/Form1.Designer.cs +++ /dev/null @@ -1,123 +0,0 @@ -namespace CurrencyRatesChart -{ - partial class FormMirandaCurrencyRatesChart - { - /// <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() - { - System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea1 = new System.Windows.Forms.DataVisualization.Charting.ChartArea(); - System.Windows.Forms.DataVisualization.Charting.Legend legend1 = new System.Windows.Forms.DataVisualization.Charting.Legend(); - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormMirandaCurrencyRatesChart)); - this.chartCurrencyRates = new System.Windows.Forms.DataVisualization.Charting.Chart(); - this.label1 = new System.Windows.Forms.Label(); - this.dateFrom = new System.Windows.Forms.DateTimePicker(); - this.dateTo = new System.Windows.Forms.DateTimePicker(); - this.label2 = new System.Windows.Forms.Label(); - ((System.ComponentModel.ISupportInitialize)(this.chartCurrencyRates)).BeginInit(); - this.SuspendLayout(); - // - // chartCurrencyRates - // - this.chartCurrencyRates.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))); - chartArea1.Name = "ChartArea1"; - this.chartCurrencyRates.ChartAreas.Add(chartArea1); - legend1.Docking = System.Windows.Forms.DataVisualization.Charting.Docking.Bottom; - legend1.Name = "Legend1"; - this.chartCurrencyRates.Legends.Add(legend1); - this.chartCurrencyRates.Location = new System.Drawing.Point(2, 45); - this.chartCurrencyRates.Name = "chartCurrencyRates"; - this.chartCurrencyRates.Size = new System.Drawing.Size(423, 433); - this.chartCurrencyRates.TabIndex = 0; - this.chartCurrencyRates.Text = "chart1"; - // - // label1 - // - this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(-1, 16); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(30, 13); - this.label1.TabIndex = 1; - this.label1.Text = "From"; - // - // dateFrom - // - this.dateFrom.Format = System.Windows.Forms.DateTimePickerFormat.Short; - this.dateFrom.Location = new System.Drawing.Point(35, 9); - this.dateFrom.Name = "dateFrom"; - this.dateFrom.Size = new System.Drawing.Size(98, 20); - this.dateFrom.TabIndex = 2; - this.dateFrom.ValueChanged += new System.EventHandler(this.dateFrom_ValueChanged); - // - // dateTo - // - this.dateTo.Format = System.Windows.Forms.DateTimePickerFormat.Short; - this.dateTo.Location = new System.Drawing.Point(177, 10); - this.dateTo.Name = "dateTo"; - this.dateTo.Size = new System.Drawing.Size(98, 20); - this.dateTo.TabIndex = 4; - this.dateTo.ValueChanged += new System.EventHandler(this.dateTo_ValueChanged); - // - // label2 - // - this.label2.AutoSize = true; - this.label2.Location = new System.Drawing.Point(151, 16); - this.label2.Name = "label2"; - this.label2.Size = new System.Drawing.Size(20, 13); - this.label2.TabIndex = 3; - this.label2.Text = "To"; - // - // FormMirandaCurrencyRatesChart - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(425, 477); - this.Controls.Add(this.dateTo); - this.Controls.Add(this.label2); - this.Controls.Add(this.dateFrom); - this.Controls.Add(this.label1); - this.Controls.Add(this.chartCurrencyRates); - this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); - this.Name = "FormMirandaCurrencyRatesChart"; - this.Text = "Miranda CurrencyRates Chart"; - this.Load += new System.EventHandler(this.Form1_Load); - ((System.ComponentModel.ISupportInitialize)(this.chartCurrencyRates)).EndInit(); - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - - private System.Windows.Forms.DataVisualization.Charting.Chart chartCurrencyRates; - private System.Windows.Forms.Label label1; - private System.Windows.Forms.DateTimePicker dateFrom; - private System.Windows.Forms.DateTimePicker dateTo; - private System.Windows.Forms.Label label2; - } -} - diff --git a/plugins/CurrencyRates/CurrencyRatesChart/Form1.cs b/plugins/CurrencyRates/CurrencyRatesChart/Form1.cs deleted file mode 100644 index d26457e39f..0000000000 --- a/plugins/CurrencyRates/CurrencyRatesChart/Form1.cs +++ /dev/null @@ -1,155 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Linq; -using System.Text; -using System.Windows.Forms; -using Microsoft.VisualBasic.FileIO; -using System.Runtime.InteropServices; - -namespace CurrencyRatesChart -{ - public partial class FormMirandaCurrencyRatesChart : Form - { - public FormMirandaCurrencyRatesChart() - { - InitializeComponent(); - } - - private void Form1_Load(object sender, EventArgs e) - { - string[] cmd_line_args = Environment.GetCommandLineArgs(); - - for (int i = 1; i < cmd_line_args.Length; ++i) - { - string data_file = cmd_line_args[i]; - AddDataFromFile(data_file); - } - } - - private void dateFrom_ValueChanged(object sender, EventArgs e) - { - if (dateFrom.Value < dateTo.Value) - { - chartCurrencyRates.ChartAreas[0].AxisX.Minimum = dateFrom.Value.ToOADate(); - chartCurrencyRates.Invalidate(); - } - } - - private void dateTo_ValueChanged(object sender, EventArgs e) - { - if (dateTo.Value > dateFrom.Value) - { - chartCurrencyRates.ChartAreas[0].AxisX.Maximum = dateTo.Value.ToOADate(); - chartCurrencyRates.Invalidate(); - } - } - - int WM_COPYDATA = 0x4A; - - public struct COPYDATASTRUCT - { - public IntPtr dwData; - public int cbData; - [MarshalAs(UnmanagedType.LPWStr)] - public String lpData; - } - - protected override void WndProc(ref Message msg) - { - if (msg.Msg == WM_COPYDATA) - { - COPYDATASTRUCT cp = (COPYDATASTRUCT)Marshal.PtrToStructure(msg.LParam, typeof(COPYDATASTRUCT)); - - if (/**(cp.dwData) == 0x1945 && */cp.lpData != null) - { - AddDataFromFile(cp.lpData); - } - - } - base.WndProc(ref msg); - } - - private void AddDataFromFile(string data_file) - { - using (TextFieldParser parser = new Microsoft.VisualBasic.FileIO.TextFieldParser(data_file)) - { - parser.TrimWhiteSpace = true; - parser.TextFieldType = FieldType.Delimited; - parser.SetDelimiters("\t"); - - System.Windows.Forms.DataVisualization.Charting.Series series = null; - while (true) - { - string[] parts = parser.ReadFields(); - if (parts == null) - { - break; - } - - if (parts.Length >= 3) - { - string name = parts[0]; - string date = parts[1]; - string value = parts[2]; - - if (series == null) - { - if (chartCurrencyRates.Series.FindByName(name) == null) - { - chartCurrencyRates.Series.Add(name); - series = chartCurrencyRates.Series[name]; - series.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line; - } - else - { - break; - } - } - - DateTime dt; - double d; - if (Double.TryParse(value, out d) && DateTime.TryParse(date, out dt)) - { - series.Points.AddXY(dt, d); - - if (!dateMin.HasValue) - { - dateMin = new DateTime(); - dateMin = dt; - } - else if (dt < dateMin) - { - dateMin = dt; - } - - if (!dateMax.HasValue) - { - dateMax = new DateTime(); - dateMax = dt; - } - else if (dt > dateMax) - { - dateMax = dt; - } - } - } - } - } - - if (dateMin.HasValue && dateMax.HasValue) - { - chartCurrencyRates.ChartAreas[0].AxisX.Minimum = dateMin.Value.ToOADate(); - chartCurrencyRates.ChartAreas[0].AxisX.Maximum = dateMax.Value.ToOADate(); - - dateFrom.Value = dateMin.Value; - dateTo.Value = dateMax.Value; - } - } - - private DateTime? dateMin = null; - private DateTime? dateMax = null; - } -} diff --git a/plugins/CurrencyRates/CurrencyRatesChart/Form1.resx b/plugins/CurrencyRates/CurrencyRatesChart/Form1.resx deleted file mode 100644 index 3d63dcc355..0000000000 --- a/plugins/CurrencyRates/CurrencyRatesChart/Form1.resx +++ /dev/null @@ -1,216 +0,0 @@ -<?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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> - </resheader> - <resheader name="writer"> - <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> - </resheader> - <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> - <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> - <value> - AAABAAIAICAAAAEAIACoEAAAJgAAABAQAAABACAAaAQAAM4QAAAoAAAAIAAAAEAAAAABACAAAAAAAIAQ - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAYAAAAOAAAAFgAAABwAAAAgAAAAIAAAABwAAAAWAAAADgAA - AAYAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAASAAAAJgAAADQAAABAAAAARAAAAEgAAABIAAAARAAA - AEAAAAA0AAAAJgAAABIAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAOAx80NAZKcmoUdaazH47D4ymh0vktrNf/L7DZ/yyo - 1v8lmMzzHYa72Q1ciJsFNldwAAAAPgAAACoAAAAOAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAFAdCb1QSgLO/MKjW71XI6/9l1PT/b9n4/3Xb - +v923Pr/cdn5/2nV9v9gz/L/Rbji+yecy+kIW42jAx0yWAAAADAAAAAUAAAAAgAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQjPBoQcqKPKqPS81jR9P9j2fr/TtX6/zXQ - +f8eyvn/Esf4/wzE+P8Vxvj/Jcj4/zjM+P9R0fn/W9P4/z+75/8fkMXnBjVUcAMIDD4AAAAUAAAAAgAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFK0sWD2+mhzO14fdS0fb/RdP6/ybM - +f8PyPn/B8f5/wbH+f8Gx/n/Bsb5/wbE+P8Hw/j/CsL3/xXD9/8qx/j/Rcz3/1HN8/9RoLflO01JgQAA - ADAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABA14roMosuD3RNH6/ynN - +f8Kx/n/Bcj6/wTK+v8Eyvr/BMr7/wTK+v8Fyfr/Bcj6/wbG+f8GxPj/B8L3/wjA9/8ryvb/ecfE/8uj - Q/+ogjLxMicYZAAAACoAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIKW5g+Gp7R7zTJ - 9P8iyvn/Ccf5/wXJ+v8Ey/r/BMz7/wPN+/8Dzfv/A837/wTM+/8Eyvr/Bcj5/wbG+f8Hw/j/F8j4/2LC - wP+4mzT/4a40/9anNf9+YizHJBwWUAAAABIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACViSEgyG - wLElw/H/I8r5/wnG+f8FyPr/BMv7/wPN+/8C0Pz/AtD8/wLR/f8C0Pz/A8/8/wPN+/8Eyvr/Bcj6/x7N - +P9hxcL/xZMY/9yiGP/epR//4Kwv/7uPKvtkTSSXAAAAJgAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAJcrBEEqDV6yPI+P8Sxvn/Bcf5/wXK+v8Dzfv/A8/8/wLS/f8B0/3/AdP9/wHS/f8C0fz/A8/8/wTM - +/8Rzfr/YsjE/7ecMP/doxf/3aMY/92jGf/epyT/1qMq/5ZzLd8AAAA0AAAADgAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAyEv5kYtef/GMf4/wnF+P8FyPr/BMv6/wPO/P8C0fz/AdP9/wHV/v8A1v7/AdT+/wHS - /f8C0Pz/GdT7/2PMxf/JnBT/4asU/+CoFf/epRb/3aMX/92kG//eqCj/v5Aj/0U3KWoAAAAWAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAADo3J1xi+8P8Rxfj/BsX5/wXI+v8Ey/v/A8/8/wLR/f8B1P7/ANb+/wDX - //8A1v7/AdP9/wzT/f9lz8b/vqgs/+ayEf/lrxL/4qwT/+CoFf/epBf/3aMY/96oJP/RnSD/bFMvnQAA - ABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOmdD3GMH0/wzD+P8Gxfj/Bcj6/wTL+v8Dzvz/AtH8/wHU - /f8B1f7/ANb+/wTV/v8d2v3/ZdLG/9CqDv/svAz/67kN/+m1D//msBH/46wT/+CnFv/epBf/3qYf/9ij - I/+IZiS5AAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2h1f8Ywvb/CcL4/wfE+P8FyPr/BMr6/wPO - +/8C0Pz/AtL9/wzW/f844/7/Tub9/17Gyv/Fujz/8sQI//HCCf/uvgv/7LoN/+i0EP/lrxL/4aoU/9+m - Fv/dpB3/3KYl/5hxGb0AAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADqbY/xnD9/8Iwff/B8P4/wfG - +f8Qzfr/JNf8/zPZ+v9IwOb/SaLU/yFZs/8MGZH/JCqJ/7+rXP/4zRD/9cgH//LDCf/vvwv/6rgO/+ey - Ef/jrBP/4KgV/96lHf/eqCX/oXYTuwAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASoNT9HcP2/w7C - 9/8izvn/R9/8/0nW9f81isj/Jlmy/xQ1sf8LGaz/DBu0/w0ct/8NHLD/Q0WF//zaOv/4zQj/9McH//DB - Cf/rug3/6LQP/+OtE//gqRX/3qYe/9umJf+Ych25AAAAFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACql - 1PNNze//UbLc/zqOz/8UOKv/CRel/woavf8KG8f/ChvH/wobx/8KG8T/CxvB/wwcvP8MGrH/mItl//nW - KP/2yQb/8sMJ/+28DP/ptQ//5K4S/+GqFP/fqCH/1aEj/4ZlLKcAAAAOAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAALWeswTBar/8ZL7D/Cxqz/woaw/8JG8r/CRrN/wgaz/8IG9D/CRvP/wkbzP8KG8n/ChvD/wwc - vv8qMZj/y7Zb//bLDv/ywwn/7bwM/+m1D//krhL/4aoW/+CqJv/PnCH/clk3gwAAAAYAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAOGpNcGyiw8x4txv8NHsn/CBrP/wga0/8HGtf/BhnZ/wYa2v8GGtn/BxrW/wga - 0v8JGsz/ChvG/wsauv9MTIP/9tU///HDD//rug3/6LQP/+OtE//hqxz/3akq/7CGKPdLPDIqAAAAAgAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwZlyoVI6vRJTTN/xUl0P8IGtX/Bhna/wYZ3/8FGeH/BRni/wUZ - 4f8GGd3/BxnZ/wga0v8JGsz/ChvD/woZsv+ajGb/9Msq/+q4Dv/nshH/460V/+KuJv/Woyv/mHQwxwAA - AAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoXnWgiMcb7JTXZ/wsd3P8FGeL/BBjo/wMY - 6/8DGOv/Axjq/wQZ5v8FGeD/BxnZ/wga0v8KG8n/CxvB/ywzmP/IsV7/67oa/+WvEv/iryL/4a8x/7GI - Lel6XzNEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACxecFBknuM0wP9r/IDHk/wcb - 5/8DGO3/Ahfx/wIY8v8CGPD/Axjr/wQY5v8GGd3/BxnW/wkazP8KG8T/Cxu1/0xNgv/zzkH/5bIf/+S0 - OP/WpjH/i2w4l2RQPQ4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRemLCEw - xMs/Tun/L0Dv/w0h8/8CGff/ARf5/wEX9v8CF/D/Axjq/wUZ4f8GGdn/CRvP/wobx/8MHLz/EB+u/6OV - dv/vy17/1Kg/+515OLkAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAALGKYEER6tPik4zuVJWO7/QVL3/yY4+/8HHf3/ARj5/wIX8v8DGOv/BRni/wYa2v8IG9D/DR3I/yAv - wv87R8P/ZWmt/868e/+jgT67fGJCKgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAACBauJB8uxKtDUuX1WWf2/1tp+/9EVPn/L0Hz/yg67v8mOOX/Lj7f/z5M - 2v9SXtf/XmjR/1Rexf0yPaXVTEt5hwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBesGBMivmgkMsrPQE/i/Vto8P9qdvL/b3rx/3B7 - 7f9teOb/Ym3b/1Jczf8zPrHnIy+ipQ0ZjDAPGooIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIF6s8BxWveAUV - tZ0FFbalBRWzqQYWq6MJF6KHCxicXg0ZlRQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///////////+AB///AAP//AAA//gAAH/wA - AA/8AAAP+AAAB/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AA - AAf4AAAP+AAAD/wAAB/8AAA//wAA//+AAP//8Af/////////////////KAAAABAAAAAgAAAAAQAgAAAA - AABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAcAAAALgAA - ADQAAAAuAAAAHAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUuTR4bfqqTQK3W5U/A - 5/1Qw+n/RbLd8yaJtL0EME1YAAAAFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxaiS40rtndSdL4/ybN - +f8PyPn/C8X4/xzG+P87zPj/Prrm+TJkc4UAAAAWAAAAAAAAAAAAAAAAAAAAAAlTihAkq9rbJsz5/wbJ - +v8Ey/v/BMz7/wXK+v8Gxvn/C8P4/3C7rP/Lnzj7Tj0faAAAAAYAAAAAAAAAAAAAAAAOjsZ8H8f2/wbI - +v8Dzfv/AtH8/wLS/f8Dz/z/CMv6/2a9rP/Xnxj/3qci/6uCKdsAAAAcAAAAAAAAAAAAAAAAFKXb2w7F - +P8Fyvr/AtD8/wHU/v8A1v7/BNL9/2jGrP/dqhP/4KgV/92kGP/TnyT/TTwlTgAAAAAAAAAAAAAAABOv - 5P0IxPj/Bcn6/wPP/P8E1P3/I93+/2nLsv/ouwv/67oN/+WwEv/fpxb/3KUh/3tcGmwAAAAAAAAAAAAA - AAAWs+b/EMX4/yrS+f8spdz/LGzG/xEqrP9NTob/+M8W//HCCf/ptg//4aoU/92mIf+KZhVoAAAAAAAA - AAAAAAAANo/J7SxixP8MIbf/CRrI/wkby/8KG8b/Cxu8/6KSYP/0xwn/67kO/+OsFP/ZpCP/dlouTgAA - AAAAAAAAAAAAABYjqJMZKcv/BxrU/wYZ3P8GGd7/BxnY/wkazP8bJ63/3bw3/+m2D//irRr/wZMr70I0 - LAwAAAAAAAAAAAAAAAAKF50eJDTN8Q4g4v8DGOz/Axju/wQY5v8HGdj/ChvG/1NTi//quiP/364v/5p3 - MnQAAAAAAAAAAAAAAAAAAAAAAAAAABopu044SOb5HjH3/wIZ+f8DGO7/Bhne/woby/8eLLz/saF//7GM - PacAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGSi+OjxK38tPXfL/TFvx/0xa5v9RXdb/RlC94zY8 - k2QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABxauLgUVtlAGFa9SChefOA0Z - lQYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAA+A8AAPAHAADgAwAAwAEAAMABAADAAQAAwAEAAMAB - AADAAQAAwAEAAMADAADgBwAA8A8AAPwfAAD//wAA -</value> - </data> -</root>
\ No newline at end of file diff --git a/plugins/CurrencyRates/CurrencyRatesChart/Program.cs b/plugins/CurrencyRates/CurrencyRatesChart/Program.cs deleted file mode 100644 index 732fd0fc01..0000000000 --- a/plugins/CurrencyRates/CurrencyRatesChart/Program.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Windows.Forms; - -namespace CurrencyRatesChart -{ - static class Program - { - /// <summary> - /// The main entry point for the application. - /// </summary> - [STAThread] - static void Main(string[] args) - { - Application.EnableVisualStyles(); - Application.SetCompatibleTextRenderingDefault(false); - Application.Run(new FormMirandaCurrencyRatesChart()); - } - } -} diff --git a/plugins/CurrencyRates/CurrencyRatesChart/Properties/AssemblyInfo.cs b/plugins/CurrencyRates/CurrencyRatesChart/Properties/AssemblyInfo.cs deleted file mode 100644 index 765def9d57..0000000000 --- a/plugins/CurrencyRates/CurrencyRatesChart/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -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("CurrencyRatesChart")] -[assembly: AssemblyDescription("Chart Application for Miranda CurrencyRates plugin")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("Dioksin")] -[assembly: AssemblyProduct("Miranda")] -[assembly: AssemblyCopyright("Don't worry!")] -[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("9b8250c7-ffbe-4f8a-985e-2e562e253dc4")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("0.0.1.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/plugins/CurrencyRates/CurrencyRatesChart/Properties/Resources.Designer.cs b/plugins/CurrencyRates/CurrencyRatesChart/Properties/Resources.Designer.cs deleted file mode 100644 index 141d83b862..0000000000 --- a/plugins/CurrencyRates/CurrencyRatesChart/Properties/Resources.Designer.cs +++ /dev/null @@ -1,63 +0,0 @@ -//------------------------------------------------------------------------------ -// <auto-generated> -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// </auto-generated> -//------------------------------------------------------------------------------ - -namespace CurrencyRatesChart.Properties { - using System; - - - /// <summary> - /// A strongly-typed resource class, for looking up localized strings, etc. - /// </summary> - // This class was auto-generated by the StronglyTypedResourceBuilder - // class via a tool like ResGen or Visual Studio. - // To add or remove a member, edit your .ResX file then rerun ResGen - // with the /str option, or rebuild your VS project. - [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 { - - private static global::System.Resources.ResourceManager resourceMan; - - private static global::System.Globalization.CultureInfo resourceCulture; - - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal Resources() { - } - - /// <summary> - /// Returns the cached ResourceManager instance used by this class. - /// </summary> - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager { - get { - if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("CurrencyRatesChart.Properties.Resources", typeof(Resources).Assembly); - resourceMan = temp; - } - return resourceMan; - } - } - - /// <summary> - /// Overrides the current thread's CurrentUICulture property for all - /// resource lookups using this strongly typed resource class. - /// </summary> - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { - get { - return resourceCulture; - } - set { - resourceCulture = value; - } - } - } -} diff --git a/plugins/CurrencyRates/CurrencyRatesChart/Properties/Resources.resx b/plugins/CurrencyRates/CurrencyRatesChart/Properties/Resources.resx deleted file mode 100644 index af7dbebbac..0000000000 --- a/plugins/CurrencyRates/CurrencyRatesChart/Properties/Resources.resx +++ /dev/null @@ -1,117 +0,0 @@ -<?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.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: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" type="xsd:string" /> - <xsd:attribute name="type" type="xsd:string" /> - <xsd:attribute name="mimetype" type="xsd:string" /> - </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" msdata:Ordinal="1" /> - <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> - <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> - </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 diff --git a/plugins/CurrencyRates/CurrencyRatesChart/Properties/Settings.Designer.cs b/plugins/CurrencyRates/CurrencyRatesChart/Properties/Settings.Designer.cs deleted file mode 100644 index b34f77d1b3..0000000000 --- a/plugins/CurrencyRates/CurrencyRatesChart/Properties/Settings.Designer.cs +++ /dev/null @@ -1,26 +0,0 @@ -//------------------------------------------------------------------------------ -// <auto-generated> -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// </auto-generated> -//------------------------------------------------------------------------------ - -namespace CurrencyRatesChart.Properties { - - - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")] - internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { - - private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); - - public static Settings Default { - get { - return defaultInstance; - } - } - } -} diff --git a/plugins/CurrencyRates/CurrencyRatesChart/Properties/Settings.settings b/plugins/CurrencyRates/CurrencyRatesChart/Properties/Settings.settings deleted file mode 100644 index 39645652af..0000000000 --- a/plugins/CurrencyRates/CurrencyRatesChart/Properties/Settings.settings +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version='1.0' encoding='utf-8'?> -<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)"> - <Profiles> - <Profile Name="(Default)" /> - </Profiles> - <Settings /> -</SettingsFile> diff --git a/plugins/CurrencyRates/CurrencyRatesChart/app.config b/plugins/CurrencyRates/CurrencyRatesChart/app.config deleted file mode 100644 index e365603337..0000000000 --- a/plugins/CurrencyRates/CurrencyRatesChart/app.config +++ /dev/null @@ -1,3 +0,0 @@ -<?xml version="1.0"?> -<configuration> -<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration> diff --git a/plugins/CurrencyRates/CurrencyRatesChart/bin/x32/CurrencyRatesChart.exe b/plugins/CurrencyRates/CurrencyRatesChart/bin/x32/CurrencyRatesChart.exe Binary files differdeleted file mode 100644 index 9006c9f9c0..0000000000 --- a/plugins/CurrencyRates/CurrencyRatesChart/bin/x32/CurrencyRatesChart.exe +++ /dev/null diff --git a/plugins/CurrencyRates/CurrencyRatesChart/bin/x64/CurrencyRatesChart.exe b/plugins/CurrencyRates/CurrencyRatesChart/bin/x64/CurrencyRatesChart.exe Binary files differdeleted file mode 100644 index 221a27d11b..0000000000 --- a/plugins/CurrencyRates/CurrencyRatesChart/bin/x64/CurrencyRatesChart.exe +++ /dev/null diff --git a/plugins/CurrencyRates/CurrencyRatesChart/main.ico b/plugins/CurrencyRates/CurrencyRatesChart/main.ico Binary files differdeleted file mode 100644 index da85d1f7c6..0000000000 --- a/plugins/CurrencyRates/CurrencyRatesChart/main.ico +++ /dev/null diff --git a/plugins/CurrencyRates/Forex.vcxproj b/plugins/CurrencyRates/Forex.vcxproj deleted file mode 100644 index fec30452f6..0000000000 --- a/plugins/CurrencyRates/Forex.vcxproj +++ /dev/null @@ -1,36 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <ItemGroup Label="ProjectConfigurations"> - <ProjectConfiguration Include="Debug|Win32"> - <Configuration>Debug</Configuration> - <Platform>Win32</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Debug|x64"> - <Configuration>Debug</Configuration> - <Platform>x64</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Release|Win32"> - <Configuration>Release</Configuration> - <Platform>Win32</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Release|x64"> - <Configuration>Release</Configuration> - <Platform>x64</Platform> - </ProjectConfiguration> - </ItemGroup> - <PropertyGroup Label="Globals"> - <ProjectGuid>{C619A811-8023-4441-B3D7-785388A09DF0}</ProjectGuid> - <ProjectName>CurrencyRates</ProjectName> - </PropertyGroup> - <ImportGroup Label="PropertySheets"> - <Import Project="$(ProjectDir)..\..\build\vc.common\plugin.props" /> - </ImportGroup> - <PropertyGroup> - <IncludePath>$(WindowsSdkDir)include;$(VCInstallDir)include;$(IncludePath)</IncludePath> - </PropertyGroup> - <ItemDefinitionGroup> - <ClCompile> - <ExceptionHandling>Sync</ExceptionHandling> - </ClCompile> - </ItemDefinitionGroup> -</Project>
\ No newline at end of file diff --git a/plugins/CurrencyRates/Forex.vcxproj.filters b/plugins/CurrencyRates/Forex.vcxproj.filters deleted file mode 100644 index fcae13a9d8..0000000000 --- a/plugins/CurrencyRates/Forex.vcxproj.filters +++ /dev/null @@ -1,4 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <Import Project="$(ProjectDir)..\..\build\vc.common\common.filters" /> -</Project>
\ No newline at end of file diff --git a/plugins/CurrencyRates/docs/Utility/cc.xml b/plugins/CurrencyRates/docs/Utility/cc.xml deleted file mode 100644 index 232d7d6488..0000000000 --- a/plugins/CurrencyRates/docs/Utility/cc.xml +++ /dev/null @@ -1,518 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> - -<Provider> - <name>Currency Converter API</name> - <ref>https://www.currencyconverterapi.com/</ref> - <url>https://free.currencyconverterapi.com/api/v5/convert</url> - -<section> - <name>Currencies</name> - <currencyrate> - <id>AED</id><symbol>AED</symbol><description>United Arab Emirates Dirham (AED)</description> - </currencyrate> - <currencyrate> - <id>AFN</id><symbol>AFN</symbol><description>Afghan Afghani (AFN)</description> - </currencyrate> - <currencyrate> - <id>ALL</id><symbol>ALL</symbol><description>Albanian Lek (ALL)</description> - </currencyrate> - <currencyrate> - <id>AMD</id><symbol>AMD</symbol><description>Armenian Dram (AMD)</description> - </currencyrate> - <currencyrate> - <id>ANG</id><symbol>ANG</symbol><description>Netherlands Antillean Gulden (ANG)</description> - </currencyrate> - <currencyrate> - <id>AOA</id><symbol>AOA</symbol><description>Angolan Kwanza (AOA)</description> - </currencyrate> - <currencyrate> - <id>ARS</id><symbol>ARS</symbol><description>Argentine Peso (ARS)</description> - </currencyrate> - <currencyrate> - <id>AUD</id><symbol>AUD</symbol><description>Australian Dollar (AUD)</description> - </currencyrate> - <currencyrate> - <id>AWG</id><symbol>AWG</symbol><description>Aruban Florin (AWG)</description> - </currencyrate> - <currencyrate> - <id>AZN</id><symbol>AZN</symbol><description>Azerbaijani Manat (AZN)</description> - </currencyrate> - <currencyrate> - <id>BAM</id><symbol>BAM</symbol><description>Bosnia-Herzegovina Convertible Mark (BAM)</description> - </currencyrate> - <currencyrate> - <id>BBD</id><symbol>BBD</symbol><description>Barbadian Dollar (BBD)</description> - </currencyrate> - <currencyrate> - <id>BDT</id><symbol>BDT</symbol><description>Bangladeshi Taka (BDT)</description> - </currencyrate> - <currencyrate> - <id>BGN</id><symbol>BGN</symbol><description>Bulgarian Lev (BGN)</description> - </currencyrate> - <currencyrate> - <id>BHD</id><symbol>BHD</symbol><description>Bahraini Dinar (BHD)</description> - </currencyrate> - <currencyrate> - <id>BIF</id><symbol>BIF</symbol><description>Burundian Franc (BIF)</description> - </currencyrate> - <currencyrate> - <id>BMD</id><symbol>BMD</symbol><description>Bermudan Dollar (BMD)</description> - </currencyrate> - <currencyrate> - <id>BND</id><symbol>BND</symbol><description>Brunei Dollar (BND)</description> - </currencyrate> - <currencyrate> - <id>BOB</id><symbol>BOB</symbol><description>Bolivian Boliviano (BOB)</description> - </currencyrate> - <currencyrate> - <id>BRL</id><symbol>BRL</symbol><description>Brazilian Real (BRL)</description> - </currencyrate> - <currencyrate> - <id>BSD</id><symbol>BSD</symbol><description>Bahamian Dollar (BSD)</description> - </currencyrate> - <currencyrate> - <id>BTC</id><symbol>BTC</symbol><description>Bitcoin (BTC)</description> - </currencyrate> - <currencyrate> - <id>BTN</id><symbol>BTN</symbol><description>Bhutanese Ngultrum (BTN)</description> - </currencyrate> - <currencyrate> - <id>BWP</id><symbol>BWP</symbol><description>Botswana Pula (BWP)</description> - </currencyrate> - <currencyrate> - <id>BYN</id><symbol>BYN</symbol><description>Belarusian Ruble (BYN)</description> - </currencyrate> - <currencyrate> - <id>BYR</id><symbol>BYR</symbol><description>Belarusian Ruble (2000–2016) (BYR)</description> - </currencyrate> - <currencyrate> - <id>BZD</id><symbol>BZD</symbol><description>Belize Dollar (BZD)</description> - </currencyrate> - <currencyrate> - <id>CAD</id><symbol>CAD</symbol><description>Canadian Dollar (CAD)</description> - </currencyrate> - <currencyrate> - <id>CDF</id><symbol>CDF</symbol><description>Congolese Franc (CDF)</description> - </currencyrate> - <currencyrate> - <id>CHF</id><symbol>CHF</symbol><description>Swiss Franc (CHF)</description> - </currencyrate> - <currencyrate> - <id>CLF</id><symbol>CLF</symbol><description>Chilean Unit of Account (UF) (CLF)</description> - </currencyrate> - <currencyrate> - <id>CLP</id><symbol>CLP</symbol><description>Chilean Peso (CLP)</description> - </currencyrate> - <currencyrate> - <id>CNH</id><symbol>CNH</symbol><description>CNH (CNH)</description> - </currencyrate> - <currencyrate> - <id>CNY</id><symbol>CNY</symbol><description>Chinese Yuan (CNY)</description> - </currencyrate> - <currencyrate> - <id>COP</id><symbol>COP</symbol><description>Colombian Peso (COP)</description> - </currencyrate> - <currencyrate> - <id>CRC</id><symbol>CRC</symbol><description>Costa Rican Colón (CRC)</description> - </currencyrate> - <currencyrate> - <id>CUP</id><symbol>CUP</symbol><description>Cuban Peso (CUP)</description> - </currencyrate> - <currencyrate> - <id>CVE</id><symbol>CVE</symbol><description>Cape Verdean Escudo (CVE)</description> - </currencyrate> - <currencyrate> - <id>CZK</id><symbol>CZK</symbol><description>Czech Koruna (CZK)</description> - </currencyrate> - <currencyrate> - <id>DEM</id><symbol>DEM</symbol><description>German Mark (DEM)</description> - </currencyrate> - <currencyrate> - <id>DJF</id><symbol>DJF</symbol><description>Djiboutian Franc (DJF)</description> - </currencyrate> - <currencyrate> - <id>DKK</id><symbol>DKK</symbol><description>Danish Krone (DKK)</description> - </currencyrate> - <currencyrate> - <id>DOP</id><symbol>DOP</symbol><description>Dominican Peso (DOP)</description> - </currencyrate> - <currencyrate> - <id>DZD</id><symbol>DZD</symbol><description>Algerian Dinar (DZD)</description> - </currencyrate> - <currencyrate> - <id>EGP</id><symbol>EGP</symbol><description>Egyptian Pound (EGP)</description> - </currencyrate> - <currencyrate> - <id>ERN</id><symbol>ERN</symbol><description>Eritrean Nakfa (ERN)</description> - </currencyrate> - <currencyrate> - <id>ETB</id><symbol>ETB</symbol><description>Ethiopian Birr (ETB)</description> - </currencyrate> - <currencyrate> - <id>EUR</id><symbol>EUR</symbol><description>Euro (EUR)</description> - </currencyrate> - <currencyrate> - <id>FIM</id><symbol>FIM</symbol><description>Finnish Markka (FIM)</description> - </currencyrate> - <currencyrate> - <id>FJD</id><symbol>FJD</symbol><description>Fijian Dollar (FJD)</description> - </currencyrate> - <currencyrate> - <id>FKP</id><symbol>FKP</symbol><description>Falkland Islands Pound (FKP)</description> - </currencyrate> - <currencyrate> - <id>FRF</id><symbol>FRF</symbol><description>French Franc (FRF)</description> - </currencyrate> - <currencyrate> - <id>GBP</id><symbol>GBP</symbol><description>British Pound (GBP)</description> - </currencyrate> - <currencyrate> - <id>GEL</id><symbol>GEL</symbol><description>Georgian Lari (GEL)</description> - </currencyrate> - <currencyrate> - <id>GHS</id><symbol>GHS</symbol><description>Ghanaian Cedi (GHS)</description> - </currencyrate> - <currencyrate> - <id>GIP</id><symbol>GIP</symbol><description>Gibraltar Pound (GIP)</description> - </currencyrate> - <currencyrate> - <id>GMD</id><symbol>GMD</symbol><description>Gambian Dalasi (GMD)</description> - </currencyrate> - <currencyrate> - <id>GNF</id><symbol>GNF</symbol><description>Guinean Franc (GNF)</description> - </currencyrate> - <currencyrate> - <id>GTQ</id><symbol>GTQ</symbol><description>Guatemalan Quetzal (GTQ)</description> - </currencyrate> - <currencyrate> - <id>GYD</id><symbol>GYD</symbol><description>Guyanaese Dollar (GYD)</description> - </currencyrate> - <currencyrate> - <id>HKD</id><symbol>HKD</symbol><description>Hong Kong Dollar (HKD)</description> - </currencyrate> - <currencyrate> - <id>HNL</id><symbol>HNL</symbol><description>Honduran Lempira (HNL)</description> - </currencyrate> - <currencyrate> - <id>HRK</id><symbol>HRK</symbol><description>Croatian Kuna (HRK)</description> - </currencyrate> - <currencyrate> - <id>HTG</id><symbol>HTG</symbol><description>Haitian Gourde (HTG)</description> - </currencyrate> - <currencyrate> - <id>HUF</id><symbol>HUF</symbol><description>Hungarian Forint (HUF)</description> - </currencyrate> - <currencyrate> - <id>IDR</id><symbol>IDR</symbol><description>Indonesian Rupiah (IDR)</description> - </currencyrate> - <currencyrate> - <id>IEP</id><symbol>IEP</symbol><description>Irish Pound (IEP)</description> - </currencyrate> - <currencyrate> - <id>ILS</id><symbol>ILS</symbol><description>Israeli New Shekel (ILS)</description> - </currencyrate> - <currencyrate> - <id>INR</id><symbol>INR</symbol><description>Indian Rupee (INR)</description> - </currencyrate> - <currencyrate> - <id>IQD</id><symbol>IQD</symbol><description>Iraqi Dinar (IQD)</description> - </currencyrate> - <currencyrate> - <id>IRR</id><symbol>IRR</symbol><description>Iranian Rial (IRR)</description> - </currencyrate> - <currencyrate> - <id>ISK</id><symbol>ISK</symbol><description>Icelandic Króna (ISK)</description> - </currencyrate> - <currencyrate> - <id>ITL</id><symbol>ITL</symbol><description>Italian Lira (ITL)</description> - </currencyrate> - <currencyrate> - <id>JMD</id><symbol>JMD</symbol><description>Jamaican Dollar (JMD)</description> - </currencyrate> - <currencyrate> - <id>JOD</id><symbol>JOD</symbol><description>Jordanian Dinar (JOD)</description> - </currencyrate> - <currencyrate> - <id>JPY</id><symbol>JPY</symbol><description>Japanese Yen (JPY)</description> - </currencyrate> - <currencyrate> - <id>KES</id><symbol>KES</symbol><description>Kenyan Shilling (KES)</description> - </currencyrate> - <currencyrate> - <id>KGS</id><symbol>KGS</symbol><description>Kyrgystani Som (KGS)</description> - </currencyrate> - <currencyrate> - <id>KHR</id><symbol>KHR</symbol><description>Cambodian Riel (KHR)</description> - </currencyrate> - <currencyrate> - <id>KMF</id><symbol>KMF</symbol><description>Comorian Franc (KMF)</description> - </currencyrate> - <currencyrate> - <id>KPW</id><symbol>KPW</symbol><description>North Korean Won (KPW)</description> - </currencyrate> - <currencyrate> - <id>KRW</id><symbol>KRW</symbol><description>South Korean Won (KRW)</description> - </currencyrate> - <currencyrate> - <id>KWD</id><symbol>KWD</symbol><description>Kuwaiti Dinar (KWD)</description> - </currencyrate> - <currencyrate> - <id>KYD</id><symbol>KYD</symbol><description>Cayman Islands Dollar (KYD)</description> - </currencyrate> - <currencyrate> - <id>KZT</id><symbol>KZT</symbol><description>Kazakhstani Tenge (KZT)</description> - </currencyrate> - <currencyrate> - <id>LAK</id><symbol>LAK</symbol><description>Laotian Kip (LAK)</description> - </currencyrate> - <currencyrate> - <id>LBP</id><symbol>LBP</symbol><description>Lebanese Pound (LBP)</description> - </currencyrate> - <currencyrate> - <id>LKR</id><symbol>LKR</symbol><description>Sri Lankan Rupee (LKR)</description> - </currencyrate> - <currencyrate> - <id>LRD</id><symbol>LRD</symbol><description>Liberian Dollar (LRD)</description> - </currencyrate> - <currencyrate> - <id>LSL</id><symbol>LSL</symbol><description>Lesotho Loti (LSL)</description> - </currencyrate> - <currencyrate> - <id>LTL</id><symbol>LTL</symbol><description>Lithuanian Litas (LTL)</description> - </currencyrate> - <currencyrate> - <id>LVL</id><symbol>LVL</symbol><description>Latvian Lats (LVL)</description> - </currencyrate> - <currencyrate> - <id>LYD</id><symbol>LYD</symbol><description>Libyan Dinar (LYD)</description> - </currencyrate> - <currencyrate> - <id>MAD</id><symbol>MAD</symbol><description>Moroccan Dirham (MAD)</description> - </currencyrate> - <currencyrate> - <id>MDL</id><symbol>MDL</symbol><description>Moldovan Leu (MDL)</description> - </currencyrate> - <currencyrate> - <id>MGA</id><symbol>MGA</symbol><description>Malagasy Ariary (MGA)</description> - </currencyrate> - <currencyrate> - <id>MKD</id><symbol>MKD</symbol><description>Macedonian Denar (MKD)</description> - </currencyrate> - <currencyrate> - <id>MNT</id><symbol>MNT</symbol><description>Mongolian Tugrik (MNT)</description> - </currencyrate> - <currencyrate> - <id>MOP</id><symbol>MOP</symbol><description>Macanese Pataca (MOP)</description> - </currencyrate> - <currencyrate> - <id>MRO</id><symbol>MRO</symbol><description>Mauritanian Ouguiya (MRO)</description> - </currencyrate> - <currencyrate> - <id>MUR</id><symbol>MUR</symbol><description>Mauritian Rupee (MUR)</description> - </currencyrate> - <currencyrate> - <id>MVR</id><symbol>MVR</symbol><description>Maldivian Rufiyaa (MVR)</description> - </currencyrate> - <currencyrate> - <id>MWK</id><symbol>MWK</symbol><description>Malawian Kwacha (MWK)</description> - </currencyrate> - <currencyrate> - <id>MXN</id><symbol>MXN</symbol><description>Mexican Peso (MXN)</description> - </currencyrate> - <currencyrate> - <id>MYR</id><symbol>MYR</symbol><description>Malaysian Ringgit (MYR)</description> - </currencyrate> - <currencyrate> - <id>MZN</id><symbol>MZN</symbol><description>Mozambican Metical (MZN)</description> - </currencyrate> - <currencyrate> - <id>NAD</id><symbol>NAD</symbol><description>Namibian Dollar (NAD)</description> - </currencyrate> - <currencyrate> - <id>NGN</id><symbol>NGN</symbol><description>Nigerian Naira (NGN)</description> - </currencyrate> - <currencyrate> - <id>NIO</id><symbol>NIO</symbol><description>Nicaraguan Córdoba (NIO)</description> - </currencyrate> - <currencyrate> - <id>NOK</id><symbol>NOK</symbol><description>Norwegian Krone (NOK)</description> - </currencyrate> - <currencyrate> - <id>NPR</id><symbol>NPR</symbol><description>Nepalese Rupee (NPR)</description> - </currencyrate> - <currencyrate> - <id>NZD</id><symbol>NZD</symbol><description>New Zealand Dollar (NZD)</description> - </currencyrate> - <currencyrate> - <id>OMR</id><symbol>OMR</symbol><description>Omani Rial (OMR)</description> - </currencyrate> - <currencyrate> - <id>PAB</id><symbol>PAB</symbol><description>Panamanian Balboa (PAB)</description> - </currencyrate> - <currencyrate> - <id>PEN</id><symbol>PEN</symbol><description>Peruvian Nuevo Sol (PEN)</description> - </currencyrate> - <currencyrate> - <id>PGK</id><symbol>PGK</symbol><description>Papua New Guinean Kina (PGK)</description> - </currencyrate> - <currencyrate> - <id>PHP</id><symbol>PHP</symbol><description>Philippine Peso (PHP)</description> - </currencyrate> - <currencyrate> - <id>PKG</id><symbol>PKG</symbol><description>PKG (PKG)</description> - </currencyrate> - <currencyrate> - <id>PKR</id><symbol>PKR</symbol><description>Pakistani Rupee (PKR)</description> - </currencyrate> - <currencyrate> - <id>PLN</id><symbol>PLN</symbol><description>Polish Zloty (PLN)</description> - </currencyrate> - <currencyrate> - <id>PYG</id><symbol>PYG</symbol><description>Paraguayan Guarani (PYG)</description> - </currencyrate> - <currencyrate> - <id>QAR</id><symbol>QAR</symbol><description>Qatari Riyal (QAR)</description> - </currencyrate> - <currencyrate> - <id>RON</id><symbol>RON</symbol><description>New Romanian Leu (RON)</description> - </currencyrate> - <currencyrate> - <id>RSD</id><symbol>RSD</symbol><description>Serbian Dinar (RSD)</description> - </currencyrate> - <currencyrate> - <id>RUB</id><symbol>RUB</symbol><description>Russian Ruble (RUB)</description> - </currencyrate> - <currencyrate> - <id>RWF</id><symbol>RWF</symbol><description>Rwandan Franc (RWF)</description> - </currencyrate> - <currencyrate> - <id>SAR</id><symbol>SAR</symbol><description>Saudi Riyal (SAR)</description> - </currencyrate> - <currencyrate> - <id>SBD</id><symbol>SBD</symbol><description>Solomon Islands Dollar (SBD)</description> - </currencyrate> - <currencyrate> - <id>SCR</id><symbol>SCR</symbol><description>Seychellois Rupee (SCR)</description> - </currencyrate> - <currencyrate> - <id>SDG</id><symbol>SDG</symbol><description>Sudanese Pound (SDG)</description> - </currencyrate> - <currencyrate> - <id>SEK</id><symbol>SEK</symbol><description>Swedish Krona (SEK)</description> - </currencyrate> - <currencyrate> - <id>SGD</id><symbol>SGD</symbol><description>Singapore Dollar (SGD)</description> - </currencyrate> - <currencyrate> - <id>SHP</id><symbol>SHP</symbol><description>St. Helena Pound (SHP)</description> - </currencyrate> - <currencyrate> - <id>SKK</id><symbol>SKK</symbol><description>Slovak Koruna (SKK)</description> - </currencyrate> - <currencyrate> - <id>SLL</id><symbol>SLL</symbol><description>Sierra Leonean Leone (SLL)</description> - </currencyrate> - <currencyrate> - <id>SOS</id><symbol>SOS</symbol><description>Somali Shilling (SOS)</description> - </currencyrate> - <currencyrate> - <id>SRD</id><symbol>SRD</symbol><description>Surinamese Dollar (SRD)</description> - </currencyrate> - <currencyrate> - <id>STD</id><symbol>STD</symbol><description>São Tomé and Príncipe Dobra (STD)</description> - </currencyrate> - <currencyrate> - <id>SVC</id><symbol>SVC</symbol><description>Salvadoran Colón (SVC)</description> - </currencyrate> - <currencyrate> - <id>SYP</id><symbol>SYP</symbol><description>Syrian Pound (SYP)</description> - </currencyrate> - <currencyrate> - <id>SZL</id><symbol>SZL</symbol><description>Swazi Lilangeni (SZL)</description> - </currencyrate> - <currencyrate> - <id>THB</id><symbol>THB</symbol><description>Thai Baht (THB)</description> - </currencyrate> - <currencyrate> - <id>TJS</id><symbol>TJS</symbol><description>Tajikistani Somoni (TJS)</description> - </currencyrate> - <currencyrate> - <id>TMT</id><symbol>TMT</symbol><description>Turkmenistani Manat (TMT)</description> - </currencyrate> - <currencyrate> - <id>TND</id><symbol>TND</symbol><description>Tunisian Dinar (TND)</description> - </currencyrate> - <currencyrate> - <id>TOP</id><symbol>TOP</symbol><description>Tongan Paʻanga (TOP)</description> - </currencyrate> - <currencyrate> - <id>TRY</id><symbol>TRY</symbol><description>Turkish Lira (TRY)</description> - </currencyrate> - <currencyrate> - <id>TTD</id><symbol>TTD</symbol><description>Trinidad and Tobago Dollar (TTD)</description> - </currencyrate> - <currencyrate> - <id>TWD</id><symbol>TWD</symbol><description>New Taiwan Dollar (TWD)</description> - </currencyrate> - <currencyrate> - <id>TZS</id><symbol>TZS</symbol><description>Tanzanian Shilling (TZS)</description> - </currencyrate> - <currencyrate> - <id>UAH</id><symbol>UAH</symbol><description>Ukrainian Hryvnia (UAH)</description> - </currencyrate> - <currencyrate> - <id>UGX</id><symbol>UGX</symbol><description>Ugandan Shilling (UGX)</description> - </currencyrate> - <currencyrate> - <id>USD</id><symbol>USD</symbol><description>United States Dollar (USD)</description> - </currencyrate> - <currencyrate> - <id>UYU</id><symbol>UYU</symbol><description>Uruguayan Peso (UYU)</description> - </currencyrate> - <currencyrate> - <id>UZS</id><symbol>UZS</symbol><description>Uzbekistani Som (UZS)</description> - </currencyrate> - <currencyrate> - <id>VEF</id><symbol>VEF</symbol><description>Venezuelan Bolívar (VEF)</description> - </currencyrate> - <currencyrate> - <id>VND</id><symbol>VND</symbol><description>Vietnamese Dong (VND)</description> - </currencyrate> - <currencyrate> - <id>VUV</id><symbol>VUV</symbol><description>Vanuatu Vatu (VUV)</description> - </currencyrate> - <currencyrate> - <id>WST</id><symbol>WST</symbol><description>Samoan Tala (WST)</description> - </currencyrate> - <currencyrate> - <id>XAF</id><symbol>XAF</symbol><description>Central African CFA Franc (FCFA)</description> - </currencyrate> - <currencyrate> - <id>XCD</id><symbol>XCD</symbol><description>East Caribbean Dollar (XCD)</description> - </currencyrate> - <currencyrate> - <id>XDR</id><symbol>XDR</symbol><description>Special Drawing Rights (XDR)</description> - </currencyrate> - <currencyrate> - <id>XOF</id><symbol>XOF</symbol><description>West African CFA Franc (CFA)</description> - </currencyrate> - <currencyrate> - <id>XPF</id><symbol>XPF</symbol><description>CFP Franc (CFPF)</description> - </currencyrate> - <currencyrate> - <id>YER</id><symbol>YER</symbol><description>Yemeni Rial (YER)</description> - </currencyrate> - <currencyrate> - <id>ZAR</id><symbol>ZAR</symbol><description>South African Rand (ZAR)</description> - </currencyrate> - <currencyrate> - <id>ZMK</id><symbol>ZMK</symbol><description>Zambian Kwacha (1968–2012) (ZMK)</description> - </currencyrate> - <currencyrate> - <id>ZMW</id><symbol>ZMW</symbol><description>Zambian Kwacha (ZMW)</description> - </currencyrate> - <currencyrate> - <id>ZWL</id><symbol>ZWL</symbol><description>Zimbabwean Dollar (2009) (ZWL)</description> - </currencyrate> -</section> -</Provider>
\ No newline at end of file diff --git a/plugins/CurrencyRates/proto_CurrencyRates/proto_CurrencyRates.vcxproj b/plugins/CurrencyRates/proto_CurrencyRates/proto_CurrencyRates.vcxproj deleted file mode 100644 index b3b9b70855..0000000000 --- a/plugins/CurrencyRates/proto_CurrencyRates/proto_CurrencyRates.vcxproj +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <ItemGroup Label="ProjectConfigurations"> - <ProjectConfiguration Include="Debug|Win32"> - <Configuration>Debug</Configuration> - <Platform>Win32</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Debug|x64"> - <Configuration>Debug</Configuration> - <Platform>x64</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Release|Win32"> - <Configuration>Release</Configuration> - <Platform>Win32</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Release|x64"> - <Configuration>Release</Configuration> - <Platform>x64</Platform> - </ProjectConfiguration> - </ItemGroup> - <PropertyGroup Label="Globals"> - <ProjectName>Proto_CurrencyRates</ProjectName> - <ProjectGuid>{5A0A9761-78E1-4E0F-AD8C-8931A667A5F2}</ProjectGuid> - </PropertyGroup> - <ImportGroup Label="PropertySheets"> - <Import Project="$(ProjectDir)..\..\..\build\vc.common\icons.props" /> - </ImportGroup> -</Project>
\ No newline at end of file diff --git a/plugins/CurrencyRates/proto_CurrencyRates/proto_CurrencyRates.vcxproj.filters b/plugins/CurrencyRates/proto_CurrencyRates/proto_CurrencyRates.vcxproj.filters deleted file mode 100644 index 28f81e7f1b..0000000000 --- a/plugins/CurrencyRates/proto_CurrencyRates/proto_CurrencyRates.vcxproj.filters +++ /dev/null @@ -1,4 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <Import Project="$(ProjectDir)..\..\..\build\vc.common\common.filters" /> -</Project>
\ No newline at end of file diff --git a/plugins/CurrencyRates/proto_CurrencyRates/res/proto_CurrencyRates.rc b/plugins/CurrencyRates/proto_CurrencyRates/res/proto_CurrencyRates.rc deleted file mode 100644 index 16b7546399..0000000000 --- a/plugins/CurrencyRates/proto_CurrencyRates/res/proto_CurrencyRates.rc +++ /dev/null @@ -1,121 +0,0 @@ -//Microsoft Developer Studio generated resource script. -// - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "winres.h" -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// English (U.S.) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -#ifdef _WIN32 -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US -#pragma code_page(1252) -#endif //_WIN32 - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// - -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -104 ICON "proto_online.ico" -105 ICON "proto_offline.ico" -131 ICON "proto_na.ico" - -#endif // English (U.S.) resources -///////////////////////////////////////////////////////////////////////////// - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS) -#ifdef _WIN32 -LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT -#pragma code_page(1251) -#endif //_WIN32 - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "\r\n" -END - -2 TEXTINCLUDE -BEGIN - "#include ""afxres.h""\r\n" - "\0" -END - -3 TEXTINCLUDE -BEGIN - "\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// Version -// - -VS_VERSION_INFO VERSIONINFO - FILEVERSION 0,0,0,1 - PRODUCTVERSION 0,0,0,15 - FILEFLAGSMASK 0x37L -#ifdef _DEBUG - FILEFLAGS 0x21L -#else - FILEFLAGS 0x20L -#endif - FILEOS 0x4L - FILETYPE 0x2L - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "000004b0" - BEGIN - VALUE "CompanyName", "Dioksin" - VALUE "FileDescription", "CurrencyRates protocol icons" - VALUE "FileVersion", "0, 0, 0, 1" - VALUE "InternalName", "proto_CurrencyRates" - VALUE "LegalCopyright", "Do not worry!" - VALUE "OriginalFilename", "proto_CurrencyRates.dll" - VALUE "ProductName", "Miranda NG" - VALUE "ProductVersion", "0, 0, 0, 15" - VALUE "SpecialBuild", "3" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x0, 1200 - END -END - -#endif // Russian resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/plugins/CurrencyRates/proto_CurrencyRates/res/proto_na.ico b/plugins/CurrencyRates/proto_CurrencyRates/res/proto_na.ico Binary files differdeleted file mode 100644 index 71c90785aa..0000000000 --- a/plugins/CurrencyRates/proto_CurrencyRates/res/proto_na.ico +++ /dev/null diff --git a/plugins/CurrencyRates/proto_CurrencyRates/res/proto_offline.ico b/plugins/CurrencyRates/proto_CurrencyRates/res/proto_offline.ico Binary files differdeleted file mode 100644 index f6fc5e9f20..0000000000 --- a/plugins/CurrencyRates/proto_CurrencyRates/res/proto_offline.ico +++ /dev/null diff --git a/plugins/CurrencyRates/proto_CurrencyRates/res/proto_online.ico b/plugins/CurrencyRates/proto_CurrencyRates/res/proto_online.ico Binary files differdeleted file mode 100644 index da85d1f7c6..0000000000 --- a/plugins/CurrencyRates/proto_CurrencyRates/res/proto_online.ico +++ /dev/null diff --git a/plugins/CurrencyRates/res/AutoUpdateDisabled.ico b/plugins/CurrencyRates/res/AutoUpdateDisabled.ico Binary files differdeleted file mode 100644 index 30c9dbf220..0000000000 --- a/plugins/CurrencyRates/res/AutoUpdateDisabled.ico +++ /dev/null diff --git a/plugins/CurrencyRates/res/CurrencyConverter.ico b/plugins/CurrencyRates/res/CurrencyConverter.ico Binary files differdeleted file mode 100644 index 67ac2095f5..0000000000 --- a/plugins/CurrencyRates/res/CurrencyConverter.ico +++ /dev/null diff --git a/plugins/CurrencyRates/res/Export currencyrates.ico b/plugins/CurrencyRates/res/Export currencyrates.ico Binary files differdeleted file mode 100644 index 31c7aa2ba1..0000000000 --- a/plugins/CurrencyRates/res/Export currencyrates.ico +++ /dev/null diff --git a/plugins/CurrencyRates/res/Forex.rc b/plugins/CurrencyRates/res/Forex.rc deleted file mode 100644 index 3d55d1d363..0000000000 --- a/plugins/CurrencyRates/res/Forex.rc +++ /dev/null @@ -1,376 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#include "..\src\resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "afxres.h" - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// Neutral resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_NEU) -LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL -#pragma code_page(1251) - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// - -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -IDI_ICON_MAIN ICON "main.ico" - -IDI_ICON_SECTION ICON "Section.ico" - -IDI_ICON_CURRENCYRATE ICON "currencyrate.ico" - -IDI_ICON_UP ICON "up.ico" - -IDI_ICON_DOWN ICON "down.ico" - -IDI_ICON_CURRENCY_CONVERTER ICON "CurrencyConverter.ico" - -IDI_ICON_REFRESH ICON "Refresh.ico" - -IDI_ICON_EXPORT ICON "Export currencyrates.ico" - -IDI_ICON_SWAP ICON "swap.ico" - -IDI_ICON_IMPORT ICON "Import currencyrates.ico" - -IDI_ICON_NOTCHANGED ICON "notchanged.ico" - -IDI_ICON_DISABLED ICON "AutoUpdateDisabled.ico" - - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "..\\src\\resource.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#include ""afxres.h""\r\n" - "\0" -END - -3 TEXTINCLUDE -BEGIN - "\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -IDD_DIALOG_VARIABLE_LIST DIALOGEX 0, 0, 216, 182 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Variable List" -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - DEFPUSHBUTTON "OK",IDOK,83,161,50,14 - EDITTEXT IDC_EDIT_VARIABLE,7,7,202,147,ES_MULTILINE | ES_AUTOHSCROLL | ES_READONLY -END - -IDD_CONTACT_SETTINGS DIALOGEX 0, 0, 323, 269 -STYLE DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -EXSTYLE WS_EX_CONTROLPARENT -CAPTION "Edit Settings" -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - CONTROL "Use contact specific settings",IDC_CHECK_CONTACT_SPECIFIC, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,22,151,10 - GROUPBOX "Log",IDC_STATIC,26,35,290,137 - CONTROL "Use &Internal History",IDC_CHECK_INTERNAL_HISTORY, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,37,49,140,10 - LTEXT "&Format:",IDC_STATIC_HISTORY_FORMAT,50,63,47,8 - EDITTEXT IDC_EDIT_HISTORY_FORMAT,101,61,137,12,ES_AUTOHSCROLL - PUSHBUTTON "&Variables...",IDC_BUTTON_HISTORY_DESCRIPTION,241,61,65,12 - CONTROL "&Add to History only if Value Changed",IDC_CHECK_HISTORY_CONDITION, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,50,77,252,10 - CONTROL "Use &External File",IDC_CHECK_EXTERNAL_FILE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,37,97,127,10 - LTEXT "&Select File:",IDC_STATIC_SELECT_FILE,50,113,49,8 - EDITTEXT IDC_EDIT_FILE_NAME,101,111,137,12,ES_AUTOHSCROLL - PUSHBUTTON "&Browse...",IDC_BUTTON_BROWSE,241,111,65,12 - LTEXT "Variables Allowed: %miranda_userdata%,%currencyratename%",IDC_STATIC,50,126,257,8,WS_DISABLED - LTEXT "F&ormat:",IDC_STATIC_LOG_FILE_FORMAT,50,142,47,8 - EDITTEXT IDC_EDIT_LOG_FILE_FORMAT,101,140,137,12,ES_AUTOHSCROLL - PUSHBUTTON "V&ariables...",IDC_BUTTON_LOG_FILE_DESCRIPTION,241,140,65,12 - CONTROL "Add to &Log only if Value Changed",IDC_CHECK_LOG_FILE_CONDITION, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,50,156,224,10 - CONTROL "Show &Popup Window",IDC_CHECK_SHOW_POPUP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,180,120,10 - LTEXT "F&ormat:",IDC_STATIC_POPUP_FORMAT,30,197,47,8 - EDITTEXT IDC_EDIT_POPUP_FORMAT,81,195,137,12,ES_AUTOHSCROLL - PUSHBUTTON "V&ariables...",IDC_BUTTON_POPUP_FORMAT_DESCRIPTION,221,195,65,12 - CONTROL "Show Popup Window Only if Value &Changed",IDC_CHECK_SHOW_POPUP_ONLY_VALUE_CHANGED, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,30,210,245,10 - DEFPUSHBUTTON "OK",IDOK,107,248,50,14 - PUSHBUTTON "Cancel",IDCANCEL,163,248,50,14 - EDITTEXT IDC_EDIT_NAME,7,7,309,12,ES_CENTER | ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER - PUSHBUTTON "Popup settings...",IDC_BUTTON_POPUP_SETTINGS,98,222,111,14 -END - -IDD_CURRENCY_CONVERTER DIALOGEX 0, 0, 347, 101 -STYLE DS_SETFONT | DS_SETFOREGROUND | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -EXSTYLE WS_EX_CONTROLPARENT -CAPTION "Currency Converter" -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - EDITTEXT IDC_EDIT_VALUE,6,7,56,13,ES_AUTOHSCROLL - COMBOBOX IDC_COMBO_CONVERT_FROM,68,7,105,44,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - LTEXT "&to:",IDC_STATIC,214,9,14,8 - COMBOBOX IDC_COMBO_CONVERT_INTO,230,7,105,44,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "&Swap",IDC_BUTTON_SWAP,180,7,24,12,BS_ICON - PUSHBUTTON "Convert",IDC_BUTTON_CONVERT,134,24,79,14 - EDITTEXT IDC_EDIT_RESULT,7,44,328,12,ES_CENTER | ES_AUTOHSCROLL | ES_READONLY - CONTROL "Info provided by <a href=""http://www.google.com"">Google</a>",IDC_SYSLINK_PROVIDER, - "SysLink",WS_TABSTOP,7,61,328,11 - PUSHBUTTON "Close",IDCANCEL,148,80,50,14 -END - -IDD_PROVIDER_ADV_SETTINGS DIALOGEX 0, 0, 303, 260 -STYLE DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -EXSTYLE WS_EX_CONTROLPARENT -CAPTION "Edit Settings" -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - GROUPBOX "Log",IDC_STATIC,7,23,289,139 - CONTROL "Use &Internal History",IDC_CHECK_INTERNAL_HISTORY, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,37,140,10 - LTEXT "&Format:",IDC_STATIC_HISTORY_FORMAT,30,51,47,8 - EDITTEXT IDC_EDIT_HISTORY_FORMAT,81,49,137,12,ES_AUTOHSCROLL - PUSHBUTTON "&Variables...",IDC_BUTTON_HISTORY_DESCRIPTION,221,49,65,12 - CONTROL "&Add to History only if Value Changed",IDC_CHECK_HISTORY_CONDITION, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,30,65,252,10 - CONTROL "Use &External File",IDC_CHECK_EXTERNAL_FILE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,85,127,10 - LTEXT "&Select File:",IDC_STATIC_SELECT_FILE,30,101,49,8 - EDITTEXT IDC_EDIT_FILE_NAME,81,99,137,12,ES_AUTOHSCROLL - PUSHBUTTON "&Browse...",IDC_BUTTON_BROWSE,221,99,65,12 - LTEXT "Variables Allowed: %miranda_userdata%,%currencyratename%",IDC_STATIC,30,115,257,8,WS_DISABLED - LTEXT "F&ormat:",IDC_STATIC_LOG_FILE_FORMAT,30,131,47,8 - EDITTEXT IDC_EDIT_LOG_FILE_FORMAT,81,129,137,12,ES_AUTOHSCROLL - PUSHBUTTON "V&ariables...",IDC_BUTTON_LOG_FILE_DESCRIPTION,221,129,65,12 - CONTROL "Add to &Log only if Value Changed",IDC_CHECK_LOG_FILE_CONDITION, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,30,145,224,10 - CONTROL "Show &Popup Window",IDC_CHECK_SHOW_POPUP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,167,120,10 - LTEXT "F&ormat:",IDC_STATIC_POPUP_FORMAT,30,184,47,8 - EDITTEXT IDC_EDIT_POPUP_FORMAT,81,182,137,12,ES_AUTOHSCROLL - PUSHBUTTON "V&ariables...",IDC_BUTTON_POPUP_FORMAT_DESCRIPTION,221,182,65,12 - CONTROL "Show Popup Window Only if Value &Changed",IDC_CHECK_SHOW_POPUP_ONLY_VALUE_CHANGED, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,30,197,245,10 - DEFPUSHBUTTON "OK",IDOK,98,239,50,14 - PUSHBUTTON "Cancel",IDCANCEL,154,239,50,14 - EDITTEXT IDC_EDIT_NAME,7,7,289,12,ES_CENTER | ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER - PUSHBUTTON "Popup settings...",IDC_BUTTON_POPUP_SETTINGS,86,210,111,14 -END - -IDD_DIALOG_POPUP DIALOGEX 0, 0, 319, 160 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Popup Window Settings" -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - GROUPBOX "Colors",IDC_STATIC,7,7,149,82,WS_GROUP - CONTROL "Use default colors",IDC_RADIO_DEFAULT_COLOURS,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,15,20,82,10 - CONTROL "Use user-defined colors",IDC_RADIO_USER_DEFINED_COLOURS, - "Button",BS_AUTORADIOBUTTON,15,34,97,10 - LTEXT "Background color",IDC_STATIC,70,53,66,8 - CONTROL "",IDC_BGCOLOR,"ColourPicker",WS_TABSTOP,26,49,35,14 - LTEXT "Text color",IDC_STATIC,70,71,66,8 - CONTROL "",IDC_TEXTCOLOR,"ColourPicker",WS_TABSTOP,26,67,35,14 - GROUPBOX "Delay",IDC_STATIC,162,6,149,82,WS_GROUP - CONTROL "From popup plugin",IDC_DELAYFROMPU,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,174,20,90,10 - CONTROL "Custom",IDC_DELAYCUSTOM,"Button",BS_AUTORADIOBUTTON,174,35,70,10 - CONTROL "Permanent",IDC_DELAYPERMANENT,"Button",BS_AUTORADIOBUTTON,174,50,50,10 - EDITTEXT IDC_DELAY,252,33,35,14,ES_AUTOHSCROLL | ES_NUMBER | WS_GROUP - CONTROL "Do not add to popup's history",IDC_CHECK_DONT_USE_POPUPHISTORY, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,96,200,10 - PUSHBUTTON "Preview",IDC_PREV,134,114,50,14 - DEFPUSHBUTTON "OK",IDOK,101,139,50,14 - PUSHBUTTON "Cancel",IDCANCEL,167,139,50,14 -END - -IDD_DIALOG_CURRENCYRATE_INFO DIALOGEX 0, 0, 222, 132 -STYLE DS_SETFONT | DS_FIXEDSYS | DS_CENTER | WS_CHILD -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - CTEXT "",IDC_STATIC_CURRENCYRATE_NAME,7,7,208,8 - CONTROL "",IDC_SYSLINK_PROVIDER,"SysLink",WS_TABSTOP,7,110,208,14 - LTEXT "Current Rate:",IDC_STATIC,21,62,72,8 - EDITTEXT IDC_EDIT_RATE,97,60,61,12,ES_AUTOHSCROLL | ES_READONLY - LTEXT "Rate Fetch Time:",IDC_STATIC,21,47,73,8 - EDITTEXT IDC_EDIT_RATE_FETCH_TIME,97,45,98,12,ES_AUTOHSCROLL | ES_READONLY - LTEXT "Previous Rate:",IDC_STATIC,21,77,71,8 - EDITTEXT IDC_EDIT_PREVIOUS_RATE,97,75,61,12,ES_AUTOHSCROLL | ES_READONLY -END - -IDD_DIALOG_OPT_GOOGLE DIALOGEX 0, 0, 310, 242 -STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD -EXSTYLE WS_EX_CONTROLPARENT -FONT 8, "MS Shell Dlg", 0, 0, 0x1 -BEGIN - LTEXT "&Convert:",IDC_STATIC,7,9,56,8 - COMBOBOX IDC_COMBO_CONVERT_FROM,64,7,105,44,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - LTEXT "&to:",IDC_STATIC,175,9,21,8 - COMBOBOX IDC_COMBO_CONVERT_INTO,200,7,105,44,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "&Add",IDC_BUTTON_ADD,255,35,50,14 - LTEXT "&Watched currency rates:",IDC_STATIC,7,23,110,8 - LISTBOX IDC_LIST_RATES,19,35,231,111,LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "&Remove",IDC_BUTTON_REMOVE,255,52,50,14 - LTEXT "&Refresh Rates Every:",IDC_STATIC,7,153,107,8 - EDITTEXT IDC_EDIT_REFRESH_RATE,117,151,40,12,ES_AUTOHSCROLL - CONTROL "",IDC_SPIN_REFRESH_RATE,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_HOTTRACK,234,150,11,14 - COMBOBOX IDC_COMBO_REFRESH_RATE,160,151,69,59,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - LTEXT "&Display in Contact List as:",IDC_STATIC,7,167,107,8 - EDITTEXT IDC_EDIT_CONTACT_LIST_FORMAT,117,165,120,12,ES_AUTOHSCROLL - PUSHBUTTON "&Variables...",IDC_BUTTON_DESCRIPTION,240,165,65,12 - LTEXT "&Status Message:",IDC_STATIC,7,181,107,8 - EDITTEXT IDC_EDIT_STATUS_MESSAGE_FORMAT,117,179,120,12,ES_AUTOHSCROLL - LTEXT "&Tendency:",IDC_STATIC,7,195,107,8 - EDITTEXT IDC_EDIT_TENDENCY_FORMAT,117,193,120,12,ES_AUTOHSCROLL - LTEXT "&Personal key:",IDC_STATIC,7,210,107,8 - EDITTEXT IDC_EDIT_PERSONAL_KEY,117,208,120,12,ES_AUTOHSCROLL - PUSHBUTTON "&Advanced Settings...",IDC_BUTTON_ADVANCED_SETTINGS,105,223,110,14 -END - -IDD_DIALOG_CURRENCYRATE_INFO_1 DIALOGEX 0, 0, 222, 143 -STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "Rate Info" -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - CTEXT "",IDC_STATIC_CURRENCYRATE_NAME,7,7,208,8 - CONTROL "",IDC_SYSLINK_PROVIDER,"SysLink",WS_TABSTOP,7,98,208,14 - LTEXT "Current Rate:",IDC_STATIC,15,57,81,8 - EDITTEXT IDC_EDIT_RATE,108,55,61,12,ES_AUTOHSCROLL | ES_READONLY - LTEXT "Rate Fetch Time:",IDC_STATIC,15,42,81,8 - EDITTEXT IDC_EDIT_RATE_FETCH_TIME,108,40,98,12,ES_AUTOHSCROLL | ES_READONLY - LTEXT "Previous Rate:",IDC_STATIC,15,72,92,8 - EDITTEXT IDC_EDIT_PREVIOUS_RATE,108,70,61,12,ES_AUTOHSCROLL | ES_READONLY - PUSHBUTTON "Close",IDOK,85,122,50,14 -END - - -///////////////////////////////////////////////////////////////////////////// -// -// DESIGNINFO -// - -#ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO -BEGIN - IDD_DIALOG_VARIABLE_LIST, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 209 - TOPMARGIN, 7 - BOTTOMMARGIN, 175 - END - - IDD_CONTACT_SETTINGS, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 316 - TOPMARGIN, 7 - BOTTOMMARGIN, 262 - END - - IDD_CURRENCY_CONVERTER, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 335 - TOPMARGIN, 7 - BOTTOMMARGIN, 94 - END - - IDD_PROVIDER_ADV_SETTINGS, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 296 - TOPMARGIN, 7 - BOTTOMMARGIN, 253 - END - - IDD_DIALOG_POPUP, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 312 - TOPMARGIN, 7 - BOTTOMMARGIN, 153 - END - - IDD_DIALOG_CURRENCYRATE_INFO, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 215 - TOPMARGIN, 7 - BOTTOMMARGIN, 124 - END - - IDD_DIALOG_OPT_GOOGLE, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 305 - VERTGUIDE, 249 - TOPMARGIN, 7 - BOTTOMMARGIN, 237 - END - - IDD_DIALOG_CURRENCYRATE_INFO_1, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 215 - TOPMARGIN, 7 - BOTTOMMARGIN, 135 - END -END -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// AFX_DIALOG_LAYOUT -// - -IDD_CURRENCY_CONVERTER AFX_DIALOG_LAYOUT -BEGIN - 0 -END - -IDD_DIALOG_OPT_GOOGLE AFX_DIALOG_LAYOUT -BEGIN - 0 -END - -#endif // Neutral resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/plugins/CurrencyRates/res/Import currencyrates.ico b/plugins/CurrencyRates/res/Import currencyrates.ico Binary files differdeleted file mode 100644 index 506aa62af3..0000000000 --- a/plugins/CurrencyRates/res/Import currencyrates.ico +++ /dev/null diff --git a/plugins/CurrencyRates/res/Refresh.ico b/plugins/CurrencyRates/res/Refresh.ico Binary files differdeleted file mode 100644 index f09a47cd9e..0000000000 --- a/plugins/CurrencyRates/res/Refresh.ico +++ /dev/null diff --git a/plugins/CurrencyRates/res/Section.ico b/plugins/CurrencyRates/res/Section.ico Binary files differdeleted file mode 100644 index 768b3775aa..0000000000 --- a/plugins/CurrencyRates/res/Section.ico +++ /dev/null diff --git a/plugins/CurrencyRates/res/Version.rc b/plugins/CurrencyRates/res/Version.rc deleted file mode 100644 index 5a5ddd63ed..0000000000 --- a/plugins/CurrencyRates/res/Version.rc +++ /dev/null @@ -1,9 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#ifdef APSTUDIO_INVOKED -#error this file is not editable by Microsoft Visual C++ -#endif //APSTUDIO_INVOKED - -#include "..\src\version.h" - -#include "..\..\build\Version.rc" diff --git a/plugins/CurrencyRates/res/currencyrate.ico b/plugins/CurrencyRates/res/currencyrate.ico Binary files differdeleted file mode 100644 index 1367c475d6..0000000000 --- a/plugins/CurrencyRates/res/currencyrate.ico +++ /dev/null diff --git a/plugins/CurrencyRates/res/down.ico b/plugins/CurrencyRates/res/down.ico Binary files differdeleted file mode 100644 index 20722f63ca..0000000000 --- a/plugins/CurrencyRates/res/down.ico +++ /dev/null diff --git a/plugins/CurrencyRates/res/main.ico b/plugins/CurrencyRates/res/main.ico Binary files differdeleted file mode 100644 index da85d1f7c6..0000000000 --- a/plugins/CurrencyRates/res/main.ico +++ /dev/null diff --git a/plugins/CurrencyRates/res/notchanged.ico b/plugins/CurrencyRates/res/notchanged.ico Binary files differdeleted file mode 100644 index 39a8f1ea3c..0000000000 --- a/plugins/CurrencyRates/res/notchanged.ico +++ /dev/null diff --git a/plugins/CurrencyRates/res/swap.ico b/plugins/CurrencyRates/res/swap.ico Binary files differdeleted file mode 100644 index f4a410da41..0000000000 --- a/plugins/CurrencyRates/res/swap.ico +++ /dev/null diff --git a/plugins/CurrencyRates/res/up.ico b/plugins/CurrencyRates/res/up.ico Binary files differdeleted file mode 100644 index 0379c80d17..0000000000 --- a/plugins/CurrencyRates/res/up.ico +++ /dev/null diff --git a/plugins/CurrencyRates/src/Chart.h b/plugins/CurrencyRates/src/Chart.h deleted file mode 100644 index 1247ead065..0000000000 --- a/plugins/CurrencyRates/src/Chart.h +++ /dev/null @@ -1,280 +0,0 @@ -#ifndef __FAE7F26E_61ED_4951_BE87_5E022CDF21DF_Chart_h__ -#define __FAE7F26E_61ED_4951_BE87_5E022CDF21DF_Chart_h__ - -#pragma once - -namespace detail -{ - template<class T> struct CConverter - { - static double Convert(const T& v) - { - return boost::numeric_cast<double>(v); - } - - static tstring ToString(const T& v) - { - return boost::lexical_cast<tstring>(v); - } - }; - - template<> struct CConverter < double > - { - static double Convert(double v) - { - return v; - } - - static tstring ToString(double v) - { - tostringstream s; - s.imbue(std::locale("")); - s << std::fixed << v; - return s.str(); - } - }; -} - -template<class TXValue, class TYValue, class TXConverter = detail::CConverter<TXValue>, class TYConverter = detail::CConverter<TYValue> > -class CChart -{ -private: - typedef std::pair<TXValue, TYValue> TValue; - typedef std::vector<TValue> TValues; - -public: - CChart() : m_MaxY(), m_MinY() - { - memset(&m_rect, 0, sizeof(m_rect)); - } - - ~CChart() - { - } - - void AddValue(const TXValue& x, const TYValue& y) - { - if (m_aValues.empty()) - { - m_MaxY = m_MinY = y; - } - else - { - m_MaxY = __max(y, m_MaxY); - m_MinY = __min(y, m_MinY); - } - m_aValues.push_back(std::make_pair(x, y)); - } - - void SetRect(int x, int y, int cx, int cy) - { - m_rect.left = x; - m_rect.right = x + cx; - m_rect.top = y; - m_rect.bottom = y + cy; - } - - void Draw(HDC hdc) const - { - RECT rc = m_rect; - DrawBackground(hdc, rc); - if (false == m_aValues.empty()) - { - ::InflateRect(&rc, -10, -10); - DrawGrid(hdc, rc); - DrawAxis(hdc, rc); - DrawPoints(hdc, rc); - } - else - { - HFONT hFont = static_cast<HFONT>(::GetStockObject(DEFAULT_GUI_FONT)); - HFONT hOldFont = static_cast<HFONT>(::SelectObject(hdc, hFont)); - - LPCTSTR pszText = TranslateT("There is nothing to show"); - int nDrawTextResult = ::DrawText(hdc, pszText, -1, &rc, DT_SINGLELINE | DT_VCENTER | DT_CENTER); - assert(0 != nDrawTextResult); - - ::SelectObject(hdc, hOldFont); - BOOL bResult = ::DeleteObject(hFont); - assert(TRUE == bResult); - } - } - -private: - void DrawBackground(HDC hdc, RECT& rc) const - { - // HBRUSH hBrush = ::CreateSolidBrush(RGB(255,0,0));//user preferable background color here! - // ::FillRect(hdc,&m_rect,hBrush); - // ::DeleteBrush(hBrush); - } - - void DrawGrid(HDC hdc, RECT& rc) const - { - enum{ number_of_lines = 5 }; - HPEN hPen = ::CreatePen(PS_SOLID, 1, RGB(125, 125, 125)); - HPEN hPenOld = static_cast<HPEN>(::SelectObject(hdc, hPen)); - HFONT hFont = static_cast<HFONT>(::GetStockObject(DEFAULT_GUI_FONT)); - HFONT hOldFont = static_cast<HFONT>(::SelectObject(hdc, hFont)); - - //vertical grid - int step = (rc.bottom - rc.top) / number_of_lines; - TYValue y_val = m_MinY + ((m_MaxY - m_MinY) / number_of_lines); - int nXIndent = 0; - for (int y = rc.bottom - step; y > rc.top; y -= step, y_val += ((m_MaxY - m_MinY) / number_of_lines)) - { - tstring sY = TYConverter::ToString(y_val); - SIZE sizeText = { 0, 0 }; - BOOL bResult = ::GetTextExtentPoint32(hdc, sY.c_str(), (int)sY.size(), &sizeText); - assert(TRUE == bResult); - nXIndent = __max(nXIndent, sizeText.cx); - } - - y_val = m_MinY + ((m_MaxY - m_MinY) / number_of_lines); - nXIndent += 2; - rc.left += nXIndent; - for (int y = rc.bottom - step; y > rc.top; y -= step, y_val += ((m_MaxY - m_MinY) / number_of_lines)) - { - tstring sY = TYConverter::ToString(y_val); - SIZE sizeText = { 0, 0 }; - BOOL bResult = ::GetTextExtentPoint32(hdc, sY.c_str(), (int)sY.size(), &sizeText); - assert(TRUE == bResult); - - RECT rcText = { rc.left - nXIndent, y - (sizeText.cy / 2), rc.left - 1, y + (sizeText.cy / 2) }; - int nDrawTextResult = ::DrawText(hdc, sY.c_str(), -1, &rcText, DT_SINGLELINE | DT_VCENTER | DT_RIGHT); - assert(0 != nDrawTextResult); - - bResult = ::MoveToEx(hdc, rc.left, y, NULL); - assert(TRUE == bResult); - - bResult = ::LineTo(hdc, rc.right, y); - assert(TRUE == bResult); - } - - // horizontal grid - HRGN rgnAllLables = ::CreateRectRgn(0, 0, 0, 0); - HRGN rgnTemporary = ::CreateRectRgn(0, 0, 0, 0); - bool bFixedRect = false; - step = (rc.right - rc.left) / number_of_lines; - TXValue x_val = m_aValues[0].first + ((m_aValues[m_aValues.size() - 1].first - m_aValues[0].first) / number_of_lines); - for (int x = rc.left + step; x < rc.right; x += step, x_val += ((m_aValues[m_aValues.size() - 1].first - m_aValues[0].first) / number_of_lines)) - { - tstring sX = TXConverter::ToString(x_val); - SIZE sizeText = { 0, 0 }; - BOOL bResult = ::GetTextExtentPoint32(hdc, sX.c_str(), (int)sX.size(), &sizeText); - assert(TRUE == bResult); - - if (false == bFixedRect) - { - rc.bottom -= sizeText.cy + 2; - bFixedRect = true; - } - - RECT rcText = { x - (sizeText.cx / 2), rc.bottom, x + (sizeText.cx / 2), rc.bottom + sizeText.cy - 1 }; - // Draw a label if it doesn't overlap with previous ones - HRGN rgnCurrentLable = ::CreateRectRgnIndirect(&rcText); - if (NULLREGION == ::CombineRgn(rgnTemporary, rgnCurrentLable, rgnAllLables, RGN_AND)) - { - int nDrawTextResult = ::DrawText(hdc, sX.c_str(), (int)sX.size(), &rcText, DT_SINGLELINE | DT_VCENTER | DT_CENTER); - assert(0 != nDrawTextResult); - int nCombineRgnResult = ::CombineRgn(rgnTemporary, rgnCurrentLable, rgnAllLables, RGN_OR); - assert(ERROR != nCombineRgnResult); - nCombineRgnResult = ::CombineRgn(rgnAllLables, rgnTemporary, NULL, RGN_COPY); - assert(ERROR != nCombineRgnResult); - } - bResult = ::DeleteObject(rgnCurrentLable); - assert(TRUE == bResult); - - bResult = ::MoveToEx(hdc, x, rc.bottom, NULL); - assert(TRUE == bResult); - - bResult = ::LineTo(hdc, x, rc.top); - assert(TRUE == bResult); - } - - BOOL bResult = ::DeleteObject(rgnAllLables); - assert(TRUE == bResult); - bResult = ::DeleteObject(rgnTemporary); - assert(TRUE == bResult); - - ::SelectObject(hdc, hOldFont); - ::SelectObject(hdc, hPenOld); - bResult = ::DeleteObject(hFont); - assert(TRUE == bResult); - bResult = ::DeleteObject(hPen); - assert(TRUE == bResult); - } - - void DrawAxis(HDC hdc, RECT& rc) const - { - HPEN hPen = ::CreatePen(PS_SOLID, 2, RGB(0, 0, 0)); - HPEN hPenOld = static_cast<HPEN>(::SelectObject(hdc, hPen)); - - // draw Y-axes - BOOL bResult = ::MoveToEx(hdc, rc.left + 1, rc.bottom - 1, NULL); - assert(TRUE == bResult); - bResult = ::LineTo(hdc, rc.left + 1, rc.top + 1); - assert(TRUE == bResult); - - // draw X-axes - bResult = ::MoveToEx(hdc, rc.left + 1, rc.bottom - 1, NULL); - assert(TRUE == bResult); - bResult = ::LineTo(hdc, rc.right - 1, rc.bottom - 1); - assert(TRUE == bResult); - - ::SelectObject(hdc, hPenOld); - bResult = ::DeleteObject(hPen); - assert(TRUE == bResult); - } - - void DrawPoints(HDC hdc, RECT& rc) const - { - TXValue xMin(m_aValues[0].first); - double dx = TXConverter::Convert(m_aValues[m_aValues.size() - 1].first - xMin); - double dY = TYConverter::Convert(m_MaxY - m_MinY); - - HPEN hPen = ::CreatePen(PS_SOLID, 1, RGB(255, 0, 0)); - HGDIOBJ hPenOld = ::SelectObject(hdc, hPen); - - HBRUSH hBrush = ::CreateSolidBrush(RGB(255, 0, 0)); - HGDIOBJ hBrushOld = ::SelectObject(hdc, hBrush); - - bool bPrevValid = false; - int xPrex, yPrev; - - BOOST_FOREACH(const TValue& v, m_aValues) - { - double k = TXConverter::Convert(v.first - xMin); - - int x = rc.left + boost::numeric_cast<int>((rc.right - rc.left)*(k / dx)); - k = TYConverter::Convert(v.second - m_MinY); - int y = rc.bottom - boost::numeric_cast<int>((rc.bottom - rc.top)*(k / dY)); - ::Ellipse(hdc, x - 5, y - 5, x + 5, y + 5); - if (bPrevValid) - { - BOOL bResult = ::MoveToEx(hdc, xPrex, yPrev, NULL); - assert(TRUE == bResult); - bResult = ::LineTo(hdc, x, y); - assert(TRUE == bResult); - } - - xPrex = x, yPrev = y; - bPrevValid = true; - } - - ::SelectObject(hdc, hPenOld); - BOOL bResult = ::DeleteObject(hPen); - assert(TRUE == bResult); - - ::SelectObject(hdc, hBrushOld); - bResult = ::DeleteObject(hBrush); - assert(TRUE == bResult); - } - -private: - TValues m_aValues; - RECT m_rect; - TYValue m_MaxY; - TYValue m_MinY; -}; - -#endif // __FAE7F26E_61ED_4951_BE87_5E022CDF21DF_Chart_h__ diff --git a/plugins/CurrencyRates/src/ComHelper.cpp b/plugins/CurrencyRates/src/ComHelper.cpp deleted file mode 100644 index c4715892b5..0000000000 --- a/plugins/CurrencyRates/src/ComHelper.cpp +++ /dev/null @@ -1,28 +0,0 @@ -#include "StdAfx.h" - -tstring ComException2Msg(_com_error& e, const tstring& rsAdditionalInfo) -{ - HRESULT hError = e.Error(); - tostringstream o; - if (false == rsAdditionalInfo.empty()) - o << rsAdditionalInfo << "\n"; - - o << e.ErrorMessage() << L" (" << std::hex << hError << L")"; - - IErrorInfo* p = e.ErrorInfo(); - CComPtr<IErrorInfo> pErrorInfo(p); - if (nullptr != p) - p->Release(); - - if (pErrorInfo) - o << L"\n" << e.Description(); - - return o.str(); -} - -void ShowComError(_com_error& e, const tstring& rsAdditionalInfo) -{ - tstring sErrorMsg = ComException2Msg(e, rsAdditionalInfo); - LogIt(sErrorMsg); - CurrencyRates_MessageBox(nullptr, sErrorMsg.c_str(), MB_OK | MB_ICONERROR); -} diff --git a/plugins/CurrencyRates/src/ComHelper.h b/plugins/CurrencyRates/src/ComHelper.h deleted file mode 100644 index 343d436785..0000000000 --- a/plugins/CurrencyRates/src/ComHelper.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef __37ae28ab_c414_4aba_bbef_d23dd68643a5_ComHelper_h__ -#define __37ae28ab_c414_4aba_bbef_d23dd68643a5_ComHelper_h__ - -void ShowComError(_com_error& e, const tstring& rsAdditionalInfo); -tstring ComException2Msg(_com_error& e, const tstring& rsAdditionalInfo); - -#endif//__37ae28ab_c414_4aba_bbef_d23dd68643a5_ComHelper_h__ diff --git a/plugins/CurrencyRates/src/CommonOptionDlg.cpp b/plugins/CurrencyRates/src/CommonOptionDlg.cpp deleted file mode 100644 index 335457ed89..0000000000 --- a/plugins/CurrencyRates/src/CommonOptionDlg.cpp +++ /dev/null @@ -1,221 +0,0 @@ -#include "StdAfx.h" - -typedef boost::shared_ptr<CAdvProviderSettings> TAdvSettingsPtr; -typedef std::map<const ICurrencyRatesProvider*, TAdvSettingsPtr> TAdvSettings; - -TAdvSettings g_aAdvSettings; - -CAdvProviderSettings* get_adv_settings(const ICurrencyRatesProvider *pProvider, bool bCreateIfNonExist) -{ - TAdvSettings::iterator i = g_aAdvSettings.find(pProvider); - if (i != g_aAdvSettings.end()) - return i->second.get(); - - if (true == bCreateIfNonExist) { - TAdvSettingsPtr pAdvSet(new CAdvProviderSettings(pProvider)); - g_aAdvSettings.insert(std::make_pair(pProvider, pAdvSet)); - return pAdvSet.get(); - } - - return nullptr; -} - -void remove_adv_settings(const ICurrencyRatesProvider *pProvider) -{ - TAdvSettings::iterator i = g_aAdvSettings.find(pProvider); - if (i != g_aAdvSettings.end()) - g_aAdvSettings.erase(i); -} - -void CommonOptionDlgProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp, CCommonDlgProcData& rData) -{ - switch (msg) { - case WM_INITDIALOG: - { - assert(rData.m_pCurrencyRatesProvider); - - // set contact list display format - tstring sDspNameFrmt = CurrencyRates_DBGetStringW(NULL, CURRENCYRATES_MODULE_NAME, DB_KEY_DisplayNameFormat, DB_DEF_DisplayNameFormat); - ::SetDlgItemText(hWnd, IDC_EDIT_CONTACT_LIST_FORMAT, sDspNameFrmt.c_str()); - - // set status message display format - tstring sStatusMsgFrmt = CurrencyRates_DBGetStringW(NULL, CURRENCYRATES_MODULE_NAME, DB_KEY_StatusMsgFormat, DB_DEF_StatusMsgFormat); - ::SetDlgItemText(hWnd, IDC_EDIT_STATUS_MESSAGE_FORMAT, sStatusMsgFrmt.c_str()); - - // set tendency format - tstring sTendencyFrmt = CurrencyRates_DBGetStringW(NULL, CURRENCYRATES_MODULE_NAME, DB_KEY_TendencyFormat, DB_DEF_TendencyFormat); - ::SetDlgItemText(hWnd, IDC_EDIT_TENDENCY_FORMAT, sTendencyFrmt.c_str()); - - // set api key - tstring sApiKey = CurrencyRates_DBGetStringW(NULL, CURRENCYRATES_MODULE_NAME, DB_KEY_ApiKey, L""); - ::SetDlgItemText(hWnd, IDC_EDIT_PERSONAL_KEY, sApiKey.c_str()); - - // refresh rate - HWND hwndCombo = ::GetDlgItem(hWnd, IDC_COMBO_REFRESH_RATE); - LPCTSTR pszRefreshRateTypes[] = { TranslateT("Seconds"), TranslateT("Minutes"), TranslateT("Hours") }; - for (int i = 0; i < _countof(pszRefreshRateTypes); ++i) - ::SendMessage(hwndCombo, CB_ADDSTRING, 0, reinterpret_cast<LPARAM>(pszRefreshRateTypes[i])); - - int nRefreshRateType = db_get_w(0, CURRENCYRATES_MODULE_NAME, DB_KEY_RefreshRateType, RRT_MINUTES); - if (nRefreshRateType < RRT_SECONDS || nRefreshRateType > RRT_HOURS) - nRefreshRateType = RRT_MINUTES; - - UINT nRate = db_get_w(0, CURRENCYRATES_MODULE_NAME, DB_KEY_RefreshRateValue, 1); - switch (nRefreshRateType) { - default: - case RRT_SECONDS: - case RRT_MINUTES: - if (nRate < 1 || nRate > 60) - nRate = 1; - - spin_set_range(::GetDlgItem(hWnd, IDC_SPIN_REFRESH_RATE), 1, 60); - break; - case RRT_HOURS: - if (nRate < 1 || nRate > 24) - nRate = 1; - - spin_set_range(::GetDlgItem(hWnd, IDC_SPIN_REFRESH_RATE), 1, 24); - break; - } - - ::SendMessage(hwndCombo, CB_SETCURSEL, nRefreshRateType, 0); - ::SetDlgItemInt(hWnd, IDC_EDIT_REFRESH_RATE, nRate, FALSE); - - PropSheet_UnChanged(::GetParent(hWnd), hWnd); - } - break; - - case WM_COMMAND: - switch (HIWORD(wp)) { - case CBN_SELCHANGE: - if (IDC_COMBO_REFRESH_RATE == LOWORD(wp)) { - ERefreshRateType nType = static_cast<ERefreshRateType>(::SendMessage(reinterpret_cast<HWND>(lp), CB_GETCURSEL, 0, 0)); - switch (nType) { - default: - case RRT_SECONDS: - case RRT_MINUTES: - spin_set_range(::GetDlgItem(hWnd, IDC_SPIN_REFRESH_RATE), 1, 60); - break; - case RRT_HOURS: - spin_set_range(::GetDlgItem(hWnd, IDC_SPIN_REFRESH_RATE), 1, 24); - BOOL bOk = FALSE; - UINT nRefreshRate = ::GetDlgItemInt(hWnd, IDC_EDIT_REFRESH_RATE, &bOk, FALSE); - if (TRUE == bOk && nRefreshRate > 24) - ::SetDlgItemInt(hWnd, IDC_EDIT_REFRESH_RATE, 24, FALSE); - break; - } - - PropSheet_Changed(::GetParent(hWnd), hWnd); - } - break; - - case EN_CHANGE: - switch (LOWORD(wp)) { - case IDC_EDIT_REFRESH_RATE: - case IDC_EDIT_CONTACT_LIST_FORMAT: - case IDC_EDIT_STATUS_MESSAGE_FORMAT: - case IDC_EDIT_TENDENCY_FORMAT: - case IDC_EDIT_PERSONAL_KEY: - if (reinterpret_cast<HWND>(lp) == ::GetFocus()) - PropSheet_Changed(::GetParent(hWnd), hWnd); - break; - } - break; - - case BN_CLICKED: - switch (LOWORD(wp)) { - case IDC_BUTTON_DESCRIPTION: - show_variable_list(hWnd, rData.m_pCurrencyRatesProvider); - break; - case IDC_BUTTON_ADVANCED_SETTINGS: - CAdvProviderSettings* pAdvSet = get_adv_settings(rData.m_pCurrencyRatesProvider, true); - assert(pAdvSet); - if (true == ShowSettingsDlg(hWnd, pAdvSet)) - PropSheet_Changed(::GetParent(hWnd), hWnd); - break; - } - break; - } - break; - - case WM_NOTIFY: - { - LPNMHDR pNMHDR = reinterpret_cast<LPNMHDR>(lp); - switch (pNMHDR->code) { - case PSN_KILLACTIVE: - { - BOOL bOk = FALSE; - UINT nRefreshRate = ::GetDlgItemInt(hWnd, IDC_EDIT_REFRESH_RATE, &bOk, FALSE); - ERefreshRateType nType = static_cast<ERefreshRateType>(::SendDlgItemMessage(hWnd, IDC_COMBO_REFRESH_RATE, CB_GETCURSEL, 0, 0)); - switch (nType) { - default: - case RRT_MINUTES: - case RRT_SECONDS: - if (FALSE == bOk || nRefreshRate < 1 || nRefreshRate > 60) { - prepare_edit_ctrl_for_error(::GetDlgItem(hWnd, IDC_EDIT_REFRESH_RATE)); - CurrencyRates_MessageBox(hWnd, TranslateT("Enter integer value between 1 and 60."), MB_OK | MB_ICONERROR); - bOk = FALSE; - } - break; - case RRT_HOURS: - if (FALSE == bOk || nRefreshRate < 1 || nRefreshRate > 24) { - prepare_edit_ctrl_for_error(::GetDlgItem(hWnd, IDC_EDIT_REFRESH_RATE)); - CurrencyRates_MessageBox(hWnd, TranslateT("Enter integer value between 1 and 24."), MB_OK | MB_ICONERROR); - bOk = FALSE; - } - break; - } - - if (TRUE == bOk) { - HWND hEdit = ::GetDlgItem(hWnd, IDC_EDIT_CONTACT_LIST_FORMAT); - assert(IsWindow(hEdit)); - - tstring s = get_window_text(hEdit); - if (true == s.empty()) { - prepare_edit_ctrl_for_error(hEdit); - CurrencyRates_MessageBox(hWnd, TranslateT("Enter text to display in contact list."), MB_OK | MB_ICONERROR); - bOk = FALSE; - } - } - - ::SetWindowLongPtr(hWnd, DWLP_MSGRESULT, (TRUE == bOk) ? FALSE : TRUE); - } - break; - - case PSN_APPLY: - BOOL bOk = FALSE; - UINT nRefreshRate = ::GetDlgItemInt(hWnd, IDC_EDIT_REFRESH_RATE, &bOk, FALSE); - assert(TRUE == bOk); - ERefreshRateType nType = static_cast<ERefreshRateType>(::SendDlgItemMessage(hWnd, IDC_COMBO_REFRESH_RATE, CB_GETCURSEL, 0, 0)); - - assert(rData.m_pCurrencyRatesProvider); - - rData.m_bFireSetingsChangedEvent = true; - db_set_w(0, CURRENCYRATES_MODULE_NAME, DB_KEY_RefreshRateType, nType); - db_set_w(0, CURRENCYRATES_MODULE_NAME, DB_KEY_RefreshRateValue, nRefreshRate); - - tstring s = get_window_text(::GetDlgItem(hWnd, IDC_EDIT_CONTACT_LIST_FORMAT)); - db_set_ws(0, CURRENCYRATES_MODULE_NAME, DB_KEY_DisplayNameFormat, s.c_str()); - - s = get_window_text(::GetDlgItem(hWnd, IDC_EDIT_STATUS_MESSAGE_FORMAT)); - db_set_ws(0, CURRENCYRATES_MODULE_NAME, DB_KEY_StatusMsgFormat, s.c_str()); - - s = get_window_text(::GetDlgItem(hWnd, IDC_EDIT_TENDENCY_FORMAT)); - db_set_ws(0, CURRENCYRATES_MODULE_NAME, DB_KEY_TendencyFormat, s.c_str()); - - s = get_window_text(::GetDlgItem(hWnd, IDC_EDIT_PERSONAL_KEY)); - db_set_ws(0, CURRENCYRATES_MODULE_NAME, DB_KEY_ApiKey, s.c_str()); - - CAdvProviderSettings* pAdvSet = get_adv_settings(rData.m_pCurrencyRatesProvider, false); - if (pAdvSet) - pAdvSet->SaveToDb(); - break; - } - } - break; - - case WM_DESTROY: - remove_adv_settings(rData.m_pCurrencyRatesProvider); - break; - } -} diff --git a/plugins/CurrencyRates/src/CommonOptionDlg.h b/plugins/CurrencyRates/src/CommonOptionDlg.h deleted file mode 100644 index bc4ca8c456..0000000000 --- a/plugins/CurrencyRates/src/CommonOptionDlg.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef __c85fe710_f71b_4a58_9d44_3e39f6209c5f_CommonOptionDlg_h__ -#define __c85fe710_f71b_4a58_9d44_3e39f6209c5f_CommonOptionDlg_h__ - -class CCurrencyRatesProviderBase; - -struct CCommonDlgProcData -{ - CCommonDlgProcData(const CCurrencyRatesProviderBase* pCurrencyRatesProvider) - : m_pCurrencyRatesProvider(pCurrencyRatesProvider), m_bFireSetingsChangedEvent(false){} - - const CCurrencyRatesProviderBase* m_pCurrencyRatesProvider; - bool m_bFireSetingsChangedEvent; -}; - -void CommonOptionDlgProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp, CCommonDlgProcData& rData); - -#endif//__c85fe710_f71b_4a58_9d44_3e39f6209c5f_CommonOptionDlg_h__ diff --git a/plugins/CurrencyRates/src/CreateFilePath.cpp b/plugins/CurrencyRates/src/CreateFilePath.cpp deleted file mode 100644 index 71490432a9..0000000000 --- a/plugins/CurrencyRates/src/CreateFilePath.cpp +++ /dev/null @@ -1,17 +0,0 @@ -#include "StdAfx.h" - -tstring CreateFilePath(const tstring &rsName) -{ - wchar_t szPath[_MAX_PATH]; - ::GetModuleFileName(g_plugin.getInst(), szPath, _MAX_PATH); - - wchar_t* p = wcsrchr(szPath, '\\'); - if (p) - *p = 0; - - tstring s(rsName); - FixInvalidChars(s); - tostringstream o; - o << szPath << L"\\CurrencyRates\\" << s; - return o.str(); -}
\ No newline at end of file diff --git a/plugins/CurrencyRates/src/CreateFilePath.h b/plugins/CurrencyRates/src/CreateFilePath.h deleted file mode 100644 index e4a88494fb..0000000000 --- a/plugins/CurrencyRates/src/CreateFilePath.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef _aaf3bee6_cee7_4023_8848_5911ad7a9660_CreateFilePath_h__ -#define _aaf3bee6_cee7_4023_8848_5911ad7a9660_CreateFilePath_h__ - -tstring CreateFilePath(const tstring& rsName); - -#endif //_aaf3bee6_cee7_4023_8848_5911ad7a9660_CreateFilePath_h__ diff --git a/plugins/CurrencyRates/src/CurrencyConverter.cpp b/plugins/CurrencyRates/src/CurrencyConverter.cpp deleted file mode 100644 index 5a7f4d1487..0000000000 --- a/plugins/CurrencyRates/src/CurrencyConverter.cpp +++ /dev/null @@ -1,260 +0,0 @@ -#include "StdAfx.h" -#include "CurrencyRatesProviderCurrencyConverter.h" - -#define WINDOW_PREFIX "CurrenyConverter_" - -#define DB_STR_CC_CURRENCYRATE_FROM_ID "CurrencyConverter_FromID" -#define DB_STR_CC_CURRENCYRATE_TO_ID "CurrencyConverter_ToID" -#define DB_STR_CC_AMOUNT "CurrencyConverter_Amount" - -static CCurrencyRatesProviderCurrencyConverter *get_currency_converter_provider() -{ - for (auto &it : g_apProviders) - if (auto p = dynamic_cast<CCurrencyRatesProviderCurrencyConverter*>(it)) - return p; - - assert(!"We should never get here!"); - return nullptr; -} - -CCurrencyRateSection get_currencyrates(const CCurrencyRatesProviderCurrencyConverter* pProvider = nullptr) -{ - if (nullptr == pProvider) - pProvider = get_currency_converter_provider(); - - if (pProvider) { - const auto& rCurrencyRates = pProvider->GetCurrencyRates(); - if (rCurrencyRates.GetSectionCount() > 0) - return rCurrencyRates.GetSection(0); - } - - return CCurrencyRateSection(); -} - -inline tstring make_currencyrate_name(const CCurrencyRate &rCurrencyRate) -{ - const tstring &rsDesc = rCurrencyRate.GetName(); - return((false == rsDesc.empty()) ? rsDesc : rCurrencyRate.GetSymbol()); -} - -inline void update_convert_button(HWND hDlg) -{ - int nFrom = static_cast<int>(::SendDlgItemMessage(hDlg, IDC_COMBO_CONVERT_FROM, CB_GETCURSEL, 0, 0)); - int nTo = static_cast<int>(::SendDlgItemMessage(hDlg, IDC_COMBO_CONVERT_INTO, CB_GETCURSEL, 0, 0)); - bool bEnableButton = ((CB_ERR != nFrom) - && (CB_ERR != nTo) - && (nFrom != nTo) - && (GetWindowTextLength(GetDlgItem(hDlg, IDC_EDIT_VALUE)) > 0)); - EnableWindow(GetDlgItem(hDlg, IDC_BUTTON_CONVERT), bEnableButton); -} - -inline void update_swap_button(HWND hDlg) -{ - int nFrom = static_cast<int>(::SendDlgItemMessage(hDlg, IDC_COMBO_CONVERT_FROM, CB_GETCURSEL, 0, 0)); - int nTo = static_cast<int>(::SendDlgItemMessage(hDlg, IDC_COMBO_CONVERT_INTO, CB_GETCURSEL, 0, 0)); - bool bEnableButton = ((CB_ERR != nFrom) - && (CB_ERR != nTo) - && (nFrom != nTo)); - EnableWindow(GetDlgItem(hDlg, IDC_BUTTON_SWAP), bEnableButton); -} - -inline tstring double2str(double dValue) -{ - tostringstream output; - output.imbue(GetSystemLocale()); - output << std::fixed << std::setprecision(2) << dValue; - return output.str(); -} - -inline bool str2double(const tstring& s, double& d) -{ - tistringstream input(s); - input.imbue(GetSystemLocale()); - input >> d; - return ((false == input.bad()) && (false == input.fail())); -} - - -INT_PTR CALLBACK CurrencyConverterDlgProc(HWND hDlg, UINT msg, WPARAM wp, LPARAM lp) -{ - switch (msg) { - case WM_INITDIALOG: - TranslateDialogDefault(hDlg); - { - MWindowList hWL = CModuleInfo::GetWindowList(WINDOW_PREFIX, false); - assert(hWL); - WindowList_Add(hWL, hDlg); - - Window_SetIcon_IcoLib(hDlg, CurrencyRates_GetIconHandle(IDI_ICON_CURRENCY_CONVERTER)); - - HWND hcbxFrom = ::GetDlgItem(hDlg, IDC_COMBO_CONVERT_FROM); - HWND hcbxTo = ::GetDlgItem(hDlg, IDC_COMBO_CONVERT_INTO); - - tstring sFromCurrencyRateID = CurrencyRates_DBGetStringW(NULL, CURRENCYRATES_MODULE_NAME, DB_STR_CC_CURRENCYRATE_FROM_ID); - tstring sToCurrencyRateID = CurrencyRates_DBGetStringW(NULL, CURRENCYRATES_MODULE_NAME, DB_STR_CC_CURRENCYRATE_TO_ID); - - const auto pProvider = get_currency_converter_provider(); - const auto& rSection = get_currencyrates(pProvider); - auto cCurrencyRates = rSection.GetCurrencyRateCount(); - for (auto i = 0u; i < cCurrencyRates; ++i) { - const auto& rCurrencyRate = rSection.GetCurrencyRate(i); - tstring sName = make_currencyrate_name(rCurrencyRate); - LPCTSTR pszName = sName.c_str(); - LRESULT nFrom = ::SendMessage(hcbxFrom, CB_ADDSTRING, 0, reinterpret_cast<LPARAM>(pszName)); - LRESULT nTo = ::SendMessage(hcbxTo, CB_ADDSTRING, 0, reinterpret_cast<LPARAM>(pszName)); - - if (0 == mir_wstrcmpi(rCurrencyRate.GetID().c_str(), sFromCurrencyRateID.c_str())) { - ::SendMessage(hcbxFrom, CB_SETCURSEL, nFrom, 0); - } - - if (0 == mir_wstrcmpi(rCurrencyRate.GetID().c_str(), sToCurrencyRateID.c_str())) { - ::SendMessage(hcbxTo, CB_SETCURSEL, nTo, 0); - } - } - - double dAmount = 1.0; - CurrencyRates_DBReadDouble(NULL, CURRENCYRATES_MODULE_NAME, DB_STR_CC_AMOUNT, dAmount); - ::SetDlgItemText(hDlg, IDC_EDIT_VALUE, double2str(dAmount).c_str()); - - const ICurrencyRatesProvider::CProviderInfo& pi = pProvider->GetInfo(); - tostringstream o; - o << TranslateT("Info provided by") << L" <a href=\"" << pi.m_sURL << L"\">" << pi.m_sName << L"</a>"; - - ::SetDlgItemText(hDlg, IDC_SYSLINK_PROVIDER, o.str().c_str()); - - ::SendDlgItemMessage(hDlg, IDC_BUTTON_SWAP, BM_SETIMAGE, IMAGE_ICON, LPARAM(CurrencyRates_LoadIconEx(IDI_ICON_SWAP))); - - update_convert_button(hDlg); - update_swap_button(hDlg); - - Utils_RestoreWindowPositionNoSize(hDlg, NULL, CURRENCYRATES_MODULE_NAME, WINDOW_PREFIX); - ::ShowWindow(hDlg, SW_SHOW); - } - return TRUE; - - case WM_CLOSE: - { - MWindowList hWL = CModuleInfo::GetWindowList(WINDOW_PREFIX, false); - assert(hWL); - WindowList_Remove(hWL, hDlg); - Utils_SaveWindowPosition(hDlg, NULL, CURRENCYRATES_MODULE_NAME, WINDOW_PREFIX); - EndDialog(hDlg, 0); - } - return TRUE; - - case WM_DESTROY: - Window_FreeIcon_IcoLib(hDlg); - break; - - case WM_COMMAND: - switch (LOWORD(wp)) { - case IDC_COMBO_CONVERT_FROM: - case IDC_COMBO_CONVERT_INTO: - if (CBN_SELCHANGE == HIWORD(wp)) { - update_convert_button(hDlg); - update_swap_button(hDlg); - } - return TRUE; - - case IDC_EDIT_VALUE: - if (EN_CHANGE == HIWORD(wp)) - update_convert_button(hDlg); - return TRUE; - - case IDCANCEL: - SendMessage(hDlg, WM_CLOSE, 0, 0); - return TRUE; - - case IDC_BUTTON_SWAP: - { - HWND wndFrom = ::GetDlgItem(hDlg, IDC_COMBO_CONVERT_FROM); - HWND wndTo = ::GetDlgItem(hDlg, IDC_COMBO_CONVERT_INTO); - WPARAM nFrom = ::SendMessage(wndFrom, CB_GETCURSEL, 0, 0); - WPARAM nTo = ::SendMessage(wndTo, CB_GETCURSEL, 0, 0); - - ::SendMessage(wndFrom, CB_SETCURSEL, nTo, 0); - ::SendMessage(wndTo, CB_SETCURSEL, nFrom, 0); - } - return TRUE; - - case IDC_BUTTON_CONVERT: - { - HWND hwndAmount = GetDlgItem(hDlg, IDC_EDIT_VALUE); - tstring sText = get_window_text(hwndAmount); - - double dAmount = 1.0; - if ((true == str2double(sText, dAmount)) && (dAmount > 0.0)) { - CurrencyRates_DBWriteDouble(NULL, CURRENCYRATES_MODULE_NAME, DB_STR_CC_AMOUNT, dAmount); - - size_t nFrom = static_cast<size_t>(::SendDlgItemMessage(hDlg, IDC_COMBO_CONVERT_FROM, CB_GETCURSEL, 0, 0)); - size_t nTo = static_cast<size_t>(::SendDlgItemMessage(hDlg, IDC_COMBO_CONVERT_INTO, CB_GETCURSEL, 0, 0)); - if ((CB_ERR != nFrom) && (CB_ERR != nTo) && (nFrom != nTo)) { - const auto& rSection = get_currencyrates(); - size_t cCurrencyRates = rSection.GetCurrencyRateCount(); - if ((nFrom < cCurrencyRates) && (nTo < cCurrencyRates)) { - auto from = rSection.GetCurrencyRate(nFrom); - auto to = rSection.GetCurrencyRate(nTo); - - db_set_ws(0, CURRENCYRATES_MODULE_NAME, DB_STR_CC_CURRENCYRATE_FROM_ID, from.GetID().c_str()); - db_set_ws(0, CURRENCYRATES_MODULE_NAME, DB_STR_CC_CURRENCYRATE_TO_ID, to.GetID().c_str()); - - const auto pProvider = get_currency_converter_provider(); - assert(pProvider); - if (pProvider) { - tstring sResult; - std::string sError; - try { - double dResult = pProvider->Convert(dAmount, from, to); - tostringstream ss; - ss.imbue(GetSystemLocale()); - ss << std::fixed << std::setprecision(2) << dAmount << " " << from.GetName() << " = " << dResult << " " << to.GetName(); - sResult = ss.str(); - } - catch (std::exception& e) { - sError = e.what(); - } - - if (false == sError.empty()) - sResult = currencyrates_a2t(sError.c_str());//A2T(sError.c_str()); - - SetDlgItemText(hDlg, IDC_EDIT_RESULT, sResult.c_str()); - } - } - } - } - else { - CurrencyRates_MessageBox(hDlg, TranslateT("Enter positive number."), MB_OK | MB_ICONERROR); - prepare_edit_ctrl_for_error(GetDlgItem(hDlg, IDC_EDIT_VALUE)); - } - } - return TRUE; - } - break; - - case WM_NOTIFY: - LPNMHDR pNMHDR = reinterpret_cast<LPNMHDR>(lp); - switch (pNMHDR->code) { - case NM_CLICK: - if (IDC_SYSLINK_PROVIDER == wp) { - PNMLINK pNMLink = reinterpret_cast<PNMLINK>(pNMHDR); - ::ShellExecute(hDlg, L"open", pNMLink->item.szUrl, nullptr, nullptr, SW_SHOWNORMAL); - } - break; - } - break; - } - return (FALSE); -} - -INT_PTR CurrencyRatesMenu_CurrencyConverter(WPARAM, LPARAM) -{ - MWindowList hWL = CModuleInfo::GetWindowList(WINDOW_PREFIX, true); - HWND hWnd = WindowList_Find(hWL, NULL); - if (nullptr != hWnd) { - SetForegroundWindow(hWnd); - SetFocus(hWnd); - } - else CreateDialogParam(g_plugin.getInst(), MAKEINTRESOURCE(IDD_CURRENCY_CONVERTER), nullptr, CurrencyConverterDlgProc, 0); - - return 0; -} diff --git a/plugins/CurrencyRates/src/CurrencyConverter.h b/plugins/CurrencyRates/src/CurrencyConverter.h deleted file mode 100644 index eca03ec40e..0000000000 --- a/plugins/CurrencyRates/src/CurrencyConverter.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef __4FB6320B_2D02_408b_BAF5_426C185AAA11_CurrencyConverter_h__ -#define __4FB6320B_2D02_408b_BAF5_426C185AAA11_CurrencyConverter_h__ - -INT_PTR CurrencyRatesMenu_CurrencyConverter(WPARAM wp, LPARAM lp); - -#endif //__4FB6320B_2D02_408b_BAF5_426C185AAA11_CurrencyConverter_h__ diff --git a/plugins/CurrencyRates/src/CurrencyRateChart.cpp b/plugins/CurrencyRates/src/CurrencyRateChart.cpp deleted file mode 100644 index a3208811a4..0000000000 --- a/plugins/CurrencyRates/src/CurrencyRateChart.cpp +++ /dev/null @@ -1,101 +0,0 @@ -#include "StdAfx.h" - -#ifdef CHART_IMPLEMENT - -namespace -{ - class CMyJob : private boost::noncopyable - { - private: - CMyJob(LPCTSTR pszName = nullptr): m_hJob(::CreateJobObject(nullptr,pszName)) - { - if(m_hJob) - { - JOBOBJECT_EXTENDED_LIMIT_INFORMATION jeli = { 0 }; - jeli.BasicLimitInformation.LimitFlags = JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE; - if(0 == ::SetInformationJobObject(m_hJob,JobObjectExtendedLimitInformation,&jeli,sizeof(jeli))) - { -#ifdef OUTPUT_TO_DEBUG_VIEWER - ::OutputDebugString(_T("Error occurred during the job initialization\n")); -#endif - } - } - - } - ~CMyJob() - { - if(m_hJob) - { - ::CloseHandle(m_hJob); - } - } - - public: - static CMyJob& GetInstance() - { - static CMyJob g_job(_T("MirandaJob_E12D5E9C_00E7_4FFA_9831_F35E45C6EBDA")); - return g_job; - } - - bool AssignProcess(HANDLE hProcess) - { - if(m_hJob && hProcess) - { - auto b = (TRUE == ::AssignProcessToJobObject(m_hJob,hProcess)); - return b; - } - - return false; - } - - private: - HANDLE m_hJob; - }; - -} - -INT_PTR CurrencyRatesMenu_Chart(WPARAM wp, LPARAM /*lp*/) -{ -#ifdef _UNICODE - MCONTACT hContact = static_cast<MCONTACT>(wp); - if (NULL == hContact) - return 0; - - auto sLogFileName = GetContactLogFileName(hContact); - - if(auto hWnd = ::FindWindow(nullptr,_T("Miranda CurrencyRates Chart"))) - { - COPYDATASTRUCT copydata_struct; - copydata_struct.cbData = static_cast<DWORD>(sLogFileName.size()*sizeof(TCHAR)); - copydata_struct.lpData = const_cast<void*>(static_cast<const void*>(sLogFileName.c_str())); - copydata_struct.dwData = 0x1945; - - SendMessage(hWnd,WM_COPYDATA,0,reinterpret_cast<LPARAM>(©data_struct)); - } - else - { - STARTUPINFO si; - PROCESS_INFORMATION pi; - ZeroMemory(&si, sizeof(si)); - si.cb = sizeof(si); - si.dwFlags = STARTF_USESHOWWINDOW; - si.wShowWindow = SW_SHOWNORMAL; - ZeroMemory(&pi, sizeof(pi)); - - auto sCmdLine = CreateFilePath(_T("CurrencyRatesChart.exe")); - sCmdLine += _T(" \""); - sCmdLine += sLogFileName; - sCmdLine += _T("\""); - if(::CreateProcess(nullptr,const_cast<LPTSTR>(sCmdLine.c_str()),nullptr,nullptr,FALSE,0,nullptr,nullptr,&si,&pi)) - { - CMyJob::GetInstance().AssignProcess(pi.hProcess); - - ::CloseHandle(pi.hThread); - ::CloseHandle(pi.hProcess); - } - } -#endif - return 0; -} - -#endif //CHART_IMPLEMENT diff --git a/plugins/CurrencyRates/src/CurrencyRateChart.h b/plugins/CurrencyRates/src/CurrencyRateChart.h deleted file mode 100644 index 0869c1fa1c..0000000000 --- a/plugins/CurrencyRates/src/CurrencyRateChart.h +++ /dev/null @@ -1,12 +0,0 @@ -#ifndef __39BE8775_A837_494f_925C_0ABF7910F238_CurrencyRateChart_h__ -#define __39BE8775_A837_494f_925C_0ABF7910F238_CurrencyRateChart_h__ - -#pragma once - -#ifdef CHART_IMPLEMENT - -INT_PTR CurrencyRatesMenu_Chart(WPARAM wp, LPARAM lp); - -#endif - -#endif //__39BE8775_A837_494f_925C_0ABF7910F238_CurrencyRateChart_h__ diff --git a/plugins/CurrencyRates/src/CurrencyRateInfoDlg.cpp b/plugins/CurrencyRates/src/CurrencyRateInfoDlg.cpp deleted file mode 100644 index c05520686e..0000000000 --- a/plugins/CurrencyRates/src/CurrencyRateInfoDlg.cpp +++ /dev/null @@ -1,257 +0,0 @@ -#include "StdAfx.h" - -// extern HANDLE g_hWindowListEditSettings; -extern HGENMENU g_hMenuEditSettings; -extern HGENMENU g_hMenuOpenLogFile; -#ifdef CHART_IMPLEMENT -extern HGENMENU g_hMenuChart; -#endif -extern HGENMENU g_hMenuRefresh, g_hMenuRoot; - -#define WINDOW_PREFIX_INFO "Currency Rate Info" - -MCONTACT g_hContact; - -inline bool IsMyContact(MCONTACT hContact) -{ - return nullptr != GetContactProviderPtr(hContact); -} - -inline MCONTACT get_contact(HWND hWnd) -{ - return MCONTACT(GetWindowLongPtr(hWnd, GWLP_USERDATA)); -} - -static bool get_fetch_time(time_t& rTime, MCONTACT hContact) -{ - rTime = db_get_dw(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CURRENCYRATE_FETCH_TIME, -1); - return (rTime != -1); -} - -INT_PTR CALLBACK CurrencyRateInfoDlgProcImpl(MCONTACT hContact, HWND hdlg, UINT msg, WPARAM wParam, LPARAM lParam) -{ - switch (msg) { - case WM_INITDIALOG: - assert(hContact); - - TranslateDialogDefault(hdlg); - { - tstring sDescription = GetContactName(hContact); - ::SetDlgItemText(hdlg, IDC_STATIC_CURRENCYRATE_NAME, sDescription.c_str()); - - double dRate = 0.0; - if (true == CurrencyRates_DBReadDouble(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CURRENCYRATE_PREV_VALUE, dRate)) { - tostringstream o; - o.imbue(GetSystemLocale()); - o << dRate; - - ::SetDlgItemText(hdlg, IDC_EDIT_PREVIOUS_RATE, o.str().c_str()); - } - - dRate = 0.0; - if (true == CurrencyRates_DBReadDouble(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CURRENCYRATE_CURR_VALUE, dRate)) { - tostringstream o; - o.imbue(GetSystemLocale()); - o << dRate; - - ::SetDlgItemText(hdlg, IDC_EDIT_RATE, o.str().c_str()); - } - - time_t nFetchTime; - if (true == get_fetch_time(nFetchTime, hContact)) { - wchar_t szTime[50] = { 0 }; - if (0 == _tctime_s(szTime, 50, &nFetchTime)) { - ::SetDlgItemText(hdlg, IDC_EDIT_RATE_FETCH_TIME, szTime); - } - } - - const ICurrencyRatesProvider::CProviderInfo& pi = GetContactProviderPtr(hContact)->GetInfo(); - tostringstream o; - o << TranslateT("Info provided by") << L" <a href=\"" << pi.m_sURL << L"\">" << pi.m_sName << L"</a>"; - - ::SetDlgItemText(hdlg, IDC_SYSLINK_PROVIDER, o.str().c_str()); - } - return TRUE; - - case WM_NOTIFY: - LPNMHDR pNMHDR = reinterpret_cast<LPNMHDR>(lParam); - switch (pNMHDR->code) { - case NM_CLICK: - if (IDC_SYSLINK_PROVIDER == wParam) { - PNMLINK pNMLink = reinterpret_cast<PNMLINK>(pNMHDR); - ::ShellExecute(hdlg, L"open", pNMLink->item.szUrl, nullptr, nullptr, SW_SHOWNORMAL); - } - break; - } - break; - } - return FALSE; -} - -INT_PTR CALLBACK CurrencyRateInfoDlgProc(HWND hdlg, UINT msg, WPARAM wParam, LPARAM lParam) -{ - return CurrencyRateInfoDlgProcImpl(g_hContact, hdlg, msg, wParam, lParam); -} - -int CurrencyRatesEventFunc_OnUserInfoInit(WPARAM wp, LPARAM hContact) -{ - if (NULL == hContact) - return 0; - - if (false == IsMyContact(hContact)) - return 0; - - g_hContact = hContact; - - OPTIONSDIALOGPAGE odp = {}; - odp.pfnDlgProc = CurrencyRateInfoDlgProc; - odp.position = -2000000000; - odp.pszTemplate = MAKEINTRESOURCEA(IDD_DIALOG_CURRENCYRATE_INFO); - odp.szTitle.a = LPGEN("Currency Rate"); - g_plugin.addUserInfo(wp, &odp); - return 0; -} - - -INT_PTR CurrencyRatesMenu_EditSettings(WPARAM wp, LPARAM) -{ - MCONTACT hContact = MCONTACT(wp); - if (NULL != hContact) - ShowSettingsDlg(hContact); - return 0; -} - -namespace -{ - bool get_log_file(MCONTACT hContact, tstring& rsLogfile) - { - rsLogfile = GetContactLogFileName(hContact); - return ((rsLogfile.empty()) ? false : true); - } -} - -INT_PTR CurrencyRatesMenu_OpenLogFile(WPARAM wp, LPARAM) -{ - MCONTACT hContact = MCONTACT(wp); - if (NULL == hContact) - return 0; - - tstring sLogFileName; - if ((true == get_log_file(hContact, sLogFileName)) && (false == sLogFileName.empty())) - ::ShellExecute(nullptr, L"open", sLogFileName.c_str(), nullptr, nullptr, SW_SHOWNORMAL); - - return 0; -} - -INT_PTR CurrencyRatesMenu_RefreshContact(WPARAM wp, LPARAM) -{ - MCONTACT hContact = MCONTACT(wp); - if (NULL == hContact) - return 0; - - ICurrencyRatesProvider *pProvider = GetContactProviderPtr(hContact); - if (pProvider) - pProvider->RefreshContact(hContact); - return 0; -} - -static INT_PTR CALLBACK CurrencyRateInfoDlgProc1(HWND hdlg, UINT msg, WPARAM wParam, LPARAM lParam) -{ - MCONTACT hContact = NULL; - MWindowList hWL; - - switch (msg) { - case WM_INITDIALOG: - hContact = MCONTACT(lParam); - hWL = CModuleInfo::GetWindowList(WINDOW_PREFIX_INFO, false); - assert(hWL); - WindowList_Add(hWL, hdlg, hContact); - - ::SetWindowLongPtr(hdlg, GWLP_USERDATA, hContact); - Utils_RestoreWindowPositionNoSize(hdlg, hContact, CURRENCYRATES_MODULE_NAME, WINDOW_PREFIX_INFO); - ::ShowWindow(hdlg, SW_SHOW); - break; - - case WM_CLOSE: - DestroyWindow(hdlg); - return FALSE; - - case WM_DESTROY: - hContact = get_contact(hdlg); - if (hContact) { - SetWindowLongPtr(hdlg, GWLP_USERDATA, 0); - - hWL = CModuleInfo::GetWindowList(WINDOW_PREFIX_INFO, false); - assert(hWL); - WindowList_Remove(hWL, hdlg); - Utils_SaveWindowPosition(hdlg, hContact, CURRENCYRATES_MODULE_NAME, WINDOW_PREFIX_INFO); - } - return FALSE; - - case WM_COMMAND: - if (LOWORD(wParam) == IDOK) { - ::DestroyWindow(hdlg); - return FALSE; - } - - default: - hContact = get_contact(hdlg); - break; - } - - return CurrencyRateInfoDlgProcImpl(hContact, hdlg, msg, wParam, lParam); -} - -int CurrencyRates_OnContactDoubleClick(WPARAM wp, LPARAM/* lp*/) -{ - MCONTACT hContact = MCONTACT(wp); - if (GetContactProviderPtr(hContact)) { - MWindowList hWL = CModuleInfo::GetWindowList(WINDOW_PREFIX_INFO, true); - assert(hWL); - HWND hWnd = WindowList_Find(hWL, hContact); - if (nullptr != hWnd) { - SetForegroundWindow(hWnd); - SetFocus(hWnd); - } - else if (true == IsMyContact(hContact)) - CreateDialogParam(g_plugin.getInst(), MAKEINTRESOURCE(IDD_DIALOG_CURRENCYRATE_INFO_1), nullptr, CurrencyRateInfoDlgProc1, LPARAM(hContact)); - - return 1; - } - - return 0; -} - -int CurrencyRates_PrebuildContactMenu(WPARAM wp, LPARAM) -{ - Menu_EnableItem(g_hMenuEditSettings, false); - Menu_EnableItem(g_hMenuOpenLogFile, false); - #ifdef CHART_IMPLEMENT - Menu_EnableItem(g_hMenuChart, false); - #endif - Menu_EnableItem(g_hMenuRefresh, false); - - MCONTACT hContact = MCONTACT(wp); - char *szProto = GetContactProto(hContact); - if (mir_strcmp(szProto, CURRENCYRATES_PROTOCOL_NAME)) { - Menu_ShowItem(g_hMenuRoot, false); - return 0; - } - - Menu_ShowItem(g_hMenuRoot, true); - Menu_EnableItem(g_hMenuEditSettings, true); - - Menu_EnableItem(g_hMenuRefresh, true); - - tstring sLogFileName; - bool bThereIsLogFile = (true == get_log_file(hContact, sLogFileName)) - && (false == sLogFileName.empty()) && (0 == _waccess(sLogFileName.c_str(), 04)); - if (true == bThereIsLogFile) { - #ifdef CHART_IMPLEMENT - Menu_EnableItem(g_hMenuChart, true); - #endif - Menu_EnableItem(g_hMenuOpenLogFile, true); - } - - return 0; -} diff --git a/plugins/CurrencyRates/src/CurrencyRateInfoDlg.h b/plugins/CurrencyRates/src/CurrencyRateInfoDlg.h deleted file mode 100644 index d0df6e99c5..0000000000 --- a/plugins/CurrencyRates/src/CurrencyRateInfoDlg.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef __aa849fa0_ff3f_49e9_b47a_e7dd34783dc2_CurrencyRateInfoDlg_h__ -#define __aa849fa0_ff3f_49e9_b47a_e7dd34783dc2_CurrencyRateInfoDlg_h__ - -int CurrencyRatesEventFunc_OnUserInfoInit(WPARAM wp, LPARAM lp); -INT_PTR CurrencyRatesMenu_EditSettings(WPARAM wp, LPARAM lp); -INT_PTR CurrencyRatesMenu_OpenLogFile(WPARAM wp, LPARAM lp); -INT_PTR CurrencyRatesMenu_RefreshContact(WPARAM wp, LPARAM lp); -int CurrencyRates_PrebuildContactMenu(WPARAM wp, LPARAM lp); -int CurrencyRates_OnContactDoubleClick(WPARAM wp, LPARAM lp); - -#endif //__aa849fa0_ff3f_49e9_b47a_e7dd34783dc2_CurrencyRateInfoDlg_h__ diff --git a/plugins/CurrencyRates/src/CurrencyRatesProviderBase.cpp b/plugins/CurrencyRates/src/CurrencyRatesProviderBase.cpp deleted file mode 100644 index 592fd551ba..0000000000 --- a/plugins/CurrencyRates/src/CurrencyRatesProviderBase.cpp +++ /dev/null @@ -1,935 +0,0 @@ -#include "StdAfx.h" - -extern bool g_bAutoUpdate; -extern HANDLE g_hEventWorkThreadStop; - -struct CXMLFileInfo -{ - CXMLFileInfo() : m_qs(L"Unknown") {} - ICurrencyRatesProvider::CProviderInfo m_pi; - CCurrencyRateSection m_qs; - tstring m_sURL; -}; - -inline tstring get_ini_file_name(LPCTSTR pszFileName) -{ - return CreateFilePath(pszFileName); -} - -bool parse_currencyrate(const TiXmlNode *pTop, CCurrencyRate &q) -{ - tstring sSymbol, sDescription, sID; - - for (auto *pNode : TiXmlEnum(pTop)) { - const char *sName = pNode->Value(); - if (!mir_strcmpi(sName, "symbol")) { - sSymbol = GetNodeText(pNode); - if (sSymbol.empty()) - return false; - } - else if (!mir_strcmpi(sName, "description")) { - sDescription = GetNodeText(pNode); - } - else if (!mir_strcmpi(sName, "id")) { - sID = GetNodeText(pNode); - if (sID.empty()) - return false; - } - } - - q = CCurrencyRate(sID, TranslateW(sSymbol.c_str()), TranslateW(sDescription.c_str())); - return true; -} - -bool parse_section(const TiXmlNode *pTop, CCurrencyRateSection &qs) -{ - CCurrencyRateSection::TSections aSections; - CCurrencyRateSection::TCurrencyRates aCurrencyRates; - tstring sSectionName; - - for (auto *pNode : TiXmlEnum(pTop)) { - const char *sName = pNode->Value(); - if (!mir_strcmpi(sName, "section")) { - CCurrencyRateSection qs1; - if (true == parse_section(pNode, qs1)) - aSections.push_back(qs1); - } - else if (!mir_strcmpi(sName, "currencyrate")) { - CCurrencyRate q; - if (true == parse_currencyrate(pNode, q)) - aCurrencyRates.push_back(q); - } - else if (!mir_strcmpi(sName, "name")) { - sSectionName = GetNodeText(pNode); - if (sSectionName.empty()) - return false; - } - } - - qs = CCurrencyRateSection(TranslateW(sSectionName.c_str()), aSections, aCurrencyRates); - return true; -} - -const TiXmlNode* find_provider(const TiXmlNode *pRoot) -{ - for (auto *pNode : TiXmlEnum(pRoot)) { - const char *sName = pNode->Value(); - if (!mir_strcmpi(sName, "Provider")) - return pNode; - - if (auto *pProvider = find_provider(pNode)) - return pProvider; - } - - return nullptr; -} - -CXMLFileInfo parse_ini_file(const tstring &rsXMLFile, bool &rbSucceded) -{ - CXMLFileInfo res; - CCurrencyRateSection::TSections aSections; - - TiXmlDocument doc; - if (doc.LoadFile(_T2A(rsXMLFile.c_str())) == tinyxml2::XML_SUCCESS) { - const TiXmlNode *pProvider = find_provider(&doc); - if (pProvider) { - rbSucceded = true; - for (auto *pNode : TiXmlEnum(pProvider)) { - const char *sName = pNode->Value(); - if (!mir_strcmpi(sName, "section")) { - CCurrencyRateSection qs; - if (parse_section(pNode, qs)) - aSections.push_back(qs); - } - else if (!mir_strcmpi(sName, "Name")) - res.m_pi.m_sName = GetNodeText(pNode); - else if (!mir_strcmpi(sName, "ref")) - res.m_pi.m_sURL = GetNodeText(pNode); - else if (!mir_strcmpi(sName, "url")) - res.m_sURL = GetNodeText(pNode); - } - } - } - - res.m_qs = CCurrencyRateSection(res.m_pi.m_sName, aSections); - return res; -} - -CXMLFileInfo init_xml_info(LPCTSTR pszFileName, bool& rbSucceded) -{ - rbSucceded = false; - tstring sIniFile = get_ini_file_name(pszFileName); - return parse_ini_file(sIniFile, rbSucceded); -} - -CCurrencyRatesProviderBase::CCurrencyRatesProviderBase() : - m_hEventSettingsChanged(::CreateEvent(nullptr, FALSE, FALSE, nullptr)), - m_hEventRefreshContact(::CreateEvent(nullptr, FALSE, FALSE, nullptr)), - m_bRefreshInProgress(false) -{ -} - -CCurrencyRatesProviderBase::~CCurrencyRatesProviderBase() -{ - delete m_pXMLInfo; - - ::CloseHandle(m_hEventSettingsChanged); - ::CloseHandle(m_hEventRefreshContact); -} - -bool CCurrencyRatesProviderBase::Init() -{ - bool bSucceded = (m_pXMLInfo == nullptr); - if (!m_pXMLInfo) - m_pXMLInfo = new CXMLFileInfo(init_xml_info(DB_DEF_IniFileName, bSucceded)); - - return bSucceded; -} - -const CCurrencyRatesProviderBase::CProviderInfo& CCurrencyRatesProviderBase::GetInfo() const -{ - return m_pXMLInfo->m_pi; -} - -const CCurrencyRateSection& CCurrencyRatesProviderBase::GetCurrencyRates() const -{ - return m_pXMLInfo->m_qs; -} - -const tstring& CCurrencyRatesProviderBase::GetURL() const -{ - return m_pXMLInfo->m_sURL; -} - -bool CCurrencyRatesProviderBase::IsOnline() -{ - return /*g_bAutoUpdate*/true; -} - -void CCurrencyRatesProviderBase::AddContact(MCONTACT hContact) -{ - // CCritSection cs(m_cs); - assert(m_aContacts.end() == std::find(m_aContacts.begin(), m_aContacts.end(), hContact)); - - m_aContacts.push_back(hContact); -} - -void CCurrencyRatesProviderBase::DeleteContact(MCONTACT hContact) -{ - mir_cslock lck(m_cs); - - TContacts::iterator i = std::find(m_aContacts.begin(), m_aContacts.end(), hContact); - if (i != m_aContacts.end()) - m_aContacts.erase(i); -} - -void CCurrencyRatesProviderBase::SetContactStatus(MCONTACT hContact, int nNewStatus) -{ - int nStatus = db_get_w(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_STATUS, ID_STATUS_OFFLINE); - if (nNewStatus != nStatus) { - db_set_w(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_STATUS, nNewStatus); - - if (ID_STATUS_ONLINE != nNewStatus) { - db_unset(hContact, LIST_MODULE_NAME, STATUS_MSG_NAME); - tstring sSymbol = CurrencyRates_DBGetStringW(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CURRENCYRATE_SYMBOL); - if (false == sSymbol.empty()) - db_set_ws(hContact, LIST_MODULE_NAME, CONTACT_LIST_NAME, sSymbol.c_str()); - - SetContactExtraImage(hContact, eiEmpty); - } - } -} - -class CTendency -{ - enum { NumValues = 2 }; - enum EComparison - { - NonValid, - Greater, - Less, - Equal, - GreaterOrEqual, - LessOrEqual - }; - -public: - enum EResult - { - NotChanged, - Up, - Down - }; - -public: - CTendency() : m_nComparison(NonValid) {} - - bool Parse(CCurrencyRatesProviderBase *pProvider, const tstring& rsFrmt, MCONTACT hContact) - { - m_abValueFlags[0] = false; - m_abValueFlags[1] = false; - m_nComparison = NonValid; - bool bValid = true; - int nCurValue = 0; - for (tstring::const_iterator i = rsFrmt.begin(); i != rsFrmt.end() && bValid && nCurValue < NumValues;) { - wchar_t chr = *i; - switch (chr) { - default: - if (false == std::isspace(chr)) - bValid = false; - else - ++i; - break; - - case '%': - ++i; - if (i != rsFrmt.end()) { - wchar_t t = *i; - ++i; - - double d; - bValid = pProvider->ParseSymbol(hContact, t, d); - if (bValid) { - m_adValues[nCurValue] = d; - m_abValueFlags[nCurValue] = true; - ++nCurValue; - } - } - else bValid = false; - break; - case '>': - m_nComparison = Greater; - ++i; - break; - case '<': - m_nComparison = Less; - ++i; - break; - case '=': - switch (m_nComparison) { - default: - bValid = false; - break; - case NonValid: - m_nComparison = Equal; - break; - case Greater: - m_nComparison = GreaterOrEqual; - break; - case Less: - m_nComparison = LessOrEqual; - break; - } - ++i; - break; - } - } - - return (bValid && IsValid()); - } - - bool IsValid() const { return (m_abValueFlags[0] && m_abValueFlags[1] && (m_nComparison != NonValid)); } - - EResult Compare() const - { - switch (m_nComparison) { - case Greater: - if (true == IsWithinAccuracy(m_adValues[0], m_adValues[1])) - return NotChanged; - - if (m_adValues[0] > m_adValues[1]) - return Up; - return Down; - - case GreaterOrEqual: - if ((true == IsWithinAccuracy(m_adValues[0], m_adValues[1])) || (m_adValues[0] > m_adValues[1])) - return Up; - return Down; - - case Less: - if (true == IsWithinAccuracy(m_adValues[0], m_adValues[1])) - return NotChanged; - - if (m_adValues[0] < m_adValues[1]) - return Up; - return Down; - - case LessOrEqual: - if ((true == IsWithinAccuracy(m_adValues[0], m_adValues[1])) || (m_adValues[0] < m_adValues[1])) - return Up; - return Down; - - case Equal: - if (true == IsWithinAccuracy(m_adValues[0], m_adValues[1])) - return Up; - return Down; - } - return NotChanged; - } - -private: - double m_adValues[NumValues]; - bool m_abValueFlags[NumValues]; - EComparison m_nComparison; -}; - -tstring format_rate(const ICurrencyRatesProvider *pProvider, MCONTACT hContact, const tstring &rsFrmt) -{ - tstring sResult; - - for (tstring::const_iterator i = rsFrmt.begin(); i != rsFrmt.end();) { - wchar_t chr = *i; - switch (chr) { - default: - sResult += chr; - ++i; - break; - - case '\\': - ++i; - if (i != rsFrmt.end()) { - wchar_t t = *i; - switch (t) { - case '%': sResult += L"%"; break; - case 't': sResult += L"\t"; break; - case 'n': sResult += L"\n"; break; - case '\\': sResult += L"\\"; break; - default: sResult += chr; sResult += t; break; - } - ++i; - } - else sResult += chr; - break; - - case '%': - ++i; - if (i != rsFrmt.end()) { - chr = *i; - - byte nWidth = 0; - if (::isdigit(chr)) { - nWidth = chr - 0x30; - ++i; - if (i == rsFrmt.end()) { - sResult += chr; - break; - } - else chr = *i; - } - - sResult += pProvider->FormatSymbol(hContact, chr, nWidth); - ++i; - } - else sResult += chr; - break; - } - } - - return sResult; -} - -void log_to_file(const ICurrencyRatesProvider *pProvider, - MCONTACT hContact, - const tstring& rsLogFileName, - const tstring& rsFormat) -{ - CreatePathToFileW(rsLogFileName.c_str()); - - tofstream file(rsLogFileName.c_str(), std::ios::app | std::ios::out); - file.imbue(GetSystemLocale()); - if (file.good()) { - tstring s = format_rate(pProvider, hContact, rsFormat); - file << s; - } -} - -void log_to_history(const ICurrencyRatesProvider *pProvider, - MCONTACT hContact, - time_t nTime, - const tstring& rsFormat) -{ - tstring s = format_rate(pProvider, hContact, rsFormat); - T2Utf psz(s.c_str()); - - DBEVENTINFO dbei = {}; - dbei.szModule = CURRENCYRATES_MODULE_NAME; - dbei.timestamp = static_cast<DWORD>(nTime); - dbei.flags = DBEF_READ | DBEF_UTF; - dbei.eventType = EVENTTYPE_MESSAGE; - dbei.cbBlob = (int)::mir_strlen(psz) + 1; - dbei.pBlob = (PBYTE)(char*)psz; - db_event_add(hContact, &dbei); -} - -bool do_set_contact_extra_icon(MCONTACT hContact, const CTendency& tendency) -{ - CTendency::EResult nComparison = tendency.Compare(); - - if (CTendency::NotChanged == nComparison) - return SetContactExtraImage(hContact, eiNotChanged); - - if (CTendency::Up == nComparison) - return SetContactExtraImage(hContact, eiUp); - - if (CTendency::Down == nComparison) - return SetContactExtraImage(hContact, eiDown); - - return false; -} - -bool show_popup(const ICurrencyRatesProvider *pProvider, - MCONTACT hContact, - const CTendency& tendency, - const tstring& rsFormat, - const CPopupSettings& ps) -{ - if (!ServiceExists(MS_POPUP_ADDPOPUPW)) - return false; - - POPUPDATAW ppd; - memset(&ppd, 0, sizeof(ppd)); - ppd.lchContact = hContact; - - if (tendency.IsValid()) { - CTendency::EResult nComparison = tendency.Compare(); - if (CTendency::NotChanged == nComparison) - ppd.lchIcon = CurrencyRates_LoadIconEx(IDI_ICON_NOTCHANGED); - else if (CTendency::Up == nComparison) - ppd.lchIcon = CurrencyRates_LoadIconEx(IDI_ICON_UP); - else if (CTendency::Down == nComparison) - ppd.lchIcon = CurrencyRates_LoadIconEx(IDI_ICON_DOWN); - } - - mir_wstrncpy(ppd.lpwzContactName, pProvider->FormatSymbol(hContact, 's').c_str(), MAX_CONTACTNAME); - { - ptrW ss(variables_parsedup((wchar_t*)rsFormat.c_str(), nullptr, hContact)); - tstring sText = format_rate(pProvider, hContact, tstring(ss)); - mir_wstrncpy(ppd.lpwzText, sText.c_str(), MAX_SECONDLINE); - } - - if (CPopupSettings::colourDefault == ps.GetColourMode()) { - ppd.colorText = CPopupSettings::GetDefColourText(); - ppd.colorBack = CPopupSettings::GetDefColourBk(); - } - else { - ppd.colorText = ps.GetColourText(); - ppd.colorBack = ps.GetColourBk(); - } - - switch (ps.GetDelayMode()) { - default: - assert(!"Unknown popup delay mode"); - case CPopupSettings::delayFromPopup: - ppd.iSeconds = 0; - break; - case CPopupSettings::delayPermanent: - ppd.iSeconds = -1; - break; - case CPopupSettings::delayCustom: - ppd.iSeconds = ps.GetDelayTimeout(); - break; - } - - LPARAM lp = 0; - if (false == ps.GetHistoryFlag()) - lp |= 0x08; - - return (0 == CallService(MS_POPUP_ADDPOPUPW, reinterpret_cast<WPARAM>(&ppd), lp)); -} - -void CCurrencyRatesProviderBase::WriteContactRate(MCONTACT hContact, double dRate, const tstring& rsSymbol/* = ""*/) -{ - time_t nTime = ::time(0); - - if (false == rsSymbol.empty()) - db_set_ws(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CURRENCYRATE_SYMBOL, rsSymbol.c_str()); - - double dPrev = 0.0; - bool bValidPrev = CurrencyRates_DBReadDouble(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CURRENCYRATE_CURR_VALUE, dPrev); - if (true == bValidPrev) - CurrencyRates_DBWriteDouble(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CURRENCYRATE_PREV_VALUE, dPrev); - - CurrencyRates_DBWriteDouble(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CURRENCYRATE_CURR_VALUE, dRate); - db_set_dw(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CURRENCYRATE_FETCH_TIME, nTime); - - tstring sSymbol = rsSymbol; - - tostringstream oNick; - oNick.imbue(GetSystemLocale()); - if (false == m_sContactListFormat.empty()) { - tstring s = format_rate(this, hContact, m_sContactListFormat); - oNick << s; - } - else { - if (true == sSymbol.empty()) - sSymbol = CurrencyRates_DBGetStringW(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CURRENCYRATE_SYMBOL); - - oNick << std::setfill(L' ') << std::setw(10) << std::left << sSymbol << std::setw(6) << std::right << dRate; - } - CTendency tendency; - - if (true == tendency.Parse(this, m_sTendencyFormat, hContact)) - do_set_contact_extra_icon(hContact, tendency); - - db_set_ws(hContact, LIST_MODULE_NAME, CONTACT_LIST_NAME, oNick.str().c_str()); - - tstring sStatusMsg = format_rate(this, hContact, m_sStatusMsgFormat); - if (false == sStatusMsg.empty()) - db_set_ws(hContact, LIST_MODULE_NAME, STATUS_MSG_NAME, sStatusMsg.c_str()); - else - db_unset(hContact, LIST_MODULE_NAME, STATUS_MSG_NAME); - - bool bUseContactSpecific = (db_get_b(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CONTACT_SPEC_SETTINGS, 0) > 0); - - CAdvProviderSettings global_settings(this); - - WORD dwMode = (bUseContactSpecific) - ? db_get_w(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CURRENCYRATE_LOG, static_cast<WORD>(lmDisabled)) - : global_settings.GetLogMode(); - if (dwMode&lmExternalFile) { - bool bAdd = true; - bool bOnlyIfChanged = (bUseContactSpecific) - ? (db_get_w(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CURRENCYRATE_LOG_FILE_CONDITION, 1) > 0) - : global_settings.GetLogOnlyChangedFlag(); - if (true == bOnlyIfChanged) { - bAdd = ((false == bValidPrev) || (false == IsWithinAccuracy(dRate, dPrev))); - } - if (true == bAdd) { - tstring sLogFileName = (bUseContactSpecific) - ? CurrencyRates_DBGetStringW(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CURRENCYRATE_LOG_FILE, global_settings.GetLogFileName().c_str()) - : global_settings.GetLogFileName(); - - if (true == sSymbol.empty()) { - sSymbol = CurrencyRates_DBGetStringW(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CURRENCYRATE_SYMBOL); - } - - sLogFileName = GenerateLogFileName(sLogFileName, sSymbol); - - tstring sFormat = global_settings.GetLogFormat(); - if (bUseContactSpecific) - sFormat = CurrencyRates_DBGetStringW(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CURRENCYRATE_FORMAT_LOG_FILE, DB_DEF_LogFormat); - - log_to_file(this, hContact, sLogFileName, sFormat); - } - } - if (dwMode&lmInternalHistory) { - bool bAdd = true; - bool bOnlyIfChanged = (bUseContactSpecific) - ? (db_get_w(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CURRENCYRATE_HISTORY_CONDITION, 1) > 0) - : global_settings.GetHistoryOnlyChangedFlag(); - - if (true == bOnlyIfChanged) { - bAdd = ((false == bValidPrev) || (false == IsWithinAccuracy(dRate, dPrev))); - } - if (true == bAdd) { - tstring sFormat = (bUseContactSpecific) - ? CurrencyRates_DBGetStringW(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CURRENCYRATE_FORMAT_HISTORY, global_settings.GetHistoryFormat().c_str()) - : global_settings.GetHistoryFormat(); - - log_to_history(this, hContact, nTime, sFormat); - } - } - - if (dwMode&lmPopup) { - bool bOnlyIfChanged = (bUseContactSpecific) - ? (1 == db_get_b(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CURRENCYRATE_POPUP_CONDITION, 1) > 0) - : global_settings.GetShowPopupIfValueChangedFlag(); - if ((false == bOnlyIfChanged) - || ((true == bOnlyIfChanged) && (true == bValidPrev) && (false == IsWithinAccuracy(dRate, dPrev)))) { - tstring sFormat = (bUseContactSpecific) - ? CurrencyRates_DBGetStringW(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CURRENCYRATE_FORMAT_POPUP, global_settings.GetPopupFormat().c_str()) - : global_settings.GetPopupFormat(); - - CPopupSettings ps = *(global_settings.GetPopupSettingsPtr()); - ps.InitForContact(hContact); - show_popup(this, hContact, tendency, sFormat, ps); - } - } - - SetContactStatus(hContact, ID_STATUS_ONLINE); -} - -MCONTACT CCurrencyRatesProviderBase::CreateNewContact(const tstring& rsName) -{ - MCONTACT hContact = db_add_contact(); - if (hContact) { - if (0 == Proto_AddToContact(hContact, CURRENCYRATES_PROTOCOL_NAME)) { - tstring sProvName = GetInfo().m_sName; - db_set_ws(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CURRENCYRATE_PROVIDER, sProvName.c_str()); - db_set_ws(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CURRENCYRATE_SYMBOL, rsName.c_str()); - db_set_ws(hContact, LIST_MODULE_NAME, CONTACT_LIST_NAME, rsName.c_str()); - - mir_cslock lck(m_cs); - m_aContacts.push_back(hContact); - } - else { - db_delete_contact(hContact); - hContact = NULL; - } - } - - return hContact; -} - -DWORD get_refresh_timeout_miliseconds() -{ - if (!g_bAutoUpdate) - return INFINITE; - - int nRefreshRateType = db_get_w(0, CURRENCYRATES_MODULE_NAME, DB_KEY_RefreshRateType, RRT_MINUTES); - if (nRefreshRateType < RRT_SECONDS || nRefreshRateType > RRT_HOURS) - nRefreshRateType = RRT_MINUTES; - - DWORD nTimeout = db_get_w(0, CURRENCYRATES_MODULE_NAME, DB_KEY_RefreshRateValue, 1); - switch (nRefreshRateType) { - default: - case RRT_SECONDS: - if (nTimeout < 1 || nTimeout > 60) - nTimeout = 1; - - nTimeout *= 1000; - break; - case RRT_MINUTES: - if (nTimeout < 1 || nTimeout > 60) - nTimeout = 1; - - nTimeout *= 1000 * 60; - break; - case RRT_HOURS: - if (nTimeout < 1 || nTimeout > 24) - nTimeout = 1; - - nTimeout *= 1000 * 60 * 60; - break; - } - - return nTimeout; -} - -class CBoolGuard -{ -public: - CBoolGuard(bool& rb) : m_b(rb) { m_b = true; } - ~CBoolGuard() { m_b = false; } - -private: - bool m_b; -}; - -void CCurrencyRatesProviderBase::Run() -{ - DWORD nTimeout = get_refresh_timeout_miliseconds(); - m_sContactListFormat = CurrencyRates_DBGetStringW(NULL, CURRENCYRATES_MODULE_NAME, DB_KEY_DisplayNameFormat, DB_DEF_DisplayNameFormat); - m_sStatusMsgFormat = CurrencyRates_DBGetStringW(NULL, CURRENCYRATES_MODULE_NAME, DB_KEY_StatusMsgFormat, DB_DEF_StatusMsgFormat); - m_sTendencyFormat = CurrencyRates_DBGetStringW(NULL, CURRENCYRATES_MODULE_NAME, DB_KEY_TendencyFormat, DB_DEF_TendencyFormat); - - enum - { - STOP_THREAD = 0, - SETTINGS_CHANGED = 1, - REFRESH_CONTACT = 2, - COUNT_SYNC_OBJECTS = 3 - }; - - HANDLE anEvents[COUNT_SYNC_OBJECTS]; - anEvents[STOP_THREAD] = g_hEventWorkThreadStop; - anEvents[SETTINGS_CHANGED] = m_hEventSettingsChanged; - anEvents[REFRESH_CONTACT] = m_hEventRefreshContact; - - TContacts anContacts; - { - mir_cslock lck(m_cs); - anContacts = m_aContacts; - } - - bool bGoToBed = false; - - if (g_bAutoUpdate) { - CBoolGuard bg(m_bRefreshInProgress); - RefreshCurrencyRates(anContacts); - } - - while (false == bGoToBed) { - anContacts.clear(); - - DWORD dwBegin = ::GetTickCount(); - DWORD dwResult = ::WaitForMultipleObjects(COUNT_SYNC_OBJECTS, anEvents, FALSE, nTimeout); - switch (dwResult) { - case WAIT_FAILED: - assert(!"WaitForMultipleObjects failed"); - bGoToBed = true; - break; - - case WAIT_ABANDONED_0 + STOP_THREAD: - case WAIT_ABANDONED_0 + SETTINGS_CHANGED: - case WAIT_ABANDONED_0 + REFRESH_CONTACT: - assert(!"WaitForMultipleObjects abandoned"); - - case WAIT_OBJECT_0 + STOP_THREAD: - bGoToBed = true; - break; - - case WAIT_OBJECT_0 + SETTINGS_CHANGED: - nTimeout = get_refresh_timeout_miliseconds(); - m_sContactListFormat = CurrencyRates_DBGetStringW(NULL, CURRENCYRATES_MODULE_NAME, DB_KEY_DisplayNameFormat, DB_DEF_DisplayNameFormat); - m_sStatusMsgFormat = CurrencyRates_DBGetStringW(NULL, CURRENCYRATES_MODULE_NAME, DB_KEY_StatusMsgFormat, DB_DEF_StatusMsgFormat); - m_sTendencyFormat = CurrencyRates_DBGetStringW(NULL, CURRENCYRATES_MODULE_NAME, DB_KEY_TendencyFormat, DB_DEF_TendencyFormat); - { - mir_cslock lck(m_cs); - anContacts = m_aContacts; - } - break; - - case WAIT_OBJECT_0 + REFRESH_CONTACT: - { - DWORD dwTimeRest = ::GetTickCount() - dwBegin; - if (INFINITE != nTimeout && dwTimeRest < nTimeout) - nTimeout -= dwTimeRest; - - { - mir_cslock lck(m_cs); - anContacts = m_aRefreshingContacts; - m_aRefreshingContacts.clear(); - } - - CBoolGuard bg(m_bRefreshInProgress); - RefreshCurrencyRates(anContacts); - } - break; - - case WAIT_TIMEOUT: - nTimeout = get_refresh_timeout_miliseconds(); - { - mir_cslock lck(m_cs); - anContacts = m_aContacts; - } - { - CBoolGuard bg(m_bRefreshInProgress); - RefreshCurrencyRates(anContacts); - } - break; - - default: - assert(!"What is the hell?"); - } - } - - OnEndRun(); -} - -void CCurrencyRatesProviderBase::OnEndRun() -{ - TContacts anContacts; - { - mir_cslock lck(m_cs); - anContacts = m_aContacts; - m_aRefreshingContacts.clear(); - } - - CBoolGuard bg(m_bRefreshInProgress); - for (auto &it : anContacts) - SetContactStatus(it, ID_STATUS_OFFLINE); -} - -void CCurrencyRatesProviderBase::RefreshSettings() -{ - ::SetEvent(m_hEventSettingsChanged); -} - -void CCurrencyRatesProviderBase::RefreshAllContacts() -{ - { mir_cslock lck(m_cs); - m_aRefreshingContacts.clear(); - for (auto &hContact : m_aContacts) - m_aRefreshingContacts.push_back(hContact); - } - - ::SetEvent(m_hEventRefreshContact); -} - -void CCurrencyRatesProviderBase::RefreshContact(MCONTACT hContact) -{ - { mir_cslock lck(m_cs); - m_aRefreshingContacts.push_back(hContact); - } - - ::SetEvent(m_hEventRefreshContact); -} - -void CCurrencyRatesProviderBase::FillFormat(TFormatSpecificators &array) const -{ - array.push_back(CFormatSpecificator(L"%S", TranslateT("Source of Information"))); - array.push_back(CFormatSpecificator(L"%r", TranslateT("Rate Value"))); - array.push_back(CFormatSpecificator(L"%p", TranslateT("Previous Rate Value"))); - array.push_back(CFormatSpecificator(L"%X", TranslateT("Fetch Time"))); - array.push_back(CFormatSpecificator(L"%x", TranslateT("Fetch Date"))); - array.push_back(CFormatSpecificator(L"%t", TranslateT("Fetch Time and Date"))); - array.push_back(CFormatSpecificator(L"\\%", TranslateT("Percentage Character (%)"))); - array.push_back(CFormatSpecificator(L"\\t", TranslateT("Tabulation"))); - array.push_back(CFormatSpecificator(L"\\\\", TranslateT("Left slash (\\)"))); -} - -bool CCurrencyRatesProviderBase::ParseSymbol(MCONTACT hContact, wchar_t c, double &d) -{ - switch (c) { - case 'r': - case 'R': - return CurrencyRates_DBReadDouble(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CURRENCYRATE_CURR_VALUE, d); - - case 'p': - case 'P': - return CurrencyRates_DBReadDouble(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CURRENCYRATE_PREV_VALUE, d); - } - - return false; -} - -///////////////////////////////////////////////////////////////////////////////////////// - -static bool get_fetch_time(MCONTACT hContact, time_t &rTime) -{ - DBVARIANT dbv; - if (db_get(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CURRENCYRATE_FETCH_TIME, &dbv) || (DBVT_DWORD != dbv.type)) - return false; - - rTime = dbv.dVal; - return true; -} - -static tstring format_fetch_time(MCONTACT hContact, const tstring &rsFormat) -{ - time_t nTime; - if (true == get_fetch_time(hContact, nTime)) { - boost::posix_time::ptime time = boost::date_time::c_local_adjustor<boost::posix_time::ptime>::utc_to_local(boost::posix_time::from_time_t(nTime)); - tostringstream k; - k.imbue(std::locale(GetSystemLocale(), new ttime_facet(rsFormat.c_str()))); - k << time; - return k.str(); - } - - return tstring(); -} - -static tstring format_double(double dValue, int nWidth) -{ - tostringstream o; - o.imbue(GetSystemLocale()); - - if (nWidth > 0 && nWidth <= 9) - o << std::setprecision(nWidth) << std::showpoint << std::fixed; - - o << dValue; - - return o.str(); -} - -tstring CCurrencyRatesProviderBase::FormatSymbol(MCONTACT hContact, wchar_t c, int nWidth) const -{ - tstring ret; - double d = 0.0; - - switch (c) { - case '%': - case '\t': - case '\\': - ret = c; - break; - case 'S': - ret = CurrencyRates_DBGetStringW(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CURRENCYRATE_PROVIDER); - break; - case 's': - ret = CurrencyRates_DBGetStringW(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CURRENCYRATE_SYMBOL); - break; - case 'X': - ret = format_fetch_time(hContact, CurrencyRates_GetTimeFormat(true)); - break; - case 'x': - ret = format_fetch_time(hContact, CurrencyRates_GetDateFormat(true)); - break; - case 't': - { - tstring sFrmt = CurrencyRates_GetDateFormat(true); - sFrmt += L" "; - sFrmt += CurrencyRates_GetTimeFormat(true); - ret = format_fetch_time(hContact, sFrmt); - } - break; - case 'r': - case 'R': - if (true == CurrencyRates_DBReadDouble(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CURRENCYRATE_CURR_VALUE, d)) - ret = format_double(d, nWidth); - else - ret = L"-"; - break; - - case 'p': - case 'P': - if (true == CurrencyRates_DBReadDouble(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CURRENCYRATE_PREV_VALUE, d)) - ret = format_double(d, nWidth); - else - ret = L"-"; - break; - } - - return ret; -} diff --git a/plugins/CurrencyRates/src/CurrencyRatesProviderBase.h b/plugins/CurrencyRates/src/CurrencyRatesProviderBase.h deleted file mode 100644 index d407a9a709..0000000000 --- a/plugins/CurrencyRates/src/CurrencyRatesProviderBase.h +++ /dev/null @@ -1,122 +0,0 @@ -#ifndef __3e6cb4ec_fc47_468f_a2c8_a77941176bc9_CurrencyRatesProviderBase_h__ -#define __3e6cb4ec_fc47_468f_a2c8_a77941176bc9_CurrencyRatesProviderBase_h__ - -///////////////////////////////////////////////////////////////////////////////////////// -// CCurrencyRate - one currency - -class CCurrencyRate -{ -public: - CCurrencyRate(const tstring& rsID = L"", const tstring& rsSymbol = L"", const tstring& rsName = L"") - : m_sSymbol(rsSymbol), m_sName(rsName), m_sID(rsID){} - - const tstring& GetSymbol() const{ return m_sSymbol; } - const tstring& GetName() const{ return m_sName; } - const tstring& GetID() const{ return m_sID; } - -private: - tstring m_sSymbol; - tstring m_sName; - tstring m_sID; -}; - -///////////////////////////////////////////////////////////////////////////////////////// -// CCurrencyRateSection - block of currency settings - -class CCurrencyRateSection -{ -public: - typedef std::vector<CCurrencyRateSection> TSections; - typedef std::vector<CCurrencyRate> TCurrencyRates; - -public: - CCurrencyRateSection(const tstring& rsName = L"", const TSections& raSections = TSections(), const TCurrencyRates& raCurrencyRates = TCurrencyRates()) - : m_sName(rsName), m_aSections(raSections), m_aCurrencyRates(raCurrencyRates){} - - const tstring& GetName() const - { - return m_sName; - } - - size_t GetSectionCount() const - { - return m_aSections.size(); - } - - CCurrencyRateSection GetSection(size_t nIndex) const - { - return ((nIndex < m_aSections.size()) ? m_aSections[nIndex] : CCurrencyRateSection()); - } - - size_t GetCurrencyRateCount() const - { - return m_aCurrencyRates.size(); - } - - CCurrencyRate GetCurrencyRate(size_t nIndex) const - { - return ((nIndex < m_aCurrencyRates.size()) ? m_aCurrencyRates[nIndex] : CCurrencyRate()); - } - -private: - tstring m_sName; - TSections m_aSections; - TCurrencyRates m_aCurrencyRates; -}; - -///////////////////////////////////////////////////////////////////////////////////////// -// CCurrencyRatesProviderBase - basic set of methods for retrieving currencies - -typedef std::vector<MCONTACT> TContacts; - -class CCurrencyRatesProviderBase : public ICurrencyRatesProvider -{ - void OnEndRun(); - - struct CXMLFileInfo *m_pXMLInfo = nullptr; - - HANDLE m_hEventSettingsChanged; - HANDLE m_hEventRefreshContact; - tstring m_sContactListFormat; - tstring m_sStatusMsgFormat; - tstring m_sTendencyFormat; - TContacts m_aRefreshingContacts; - bool m_bRefreshInProgress; - -public: - CCurrencyRatesProviderBase(); - ~CCurrencyRatesProviderBase(); - - const CCurrencyRateSection& GetCurrencyRates() const; - - bool Init() override; - const CProviderInfo& GetInfo() const override; - - void AddContact(MCONTACT hContact) override; - void DeleteContact(MCONTACT hContact) override; - - void Run() override; - - void RefreshAllContacts() override; - void RefreshSettings() override; - void RefreshContact(MCONTACT hContact) override; - - void FillFormat(TFormatSpecificators&) const override; - bool ParseSymbol(MCONTACT hContact, wchar_t c, double &d) override; - tstring FormatSymbol(MCONTACT hContact, wchar_t c, int nWidth = 0) const override; - -protected: - const tstring& GetURL() const; - MCONTACT CreateNewContact(const tstring& rsName); - static bool IsOnline(); - static void SetContactStatus(MCONTACT hContact, int nNewStatus); - void WriteContactRate(MCONTACT hContact, double dRate, const tstring& rsSymbol = L""); - - virtual void RefreshCurrencyRates(TContacts &anContacts) = 0; - -protected: - TContacts m_aContacts; - mutable mir_cs m_cs; -}; - -#endif //__3e6cb4ec_fc47_468f_a2c8_a77941176bc9_CurrencyRatesProviderBase_h__ diff --git a/plugins/CurrencyRates/src/CurrencyRatesProviderCurrencyConverter.cpp b/plugins/CurrencyRates/src/CurrencyRatesProviderCurrencyConverter.cpp deleted file mode 100644 index 36693d52b1..0000000000 --- a/plugins/CurrencyRates/src/CurrencyRatesProviderCurrencyConverter.cpp +++ /dev/null @@ -1,438 +0,0 @@ -#include "stdafx.h" -#include "CurrencyRatesProviderCurrencyConverter.h" -#include <boost\property_tree\ptree.hpp> -#include <boost\property_tree\json_parser.hpp> - -tstring build_url(const tstring &rsURL, const tstring &from, const tstring &to) -{ - tostringstream o; - o << rsURL << L"?q=" << from << L"_" << to << "&compact=ultra"; - ptrA szApiKey(g_plugin.getStringA(DB_KEY_ApiKey)); - if (szApiKey != nullptr) - o << "&apiKey=" << szApiKey.get(); - return o.str(); -} - -tstring build_url(MCONTACT hContact, const tstring &rsURL) -{ - tstring sFrom = CurrencyRates_DBGetStringW(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_FROM_ID); - tstring sTo = CurrencyRates_DBGetStringW(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_TO_ID); - return build_url(rsURL, sFrom, sTo); -} - -bool parse_responce(const tstring &rsJSON, double &dRate) -{ - try { - boost::property_tree::ptree pt; - std::istringstream i_stream(currencyrates_t2a(rsJSON.c_str())); - - boost::property_tree::read_json(i_stream, pt); - if (!pt.empty()) { - auto pt_nested = pt.begin()->second; - dRate = pt_nested.get_value<double>(); - } - else { - dRate = pt.get_value<double>(); - } - - return true; - } - catch (boost::property_tree::ptree_error&) { - } - return false; -} - -using TWatchedRates = std::vector<CCurrencyRatesProviderCurrencyConverter::TRateInfo>; -TWatchedRates g_aWatchedRates; - -INT_PTR CALLBACK OptDlgProc(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam) -{ - auto get_provider = []()->CCurrencyRatesProviderCurrencyConverter* - { - for (auto &pProvider : g_apProviders) - if (auto p = dynamic_cast<CCurrencyRatesProviderCurrencyConverter*>(pProvider)) - return p; - - assert(!"We should never get here!"); - return nullptr; - }; - - auto make_currencyrate_name = [](const CCurrencyRate &rCurrencyRate)->tstring - { - const tstring& rsDesc = rCurrencyRate.GetName(); - return((false == rsDesc.empty()) ? rsDesc : rCurrencyRate.GetSymbol()); - }; - - auto make_contact_name = [](const tstring &rsSymbolFrom, const tstring &rsSymbolTo)->tstring - { - tostringstream o; - o << rsSymbolFrom << L"/" << rsSymbolTo; - return o.str(); - }; - - - auto make_rate_name = [make_contact_name](const CCurrencyRatesProviderCurrencyConverter::TRateInfo &ri)->tstring - { - if ((false == ri.first.GetName().empty()) && (false == ri.second.GetName().empty())) - return make_contact_name(ri.first.GetName(), ri.second.GetName()); - - return make_contact_name(ri.first.GetSymbol(), ri.second.GetSymbol()); - }; - - - auto pProvider = get_provider(); - - CCommonDlgProcData d(pProvider); - CommonOptionDlgProc(hdlg, message, wParam, lParam, d); - - switch (message) { - case WM_NOTIFY: - { - LPNMHDR pNMHDR = reinterpret_cast<LPNMHDR>(lParam); - switch (pNMHDR->code) { - case PSN_APPLY: - { - if (pProvider) { - TWatchedRates aTemp(g_aWatchedRates); - TWatchedRates aRemove; - size_t cWatchedRates = pProvider->GetWatchedRateCount(); - for (size_t i = 0; i < cWatchedRates; ++i) { - CCurrencyRatesProviderCurrencyConverter::TRateInfo ri; - if (true == pProvider->GetWatchedRateInfo(i, ri)) { - auto it = std::find_if(aTemp.begin(), aTemp.end(), [&ri](const auto& other)->bool - { - return ((0 == mir_wstrcmpi(ri.first.GetID().c_str(), other.first.GetID().c_str())) - && ((0 == mir_wstrcmpi(ri.second.GetID().c_str(), other.second.GetID().c_str())))); - }); - if (it == aTemp.end()) { - aRemove.push_back(ri); - } - else { - aTemp.erase(it); - } - } - } - - for (auto &it : aRemove) pProvider->WatchForRate(it, false); - for (auto &it : aTemp) pProvider->WatchForRate(it, true); - pProvider->RefreshSettings(); - } - } - break; - } - } - break; - - case WM_INITDIALOG: - TranslateDialogDefault(hdlg); - { - g_aWatchedRates.clear(); - - HWND hcbxFrom = ::GetDlgItem(hdlg, IDC_COMBO_CONVERT_FROM); - HWND hcbxTo = ::GetDlgItem(hdlg, IDC_COMBO_CONVERT_INTO); - - CCurrencyRateSection rSection; - const auto& rCurrencyRates = pProvider->GetCurrencyRates(); - if (rCurrencyRates.GetSectionCount() > 0) { - rSection = rCurrencyRates.GetSection(0); - } - - auto cCurrencyRates = rSection.GetCurrencyRateCount(); - for (auto i = 0u; i < cCurrencyRates; ++i) { - const auto& rCurrencyRate = rSection.GetCurrencyRate(i); - tstring sName = make_currencyrate_name(rCurrencyRate); - LPCTSTR pszName = sName.c_str(); - ::SendMessage(hcbxFrom, CB_ADDSTRING, 0, reinterpret_cast<LPARAM>(pszName)); - ::SendMessage(hcbxTo, CB_ADDSTRING, 0, reinterpret_cast<LPARAM>(pszName)); - } - - auto cWatchedRates = pProvider->GetWatchedRateCount(); - for (auto i = 0u; i < cWatchedRates; ++i) { - CCurrencyRatesProviderCurrencyConverter::TRateInfo ri; - if (true == pProvider->GetWatchedRateInfo(i, ri)) { - g_aWatchedRates.push_back(ri); - tstring sRate = make_rate_name(ri); - LPCTSTR pszRateName = sRate.c_str(); - ::SendDlgItemMessage(hdlg, IDC_LIST_RATES, LB_ADDSTRING, 0, reinterpret_cast<LPARAM>(pszRateName)); - } - } - - ::EnableWindow(::GetDlgItem(hdlg, IDC_BUTTON_ADD), FALSE); - ::EnableWindow(::GetDlgItem(hdlg, IDC_BUTTON_REMOVE), FALSE); - } - return TRUE; - - case WM_COMMAND: - switch (HIWORD(wParam)) { - case CBN_SELCHANGE: - switch (LOWORD(wParam)) { - case IDC_COMBO_REFRESH_RATE: - break; - case IDC_COMBO_CONVERT_FROM: - case IDC_COMBO_CONVERT_INTO: - { - int nFrom = static_cast<int>(::SendDlgItemMessage(hdlg, IDC_COMBO_CONVERT_FROM, CB_GETCURSEL, 0, 0)); - int nTo = static_cast<int>(::SendDlgItemMessage(hdlg, IDC_COMBO_CONVERT_INTO, CB_GETCURSEL, 0, 0)); - bool bEnableAddButton = ((CB_ERR != nFrom) && (CB_ERR != nTo) && (nFrom != nTo)); - EnableWindow(GetDlgItem(hdlg, IDC_BUTTON_ADD), bEnableAddButton); - } - break; - case IDC_LIST_RATES: - { - int nSel = ::SendDlgItemMessage(hdlg, IDC_LIST_RATES, LB_GETCURSEL, 0, 0); - ::EnableWindow(::GetDlgItem(hdlg, IDC_BUTTON_REMOVE), (LB_ERR != nSel)); - } - break; - } - break; - - case BN_CLICKED: - switch (LOWORD(wParam)) { - case IDC_BUTTON_ADD: - { - size_t nFrom = static_cast<size_t>(::SendDlgItemMessage(hdlg, IDC_COMBO_CONVERT_FROM, CB_GETCURSEL, 0, 0)); - size_t nTo = static_cast<size_t>(::SendDlgItemMessage(hdlg, IDC_COMBO_CONVERT_INTO, CB_GETCURSEL, 0, 0)); - if ((CB_ERR != nFrom) && (CB_ERR != nTo) && (nFrom != nTo)) { - CCurrencyRateSection rSection; - const auto& rCurrencyRates = pProvider->GetCurrencyRates(); - if (rCurrencyRates.GetSectionCount() > 0) { - rSection = rCurrencyRates.GetSection(0); - } - - auto cCurrencyRates = rSection.GetCurrencyRateCount(); - if ((nFrom < cCurrencyRates) && (nTo < cCurrencyRates)) { - CCurrencyRatesProviderCurrencyConverter::TRateInfo ri; - ri.first = rSection.GetCurrencyRate(nFrom); - ri.second = rSection.GetCurrencyRate(nTo); - - g_aWatchedRates.push_back(ri); - - tstring sRate = make_rate_name(ri); - LPCTSTR pszRateName = sRate.c_str(); - ::SendDlgItemMessage(hdlg, IDC_LIST_RATES, LB_ADDSTRING, 0, reinterpret_cast<LPARAM>(pszRateName)); - PropSheet_Changed(::GetParent(hdlg), hdlg); - } - } - } - break; - - case IDC_BUTTON_REMOVE: - HWND hWnd = ::GetDlgItem(hdlg, IDC_LIST_RATES); - int nSel = ::SendMessage(hWnd, LB_GETCURSEL, 0, 0); - if (LB_ERR != nSel) { - if ((LB_ERR != ::SendMessage(hWnd, LB_DELETESTRING, nSel, 0)) - && (nSel < static_cast<int>(g_aWatchedRates.size()))) { - - TWatchedRates::iterator i = g_aWatchedRates.begin(); - std::advance(i, nSel); - g_aWatchedRates.erase(i); - PropSheet_Changed(::GetParent(hdlg), hdlg); - } - } - - nSel = ::SendMessage(hWnd, LB_GETCURSEL, 0, 0); - ::EnableWindow(::GetDlgItem(hdlg, IDC_BUTTON_REMOVE), (LB_ERR != nSel)); - break; - } - break; - } - break; - } - - return FALSE; -} - -CCurrencyRatesProviderCurrencyConverter::CCurrencyRatesProviderCurrencyConverter() -{ -} - -CCurrencyRatesProviderCurrencyConverter::~CCurrencyRatesProviderCurrencyConverter() -{ -} - -void CCurrencyRatesProviderCurrencyConverter::ShowPropertyPage(WPARAM wp, OPTIONSDIALOGPAGE &odp) -{ - odp.pszTemplate = MAKEINTRESOURCEA(IDD_DIALOG_OPT_GOOGLE); - odp.pfnDlgProc = OptDlgProc; - odp.szTab.w = const_cast<LPTSTR>(GetInfo().m_sName.c_str()); - g_plugin.addOptions(wp, &odp); -} - -void CCurrencyRatesProviderCurrencyConverter::RefreshCurrencyRates(TContacts &anContacts) -{ - CHTTPSession http; - tstring sURL = GetURL(); - - for (TContacts::const_iterator i = anContacts.begin(); i != anContacts.end() && IsOnline(); ++i) { - MCONTACT hContact = *i; - - tstring sFullURL = build_url(hContact, sURL); - if ((true == http.OpenURL(sFullURL)) && (true == IsOnline())) { - tstring sHTML; - if ((true == http.ReadResponce(sHTML)) && (true == IsOnline())) { - double dRate = 0.0; - if ((true == parse_responce(sHTML, dRate)) && (true == IsOnline())) { - WriteContactRate(hContact, dRate); - continue; - } - } - } - - SetContactStatus(hContact, ID_STATUS_NA); - } -} - -double CCurrencyRatesProviderCurrencyConverter::Convert(double dAmount, const CCurrencyRate &from, const CCurrencyRate &to) const -{ - tstring sFullURL = build_url(GetURL(), from.GetID(), to.GetID()); - - CHTTPSession http; - if ((true == http.OpenURL(sFullURL))) { - tstring sHTML; - if ((true == http.ReadResponce(sHTML))) { - double dResult = 0.0; - if ((true == parse_responce(sHTML, dResult))) - return dResult * dAmount; - - throw std::runtime_error(Translate("Error occurred during HTML parsing.")); - } - else throw std::runtime_error(Translate("Error occurred during site access.")); - } - else throw std::runtime_error(Translate("Error occurred during site access.")); - - return 0.0; -} - -size_t CCurrencyRatesProviderCurrencyConverter::GetWatchedRateCount() const -{ - return m_aContacts.size(); -} - -bool CCurrencyRatesProviderCurrencyConverter::GetWatchedRateInfo(size_t nIndex, TRateInfo &rRateInfo) -{ - if (nIndex >= m_aContacts.size()) - return false; - - MCONTACT hContact = m_aContacts[nIndex]; - tstring sSymbolFrom = CurrencyRates_DBGetStringW(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_FROM_ID); - tstring sSymbolTo = CurrencyRates_DBGetStringW(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_TO_ID); - tstring sDescFrom = CurrencyRates_DBGetStringW(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_FROM_DESCRIPTION); - tstring sDescTo = CurrencyRates_DBGetStringW(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_TO_DESCRIPTION); - - rRateInfo.first = CCurrencyRate(sSymbolFrom, sSymbolFrom, sDescFrom); - rRateInfo.second = CCurrencyRate(sSymbolTo, sSymbolTo, sDescTo); - return true; -} - -bool CCurrencyRatesProviderCurrencyConverter::WatchForRate(const TRateInfo &ri, bool bWatch) -{ - auto i = std::find_if(m_aContacts.begin(), m_aContacts.end(), [&ri](auto hContact)->bool - { - tstring sFrom = CurrencyRates_DBGetStringW(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_FROM_ID); - tstring sTo = CurrencyRates_DBGetStringW(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_TO_ID); - return ((0 == mir_wstrcmpi(ri.first.GetID().c_str(), sFrom.c_str())) - && (0 == mir_wstrcmpi(ri.second.GetID().c_str(), sTo.c_str()))); - }); - - auto make_contact_name = [](const tstring &rsSymbolFrom, const tstring &rsSymbolTo)->tstring - { - tostringstream o; - o << rsSymbolFrom << L"/" << rsSymbolTo; - return o.str(); - }; - - - if ((true == bWatch) && (i == m_aContacts.end())) { - tstring sName = make_contact_name(ri.first.GetSymbol(), ri.second.GetSymbol()); - MCONTACT hContact = CreateNewContact(sName); - if (hContact) { - db_set_ws(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_FROM_ID, ri.first.GetID().c_str()); - db_set_ws(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_TO_ID, ri.second.GetID().c_str()); - if (false == ri.first.GetName().empty()) { - db_set_ws(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_FROM_DESCRIPTION, ri.first.GetName().c_str()); - } - if (false == ri.second.GetName().empty()) { - db_set_ws(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_TO_DESCRIPTION, ri.second.GetName().c_str()); - } - - return true; - } - } - else if ((false == bWatch) && (i != m_aContacts.end())) { - MCONTACT hContact = *i; - {// for CCritSection - mir_cslock lck(m_cs); - m_aContacts.erase(i); - } - - db_delete_contact(hContact); - return true; - } - - return false; -} - -MCONTACT CCurrencyRatesProviderCurrencyConverter::GetContactByID(const tstring& rsFromID, const tstring& rsToID) const -{ - mir_cslock lck(m_cs); - - auto i = std::find_if(m_aContacts.begin(), m_aContacts.end(), [rsFromID, rsToID](MCONTACT hContact)->bool - { - tstring sFrom = CurrencyRates_DBGetStringW(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_FROM_ID); - tstring sTo = CurrencyRates_DBGetStringW(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_TO_ID); - return ((0 == mir_wstrcmpi(rsFromID.c_str(), sFrom.c_str())) && (0 == mir_wstrcmpi(rsToID.c_str(), sTo.c_str()))); - }); - - if (i != m_aContacts.end()) - return *i; - - return NULL; -} - -void CCurrencyRatesProviderCurrencyConverter::FillFormat(TFormatSpecificators &array) const -{ - CSuper::FillFormat(array); - - array.push_back(CFormatSpecificator(L"%F", TranslateT("From Currency Full Name"))); - array.push_back(CFormatSpecificator(L"%f", TranslateT("From Currency Short Name"))); - array.push_back(CFormatSpecificator(L"%I", TranslateT("Into Currency Full Name"))); - array.push_back(CFormatSpecificator(L"%i", TranslateT("Into Currency Short Name"))); - array.push_back(CFormatSpecificator(L"%s", TranslateT("Short notation for \"%f/%i\""))); -} - -tstring CCurrencyRatesProviderCurrencyConverter::FormatSymbol(MCONTACT hContact, wchar_t c, int nWidth) const -{ - switch (c) { - case 'F': - return CurrencyRates_DBGetStringW(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_FROM_DESCRIPTION); - - case 'f': - return CurrencyRates_DBGetStringW(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_FROM_ID); - - case 'I': - return CurrencyRates_DBGetStringW(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_TO_DESCRIPTION); - - case 'i': - return CurrencyRates_DBGetStringW(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_TO_ID); - } - - return CSuper::FormatSymbol(hContact, c, nWidth); -} - -MCONTACT CCurrencyRatesProviderCurrencyConverter::ImportContact(const TiXmlNode *pRoot) -{ - const char *sFromID = nullptr, *sToID = nullptr; - - for (auto *pNode : TiXmlFilter(pRoot, "Setting")) { - TNameValue Item = parse_setting_node(pNode); - if (!mir_strcmpi(Item.first, DB_STR_FROM_ID)) - sFromID = Item.second; - else if (!mir_strcmpi(Item.first, DB_STR_TO_ID)) - sToID = Item.second; - } - - if (sFromID && sToID) - return GetContactByID(Utf2T(sFromID).get(), Utf2T(sToID).get()); - - return 0; -} diff --git a/plugins/CurrencyRates/src/CurrencyRatesProviderCurrencyConverter.h b/plugins/CurrencyRates/src/CurrencyRatesProviderCurrencyConverter.h deleted file mode 100644 index bb65f08737..0000000000 --- a/plugins/CurrencyRates/src/CurrencyRatesProviderCurrencyConverter.h +++ /dev/null @@ -1,32 +0,0 @@ -#pragma once - -#define DB_STR_FROM_ID "FromID" -#define DB_STR_TO_ID "ToID" -#define DB_STR_FROM_DESCRIPTION "FromDesc" -#define DB_STR_TO_DESCRIPTION "ToDesc" - - -class CCurrencyRatesProviderCurrencyConverter : public CCurrencyRatesProviderBase -{ -public: - typedef CCurrencyRatesProviderBase CSuper; - using TRateInfo = std::pair<CCurrencyRate, CCurrencyRate>; - -public: - CCurrencyRatesProviderCurrencyConverter(); - ~CCurrencyRatesProviderCurrencyConverter(); - - double Convert(double dAmount, const CCurrencyRate &from, const CCurrencyRate &to) const; - size_t GetWatchedRateCount() const; - bool GetWatchedRateInfo(size_t nIndex, TRateInfo &rRateInfo); - bool WatchForRate(const TRateInfo &ri, bool bWatch); - MCONTACT GetContactByID(const tstring &rsFromID, const tstring &rsToID) const; - -private: - void FillFormat(TFormatSpecificators &) const override; - void RefreshCurrencyRates(TContacts &anContacts) override; - void ShowPropertyPage(WPARAM wp, OPTIONSDIALOGPAGE &odp) override; - - MCONTACT ImportContact(const TiXmlNode*) override; - tstring FormatSymbol(MCONTACT hContact, wchar_t c, int nWidth) const override; -}; diff --git a/plugins/CurrencyRates/src/CurrencyRatesProviders.cpp b/plugins/CurrencyRates/src/CurrencyRatesProviders.cpp deleted file mode 100644 index 31dd4c771a..0000000000 --- a/plugins/CurrencyRates/src/CurrencyRatesProviders.cpp +++ /dev/null @@ -1,83 +0,0 @@ -#include "StdAfx.h" -#include "CurrencyRatesProviderCurrencyConverter.h" - -#define LAST_RUN_VERSION "LastRunVersion" - -TCurrencyRatesProviders g_apProviders; - -///////////////////////////////////////////////////////////////////////////////////////// - -template<class T>void create_provider(TCurrencyRatesProviders& g_apProviders) -{ - ICurrencyRatesProvider *pProvider = new T; - if (pProvider->Init()) - g_apProviders.push_back(pProvider); -}; - -void CreateProviders() -{ - create_provider<CCurrencyRatesProviderCurrencyConverter>(g_apProviders); -} - -///////////////////////////////////////////////////////////////////////////////////////// - -void ClearProviders() -{ - g_apProviders.clear(); -} - -///////////////////////////////////////////////////////////////////////////////////////// - -void convert_contact_settings(MCONTACT hContact) -{ - WORD dwLogMode = db_get_w(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CURRENCYRATE_LOG, static_cast<WORD>(lmDisabled)); - if ((dwLogMode&lmInternalHistory) || (dwLogMode&lmExternalFile)) - db_set_b(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CONTACT_SPEC_SETTINGS, 1); -} - -void InitProviders() -{ - CreateProviders(); - - const WORD nCurrentVersion = 17; - WORD nVersion = db_get_w(0, CURRENCYRATES_MODULE_NAME, LAST_RUN_VERSION, 1); - - for (auto &hContact : Contacts(CURRENCYRATES_MODULE_NAME)) { - ICurrencyRatesProvider *pProvider = GetContactProviderPtr(hContact); - if (pProvider) { - pProvider->AddContact(hContact); - if (nVersion < nCurrentVersion) - convert_contact_settings(hContact); - } - } - - db_set_w(0, CURRENCYRATES_MODULE_NAME, LAST_RUN_VERSION, nCurrentVersion); -} - -///////////////////////////////////////////////////////////////////////////////////////// - -ICurrencyRatesProvider* GetContactProviderPtr(MCONTACT hContact) -{ - char* szProto = GetContactProto(hContact); - if (nullptr == szProto || 0 != ::_stricmp(szProto, CURRENCYRATES_PROTOCOL_NAME)) - return nullptr; - - tstring sProvider = CurrencyRates_DBGetStringW(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CURRENCYRATE_PROVIDER); - if (true == sProvider.empty()) - return nullptr; - - return FindProvider(sProvider); -} - -///////////////////////////////////////////////////////////////////////////////////////// - -ICurrencyRatesProvider* FindProvider(const tstring& rsName) -{ - for (auto &pProvider : g_apProviders) { - const ICurrencyRatesProvider::CProviderInfo& rInfo = pProvider->GetInfo(); - if (0 == ::mir_wstrcmpi(rsName.c_str(), rInfo.m_sName.c_str())) - return pProvider; - } - - return nullptr; -} diff --git a/plugins/CurrencyRates/src/DBUtils.cpp b/plugins/CurrencyRates/src/DBUtils.cpp deleted file mode 100644 index 20189c0f3f..0000000000 --- a/plugins/CurrencyRates/src/DBUtils.cpp +++ /dev/null @@ -1,43 +0,0 @@ -#include "StdAfx.h" - -std::wstring GetNodeText(const TiXmlElement *pNode) -{ - auto *pszText = pNode->GetText(); - if (pszText) - return Utf2T(pszText).get(); - - return std::wstring(); -} - -std::wstring CurrencyRates_DBGetStringW(MCONTACT hContact, const char *szModule, const char *szSetting, const wchar_t *pszDefValue) -{ - if (pszDefValue == nullptr) - pszDefValue = L""; - - return std::wstring(ptrW(db_get_wsa(hContact, szModule, szSetting, pszDefValue))); -} - -bool CurrencyRates_DBWriteDouble(MCONTACT hContact, const char *szModule, const char *szSetting, double dValue) -{ - return 0 == db_set_blob(hContact, szModule, szSetting, &dValue, sizeof(dValue)); -} - -bool CurrencyRates_DBReadDouble(MCONTACT hContact, const char *szModule, const char *szSetting, double& rdValue) -{ - DBVARIANT dbv = {}; - dbv.type = DBVT_BLOB; - - bool bResult = ((0 == db_get(hContact, szModule, szSetting, &dbv)) && (DBVT_BLOB == dbv.type)); - if (bResult) - rdValue = *reinterpret_cast<double*>(dbv.pbVal); - - db_free(&dbv); - return bResult; -} - -void FixInvalidChars(tstring &s) -{ - for (auto &c : s) - if (wcschr(L"\\/:*?\"<>|", c)) - c = '_'; -} diff --git a/plugins/CurrencyRates/src/DBUtils.h b/plugins/CurrencyRates/src/DBUtils.h deleted file mode 100644 index f6c7f83b71..0000000000 --- a/plugins/CurrencyRates/src/DBUtils.h +++ /dev/null @@ -1,53 +0,0 @@ -#ifndef __54294385_3fdd_4f0c_98c3_c583a96e7fb4_DBUtils_h__ -#define __54294385_3fdd_4f0c_98c3_c583a96e7fb4_DBUtils_h__ - -#define DB_KEY_RefreshRateType "CC_RefreshRateType" -#define DB_KEY_RefreshRateValue "CC_RefreshRateValue" - -#define DB_KEY_StatusMsgFormat "CC_StatusMessageFormat" -#define DB_DEF_StatusMsgFormat L"" - -#define DB_DEF_IniFileName L"CC.xml" - -#define DB_KEY_ApiKey "CC_ApiKey" - -#define DB_KEY_DisplayNameFormat "CC_DspNameFrmt" -#define DB_DEF_DisplayNameFormat L"1 %f = %r %i" - -#define DB_KEY_HistoryFormat "CC_HistoryFormat" -#define DB_DEF_HistoryFormat L"%s %r" - -#define DB_KEY_HistoryCondition "CC_AddToHistoryOnlyIfValueIsChanged" - -#define DB_KEY_LogMode "CC_LogMode" -#define DB_KEY_LogFile "CC_LogFile" -#define DB_KEY_LogCondition "CC_AddToLogOnlyIfValueIsChanged" - -#define DB_KEY_LogFormat "CC_LogFileFormat" -#define DB_DEF_LogFormat L"%s\\t%t\\t%r\\n" - -#define DB_KEY_PopupFormat "CC_PopupFormat" -#define DB_DEF_PopupFormat L"\\nCurrent = %r\\nPrevious = %p" - -#define DB_KEY_PopupCondition "CC_ShowPopupOnlyIfValueChanged" - -#define DB_KEY_PopupColourMode "CC_PopupColourMode" -#define DB_KEY_PopupBkColour "CC_PopupColourBk" -#define DB_KEY_PopupTextColour "CC_PopupColourText" -#define DB_KEY_PopupDelayMode "CC_PopupDelayMode" -#define DB_KEY_PopupDelayTimeout "CC_PopupDelayTimeout" -#define DB_KEY_PopupHistoryFlag "CC_PopupHistoryFlag" - -#define DB_KEY_TendencyFormat "CC_TendencyFormat" -#define DB_DEF_TendencyFormat L"%r>%p" - -void FixInvalidChars(tstring &s); - -std::wstring GetNodeText(const TiXmlElement*); - -std::wstring CurrencyRates_DBGetStringW(MCONTACT hContact, const char *szModule, const char *szSetting, const wchar_t* pszDefValue = nullptr); - -bool CurrencyRates_DBWriteDouble(MCONTACT hContact, const char *szModule, const char *szSetting, double dValue); -bool CurrencyRates_DBReadDouble(MCONTACT hContact, const char *szModule, const char *szSetting, double& rdValue); - -#endif //__54294385_3fdd_4f0c_98c3_c583a96e7fb4_DBUtils_h__ diff --git a/plugins/CurrencyRates/src/EconomicRateInfo.h b/plugins/CurrencyRates/src/EconomicRateInfo.h deleted file mode 100644 index 664649a47a..0000000000 --- a/plugins/CurrencyRates/src/EconomicRateInfo.h +++ /dev/null @@ -1,59 +0,0 @@ -#ifndef __87d726e0_26c6_485d_8016_1fba819b037d_EconomicRateInfo__ -#define __87d726e0_26c6_485d_8016_1fba819b037d_EconomicRateInfo__ - -#define CURRENCYRATES_PROTOCOL_NAME "CurrencyRates"// protocol name - -#define CURRENCYRATES_MODULE_NAME "CurrencyRates" // db settings module path - -enum ERefreshRateType -{ - RRT_SECONDS = 0, - RRT_MINUTES = 1, - RRT_HOURS = 2 -}; - -#define DB_STR_ENABLE_LOG "EnableLog" -#define DB_STR_CURRENCYRATE_PROVIDER "CurrencyRateProvider" -#define DB_STR_CURRENCYRATE_ID "CurrencyRateID" -#define DB_STR_CURRENCYRATE_SYMBOL "CurrencyRateSymbol" -#define DB_STR_CURRENCYRATE_DESCRIPTION "CurrencyRateDescription" -#define DB_STR_CURRENCYRATE_PREV_VALUE "PreviousCurrencyRateValue" -#define DB_STR_CURRENCYRATE_CURR_VALUE "CurrentCurrencyRateValue" -#define DB_STR_CURRENCYRATE_FETCH_TIME "FetchTime" - - -enum ELogMode -{ - lmDisabled = 0x0000, - lmInternalHistory = 0x0001, - lmExternalFile = 0x0002, - lmPopup = 0x0004, -}; - -#define DB_STR_CONTACT_SPEC_SETTINGS "ContactSpecSettings" -#define DB_STR_CURRENCYRATE_LOG "Log" -#define DB_STR_CURRENCYRATE_LOG_FILE "LogFile" -#define DB_STR_CURRENCYRATE_FORMAT_LOG_FILE "LogFileFormat" -#define DB_STR_CURRENCYRATE_FORMAT_HISTORY "HistoryFormat" -#define DB_STR_CURRENCYRATE_LOG_FILE_CONDITION "AddToLogOnlyIfValueIsChanged" -#define DB_STR_CURRENCYRATE_HISTORY_CONDITION "AddToHistoryOnlyIfValueIsChanged" -#define DB_STR_CURRENCYRATE_EXTRA_IMAGE_SLOT "ExtraImageSlot" -#define DB_STR_CURRENCYRATE_FORMAT_POPUP "PopupFormat" -#define DB_STR_CURRENCYRATE_POPUP_CONDITION "ShowPopupOnlyIfValueIsChanged" - -#define DB_STR_CURRENCYRATE_POPUP_COLOUR_MODE "PopupColourMode" -#define DB_STR_CURRENCYRATE_POPUP_COLOUR_BK "PopupColourBk" -#define DB_STR_CURRENCYRATE_POPUP_COLOUR_TEXT "PopupColourText" -#define DB_STR_CURRENCYRATE_POPUP_DELAY_MODE "PopupDelayMode" -#define DB_STR_CURRENCYRATE_POPUP_DELAY_TIMEOUT "PopupDelayTimeout" -#define DB_STR_CURRENCYRATE_POPUP_HISTORY_FLAG "PopupHistoryFlag" - - -// #define DB_STR_NICK "Nick" -#define DB_STR_STATUS "Status" - -#define LIST_MODULE_NAME "CList" -#define CONTACT_LIST_NAME "MyHandle" -#define STATUS_MSG_NAME "StatusMsg" - -#endif //__87d726e0_26c6_485d_8016_1fba819b037d_EconomicRateInfo__ diff --git a/plugins/CurrencyRates/src/ExtraImages.cpp b/plugins/CurrencyRates/src/ExtraImages.cpp deleted file mode 100644 index 686f4e34e7..0000000000 --- a/plugins/CurrencyRates/src/ExtraImages.cpp +++ /dev/null @@ -1,30 +0,0 @@ -#include "StdAfx.h" - -static HANDLE hExtraIcon; - -void CurrencyRates_InitExtraIcons() -{ - hExtraIcon = ExtraIcon_RegisterIcolib(ICON_STR_CURRENCYRATE, CURRENCYRATES_PROTOCOL_NAME, CURRENCYRATES_PROTOCOL_NAME "_" ICON_STR_MAIN); -} - -bool SetContactExtraImage(MCONTACT hContact, EImageIndex nIndex) -{ - if (!hExtraIcon) - return false; - - HANDLE hIcolib; - switch (nIndex) { - case eiUp: - hIcolib = CurrencyRates_GetIconHandle(IDI_ICON_UP); - break; - case eiDown: - hIcolib = CurrencyRates_GetIconHandle(IDI_ICON_DOWN); - break; - case eiNotChanged: - hIcolib = CurrencyRates_GetIconHandle(IDI_ICON_NOTCHANGED); - break; - default: - hIcolib = nullptr; - } - return ExtraIcon_SetIcon(hExtraIcon, hContact, hIcolib) == 0; -} diff --git a/plugins/CurrencyRates/src/ExtraImages.h b/plugins/CurrencyRates/src/ExtraImages.h deleted file mode 100644 index b3ef9deaa6..0000000000 --- a/plugins/CurrencyRates/src/ExtraImages.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef __9d0dac0c_12e4_46ce_809a_db6dc7d6f269_ExtraImages_h__ -#define __9d0dac0c_12e4_46ce_809a_db6dc7d6f269_ExtraImages_h__ - -enum EImageIndex -{ - eiUp = 0, - eiDown = 1, - eiNotChanged = 2, - eiEmpty = 3 -}; - -bool SetContactExtraImage(MCONTACT hContact, EImageIndex nIndex); - -void CurrencyRates_InitExtraIcons(void); - -#endif //__9d0dac0c_12e4_46ce_809a_db6dc7d6f269_ExtraImages_h__ diff --git a/plugins/CurrencyRates/src/Forex.cpp b/plugins/CurrencyRates/src/Forex.cpp deleted file mode 100644 index b3b2424d48..0000000000 --- a/plugins/CurrencyRates/src/Forex.cpp +++ /dev/null @@ -1,325 +0,0 @@ -// Forex.cpp : Defines the exported functions for the DLL application. -// - -#include "stdafx.h" - -CMPlugin g_plugin; - -HANDLE g_hEventWorkThreadStop; -//int g_nStatus = ID_STATUS_OFFLINE; -bool g_bAutoUpdate = true; -HGENMENU g_hMenuEditSettings = nullptr; -HGENMENU g_hMenuOpenLogFile = nullptr; -#ifdef CHART_IMPLEMENT -HGENMENU g_hMenuChart = nullptr; -#endif -HGENMENU g_hMenuRefresh = nullptr, g_hMenuRoot = nullptr; - -#define DB_STR_AUTO_UPDATE "AutoUpdate" - -typedef std::vector<HANDLE> THandles; -THandles g_ahThreads; -HGENMENU g_hEnableDisableMenu; -HANDLE g_hTBButton; - -LPSTR g_pszAutoUpdateCmd = "CurrencyRates/Enable-Disable Auto Update"; -LPSTR g_pszCurrencyConverter = "CurrencyRates/CurrencyConverter"; - -void UpdateMenu(bool bAutoUpdate) -{ - if (bAutoUpdate) // to enable auto-update - Menu_ModifyItem(g_hEnableDisableMenu, LPGENW("Auto Update Enabled"), CurrencyRates_GetIconHandle(IDI_ICON_MAIN)); - else // to disable auto-update - Menu_ModifyItem(g_hEnableDisableMenu, LPGENW("Auto Update Disabled"), CurrencyRates_GetIconHandle(IDI_ICON_DISABLED)); - - CallService(MS_TTB_SETBUTTONSTATE, reinterpret_cast<WPARAM>(g_hTBButton), !bAutoUpdate ? TTBST_PUSHED : 0); -} - -INT_PTR CurrencyRatesMenu_RefreshAll(WPARAM, LPARAM) -{ - for (auto &pProvider : g_apProviders) - pProvider->RefreshAllContacts(); - return 0; -} - -INT_PTR CurrencyRatesMenu_EnableDisable(WPARAM, LPARAM) -{ - g_bAutoUpdate = (g_bAutoUpdate) ? false : true; - db_set_b(0, CURRENCYRATES_MODULE_NAME, DB_STR_AUTO_UPDATE, g_bAutoUpdate); - - for (auto &pProvider : g_apProviders) { - pProvider->RefreshSettings(); - if (g_bAutoUpdate) - pProvider->RefreshAllContacts(); - } - - UpdateMenu(g_bAutoUpdate); - return 0; -} - -void InitMenu() -{ - CMenuItem mi(&g_plugin); - mi.flags = CMIF_UNICODE; - mi.root = g_plugin.addRootMenu(MO_MAIN, LPGENW("Currency Rates"), 0, CurrencyRates_GetIconHandle(IDI_ICON_MAIN)); - Menu_ConfigureItem(mi.root, MCI_OPT_UID, "B474F556-22B6-42A1-A91E-22FE4F671388"); - - SET_UID(mi, 0x9de6716, 0x3591, 0x48c4, 0x9f, 0x64, 0x1b, 0xfd, 0xc6, 0xd1, 0x34, 0x97); - mi.name.w = LPGENW("Enable/Disable Auto Update"); - mi.position = 10100001; - mi.hIcolibItem = CurrencyRates_GetIconHandle(IDI_ICON_MAIN); - mi.pszService = g_pszAutoUpdateCmd; - g_hEnableDisableMenu = Menu_AddMainMenuItem(&mi); - CreateServiceFunction(mi.pszService, CurrencyRatesMenu_EnableDisable); - UpdateMenu(g_bAutoUpdate); - - SET_UID(mi, 0x91cbabf6, 0x5073, 0x4a78, 0x84, 0x8, 0x34, 0x61, 0xc1, 0x8a, 0x34, 0xd9); - mi.name.w = LPGENW("Refresh All Rates"); - mi.position = 20100001; - mi.hIcolibItem = CurrencyRates_GetIconHandle(IDI_ICON_MAIN); - mi.pszService = "CurrencyRates/RefreshAll"; - Menu_AddMainMenuItem(&mi); - CreateServiceFunction(mi.pszService, CurrencyRatesMenu_RefreshAll); - - SET_UID(mi, 0x3663409c, 0xbd36, 0x473b, 0x9b, 0x4f, 0xff, 0x80, 0xf6, 0x2c, 0xdf, 0x9b); - mi.name.w = LPGENW("Currency Converter..."); - mi.position = 20100002; - mi.hIcolibItem = CurrencyRates_GetIconHandle(IDI_ICON_CURRENCY_CONVERTER); - mi.pszService = g_pszCurrencyConverter; - Menu_AddMainMenuItem(&mi); - CreateServiceFunction(mi.pszService, CurrencyRatesMenu_CurrencyConverter); - - SET_UID(mi, 0x7cca4fd9, 0x903f, 0x4b7d, 0x93, 0x7a, 0x18, 0x63, 0x23, 0xd4, 0xa9, 0xa9); - mi.name.w = LPGENW("Export All Currency Rates"); - mi.hIcolibItem = CurrencyRates_GetIconHandle(IDI_ICON_EXPORT); - mi.pszService = MS_CURRENCYRATES_EXPORT; - mi.position = 20100003; - Menu_AddMainMenuItem(&mi); - - SET_UID(mi, 0xa994d3b, 0x77c2, 0x4612, 0x8d, 0x5, 0x6a, 0xae, 0x8c, 0x21, 0xbd, 0xc9); - mi.name.w = LPGENW("Import All Currency Rates"); - mi.hIcolibItem = CurrencyRates_GetIconHandle(IDI_ICON_IMPORT); - mi.pszService = MS_CURRENCYRATES_IMPORT; - mi.position = 20100004; - Menu_AddMainMenuItem(&mi); - - HookEvent(ME_CLIST_PREBUILDCONTACTMENU, CurrencyRates_PrebuildContactMenu); - - g_hMenuRoot = mi.root = g_plugin.addRootMenu(MO_CONTACT, LPGENW("Currency Rates"), 0, CurrencyRates_GetIconHandle(IDI_ICON_MAIN)); - Menu_ConfigureItem(mi.root, MCI_OPT_UID, "C259BE01-642C-461E-997D-0E756B2A3AD6"); - - SET_UID(mi, 0xb9812194, 0x3235, 0x4e76, 0xa3, 0xa4, 0x73, 0x32, 0x96, 0x1c, 0x1c, 0xf4); - mi.name.w = LPGENW("Refresh"); - mi.hIcolibItem = CurrencyRates_GetIconHandle(IDI_ICON_REFRESH); - mi.pszService = "CurrencyRates/RefreshContact"; - g_hMenuRefresh = Menu_AddContactMenuItem(&mi, CURRENCYRATES_PROTOCOL_NAME); - Menu_ConfigureItem(g_hMenuRefresh, MCI_OPT_EXECPARAM, INT_PTR(0)); - CreateServiceFunction(mi.pszService, CurrencyRatesMenu_RefreshContact); - - SET_UID(mi, 0x19a16fa2, 0xf370, 0x4201, 0x92, 0x9, 0x25, 0xde, 0x4e, 0x55, 0xf9, 0x1a); - mi.name.w = LPGENW("Open Log File..."); - mi.hIcolibItem = nullptr; - mi.pszService = "CurrencyRates/OpenLogFile"; - g_hMenuOpenLogFile = Menu_AddContactMenuItem(&mi, CURRENCYRATES_PROTOCOL_NAME); - Menu_ConfigureItem(g_hMenuOpenLogFile, MCI_OPT_EXECPARAM, 1); - CreateServiceFunction(mi.pszService, CurrencyRatesMenu_OpenLogFile); - - #ifdef CHART_IMPLEMENT - SET_UID(mi, 0x65da7256, 0x43a2, 0x4857, 0xac, 0x52, 0x1c, 0xb7, 0xff, 0xd7, 0x96, 0xfa); - mi.name.w = LPGENW("Chart..."); - mi.hIcolibItem = nullptr; - mi.pszService = "CurrencyRates/Chart"; - g_hMenuChart = Menu_AddContactMenuItem(&mi, CURRENCYRATES_PROTOCOL_NAME); - CreateServiceFunction(mi.pszService, CurrencyRatesMenu_Chart); - #endif - - SET_UID(mi, 0xac5fc17, 0x5640, 0x4f81, 0xa3, 0x44, 0x8c, 0xb6, 0x9a, 0x5c, 0x98, 0xf); - mi.name.w = LPGENW("Edit Settings..."); - mi.hIcolibItem = nullptr; - mi.pszService = "CurrencyRates/EditSettings"; - g_hMenuEditSettings = Menu_AddContactMenuItem(&mi, CURRENCYRATES_PROTOCOL_NAME); - #ifdef CHART_IMPLEMENT - Menu_ConfigureItem(g_hMenuEditSettings, MCI_OPT_EXECPARAM, 3); - #else - Menu_ConfigureItem(g_hMenuEditSettings, MCI_OPT_EXECPARAM, 2); - #endif - CreateServiceFunction(mi.pszService, CurrencyRatesMenu_EditSettings); -} - -int CurrencyRates_OnToolbarLoaded(WPARAM, LPARAM) -{ - TTBButton ttb = {}; - ttb.name = LPGEN("Enable/Disable Currency Rates Auto Update"); - ttb.pszService = g_pszAutoUpdateCmd; - ttb.pszTooltipUp = LPGEN("Currency Rates Auto Update Enabled"); - ttb.pszTooltipDn = LPGEN("Currency Rates Auto Update Disabled"); - ttb.hIconHandleUp = CurrencyRates_GetIconHandle(IDI_ICON_MAIN); - ttb.hIconHandleDn = CurrencyRates_GetIconHandle(IDI_ICON_DISABLED); - ttb.dwFlags = ((g_bAutoUpdate) ? 0 : TTBBF_PUSHED) | TTBBF_ASPUSHBUTTON | TTBBF_VISIBLE; - g_hTBButton = g_plugin.addTTB(&ttb); - - ttb.name = LPGEN("Currency Converter"); - ttb.pszService = g_pszCurrencyConverter; - ttb.pszTooltipUp = LPGEN("Currency Converter"); - ttb.pszTooltipDn = LPGEN("Currency Converter"); - ttb.hIconHandleUp = CurrencyRates_GetIconHandle(IDI_ICON_CURRENCY_CONVERTER); - ttb.hIconHandleDn = CurrencyRates_GetIconHandle(IDI_ICON_CURRENCY_CONVERTER); - ttb.dwFlags = TTBBF_VISIBLE; - g_plugin.addTTB(&ttb); - - return 0; -} - -static void WorkingThread(void *pParam) -{ - ICurrencyRatesProvider *pProvider = reinterpret_cast<ICurrencyRatesProvider*>(pParam); - assert(pProvider); - - if (pProvider) - pProvider->Run(); -} - -int CurrencyRatesEventFunc_OnModulesLoaded(WPARAM, LPARAM) -{ - CHTTPSession::Init(); - - g_hEventWorkThreadStop = ::CreateEvent(nullptr, TRUE, FALSE, nullptr); - HookEvent(ME_USERINFO_INITIALISE, CurrencyRatesEventFunc_OnUserInfoInit); - - HookEvent(ME_CLIST_DOUBLECLICKED, CurrencyRates_OnContactDoubleClick); - - HookEvent(ME_TTB_MODULELOADED, CurrencyRates_OnToolbarLoaded); - - g_bAutoUpdate = 1 == db_get_b(0, CURRENCYRATES_MODULE_NAME, DB_STR_AUTO_UPDATE, 1); - - InitMenu(); - - ::ResetEvent(g_hEventWorkThreadStop); - - for (auto &pProvider : g_apProviders) - g_ahThreads.push_back(mir_forkthread(WorkingThread, pProvider)); - return 0; -} - -int CurrencyRatesEventFunc_OnContactDeleted(WPARAM hContact, LPARAM) -{ - auto pProvider = GetContactProviderPtr(hContact); - if (pProvider) - pProvider->DeleteContact(hContact); - return 0; -} - -INT_PTR CurrencyRateProtoFunc_GetCaps(WPARAM wParam, LPARAM) -{ - switch (wParam) { - case PFLAG_UNIQUEIDTEXT: - return (INT_PTR)Translate("Currency Symbol"); - } - - return 0; -} - -INT_PTR CurrencyRateProtoFunc_GetStatus(WPARAM, LPARAM) -{ - return g_bAutoUpdate ? ID_STATUS_ONLINE : ID_STATUS_OFFLINE; -} - -void WaitForWorkingThreads() -{ - size_t cThreads = g_ahThreads.size(); - if (cThreads > 0) { - HANDLE* paHandles = &*(g_ahThreads.begin()); - ::WaitForMultipleObjects((DWORD)cThreads, paHandles, TRUE, INFINITE); - } -} - - -int CurrencyRatesEventFunc_PreShutdown(WPARAM, LPARAM) -{ - ::SetEvent(g_hEventWorkThreadStop); - - CModuleInfo::OnMirandaShutdown(); - return 0; -} - -int CurrencyRatesEventFunc_OptInitialise(WPARAM wp, LPARAM/* lp*/) -{ - OPTIONSDIALOGPAGE odp = {}; - odp.position = 910000000; - odp.szTitle.w = LPGENW("Currency Rates"); - odp.szGroup.w = LPGENW("Network"); - odp.flags = ODPF_USERINFOTAB | ODPF_UNICODE; - - for (auto &it : g_apProviders) - it->ShowPropertyPage(wp, odp); - return 0; -} - -inline int CurrencyRates_UnhookEvent(HANDLE h) -{ - return UnhookEvent(h); -} - -///////////////////////////////////////////////////////////////////////////////////////// - -EXTERN_C __declspec(dllexport) const MUUID MirandaInterfaces[] = { MIID_PROTOCOL, MIID_LAST }; - -///////////////////////////////////////////////////////////////////////////////////////// - -PLUGININFOEX pluginInfoEx = -{ - sizeof(PLUGININFOEX), - __PLUGIN_NAME, - PLUGIN_MAKE_VERSION(__MAJOR_VERSION, __MINOR_VERSION, __RELEASE_NUM, __BUILD_NUM), - __DESCRIPTION, - __AUTHOR, - __COPYRIGHT, - __AUTHORWEB, - UNICODE_AWARE, - // {E882056D-0D1D-4131-9A98-404CBAEA6A9C} - { 0xe882056d, 0xd1d, 0x4131, { 0x9a, 0x98, 0x40, 0x4c, 0xba, 0xea, 0x6a, 0x9c } } -}; - -CMPlugin::CMPlugin() : - PLUGIN<CMPlugin>(CURRENCYRATES_PROTOCOL_NAME, pluginInfoEx) -{ - RegisterProtocol(PROTOTYPE_VIRTUAL); - SetUniqueId(DB_STR_CURRENCYRATE_SYMBOL); -} - -///////////////////////////////////////////////////////////////////////////////////////// - -int CMPlugin::Load(void) -{ - if (!CModuleInfo::Verify()) - return 1; - - CurrencyRates_IconsInit(); - CurrencyRates_InitExtraIcons(); - - InitProviders(); - - CreateProtoServiceFunction(CURRENCYRATES_PROTOCOL_NAME, PS_GETCAPS, CurrencyRateProtoFunc_GetCaps); - CreateProtoServiceFunction(CURRENCYRATES_PROTOCOL_NAME, PS_GETSTATUS, CurrencyRateProtoFunc_GetStatus); - - HookEvent(ME_SYSTEM_MODULESLOADED, CurrencyRatesEventFunc_OnModulesLoaded); - HookEvent(ME_DB_CONTACT_DELETED, CurrencyRatesEventFunc_OnContactDeleted); - HookEvent(ME_SYSTEM_PRESHUTDOWN, CurrencyRatesEventFunc_PreShutdown); - HookEvent(ME_OPT_INITIALISE, CurrencyRatesEventFunc_OptInitialise); - - CreateServiceFunction(MS_CURRENCYRATES_EXPORT, CurrencyRates_Export); - CreateServiceFunction(MS_CURRENCYRATES_IMPORT, CurrencyRates_Import); - - return 0; -} - -///////////////////////////////////////////////////////////////////////////////////////// - -int CMPlugin::Unload(void) -{ - WaitForWorkingThreads(); - - ClearProviders(); - ::CloseHandle(g_hEventWorkThreadStop); - return 0; -} diff --git a/plugins/CurrencyRates/src/HTMLParserMS.cpp b/plugins/CurrencyRates/src/HTMLParserMS.cpp deleted file mode 100644 index a712d7589f..0000000000 --- a/plugins/CurrencyRates/src/HTMLParserMS.cpp +++ /dev/null @@ -1,254 +0,0 @@ -#include "StdAfx.h" - -using _com_util::CheckError; - -class CHTMLNode : public IHTMLNode -{ -public: - typedef CComPtr<IDispatch> TComPtr; - typedef CComPtr<IHTMLDocument3> TDocumentPtr; - -protected: - typedef CComPtr<IHTMLElementCollection> TElementCollectionPtr; - -public: - CHTMLNode(const TComPtr& pElement, const TDocumentPtr& pDocument) - : m_pElement(pElement), m_pDocument(pDocument) - { - } - - virtual THTMLNodePtr GetElementByID(const tstring& rsID) const - { - if (m_pDocument) { - CComPtr<IHTMLElement> pElement; - if (SUCCEEDED(m_pDocument->getElementById(bstr_t(rsID.c_str()), &pElement)) - && pElement) { - TComPtr p(pElement); - return THTMLNodePtr(new CHTMLNode(p, m_pDocument)); - } - } - - return THTMLNodePtr(); - } - - virtual size_t GetChildCount() const - { - TElementCollectionPtr pColl = GetElementCollectionPtr(); - if (pColl) { - LONG celem = 0; - HRESULT hr = pColl->get_length(&celem); - if (S_OK == hr) - return celem; - } - - return 0; - } - - virtual THTMLNodePtr GetChildPtr(size_t nIndex) - { - TElementCollectionPtr pColl = GetElementCollectionPtr(); - if (pColl) { - VARIANT varIndex; - varIndex.vt = VT_UINT; - varIndex.lVal = (LONG)nIndex; - VARIANT var2; - VariantInit(&var2); - TComPtr pDisp; - HRESULT hr = pColl->item(varIndex, var2, &pDisp); - if (S_OK == hr && pDisp) - return THTMLNodePtr(new CHTMLNode(pDisp, m_pDocument)); - } - - return THTMLNodePtr(); - } - - virtual bool Is(EType nType) const - { - switch (nType) { - case Table: - { - CComPtr<IHTMLTable> pTable; - return (SUCCEEDED(m_pElement->QueryInterface(IID_IHTMLTable, reinterpret_cast<void**>(&pTable))) && (pTable)); - } - case TableRow: - { - CComPtr<IHTMLTableRow> pRow; - return (SUCCEEDED(m_pElement->QueryInterface(IID_IHTMLTableRow, reinterpret_cast<void**>(&pRow))) && (pRow)); - } - case TableColumn: - { - CComPtr<IHTMLTableCol> pCol; - return (SUCCEEDED(m_pElement->QueryInterface(IID_IHTMLTableCol, reinterpret_cast<void**>(&pCol))) && (pCol)); - } - } - - return false; - } - - virtual tstring GetAttribute(const tstring& rsAttrName) const - { - tstring sAttr; - CComPtr<IHTMLElement> pElement; - if (SUCCEEDED(m_pElement->QueryInterface(IID_IHTMLElement, reinterpret_cast<void**>(&pElement))) && pElement) { - _variant_t vAttribute; - BSTR pbstrAttrName = ::SysAllocString(rsAttrName.c_str()); - if (SUCCEEDED(pElement->getAttribute(pbstrAttrName, 1, &vAttribute)) && VT_NULL != vAttribute.vt && VT_EMPTY != vAttribute.vt) { - try { - _bstr_t b(vAttribute); - LPCTSTR psz = b; - if (psz) - sAttr = psz; - } - catch (_com_error&) { - } - } - ::SysFreeString(pbstrAttrName); - } - - return sAttr; - } - - virtual tstring GetText() const - { - tstring sText; - CComPtr<IHTMLElement> pElement; - if (SUCCEEDED(m_pElement->QueryInterface(IID_IHTMLElement, reinterpret_cast<void**>(&pElement))) && pElement) { - BSTR bstrText; - if (SUCCEEDED(pElement->get_innerText(&bstrText)) && bstrText) { - try { - sText = _bstr_t(bstrText); - } - catch (_com_error&) { - } - - ::SysFreeString(bstrText); - } - } - - return sText; - } - -protected: - virtual TElementCollectionPtr GetElementCollectionPtr() const - { - TElementCollectionPtr pColl; - HRESULT hr = m_pElement->QueryInterface(IID_IHTMLElementCollection, reinterpret_cast<void**>(&pColl)); - if (FAILED(hr)) { - CComPtr<IHTMLElement> pElement; - if (SUCCEEDED(m_pElement->QueryInterface(IID_IHTMLElement, reinterpret_cast<void**>(&pElement))) && pElement) { - CComPtr<IDispatch> pDisp; - if (SUCCEEDED(pElement->get_children(&pDisp)) && pDisp) - pDisp->QueryInterface(IID_IHTMLElementCollection, reinterpret_cast<void**>(&pColl)); - } - } - - return pColl; - } - -private: - TComPtr m_pElement; - TDocumentPtr m_pDocument; -}; - -CHTMLParserMS::CHTMLParserMS() : m_bCallUninit(false) -{ - try { - CheckError(::CoInitialize(nullptr)); - - m_bCallUninit = true; - - _com_util::CheckError( - ::CoCreateInstance(CLSID_HTMLDocument, - nullptr, - CLSCTX_INPROC_SERVER, - IID_IHTMLDocument2, - (LPVOID*)&m_pDoc) - ); - - CComPtr<IPersistStreamInit> pPersist; - _com_util::CheckError(m_pDoc->QueryInterface(IID_IPersistStreamInit, - (LPVOID*)&pPersist)); - - _com_util::CheckError(pPersist->InitNew()); - - _com_util::CheckError(m_pDoc->QueryInterface(IID_IMarkupServices, - (LPVOID*)&m_pMS)); - - if (m_pMS) { - _com_util::CheckError(m_pMS->CreateMarkupPointer(&m_pMkStart)); - _com_util::CheckError(m_pMS->CreateMarkupPointer(&m_pMkFinish)); - } - } - catch (_com_error&/* e*/) { - // show_com_error_msg(e); - } -} - -CHTMLParserMS::~CHTMLParserMS() -{ - if (m_bCallUninit) - ::CoUninitialize(); -} - -CHTMLParserMS::THTMLNodePtr CHTMLParserMS::ParseString(const tstring& rsHTML) -{ - mir_cslock lck(m_cs); - - CComPtr<IMarkupContainer> pMC; - HRESULT hr = m_pMS->ParseString((OLECHAR*)rsHTML.c_str(), 0, &pMC, m_pMkStart, m_pMkFinish); - if (SUCCEEDED(hr) && pMC) { - CComPtr<IHTMLDocument2> pNewDoc; - hr = pMC->QueryInterface(IID_IHTMLDocument, (LPVOID*)&pNewDoc); - if (SUCCEEDED(hr) && pNewDoc) { - CComPtr<IHTMLElementCollection> pColl; - pNewDoc->get_all(&pColl); - - CHTMLNode::TDocumentPtr pDoc; - pMC->QueryInterface(IID_IHTMLDocument3, (LPVOID*)&pDoc); - return THTMLNodePtr(new CHTMLNode(CHTMLNode::TComPtr(pColl), pDoc)); - } - } - - return THTMLNodePtr(); -} - -bool CHTMLParserMS::IsInstalled() -{ - bool bResult = true; - bool bCallUninit = false; - try { - CheckError(::CoInitialize(nullptr)); - - bCallUninit = true; - - CComPtr<IHTMLDocument2> pDoc; - _com_util::CheckError( - ::CoCreateInstance(CLSID_HTMLDocument, - nullptr, - CLSCTX_INPROC_SERVER, - IID_IHTMLDocument2, - reinterpret_cast<LPVOID*>(&pDoc)) - ); - } - catch (_com_error&/* e*/) { - bResult = false; - } - - if (bCallUninit) - ::CoUninitialize(); - - return bResult; -} - -CHTMLEngineMS::CHTMLEngineMS() -{ -} - -CHTMLEngineMS::~CHTMLEngineMS() -{ -} - -CHTMLEngineMS::THTMLParserPtr CHTMLEngineMS::GetParserPtr() const -{ - return THTMLParserPtr(new CHTMLParserMS); -} diff --git a/plugins/CurrencyRates/src/HTMLParserMS.h b/plugins/CurrencyRates/src/HTMLParserMS.h deleted file mode 100644 index 6b2ceb26d8..0000000000 --- a/plugins/CurrencyRates/src/HTMLParserMS.h +++ /dev/null @@ -1,32 +0,0 @@ -#ifndef __3c99e3f7_ecd9_4d9b_8f86_fe293c5fc8e6_HTMLParserMS_h__ -#define __3c99e3f7_ecd9_4d9b_8f86_fe293c5fc8e6_HTMLParserMS_h__ - -class CHTMLParserMS : public IHTMLParser -{ -public: - CHTMLParserMS(); - ~CHTMLParserMS(); - - virtual THTMLNodePtr ParseString(const tstring& rsHTML); - - static bool IsInstalled(); - -private: - bool m_bCallUninit; - CComPtr<IHTMLDocument2> m_pDoc; - CComPtr<IMarkupServices> m_pMS; - CComPtr<IMarkupPointer> m_pMkStart; - CComPtr<IMarkupPointer> m_pMkFinish; - mutable mir_cs m_cs; -}; - -class CHTMLEngineMS : public IHTMLEngine -{ -public: - CHTMLEngineMS(); - ~CHTMLEngineMS(); - - virtual THTMLParserPtr GetParserPtr() const; -}; - -#endif //__3c99e3f7_ecd9_4d9b_8f86_fe293c5fc8e6_HTMLParserMS_h__ diff --git a/plugins/CurrencyRates/src/HTTPSession.cpp b/plugins/CurrencyRates/src/HTTPSession.cpp deleted file mode 100644 index 22c34867c5..0000000000 --- a/plugins/CurrencyRates/src/HTTPSession.cpp +++ /dev/null @@ -1,91 +0,0 @@ -#include "StdAfx.h" - -HNETLIBUSER CHTTPSession::g_hNetLib = nullptr; - -#define ERROR_MSG LPGENW("This plugin requires a personal key. Press Yes to obtain it at the site and then enter the result in the Options dialog, otherwise this plugin will fail.") - -void CALLBACK waitStub() -{ - if (IDYES == MessageBox(0, TranslateW(ERROR_MSG), _A2W(CURRENCYRATES_MODULE_NAME), MB_YESNOCANCEL)) - Utils_OpenUrl("https://free.currencyconverterapi.com/free-api-key"); -} - -static int find_header(const NETLIBHTTPREQUEST* pRequest, const char* hdr) -{ - for (int i = 0; i < pRequest->headersCount; ++i) - if (0 == _stricmp(pRequest->headers[i].szName, hdr)) - return i; - - return -1; -} - -bool CHTTPSession::OpenURL(const tstring &rsURL) -{ - std::string s = currencyrates_t2a(rsURL.c_str()); - m_szUrl = s.c_str(); - return true; -} - -bool CHTTPSession::ReadResponce(tstring& rsResponce) -{ - if (m_szUrl.IsEmpty()) - return false; - - NETLIBHTTPHEADER headers[] = - { - { "User-Agent", NETLIB_USER_AGENT }, - { "Connection", "close" }, - { "Cache-Control", "no-cache" }, - { "Pragma", "no-cache" } - }; - - NETLIBHTTPREQUEST nlhr = {}; - nlhr.cbSize = sizeof(nlhr); - nlhr.requestType = REQUEST_GET; - nlhr.flags = NLHRF_DUMPASTEXT | NLHRF_HTTP11 | NLHRF_REDIRECT; - nlhr.szUrl = m_szUrl.GetBuffer(); - nlhr.headersCount = _countof(headers); - nlhr.headers = headers; - - bool bResult = false; - NETLIBHTTPREQUEST *pReply = nullptr; - { - mir_cslock lck(m_mx); - pReply = Netlib_HttpTransaction(g_hNetLib, &nlhr); - } - - if (pReply) { - if ((200 == pReply->resultCode) && (pReply->dataLength > 0)) { - CMStringA buf(pReply->pData, pReply->dataLength); - int nIndex = find_header(pReply, "Content-Type"); - if ((-1 != nIndex) && (nullptr != strstr(_strlwr(pReply->headers[nIndex].szValue), "utf-8"))) - rsResponce = ptrW(mir_utf8decodeW(buf)); - else - rsResponce = currencyrates_a2t(buf); - - bResult = true; - } - - Netlib_FreeHttpRequest(pReply); - } - return bResult; -} - -///////////////////////////////////////////////////////////////////////////////////////// -// module initialization - -bool CHTTPSession::Init() -{ - assert(nullptr == g_hNetLib); - - ptrA szApiKey(g_plugin.getStringA(DB_KEY_ApiKey)); - if (szApiKey == nullptr) - Miranda_WaitOnHandle(waitStub); - - NETLIBUSER nlu = {}; - nlu.flags = NUF_OUTGOING | NUF_HTTPCONNS | NUF_NOHTTPSOPTION | NUF_UNICODE; - nlu.szSettingsModule = CURRENCYRATES_PROTOCOL_NAME; - nlu.szDescriptiveName.w = TranslateT("CurrencyRates HTTP connections"); - g_hNetLib = Netlib_RegisterUser(&nlu); - return (nullptr != g_hNetLib); -} diff --git a/plugins/CurrencyRates/src/HTTPSession.h b/plugins/CurrencyRates/src/HTTPSession.h deleted file mode 100644 index 9928c58304..0000000000 --- a/plugins/CurrencyRates/src/HTTPSession.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef __8C9706FF_6B05_4d0d_85B8_5724E5DC0BA4_HTTPSession_h__ -#define __8C9706FF_6B05_4d0d_85B8_5724E5DC0BA4_HTTPSession_h__ - -class CHTTPSession -{ - static HNETLIBUSER g_hNetLib; - CMStringA m_szUrl; - mir_cs m_mx; - -public: - CHTTPSession() {} - ~CHTTPSession() {} - - static bool Init(); - - bool OpenURL(const tstring &rsURL); - bool ReadResponce(tstring &rsResponce); -}; - -#endif //__8C9706FF_6B05_4d0d_85B8_5724E5DC0BA4_HTTPSession_h__ diff --git a/plugins/CurrencyRates/src/ICurrencyRatesProvider.h b/plugins/CurrencyRates/src/ICurrencyRatesProvider.h deleted file mode 100644 index a80cae3088..0000000000 --- a/plugins/CurrencyRates/src/ICurrencyRatesProvider.h +++ /dev/null @@ -1,62 +0,0 @@ -#pragma once - -#ifndef __ac71e133_786c_41a7_ab07_625b76ff2a8c_CurrencyRatesProvider_h__ -#define __ac71e133_786c_41a7_ab07_625b76ff2a8c_CurrencyRatesProvider_h__ - -class CCurrencyRatesProviderVisitor; - -///////////////////////////////////////////////////////////////////////////////////////// -// CFormatSpecificator - array of variables to replace - -using CFormatSpecificator = std::pair<tstring, tstring>; -typedef std::vector<CFormatSpecificator> TFormatSpecificators; - -///////////////////////////////////////////////////////////////////////////////////////// -// ICurrencyRatesProvider - abstract interface - -class ICurrencyRatesProvider : private boost::noncopyable -{ -public: - struct CProviderInfo - { - tstring m_sName; - tstring m_sURL; - }; - -public: - ICurrencyRatesProvider() {} - virtual ~ICurrencyRatesProvider() {} - - virtual bool Init() = 0; - virtual const CProviderInfo& GetInfo() const = 0; - - virtual void AddContact(MCONTACT hContact) = 0; - virtual void DeleteContact(MCONTACT hContact) = 0; - virtual MCONTACT ImportContact(const TiXmlNode*) = 0; - - virtual void ShowPropertyPage(WPARAM wp, OPTIONSDIALOGPAGE& odp) = 0; - - virtual void RefreshAllContacts() = 0; - virtual void RefreshSettings() = 0; - virtual void RefreshContact(MCONTACT hContact) = 0; - - virtual void FillFormat(TFormatSpecificators&) const = 0; - virtual bool ParseSymbol(MCONTACT hContact, wchar_t c, double &d) = 0; - virtual tstring FormatSymbol(MCONTACT hContact, wchar_t c, int nWidth = 0) const = 0; - - virtual void Run() = 0; -}; - -///////////////////////////////////////////////////////////////////////////////////////// - -typedef std::vector<ICurrencyRatesProvider*> TCurrencyRatesProviders; -extern TCurrencyRatesProviders g_apProviders; - -ICurrencyRatesProvider* FindProvider(const tstring& rsName); -ICurrencyRatesProvider* GetContactProviderPtr(MCONTACT hContact); - -void InitProviders(); -void CreateProviders(); -void ClearProviders(); - -#endif //__ac71e133_786c_41a7_ab07_625b76ff2a8c_CurrencyRatesProvider_h__ diff --git a/plugins/CurrencyRates/src/IHTMLEngine.h b/plugins/CurrencyRates/src/IHTMLEngine.h deleted file mode 100644 index 6cc9defce7..0000000000 --- a/plugins/CurrencyRates/src/IHTMLEngine.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef __85dbfa97_919b_4776_919c_7410a1c3d787_HTMLEngine_h__ -#define __85dbfa97_919b_4776_919c_7410a1c3d787_HTMLEngine_h__ - -class IHTMLParser; - -class IHTMLEngine -{ -public: - typedef boost::shared_ptr<IHTMLParser> THTMLParserPtr; - -public: - IHTMLEngine(void){} - virtual ~IHTMLEngine() {} - - virtual THTMLParserPtr GetParserPtr() const = 0; -}; - -#endif //__85dbfa97_919b_4776_919c_7410a1c3d787_HTMLEngine_h__ diff --git a/plugins/CurrencyRates/src/IHTMLParser.h b/plugins/CurrencyRates/src/IHTMLParser.h deleted file mode 100644 index c0b97a7277..0000000000 --- a/plugins/CurrencyRates/src/IHTMLParser.h +++ /dev/null @@ -1,41 +0,0 @@ -#ifndef __98ad6d6d_2a27_43fd_bf3e_c18416a45e54_IHTMLParser_h__ -#define __98ad6d6d_2a27_43fd_bf3e_c18416a45e54_IHTMLParser_h__ - -class IHTMLNode -{ -public: - typedef boost::shared_ptr<IHTMLNode> THTMLNodePtr; - - enum EType - { - Table = 1, - TableRow, - TableColumn - }; - -public: - IHTMLNode() {} - virtual ~IHTMLNode() {} - - virtual size_t GetChildCount() const = 0; - virtual THTMLNodePtr GetChildPtr(size_t nIndex) = 0; - virtual bool Is(EType nType) const = 0; - - virtual THTMLNodePtr GetElementByID(const tstring& rsID) const = 0; - - virtual tstring GetAttribute(const tstring& rsAttrName) const = 0; - virtual tstring GetText() const = 0; -}; - -class IHTMLParser -{ -public: - typedef IHTMLNode::THTMLNodePtr THTMLNodePtr; -public: - IHTMLParser() {} - virtual ~IHTMLParser() {} - - virtual THTMLNodePtr ParseString(const tstring& rsHTML) = 0; -}; - -#endif //__98ad6d6d_2a27_43fd_bf3e_c18416a45e54_IHTMLParser_h__ diff --git a/plugins/CurrencyRates/src/IconLib.cpp b/plugins/CurrencyRates/src/IconLib.cpp deleted file mode 100644 index da67d1310f..0000000000 --- a/plugins/CurrencyRates/src/IconLib.cpp +++ /dev/null @@ -1,40 +0,0 @@ -#include "StdAfx.h" - -static IconItem iconList[] = -{ - { LPGEN("Protocol icon"), ICON_STR_MAIN, IDI_ICON_MAIN }, - { LPGEN("Auto Update Disabled"), "auto_update_disabled", IDI_ICON_DISABLED }, - { LPGEN("Currency Rate up"), "currencyrate_up", IDI_ICON_UP }, - { LPGEN("Currency Rate down"), "currencyrate_down", IDI_ICON_DOWN }, - { LPGEN("Currency Rate not changed"), "currencyrate_not_changed", IDI_ICON_NOTCHANGED }, - { LPGEN("Currency Rate Section"), "currencyrate_section", IDI_ICON_SECTION }, - { LPGEN("Currency Rate"), ICON_STR_CURRENCYRATE, IDI_ICON_CURRENCYRATE }, - { LPGEN("Currency Converter"), "currency_converter", IDI_ICON_CURRENCY_CONVERTER }, - { LPGEN("Refresh"), "refresh", IDI_ICON_REFRESH }, - { LPGEN("Export"), "export", IDI_ICON_EXPORT }, - { LPGEN("Swap button"), "swap", IDI_ICON_SWAP }, - { LPGEN("Import"), "import", IDI_ICON_IMPORT } -}; - -void CurrencyRates_IconsInit() -{ - ::g_plugin.registerIcon(CURRENCYRATES_PROTOCOL_NAME, iconList, CURRENCYRATES_PROTOCOL_NAME); -} - -HICON CurrencyRates_LoadIconEx(int iconId, bool bBig /*= false*/) -{ - for (int i = 0; i < _countof(iconList); i++) - if (iconList[i].defIconID == iconId) - return IcoLib_GetIconByHandle(iconList[i].hIcolib, bBig); - - return nullptr; -} - -HANDLE CurrencyRates_GetIconHandle(int iconId) -{ - for (int i = 0; i < _countof(iconList); i++) - if (iconList[i].defIconID == iconId) - return iconList[i].hIcolib; - - return nullptr; -} diff --git a/plugins/CurrencyRates/src/IconLib.h b/plugins/CurrencyRates/src/IconLib.h deleted file mode 100644 index 4e0146fba8..0000000000 --- a/plugins/CurrencyRates/src/IconLib.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef __8821d334_afac_439e_9a81_76318e1ac4ef_IconLib_h__ -#define __8821d334_afac_439e_9a81_76318e1ac4ef_IconLib_h__ - -#define ICON_STR_MAIN "main" -#define ICON_STR_CURRENCYRATE "currencyrate" - -void CurrencyRates_IconsInit(); -HICON CurrencyRates_LoadIconEx(int iconId, bool bBig = false); -HANDLE CurrencyRates_GetIconHandle(int iconId); - -#endif //__8821d334_afac_439e_9a81_76318e1ac4ef_IconLib_h__ diff --git a/plugins/CurrencyRates/src/ImportExport.cpp b/plugins/CurrencyRates/src/ImportExport.cpp deleted file mode 100644 index 95fb9d95f7..0000000000 --- a/plugins/CurrencyRates/src/ImportExport.cpp +++ /dev/null @@ -1,507 +0,0 @@ -#include "StdAfx.h" - -const char g_szXmlValue[] = "Value"; -const char g_szXmlName[] = "Name"; -const char g_szXmlSetting[] = "Setting"; -const char g_szXmlModule[] = "Module"; -const char g_szXmlContact[] = "Contact"; -const char g_szXmlContacts[] = "Contacts"; -const char g_szXmlType[] = "type"; -const char g_szXmlTypeByte[] = "byte"; -const char g_szXmlTypeWord[] = "word"; -const char g_szXmlTypeDword[] = "dword"; -const char g_szXmlTypeAsciiz[] = "asciiz"; -const char g_szXmlTypeWchar[] = "wchar"; -const char g_szXmlTypeUtf8[] = "utf8"; -const char g_szXmlTypeBlob[] = "blob"; - -struct CEnumContext -{ - CEnumContext(TiXmlDocument &doc) : - m_xmlDoc(doc) - {} - - TiXmlDocument &m_xmlDoc; - TiXmlNode *m_pNode; - MCONTACT m_hContact; - LPCSTR m_pszModule; -}; - -struct mir_safety_dbvar -{ - mir_safety_dbvar(DBVARIANT* p) : m_p(p) {} - ~mir_safety_dbvar() { db_free(m_p); } - DBVARIANT* m_p; -}; - -static int enum_contact_settings(const char *szSetting, void *lp) -{ - CEnumContext *ctx = reinterpret_cast<CEnumContext*>(lp); - - DBVARIANT dbv; - if (0 == db_get(ctx->m_hContact, ctx->m_pszModule, szSetting, &dbv)) { - mir_safety_dbvar sdbvar(&dbv); - - std::string sType; - std::wostringstream sValue; - sValue.imbue(GetSystemLocale()); - - switch (dbv.type) { - case DBVT_BYTE: - sValue << dbv.bVal; - sType = g_szXmlTypeByte; - break; - case DBVT_WORD: - sValue << dbv.wVal; - sType = g_szXmlTypeWord; - break; - case DBVT_DWORD: - sValue << dbv.dVal; - sType = g_szXmlTypeDword; - break; - case DBVT_ASCIIZ: - sType = g_szXmlTypeAsciiz; - if (dbv.pszVal) - sValue << dbv.pszVal; - break; - case DBVT_WCHAR: - sType = g_szXmlTypeWchar; - if (dbv.pwszVal) - sValue << dbv.pwszVal; - break; - case DBVT_UTF8: - sType = g_szXmlTypeUtf8; - if (dbv.pszVal) - sValue << dbv.pszVal; - break; - case DBVT_BLOB: - sType = g_szXmlTypeBlob; - if (dbv.pbVal) { - ptrA buf(mir_base64_encode(dbv.pbVal, dbv.cpbVal)); - if (buf) - sValue << buf; - } - break; - } - - auto *pXmlName = ctx->m_xmlDoc.NewElement(g_szXmlName); - pXmlName->SetText(szSetting); - - auto *pXmlValue = ctx->m_xmlDoc.NewElement(g_szXmlValue); - pXmlValue->SetText(T2Utf(sValue.str().c_str()).get()); - pXmlValue->SetAttribute(g_szXmlType, sType.c_str()); - - auto *pXmlSet = ctx->m_xmlDoc.NewElement(g_szXmlSetting); - pXmlSet->InsertEndChild(pXmlName); - pXmlSet->InsertEndChild(pXmlValue); - ctx->m_pNode->InsertEndChild(pXmlSet); - } - - return 0; -} - -int EnumDbModules(const char *szModuleName, void *lp) -{ - CEnumContext *ctx = (CEnumContext*)lp; - auto *pXml = ctx->m_pNode; - auto *pModule = ctx->m_xmlDoc.NewElement(g_szXmlModule); - pModule->SetText(szModuleName); - - ctx->m_pszModule = szModuleName; - ctx->m_pNode = pModule; - db_enum_settings(ctx->m_hContact, &enum_contact_settings, szModuleName, ctx); - - if (pModule->FirstChildElement(g_szXmlSetting)) - pXml->InsertEndChild(pModule); - - ctx->m_pNode = pXml; - return 0; -} - -TiXmlNode* export_contact(MCONTACT hContact, TiXmlDocument &pDoc) -{ - CEnumContext ctx(pDoc); - ctx.m_pNode = pDoc.NewElement(g_szXmlContact); - ctx.m_hContact = hContact; - db_enum_modules(EnumDbModules, &ctx); - - return ctx.m_pNode; -} - -LPCTSTR prepare_filter(LPTSTR pszBuffer, size_t cBuffer) -{ - LPTSTR p = pszBuffer; - LPCTSTR pszXml = TranslateT("XML File (*.xml)"); - mir_wstrncpy(p, pszXml, (int)cBuffer); - size_t nLen = mir_wstrlen(pszXml) + 1; - p += nLen; - if (nLen < cBuffer) { - mir_wstrncpy(p, L"*.xml", (int)(cBuffer - nLen)); - p += 6; - nLen += 6; - } - - if (nLen < cBuffer) { - LPCTSTR pszAll = TranslateT("All files (*.*)"); - mir_wstrncpy(p, pszAll, (int)(cBuffer - nLen)); - size_t n = mir_wstrlen(pszAll) + 1; - nLen += n; - p += n; - } - - if (nLen < cBuffer) { - mir_wstrncpy(p, L"*.*", (int)(cBuffer - nLen)); - p += 4; - nLen += 4; - } - - if (nLen < cBuffer) - *p = '\0'; - - return pszBuffer; -} - -bool show_open_file_dialog(bool bOpen, tstring& rsFile) -{ - wchar_t szBuffer[MAX_PATH]; - wchar_t szFilter[MAX_PATH]; - OPENFILENAME ofn; - memset(&ofn, 0, sizeof(ofn)); - - ofn.lStructSize = sizeof(OPENFILENAME); - - ofn.hwndOwner = nullptr; - ofn.lpstrFilter = prepare_filter(szFilter, MAX_PATH); - ofn.Flags = OFN_PATHMUSTEXIST | OFN_HIDEREADONLY | OFN_EXPLORER; - ofn.lpstrDefExt = L"xml"; - if (bOpen) - ofn.Flags |= OFN_FILEMUSTEXIST; - else - ofn.Flags |= OFN_OVERWRITEPROMPT; - - ofn.nMaxFile = MAX_PATH; - ofn.lpstrFile = szBuffer; - ofn.lpstrFile[0] = '\0'; - - if (bOpen) { - if (FALSE == GetOpenFileName(&ofn)) - return false; - } - else { - if (FALSE == GetSaveFileName(&ofn)) - return false; - } - - rsFile = szBuffer; - return true; -} - -INT_PTR CurrencyRates_Export(WPARAM wp, LPARAM lp) -{ - tstring sFileName; - const char* pszFile = reinterpret_cast<const char*>(lp); - if (nullptr == pszFile) { - if (false == show_open_file_dialog(false, sFileName)) - return -1; - } - else sFileName = currencyrates_a2t(pszFile); - - TiXmlDocument doc; - auto *pRoot = doc.NewElement(g_szXmlContacts); - doc.InsertFirstChild(pRoot); - - MCONTACT hContact = MCONTACT(wp); - if (hContact) { - auto pProvider = GetContactProviderPtr(hContact); - if (pProvider) { - auto *pNode = export_contact(hContact, doc); - if (pNode) - pRoot->InsertEndChild(pNode); - } - } - else { - for (auto &cc : Contacts(CURRENCYRATES_MODULE_NAME)) { - auto pProvider = GetContactProviderPtr(cc); - if (pProvider) { - auto *pNode = export_contact(cc, doc); - if (pNode) - pRoot->InsertEndChild(pNode); - } - } - } - - return doc.SaveFile(_T2A(sFileName.c_str()), true); -} - -bool set_contact_settings(MCONTACT hContact, DBCONTACTWRITESETTING& dbs) -{ - assert(DBVT_DELETED != dbs.value.type); - return (0 == db_set(hContact, dbs.szModule, dbs.szSetting, &dbs.value)); -} - -bool handle_module(MCONTACT hContact, const TiXmlElement *pXmlModule) -{ - const char *szModuleName = pXmlModule->GetText(); - if (szModuleName == nullptr) - return false; - - size_t cCreatedRecords = 0; - bool bCListModule = !mir_strcmpi(szModuleName, "CList"); - - DBCONTACTWRITESETTING dbs; - dbs.szModule = szModuleName; - for (auto *pSetting : TiXmlFilter(pXmlModule, g_szXmlSetting)) { - auto *pNode = pSetting->FirstChildElement(g_szXmlName); - if (pNode == nullptr) - continue; - const char *sName = pNode->GetText(); - - pNode = pSetting->FirstChildElement(g_szXmlValue); - if (pNode == nullptr) - continue; - const char *sValue = pNode->GetText(); - const char *sType = pNode->Attribute(g_szXmlType); - - if (sName == nullptr || sType == nullptr || sValue == nullptr) - continue; - - dbs.szSetting = sName; - if (!mir_strcmpi(g_szXmlTypeByte, sType)) { - std::istringstream in(sValue); - in.imbue(GetSystemLocale()); - dbs.value.cVal = in.get(); - if (in.good() && in.eof()) { - dbs.value.type = DBVT_BYTE; - if (set_contact_settings(hContact, dbs)) - ++cCreatedRecords; - } - } - else if (!mir_strcmpi(g_szXmlTypeWord, sType)) { - std::istringstream in(sValue); - in.imbue(GetSystemLocale()); - in >> dbs.value.wVal; - if (in.good() || in.eof()) { - dbs.value.type = DBVT_WORD; - if (set_contact_settings(hContact, dbs)) - ++cCreatedRecords; - } - } - else if (!mir_strcmpi(g_szXmlTypeDword, sType)) { - std::istringstream in(sValue); - in.imbue(GetSystemLocale()); - in >> dbs.value.dVal; - if (in.good() || in.eof()) { - dbs.value.type = DBVT_DWORD; - if (set_contact_settings(hContact, dbs)) - ++cCreatedRecords; - } - } - else if (!mir_strcmpi(g_szXmlTypeAsciiz, sType)) { - dbs.value.pszVal = (char*)sValue; - dbs.value.type = DBVT_ASCIIZ; - if (set_contact_settings(hContact, dbs)) - ++cCreatedRecords; - } - else if (!mir_strcmpi(g_szXmlTypeUtf8, sType)) { - dbs.value.pszVal = (char*)sValue; - dbs.value.type = DBVT_UTF8; - if (set_contact_settings(hContact, dbs)) - ++cCreatedRecords; - } - else if (!mir_strcmpi(g_szXmlTypeWchar, sType)) { - Utf2T val(sValue); - dbs.value.pwszVal = val; - dbs.value.type = DBVT_WCHAR; - if (set_contact_settings(hContact, dbs)) - ++cCreatedRecords; - } - else if (!mir_strcmpi(g_szXmlTypeBlob, sType)) { - size_t bufLen; - mir_ptr<BYTE> buf((PBYTE)mir_base64_decode(sValue, &bufLen)); - if (buf) { - dbs.value.pbVal = buf; - dbs.value.cpbVal = (WORD)bufLen; - dbs.value.type = DBVT_BLOB; - - if (set_contact_settings(hContact, dbs)) - ++cCreatedRecords; - } - } - - if (bCListModule && !mir_strcmpi(sName, "Group")) - Clist_GroupCreate(NULL, Utf2T(sValue)); - } - - return true; -} - -size_t count_contacts(const TiXmlNode *pXmlRoot, bool bInContactsGroup) -{ - size_t cContacts = 0; - - for (auto *pNode : TiXmlEnum(pXmlRoot)) { - const char *sName = pNode->Name(); - if (false == bInContactsGroup) { - if (!mir_strcmpi(g_szXmlContacts, sName)) - cContacts += count_contacts(pNode, true); - else - cContacts += count_contacts(pNode, false); - } - else { - if (!mir_strcmpi(g_szXmlContact, sName)) - ++cContacts; - } - } - - return cContacts; -} - -struct CImportContext -{ - CImportContext(size_t cTotalContacts) : m_cTotalContacts(cTotalContacts), m_cHandledContacts(0), m_nFlags(0) {} - - size_t m_cTotalContacts; - size_t m_cHandledContacts; - UINT m_nFlags; -}; - -struct CContactState -{ - CContactState() : m_hContact(NULL), m_bNewContact(false) {} - MCONTACT m_hContact; - ICurrencyRatesProvider *m_pProvider; - bool m_bNewContact; -}; - -const TiXmlNode* find_currencyrates_module(const TiXmlNode *pXmlContact) -{ - for (auto *pNode : TiXmlEnum(pXmlContact)) - if ((!mir_strcmpi(g_szXmlModule, pNode->Name())) && (!mir_strcmpi(CURRENCYRATES_MODULE_NAME, pNode->GetText()))) - return pNode; - - return nullptr; -} - -TNameValue parse_setting_node(const TiXmlNode *pXmlSetting) -{ - assert(pXmlSetting); - - const char *sName, *sValue; - for (auto *pNode : TiXmlEnum(pXmlSetting)) { - if (!mir_strcmpi(g_szXmlName, pNode->Name())) - sName = pNode->GetText(); - else if (!mir_strcmpi(g_szXmlValue, pNode->Name())) - sValue = pNode->GetText(); - } - - return std::make_pair(sName, sValue); -} - -ICurrencyRatesProvider* find_provider(const TiXmlNode *pXmlCurrencyRatesModule) -{ - for (auto *pNode : TiXmlFilter(pXmlCurrencyRatesModule, g_szXmlSetting)) { - TNameValue Item = parse_setting_node(pNode); - if ((!mir_strcmpi(DB_STR_CURRENCYRATE_PROVIDER, Item.first)) && Item.second) - return FindProvider(Utf2T(Item.second).get()); - } - - return nullptr; -} - -bool get_contact_state(const TiXmlNode *pXmlContact, CContactState& cst) -{ - auto *pXmlCurrencyRates = find_currencyrates_module(pXmlContact); - if (!pXmlCurrencyRates) - return false; - - cst.m_pProvider = find_provider(pXmlCurrencyRates); - if (!cst.m_pProvider) - return false; - - cst.m_hContact = cst.m_pProvider->ImportContact(pXmlCurrencyRates); - return true; -} - -bool import_contact(const TiXmlNode *pXmlContact, CImportContext &impctx) -{ - ++impctx.m_cHandledContacts; - - CContactState cst; - if (!get_contact_state(pXmlContact, cst)) - return false; - - if (NULL == cst.m_hContact) { - cst.m_hContact = db_add_contact(); - cst.m_bNewContact = true; - } - else if (impctx.m_nFlags & CURRENCYRATES_IMPORT_SKIP_EXISTING_CONTACTS) - return true; - - if (!cst.m_hContact) - return false; - - for (auto *pNode : TiXmlFilter(pXmlContact, g_szXmlModule)) - if (!handle_module(cst.m_hContact, pNode)) - return false; - - if (cst.m_bNewContact) { - cst.m_pProvider->AddContact(cst.m_hContact); - cst.m_pProvider->RefreshContact(cst.m_hContact); - } - return true; -} - -size_t import_contacts(const TiXmlNode *pXmlContacts, CImportContext &impctx) -{ - size_t cContacts = 0; - for (auto *pNode : TiXmlFilter(pXmlContacts, g_szXmlContact)) - if (import_contact(pNode, impctx)) - ++cContacts; - - return cContacts; -} - -size_t handle_contacts_node(const TiXmlNode *pXmlRoot, CImportContext& impctx) -{ - size_t cContacts = 0; - for (auto *pNode : TiXmlEnum(pXmlRoot)) { - if (!mir_strcmpi(g_szXmlContacts, pNode->Name())) - cContacts += import_contacts(pNode, impctx); - else - cContacts += handle_contacts_node(pNode, impctx); - } - - return cContacts; -} - -bool do_import(const TiXmlNode *pXmlRoot, UINT nFlags) -{ - CImportContext imctx(count_contacts(pXmlRoot, false)); - imctx.m_cHandledContacts = 0; - imctx.m_nFlags = nFlags; - - return (handle_contacts_node(pXmlRoot, imctx) > 0); -} - -INT_PTR CurrencyRates_Import(WPARAM wp, LPARAM lp) -{ - tstring sFileName; - const char* pszFile = reinterpret_cast<const char*>(lp); - if (nullptr == pszFile) { - if (false == show_open_file_dialog(true, sFileName)) - return -1; - } - else sFileName = currencyrates_a2t(pszFile); - - FILE *in = _wfopen(sFileName.c_str(), L"rb"); - if (in == nullptr) - return 1; - - TiXmlDocument doc; - int res = doc.LoadFile(in); - fclose(in); - if (res) - return 1; - - return (do_import(&doc, wp) ? 0 : 1); -} diff --git a/plugins/CurrencyRates/src/ImportExport.h b/plugins/CurrencyRates/src/ImportExport.h deleted file mode 100644 index b07bc4c4c3..0000000000 --- a/plugins/CurrencyRates/src/ImportExport.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef __F86374E6_713C_4600_85FB_903A5CDF7251_IMPORT_EXPORT_H__ -#define __F86374E6_713C_4600_85FB_903A5CDF7251_IMPORT_EXPORT_H__ - -INT_PTR CurrencyRates_Export(WPARAM wp, LPARAM lp); -INT_PTR CurrencyRates_Import(WPARAM wp, LPARAM lp); - -using TNameValue = std::pair<const char*, const char*> ; // first is name,second is value -TNameValue parse_setting_node(const TiXmlNode *pXmlSetting); - -#endif //__F86374E6_713C_4600_85FB_903A5CDF7251_IMPORT_EXPORT_H__ diff --git a/plugins/CurrencyRates/src/IsWithinAccuracy.h b/plugins/CurrencyRates/src/IsWithinAccuracy.h deleted file mode 100644 index 558dbb87d3..0000000000 --- a/plugins/CurrencyRates/src/IsWithinAccuracy.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef __C8C6FB80_D66B_4382_8FAB_E92C83F77BB8_IsWithinAcuracy_h__ -#define __C8C6FB80_D66B_4382_8FAB_E92C83F77BB8_IsWithinAcuracy_h__ - -inline bool IsWithinAccuracy(double dValue1, double dValue2, double dAccuracy = 1e-4) -{ - double dDifference = dValue1 - dValue2; - - if ((-dAccuracy <= dDifference) && (dDifference <= dAccuracy)) - return true; - else - return false; -} - - -#endif //__C8C6FB80_D66B_4382_8FAB_E92C83F77BB8_IsWithinAcuracy_h__ diff --git a/plugins/CurrencyRates/src/Locale.cpp b/plugins/CurrencyRates/src/Locale.cpp deleted file mode 100644 index 501015eb21..0000000000 --- a/plugins/CurrencyRates/src/Locale.cpp +++ /dev/null @@ -1,59 +0,0 @@ -#include "StdAfx.h" - -const std::locale GetSystemLocale() -{ - return std::locale(""); -} - -tstring get_int_registry_value(LPCTSTR pszValueName) -{ - tstring sResult; - HKEY hKey = nullptr; - LONG lResult = ::RegOpenKeyEx(HKEY_CURRENT_USER, - L"Control Panel\\International", 0, KEY_QUERY_VALUE, &hKey); - if ((ERROR_SUCCESS == lResult) && (nullptr != hKey)) { - DWORD dwType = 0; - DWORD dwSize = 0; - lResult = ::RegQueryValueEx(hKey, pszValueName, nullptr, &dwType, nullptr, &dwSize); - if ((ERROR_SUCCESS == lResult) && ((REG_SZ == dwType) || (REG_EXPAND_SZ == dwType))) { - std::vector<wchar_t> aBuffer(dwSize); - lResult = ::RegQueryValueEx(hKey, pszValueName, nullptr, nullptr, reinterpret_cast<LPBYTE>(&*aBuffer.begin()), &dwSize); - if (ERROR_SUCCESS == lResult) - std::copy(aBuffer.begin(), aBuffer.end(), std::back_inserter(sResult)); - } - } - - if (nullptr != hKey) { - lResult = ::RegCloseKey(hKey); - assert(ERROR_SUCCESS == lResult); - } - - return sResult; -} - -LPCTSTR date_win_2_boost(const tstring& sFrmt) -{ - if (sFrmt == L"dd/MM/yy") - return L"%d/%m/%y"; - if (sFrmt == L"yyyy-MM-dd") - return L"%y-%m-%d"; - return L"%d.%m.%y"; -} - -LPCTSTR time_win_2_boost(const tstring& sFrmt) -{ - if (sFrmt == L"H:mm" || sFrmt == L"HH:mm") - return L"%H:%M"; - - return L"%H:%M:%S"; -} - -LPCTSTR CurrencyRates_GetDateFormat(bool bShort) -{ - return date_win_2_boost(get_int_registry_value(bShort ? L"sShortDate" : L"sLongDate")); -} - -LPCTSTR CurrencyRates_GetTimeFormat(bool bShort) -{ - return time_win_2_boost(get_int_registry_value(bShort ? L"sShortTime" : L"sTimeFormat")); -} diff --git a/plugins/CurrencyRates/src/Locale.h b/plugins/CurrencyRates/src/Locale.h deleted file mode 100644 index 2ef5e320cb..0000000000 --- a/plugins/CurrencyRates/src/Locale.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef __11f7afd0_5a66_4029_8bf3_e3c66346b349_Locale_h_ -#define __11f7afd0_5a66_4029_8bf3_e3c66346b349_Locale_h_ - -// std::string GetLocaleInfoString(LCTYPE LCType,LCID Locale = LOCALE_USER_DEFAULT); -const std::locale GetSystemLocale(); -LPCTSTR CurrencyRates_GetDateFormat(bool bShort); -LPCTSTR CurrencyRates_GetTimeFormat(bool bShort); - -#endif //__11f7afd0_5a66_4029_8bf3_e3c66346b349_Locale_h_ diff --git a/plugins/CurrencyRates/src/Log.cpp b/plugins/CurrencyRates/src/Log.cpp deleted file mode 100644 index c769f1a98d..0000000000 --- a/plugins/CurrencyRates/src/Log.cpp +++ /dev/null @@ -1,41 +0,0 @@ -#include "StdAfx.h" - -namespace -{ - mir_cs g_Mutex; - - tstring get_log_file_name() - { - return CreateFilePath(L"CurrencyRates.log"); - } - - bool is_log_enabled() - { -#ifdef _DEBUG - return true; -#else - return (1 == db_get_b(0, CURRENCYRATES_MODULE_NAME, DB_STR_ENABLE_LOG, false)); -#endif - } - - void do_log(const tstring& rsFileName, const tstring& rsMsg) - { - mir_cslock lck(g_Mutex); - tofstream file(rsFileName.c_str(), std::ios::ate | std::ios::app); - if (file.good()) - { - wchar_t szTime[20]; - _tstrtime_s(szTime); - file << szTime << L" ================================>\n" << rsMsg << L"\n\n"; - } - } -} - -void LogIt(const tstring& rsMsg) -{ - if (is_log_enabled()) - { - tstring sFileName = get_log_file_name(); - do_log(sFileName, rsMsg); - } -} diff --git a/plugins/CurrencyRates/src/Log.h b/plugins/CurrencyRates/src/Log.h deleted file mode 100644 index b62ae9ac52..0000000000 --- a/plugins/CurrencyRates/src/Log.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef __653719be_16d6_4058_8555_8aa7d5404214_OutputDlg_h__ -#define __653719be_16d6_4058_8555_8aa7d5404214_OutputDlg_h__ - -enum ESeverity -{ - Info, - Warning, - Error -}; - -void LogIt(const tstring& rsMsg); - -#endif //__653719be_16d6_4058_8555_8aa7d5404214_OutputDlg_h__ diff --git a/plugins/CurrencyRates/src/ModuleInfo.cpp b/plugins/CurrencyRates/src/ModuleInfo.cpp deleted file mode 100644 index 172f2ba884..0000000000 --- a/plugins/CurrencyRates/src/ModuleInfo.cpp +++ /dev/null @@ -1,64 +0,0 @@ -#include "StdAfx.h" - -static CModuleInfo mi; -static CModuleInfo::THTMLEnginePtr g_pHTMLEngine; -static mir_cs g_lmParsers; - -typedef std::map<std::string, MWindowList> THandles; -static THandles g_ahWindowLists; - -MWindowList CModuleInfo::GetWindowList(const std::string& rsKey, bool bAllocateIfNonExist /*= true*/) -{ - MWindowList hResult = nullptr; - THandles::const_iterator i = g_ahWindowLists.find(rsKey); - if (i != g_ahWindowLists.end()) { - hResult = i->second; - } - else if (bAllocateIfNonExist) { - hResult = WindowList_Create(); - if (hResult) - g_ahWindowLists.insert(std::make_pair(rsKey, hResult)); - } - - return hResult; -} - -void CModuleInfo::OnMirandaShutdown() -{ - for (auto &p : g_ahWindowLists) - WindowList_Broadcast(p.second, WM_CLOSE, 0, 0); -} - -CModuleInfo::THTMLEnginePtr CModuleInfo::GetHTMLEngine() -{ - if (!g_pHTMLEngine) { - mir_cslock lck(g_lmParsers); - if (!g_pHTMLEngine) - g_pHTMLEngine = THTMLEnginePtr(new CHTMLEngineMS); - } - - return g_pHTMLEngine; -} - -void CModuleInfo::SetHTMLEngine(THTMLEnginePtr pEngine) -{ - g_pHTMLEngine = pEngine; -} - -bool CModuleInfo::Verify() -{ - INITCOMMONCONTROLSEX icc = { 0 }; - icc.dwSize = sizeof(icc); - icc.dwICC = ICC_WIN95_CLASSES | ICC_LINK_CLASS; - if (FALSE == ::InitCommonControlsEx(&icc)) - return false; - - if (!g_pHTMLEngine && (false == CHTMLParserMS::IsInstalled())) { - CurrencyRates_MessageBox(nullptr, - TranslateT("Miranda could not load CurrencyRates plugin. Microsoft HTML parser is missing."), - MB_YESNO | MB_ICONQUESTION); - return false; - } - - return true; -} diff --git a/plugins/CurrencyRates/src/ModuleInfo.h b/plugins/CurrencyRates/src/ModuleInfo.h deleted file mode 100644 index 39399f5c43..0000000000 --- a/plugins/CurrencyRates/src/ModuleInfo.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef __d0f22b66_3135_4bbe_bee5_a31ea631ce58_ModuleInfo__ -#define __d0f22b66_3135_4bbe_bee5_a31ea631ce58_ModuleInfo__ - -class CCurrencyRatesProviders; -class IHTMLEngine; - -class CModuleInfo -{ -public: - typedef boost::shared_ptr<CCurrencyRatesProviders> TCurrencyRatesProvidersPtr; - typedef boost::shared_ptr<IHTMLEngine> THTMLEnginePtr; - -public: - static void OnMirandaShutdown(void); - static MWindowList GetWindowList(const std::string& rsKey, bool bAllocateIfNonExist = true); - - static bool Verify(); - - static THTMLEnginePtr GetHTMLEngine(); - static void SetHTMLEngine(THTMLEnginePtr pEngine); -}; - -#endif //__d0f22b66_3135_4bbe_bee5_a31ea631ce58_ModuleInfo__ diff --git a/plugins/CurrencyRates/src/SettingsDlg.cpp b/plugins/CurrencyRates/src/SettingsDlg.cpp deleted file mode 100644 index 0d919d76a0..0000000000 --- a/plugins/CurrencyRates/src/SettingsDlg.cpp +++ /dev/null @@ -1,971 +0,0 @@ -#include "StdAfx.h" - -#define WINDOW_PREFIX_SETTINGS "Edit Settings_" - -const wchar_t g_pszVariableCurrencyRateName[] = L"%currencyratename%"; -const wchar_t g_pszVariableUserProfile[] = L"%miranda_userdata%"; - -void update_file_controls(HWND hDlg) -{ - bool bEnable = (1 == ::IsDlgButtonChecked(hDlg, IDC_CHECK_EXTERNAL_FILE)); - - ::EnableWindow(::GetDlgItem(hDlg, IDC_EDIT_FILE_NAME), bEnable); - ::EnableWindow(::GetDlgItem(hDlg, IDC_STATIC_SELECT_FILE), bEnable); - ::EnableWindow(::GetDlgItem(hDlg, IDC_BUTTON_BROWSE), bEnable); - ::EnableWindow(::GetDlgItem(hDlg, IDC_STATIC_LOG_FILE_FORMAT), bEnable); - ::EnableWindow(::GetDlgItem(hDlg, IDC_EDIT_LOG_FILE_FORMAT), bEnable); - ::EnableWindow(::GetDlgItem(hDlg, IDC_BUTTON_LOG_FILE_DESCRIPTION), bEnable); - ::EnableWindow(::GetDlgItem(hDlg, IDC_CHECK_LOG_FILE_CONDITION), bEnable); -} - -void update_history_controls(HWND hDlg) -{ - bool bEnable = (1 == ::IsDlgButtonChecked(hDlg, IDC_CHECK_INTERNAL_HISTORY)); - - ::EnableWindow(::GetDlgItem(hDlg, IDC_STATIC_HISTORY_FORMAT), bEnable); - ::EnableWindow(::GetDlgItem(hDlg, IDC_EDIT_HISTORY_FORMAT), bEnable); - ::EnableWindow(::GetDlgItem(hDlg, IDC_BUTTON_HISTORY_DESCRIPTION), bEnable); - ::EnableWindow(::GetDlgItem(hDlg, IDC_CHECK_HISTORY_CONDITION), bEnable); -} - -void update_popup_controls(HWND hDlg) -{ - bool bEnable = (1 == ::IsDlgButtonChecked(hDlg, IDC_CHECK_SHOW_POPUP)); - ::EnableWindow(::GetDlgItem(hDlg, IDC_EDIT_POPUP_FORMAT), bEnable); - ::EnableWindow(::GetDlgItem(hDlg, IDC_CHECK_SHOW_POPUP_ONLY_VALUE_CHANGED), bEnable); - ::EnableWindow(::GetDlgItem(hDlg, IDC_STATIC_POPUP_FORMAT), bEnable); - ::EnableWindow(::GetDlgItem(hDlg, IDC_BUTTON_POPUP_FORMAT_DESCRIPTION), bEnable); - ::EnableWindow(::GetDlgItem(hDlg, IDC_BUTTON_POPUP_SETTINGS), bEnable); -} - -bool enable_popup_controls(HWND hDlg) -{ - bool bIsPopupServiceEnabled = 1 == ServiceExists(MS_POPUP_ADDPOPUPW); - ::EnableWindow(::GetDlgItem(hDlg, IDC_CHECK_SHOW_POPUP), bIsPopupServiceEnabled); - ::EnableWindow(::GetDlgItem(hDlg, IDC_EDIT_POPUP_FORMAT), bIsPopupServiceEnabled); - ::EnableWindow(::GetDlgItem(hDlg, IDC_CHECK_SHOW_POPUP_ONLY_VALUE_CHANGED), bIsPopupServiceEnabled); - ::EnableWindow(::GetDlgItem(hDlg, IDC_STATIC_POPUP_FORMAT), bIsPopupServiceEnabled); - ::EnableWindow(::GetDlgItem(hDlg, IDC_BUTTON_POPUP_FORMAT_DESCRIPTION), bIsPopupServiceEnabled); - ::EnableWindow(::GetDlgItem(hDlg, IDC_BUTTON_POPUP_SETTINGS), bIsPopupServiceEnabled); - - return bIsPopupServiceEnabled; -} - -void update_all_controls(HWND hDlg) -{ - bool bIsCheckedContactSpec = (1 == ::IsDlgButtonChecked(hDlg, IDC_CHECK_CONTACT_SPECIFIC)); - bool bIsCheckedExternal = (1 == ::IsDlgButtonChecked(hDlg, IDC_CHECK_EXTERNAL_FILE)); - - ::EnableWindow(::GetDlgItem(hDlg, IDC_CHECK_EXTERNAL_FILE), bIsCheckedContactSpec); - ::EnableWindow(::GetDlgItem(hDlg, IDC_EDIT_FILE_NAME), (bIsCheckedContactSpec&&bIsCheckedExternal)); - ::EnableWindow(::GetDlgItem(hDlg, IDC_STATIC_SELECT_FILE), (bIsCheckedContactSpec&&bIsCheckedExternal)); - ::EnableWindow(::GetDlgItem(hDlg, IDC_BUTTON_BROWSE), (bIsCheckedContactSpec&&bIsCheckedExternal)); - ::EnableWindow(::GetDlgItem(hDlg, IDC_STATIC_LOG_FILE_FORMAT), (bIsCheckedContactSpec&&bIsCheckedExternal)); - ::EnableWindow(::GetDlgItem(hDlg, IDC_EDIT_LOG_FILE_FORMAT), (bIsCheckedContactSpec&&bIsCheckedExternal)); - ::EnableWindow(::GetDlgItem(hDlg, IDC_BUTTON_LOG_FILE_DESCRIPTION), (bIsCheckedContactSpec&&bIsCheckedExternal)); - ::EnableWindow(::GetDlgItem(hDlg, IDC_CHECK_LOG_FILE_CONDITION), (bIsCheckedContactSpec&&bIsCheckedExternal)); - - bool bIsCheckedHistory = (1 == ::IsDlgButtonChecked(hDlg, IDC_CHECK_INTERNAL_HISTORY)); - ::EnableWindow(::GetDlgItem(hDlg, IDC_CHECK_INTERNAL_HISTORY), bIsCheckedContactSpec); - ::EnableWindow(::GetDlgItem(hDlg, IDC_STATIC_HISTORY_FORMAT), (bIsCheckedContactSpec&&bIsCheckedHistory)); - ::EnableWindow(::GetDlgItem(hDlg, IDC_EDIT_HISTORY_FORMAT), (bIsCheckedContactSpec&&bIsCheckedHistory)); - ::EnableWindow(::GetDlgItem(hDlg, IDC_BUTTON_HISTORY_DESCRIPTION), (bIsCheckedContactSpec&&bIsCheckedHistory)); - ::EnableWindow(::GetDlgItem(hDlg, IDC_CHECK_HISTORY_CONDITION), (bIsCheckedContactSpec&&bIsCheckedHistory)); - - bool bIsPopupServiceEnabled = 1 == ServiceExists(MS_POPUP_ADDPOPUPW); - bool bIsCheckedShowPopup = (1 == ::IsDlgButtonChecked(hDlg, IDC_CHECK_SHOW_POPUP)); - ::EnableWindow(::GetDlgItem(hDlg, IDC_CHECK_SHOW_POPUP), (bIsCheckedContactSpec&&bIsPopupServiceEnabled)); - ::EnableWindow(::GetDlgItem(hDlg, IDC_EDIT_POPUP_FORMAT), (bIsCheckedContactSpec&&bIsPopupServiceEnabled&&bIsCheckedShowPopup)); - ::EnableWindow(::GetDlgItem(hDlg, IDC_CHECK_SHOW_POPUP_ONLY_VALUE_CHANGED), (bIsCheckedContactSpec&&bIsPopupServiceEnabled&&bIsCheckedShowPopup)); - ::EnableWindow(::GetDlgItem(hDlg, IDC_STATIC_POPUP_FORMAT), (bIsCheckedContactSpec&&bIsPopupServiceEnabled&&bIsCheckedShowPopup)); - ::EnableWindow(::GetDlgItem(hDlg, IDC_BUTTON_POPUP_FORMAT_DESCRIPTION), (bIsCheckedContactSpec&&bIsPopupServiceEnabled&&bIsCheckedShowPopup)); - ::EnableWindow(::GetDlgItem(hDlg, IDC_BUTTON_POPUP_SETTINGS), (bIsCheckedContactSpec&&bIsPopupServiceEnabled)); -} - -std::vector<wchar_t> get_filter() -{ - std::vector<wchar_t> aFilter; - LPCTSTR pszFilterParts[] = { LPGENW("Log Files (*.txt,*.log)"), L"*.txt;*.log", LPGENW("All files (*.*)"), L"*.*" }; - for (int i = 0; i < sizeof(pszFilterParts) / sizeof(pszFilterParts[0]); ++i) { - tstring sPart = TranslateW(pszFilterParts[i]); - std::copy(sPart.begin(), sPart.end(), std::back_inserter(aFilter)); - aFilter.push_back('\0'); - - } - aFilter.push_back('\0'); - return aFilter; -} -void select_log_file(HWND hDlg) -{ - std::vector<wchar_t> aFileBuffer(_MAX_PATH * 2, '\0'); - LPTSTR pszFile = &*aFileBuffer.begin(); - - std::vector<wchar_t> aFilterBuffer = get_filter(); - LPCTSTR pszFilter = &*aFilterBuffer.begin(); - - OPENFILENAME ofn = { 0 }; - ofn.lStructSize = sizeof(OPENFILENAME); - ofn.hwndOwner = hDlg; - ofn.lpstrFile = pszFile; - ofn.nMaxFile = (DWORD)aFileBuffer.size(); - ofn.lpstrFilter = pszFilter; - ofn.nFilterIndex = 1; - ofn.hInstance = g_plugin.getInst(); - ofn.lpstrDefExt = L"log"; - ofn.Flags = OFN_PATHMUSTEXIST | OFN_HIDEREADONLY | OFN_EXPLORER; - - BOOL b = GetOpenFileName(&ofn); - if (TRUE == b) { - SetDlgItemText(hDlg, IDC_EDIT_FILE_NAME, ofn.lpstrFile); - } -} - -struct CSettingWindowParam -{ - CSettingWindowParam(MCONTACT hContact) : m_hContact(hContact), m_pPopupSettings(nullptr) {} - ~CSettingWindowParam() { delete m_pPopupSettings; } - - MCONTACT m_hContact; - CPopupSettings* m_pPopupSettings; -}; - -inline CSettingWindowParam* get_param(HWND hWnd) -{ - return reinterpret_cast<CSettingWindowParam*>(GetWindowLongPtr(hWnd, GWLP_USERDATA)); -} - -void update_popup_controls_settings(HWND hDlg) -{ - bool bIsColoursEnabled = 1 == IsDlgButtonChecked(hDlg, IDC_RADIO_USER_DEFINED_COLOURS); - ::EnableWindow(::GetDlgItem(hDlg, IDC_BGCOLOR), bIsColoursEnabled); - ::EnableWindow(::GetDlgItem(hDlg, IDC_TEXTCOLOR), bIsColoursEnabled); - - bool bIsDelayEnabled = 1 == IsDlgButtonChecked(hDlg, IDC_DELAYCUSTOM); - ::EnableWindow(::GetDlgItem(hDlg, IDC_DELAY), bIsDelayEnabled); - -} - -INT_PTR CALLBACK EditPopupSettingsDlgProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) -{ - switch (msg) { - case WM_INITDIALOG: - { - CPopupSettings* pSettings = reinterpret_cast<CPopupSettings*>(lp); - TranslateDialogDefault(hWnd); - ::SendDlgItemMessage(hWnd, IDC_BGCOLOR, CPM_SETCOLOUR, 0, pSettings->GetColourBk()); - ::SendDlgItemMessage(hWnd, IDC_TEXTCOLOR, CPM_SETCOLOUR, 0, pSettings->GetColourText()); - - ::CheckDlgButton(hWnd, IDC_CHECK_DONT_USE_POPUPHISTORY, pSettings->GetHistoryFlag() ? BST_CHECKED : BST_UNCHECKED); - - ::CheckRadioButton(hWnd, IDC_RADIO_DEFAULT_COLOURS, IDC_RADIO_USER_DEFINED_COLOURS, (CPopupSettings::colourDefault == pSettings->GetColourMode()) ? IDC_RADIO_DEFAULT_COLOURS : IDC_RADIO_USER_DEFINED_COLOURS); - UINT n; - switch (pSettings->GetDelayMode()) { - default: - assert(!"Unknown delay mode. Please, fix it"); - case CPopupSettings::delayFromPopup: - n = IDC_DELAYFROMPU; - break; - case CPopupSettings::delayCustom: - n = IDC_DELAYCUSTOM; - break; - case CPopupSettings::delayPermanent: - n = IDC_DELAYPERMANENT; - break; - } - ::CheckRadioButton(hWnd, IDC_DELAYFROMPU, IDC_DELAYPERMANENT, n); - - ::SetDlgItemInt(hWnd, IDC_DELAY, pSettings->GetDelayTimeout(), FALSE); - - update_popup_controls_settings(hWnd); - - ::SetWindowLongPtr(hWnd, GWLP_USERDATA, reinterpret_cast<LONG_PTR>(pSettings)); - } - return TRUE; - - case WM_COMMAND: - switch (LOWORD(wp)) { - case IDC_RADIO_DEFAULT_COLOURS: - case IDC_RADIO_USER_DEFINED_COLOURS: - case IDC_DELAYFROMPU: - case IDC_DELAYCUSTOM: - case IDC_DELAYPERMANENT: - update_popup_controls_settings(hWnd); - break; - - case IDCANCEL: - ::EndDialog(hWnd, IDCANCEL); - break; - - case IDOK: - { - CPopupSettings* pSettings = reinterpret_cast<CPopupSettings*>(GetWindowLongPtr(hWnd, GWLP_USERDATA)); - - bool bError = false; - BOOL bOk = FALSE; - UINT nDelay = ::GetDlgItemInt(hWnd, IDC_DELAY, &bOk, FALSE); - CPopupSettings::EDelayMode nModeDelay = pSettings->GetDelayMode(); - if (1 == ::IsDlgButtonChecked(hWnd, IDC_DELAYFROMPU)) - nModeDelay = CPopupSettings::delayFromPopup; - else if (1 == ::IsDlgButtonChecked(hWnd, IDC_DELAYCUSTOM)) { - if (TRUE == bOk) - nModeDelay = CPopupSettings::delayCustom; - else { - prepare_edit_ctrl_for_error(::GetDlgItem(hWnd, IDC_DELAY)); - CurrencyRates_MessageBox(hWnd, TranslateT("Enter integer value"), MB_OK | MB_ICONERROR); - bError = true; - } - } - else if (1 == ::IsDlgButtonChecked(hWnd, IDC_DELAYPERMANENT)) - nModeDelay = CPopupSettings::delayPermanent; - - if (false == bError) { - pSettings->SetDelayMode(nModeDelay); - if (TRUE == bOk) - pSettings->SetDelayTimeout(nDelay); - - pSettings->SetHistoryFlag((1 == IsDlgButtonChecked(hWnd, IDC_CHECK_DONT_USE_POPUPHISTORY))); - - if (1 == ::IsDlgButtonChecked(hWnd, IDC_RADIO_DEFAULT_COLOURS)) - pSettings->SetColourMode(CPopupSettings::colourDefault); - else if (1 == ::IsDlgButtonChecked(hWnd, IDC_RADIO_USER_DEFINED_COLOURS)) - pSettings->SetColourMode(CPopupSettings::colourUserDefined); - - pSettings->SetColourBk(static_cast<COLORREF>(::SendDlgItemMessage(hWnd, IDC_BGCOLOR, CPM_GETCOLOUR, 0, 0))); - pSettings->SetColourText(static_cast<COLORREF>(::SendDlgItemMessage(hWnd, IDC_TEXTCOLOR, CPM_GETCOLOUR, 0, 0))); - - ::EndDialog(hWnd, IDOK); - } - } - break; - } - break; - } - - return FALSE; -} - -INT_PTR CALLBACK EditSettingsPerContactDlgProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) -{ - switch (msg) { - case WM_INITDIALOG: - TranslateDialogDefault(hWnd); - { - MCONTACT hContact = MCONTACT(lp); - - MWindowList hWL = CModuleInfo::GetWindowList(WINDOW_PREFIX_SETTINGS, false); - assert(hWL); - WindowList_Add(hWL, hWnd, hContact); - - tstring sName = GetContactName(hContact); - ::SetDlgItemText(hWnd, IDC_EDIT_NAME, sName.c_str()); - - BYTE bUseContactSpecific = db_get_b(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CONTACT_SPEC_SETTINGS, 0); - ::CheckDlgButton(hWnd, IDC_CHECK_CONTACT_SPECIFIC, bUseContactSpecific ? BST_CHECKED : BST_UNCHECKED); - - auto pProvider = GetContactProviderPtr(hContact); - CAdvProviderSettings setGlobal(pProvider); - // log to history - WORD dwLogMode = db_get_w(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CURRENCYRATE_LOG, setGlobal.GetLogMode()); - UINT nCheck = (dwLogMode&lmInternalHistory) ? 1 : 0; - ::CheckDlgButton(hWnd, IDC_CHECK_INTERNAL_HISTORY, nCheck ? BST_CHECKED : BST_UNCHECKED); - - tstring sHistoryFrmt = CurrencyRates_DBGetStringW(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CURRENCYRATE_FORMAT_HISTORY, setGlobal.GetHistoryFormat().c_str()); - ::SetDlgItemText(hWnd, IDC_EDIT_HISTORY_FORMAT, sHistoryFrmt.c_str()); - - WORD wOnlyIfChanged = db_get_w(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CURRENCYRATE_HISTORY_CONDITION, setGlobal.GetHistoryOnlyChangedFlag()); - ::CheckDlgButton(hWnd, IDC_CHECK_HISTORY_CONDITION, (1 == wOnlyIfChanged) ? BST_CHECKED : BST_UNCHECKED); - - // log to file - nCheck = (dwLogMode&lmExternalFile) ? 1 : 0; - ::CheckDlgButton(hWnd, IDC_CHECK_EXTERNAL_FILE, nCheck ? BST_CHECKED : BST_UNCHECKED); - - tstring sLogFileName = CurrencyRates_DBGetStringW(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CURRENCYRATE_LOG_FILE); - if (true == sLogFileName.empty()) { - sLogFileName = GenerateLogFileName(setGlobal.GetLogFileName(), CurrencyRates_DBGetStringW(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CURRENCYRATE_SYMBOL), glfnResolveCurrencyRateName); - } - ::SetDlgItemText(hWnd, IDC_EDIT_FILE_NAME, sLogFileName.c_str()); - - tstring sLogFileFrmt = CurrencyRates_DBGetStringW(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CURRENCYRATE_FORMAT_LOG_FILE, setGlobal.GetLogFormat().c_str()); - ::SetDlgItemText(hWnd, IDC_EDIT_LOG_FILE_FORMAT, sLogFileFrmt.c_str()); - - wOnlyIfChanged = db_get_w(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CURRENCYRATE_LOG_FILE_CONDITION, setGlobal.GetLogOnlyChangedFlag()); - ::CheckDlgButton(hWnd, IDC_CHECK_LOG_FILE_CONDITION, (1 == wOnlyIfChanged) ? BST_CHECKED : BST_UNCHECKED); - - // popup - nCheck = (dwLogMode&lmPopup) ? 1 : 0; - ::CheckDlgButton(hWnd, IDC_CHECK_SHOW_POPUP, nCheck ? BST_CHECKED : BST_UNCHECKED); - tstring sPopupFrmt = CurrencyRates_DBGetStringW(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CURRENCYRATE_FORMAT_POPUP, setGlobal.GetPopupFormat().c_str()); - ::SetDlgItemText(hWnd, IDC_EDIT_POPUP_FORMAT, sPopupFrmt.c_str()); - bool bOnlyIfChanged = 1 == db_get_b(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CURRENCYRATE_POPUP_CONDITION, setGlobal.GetShowPopupIfValueChangedFlag()); - ::CheckDlgButton(hWnd, IDC_CHECK_SHOW_POPUP_ONLY_VALUE_CHANGED, (bOnlyIfChanged) ? BST_CHECKED : BST_UNCHECKED); - - update_all_controls(hWnd); - - CSettingWindowParam* pParam = new CSettingWindowParam(hContact); - ::SetWindowLongPtr(hWnd, GWLP_USERDATA, reinterpret_cast<LONG_PTR>(pParam)); - Utils_RestoreWindowPositionNoSize(hWnd, hContact, CURRENCYRATES_MODULE_NAME, WINDOW_PREFIX_SETTINGS); - ::ShowWindow(hWnd, SW_SHOW); - } - break; - - case WM_COMMAND: - switch (LOWORD(wp)) { - case IDC_BUTTON_HISTORY_DESCRIPTION: - case IDC_BUTTON_LOG_FILE_DESCRIPTION: - case IDC_BUTTON_POPUP_FORMAT_DESCRIPTION: - if (BN_CLICKED == HIWORD(wp)) - show_variable_list(hWnd, GetContactProviderPtr(get_param(hWnd)->m_hContact)); - break; - - case IDC_CHECK_CONTACT_SPECIFIC: - if (BN_CLICKED == HIWORD(wp)) - update_all_controls(hWnd); - break; - case IDC_CHECK_EXTERNAL_FILE: - if (BN_CLICKED == HIWORD(wp)) - update_file_controls(hWnd); - break; - case IDC_CHECK_INTERNAL_HISTORY: - if (BN_CLICKED == HIWORD(wp)) - update_history_controls(hWnd); - break; - case IDC_CHECK_SHOW_POPUP: - if (BN_CLICKED == HIWORD(wp)) - update_popup_controls(hWnd); - break; - case IDC_BUTTON_BROWSE: - if (BN_CLICKED == HIWORD(wp)) - select_log_file(hWnd); - break; - - case IDC_BUTTON_POPUP_SETTINGS: - if (BN_CLICKED == HIWORD(wp)) { - CSettingWindowParam* pParam = get_param(hWnd); - if (!pParam->m_pPopupSettings) { - pParam->m_pPopupSettings = new CPopupSettings(); - pParam->m_pPopupSettings->InitForContact(pParam->m_hContact); - } - - DialogBoxParam(g_plugin.getInst(), - MAKEINTRESOURCE(IDD_DIALOG_POPUP), - hWnd, - EditPopupSettingsDlgProc, reinterpret_cast<LPARAM>(pParam->m_pPopupSettings)); - } - break; - - case IDOK: - { - CSettingWindowParam* pParam = get_param(hWnd); - MCONTACT hContact = pParam->m_hContact; - - bool bUseContactSpec = 1 == ::IsDlgButtonChecked(hWnd, IDC_CHECK_CONTACT_SPECIFIC); - - WORD nLogMode = lmDisabled; - UINT nCheck = ::IsDlgButtonChecked(hWnd, IDC_CHECK_EXTERNAL_FILE); - if (1 == nCheck) - nLogMode |= lmExternalFile; - - nCheck = ::IsDlgButtonChecked(hWnd, IDC_CHECK_INTERNAL_HISTORY); - if (1 == nCheck) - nLogMode |= lmInternalHistory; - - nCheck = ::IsDlgButtonChecked(hWnd, IDC_CHECK_SHOW_POPUP); - if (1 == nCheck) - nLogMode |= lmPopup; - - bool bOk = true; - HWND hwndLogFile = ::GetDlgItem(hWnd, IDC_EDIT_FILE_NAME); - HWND hwndLogFileFrmt = ::GetDlgItem(hWnd, IDC_EDIT_LOG_FILE_FORMAT); - HWND hwndHistoryFrmt = ::GetDlgItem(hWnd, IDC_EDIT_HISTORY_FORMAT); - tstring sLogFile = get_window_text(hwndLogFile); - tstring sLogFileFormat = get_window_text(hwndLogFileFrmt); - tstring sHistoryFormat = get_window_text(hwndHistoryFrmt); - if ((nLogMode&lmExternalFile)) { - if (true == sLogFile.empty()) { - prepare_edit_ctrl_for_error(hwndLogFile); - CurrencyRates_MessageBox(hWnd, TranslateT("Enter log file name."), MB_OK | MB_ICONERROR); - bOk = false; - } - else if (true == sLogFileFormat.empty()) { - prepare_edit_ctrl_for_error(hwndLogFileFrmt); - CurrencyRates_MessageBox(hWnd, TranslateT("Enter log file format."), MB_OK | MB_ICONERROR); - bOk = false; - } - } - - if ((true == bOk) && (nLogMode&lmInternalHistory) && (true == sHistoryFormat.empty())) { - prepare_edit_ctrl_for_error(hwndHistoryFrmt); - CurrencyRates_MessageBox(hWnd, TranslateT("Enter history format."), MB_OK | MB_ICONERROR); - bOk = false; - } - - HWND hwndPopupFrmt = ::GetDlgItem(hWnd, IDC_EDIT_POPUP_FORMAT); - tstring sPopupFormat = get_window_text(hwndPopupFrmt); - if ((true == bOk) && (nLogMode&lmPopup) && (true == sPopupFormat.empty())) { - prepare_edit_ctrl_for_error(hwndPopupFrmt); - CurrencyRates_MessageBox(hWnd, TranslateT("Enter popup window format."), MB_OK | MB_ICONERROR); - bOk = false; - } - - if (true == bOk) { - UINT nIfChangedHistory = IsDlgButtonChecked(hWnd, IDC_CHECK_HISTORY_CONDITION); - UINT nIfChangedFile = IsDlgButtonChecked(hWnd, IDC_CHECK_LOG_FILE_CONDITION); - bool bIfChangedPopup = (1 == IsDlgButtonChecked(hWnd, IDC_CHECK_SHOW_POPUP_ONLY_VALUE_CHANGED)); - - db_set_b(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CONTACT_SPEC_SETTINGS, bUseContactSpec); - db_set_w(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CURRENCYRATE_LOG, nLogMode); - db_set_w(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CURRENCYRATE_LOG_FILE_CONDITION, nIfChangedFile); - db_set_w(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CURRENCYRATE_HISTORY_CONDITION, nIfChangedHistory); - db_set_b(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CURRENCYRATE_POPUP_CONDITION, bIfChangedPopup); - db_set_ws(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CURRENCYRATE_LOG_FILE, sLogFile.c_str()); - db_set_ws(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CURRENCYRATE_FORMAT_LOG_FILE, sLogFileFormat.c_str()); - db_set_ws(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CURRENCYRATE_FORMAT_HISTORY, sHistoryFormat.c_str()); - db_set_ws(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CURRENCYRATE_FORMAT_POPUP, sPopupFormat.c_str()); - - if (pParam->m_pPopupSettings) { - pParam->m_pPopupSettings->SaveForContact(hContact); - } - - ::DestroyWindow(hWnd); - } - } - break; - - case IDCANCEL: - DestroyWindow(hWnd); - break; - } - break; - - case WM_CLOSE: - DestroyWindow(hWnd); - break; - - case WM_DESTROY: - CSettingWindowParam* pParam = get_param(hWnd); - SetWindowLongPtr(hWnd, GWLP_USERDATA, 0); - - MWindowList hWL = CModuleInfo::GetWindowList(WINDOW_PREFIX_SETTINGS, false); - assert(hWL); - WindowList_Remove(hWL, hWnd); - Utils_SaveWindowPosition(hWnd, pParam->m_hContact, CURRENCYRATES_MODULE_NAME, WINDOW_PREFIX_SETTINGS); - delete pParam; - break; - } - - return FALSE; -} - -void ShowSettingsDlg(MCONTACT hContact) -{ - MWindowList hWL = CModuleInfo::GetWindowList(WINDOW_PREFIX_SETTINGS, true); - assert(hWL); - HWND hWnd = WindowList_Find(hWL, hContact); - if (nullptr != hWnd) { - SetForegroundWindow(hWnd); - SetFocus(hWnd); - } - else CreateDialogParam(g_plugin.getInst(), MAKEINTRESOURCE(IDD_CONTACT_SETTINGS), nullptr, EditSettingsPerContactDlgProc, LPARAM(hContact)); -} - -////////////////////////////////////////////////////////////////////////// - -INT_PTR CALLBACK EditSettingsPerProviderDlgProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) -{ - switch (msg) { - case WM_INITDIALOG: - { - TranslateDialogDefault(hWnd); - CAdvProviderSettings* pAdvSettings = reinterpret_cast<CAdvProviderSettings*>(lp); - - ::SetDlgItemText(hWnd, IDC_EDIT_NAME, pAdvSettings->GetProviderPtr()->GetInfo().m_sName.c_str()); - - // log to history - WORD dwLogMode = pAdvSettings->GetLogMode(); - UINT nCheck = (dwLogMode&lmInternalHistory) ? 1 : 0; - ::CheckDlgButton(hWnd, IDC_CHECK_INTERNAL_HISTORY, nCheck ? BST_CHECKED : BST_UNCHECKED); - ::SetDlgItemText(hWnd, IDC_EDIT_HISTORY_FORMAT, pAdvSettings->GetHistoryFormat().c_str()); - ::CheckDlgButton(hWnd, IDC_CHECK_HISTORY_CONDITION, (pAdvSettings->GetHistoryOnlyChangedFlag()) ? BST_CHECKED : BST_UNCHECKED); - - // log to file - nCheck = (dwLogMode&lmExternalFile) ? 1 : 0; - ::CheckDlgButton(hWnd, IDC_CHECK_EXTERNAL_FILE, nCheck ? BST_CHECKED : BST_UNCHECKED); - ::SetDlgItemText(hWnd, IDC_EDIT_FILE_NAME, pAdvSettings->GetLogFileName().c_str()); - ::SetDlgItemText(hWnd, IDC_EDIT_LOG_FILE_FORMAT, pAdvSettings->GetLogFormat().c_str()); - ::CheckDlgButton(hWnd, IDC_CHECK_LOG_FILE_CONDITION, (pAdvSettings->GetLogOnlyChangedFlag()) ? BST_CHECKED : BST_UNCHECKED); - - update_file_controls(hWnd); - update_history_controls(hWnd); - - // popup - nCheck = (dwLogMode&lmPopup) ? 1 : 0; - ::CheckDlgButton(hWnd, IDC_CHECK_SHOW_POPUP, nCheck ? BST_CHECKED : BST_UNCHECKED); - ::SetDlgItemText(hWnd, IDC_EDIT_POPUP_FORMAT, pAdvSettings->GetPopupFormat().c_str()); - ::CheckDlgButton(hWnd, IDC_CHECK_SHOW_POPUP_ONLY_VALUE_CHANGED, (pAdvSettings->GetShowPopupIfValueChangedFlag()) ? BST_CHECKED : BST_UNCHECKED); - - if (true == enable_popup_controls(hWnd)) - update_popup_controls(hWnd); - - ::SetWindowLongPtr(hWnd, GWLP_USERDATA, reinterpret_cast<LONG_PTR>(pAdvSettings)); - } - return TRUE; - - case WM_COMMAND: - switch (LOWORD(wp)) { - case IDOK: - { - WORD nLogMode = lmDisabled; - UINT nCheck = ::IsDlgButtonChecked(hWnd, IDC_CHECK_EXTERNAL_FILE); - if (1 == nCheck) { - nLogMode |= lmExternalFile; - } - - nCheck = ::IsDlgButtonChecked(hWnd, IDC_CHECK_INTERNAL_HISTORY); - if (1 == nCheck) { - nLogMode |= lmInternalHistory; - } - - nCheck = ::IsDlgButtonChecked(hWnd, IDC_CHECK_SHOW_POPUP); - if (1 == nCheck) { - nLogMode |= lmPopup; - } - - bool bOk = true; - HWND hwndLogFile = ::GetDlgItem(hWnd, IDC_EDIT_FILE_NAME); - HWND hwndLogFileFrmt = ::GetDlgItem(hWnd, IDC_EDIT_LOG_FILE_FORMAT); - - tstring sLogFile = get_window_text(hwndLogFile); - tstring sLogFileFormat = get_window_text(hwndLogFileFrmt); - - if ((nLogMode&lmExternalFile)) { - if (true == sLogFile.empty()) { - prepare_edit_ctrl_for_error(hwndLogFile); - CurrencyRates_MessageBox(hWnd, TranslateT("Enter log file name."), MB_OK | MB_ICONERROR); - bOk = false; - } - else if (true == sLogFileFormat.empty()) { - prepare_edit_ctrl_for_error(hwndLogFileFrmt); - CurrencyRates_MessageBox(hWnd, TranslateT("Enter log file format."), MB_OK | MB_ICONERROR); - bOk = false; - } - } - - HWND hwndHistoryFrmt = ::GetDlgItem(hWnd, IDC_EDIT_HISTORY_FORMAT); - tstring sHistoryFormat = get_window_text(hwndHistoryFrmt); - if ((true == bOk) && (nLogMode&lmInternalHistory) && (true == sHistoryFormat.empty())) { - prepare_edit_ctrl_for_error(hwndHistoryFrmt); - CurrencyRates_MessageBox(hWnd, TranslateT("Enter history format."), MB_OK | MB_ICONERROR); - bOk = false; - } - - HWND hwndPopupFrmt = ::GetDlgItem(hWnd, IDC_EDIT_POPUP_FORMAT); - tstring sPopupFormat = get_window_text(hwndPopupFrmt); - if ((true == bOk) && (nLogMode&lmPopup) && (true == sPopupFormat.empty())) { - prepare_edit_ctrl_for_error(hwndPopupFrmt); - CurrencyRates_MessageBox(hWnd, TranslateT("Enter popup window format."), MB_OK | MB_ICONERROR); - bOk = false; - } - - if (true == bOk) { - CAdvProviderSettings* pAdvSettings = reinterpret_cast<CAdvProviderSettings*>(GetWindowLongPtr(hWnd, GWLP_USERDATA)); - - pAdvSettings->SetLogMode(nLogMode); - pAdvSettings->SetHistoryOnlyChangedFlag(1 == IsDlgButtonChecked(hWnd, IDC_CHECK_HISTORY_CONDITION)); - pAdvSettings->SetLogOnlyChangedFlag(1 == IsDlgButtonChecked(hWnd, IDC_CHECK_LOG_FILE_CONDITION)); - pAdvSettings->SetShowPopupIfValueChangedFlag(1 == IsDlgButtonChecked(hWnd, IDC_CHECK_SHOW_POPUP_ONLY_VALUE_CHANGED)); - pAdvSettings->SetLogFileName(sLogFile); - pAdvSettings->SetLogFormat(sLogFileFormat); - pAdvSettings->SetHistoryFormat(sHistoryFormat); - pAdvSettings->SetPopupFormat(sPopupFormat); - - ::EndDialog(hWnd, IDOK); - } - } - break; - - case IDCANCEL: - ::EndDialog(hWnd, IDCANCEL); - break; - - case IDC_BUTTON_HISTORY_DESCRIPTION: - case IDC_BUTTON_LOG_FILE_DESCRIPTION: - case IDC_BUTTON_POPUP_FORMAT_DESCRIPTION: - if (BN_CLICKED == HIWORD(wp)) { - const CAdvProviderSettings* pAdvSettings = reinterpret_cast<CAdvProviderSettings*>(GetWindowLongPtr(hWnd, GWLP_USERDATA)); - show_variable_list(hWnd, pAdvSettings->GetProviderPtr()); - } - break; - - case IDC_CHECK_EXTERNAL_FILE: - if (BN_CLICKED == HIWORD(wp)) - update_file_controls(hWnd); - break; - - case IDC_CHECK_INTERNAL_HISTORY: - if (BN_CLICKED == HIWORD(wp)) - update_history_controls(hWnd); - break; - - case IDC_CHECK_SHOW_POPUP: - if (BN_CLICKED == HIWORD(wp)) - update_popup_controls(hWnd); - break; - - case IDC_BUTTON_BROWSE: - if (BN_CLICKED == HIWORD(wp)) - select_log_file(hWnd); - break; - - case IDC_BUTTON_POPUP_SETTINGS: - const CAdvProviderSettings* pAdvSettings = reinterpret_cast<CAdvProviderSettings*>(GetWindowLongPtr(hWnd, GWLP_USERDATA)); - DialogBoxParam(g_plugin.getInst(), - MAKEINTRESOURCE(IDD_DIALOG_POPUP), - hWnd, - EditPopupSettingsDlgProc, reinterpret_cast<LPARAM>(pAdvSettings->GetPopupSettingsPtr())); - break; - } - break; - } - return FALSE; -} - -CAdvProviderSettings::CAdvProviderSettings(const ICurrencyRatesProvider *pCurrencyRatesProvider) - : m_pCurrencyRatesProvider(pCurrencyRatesProvider), - m_wLogMode(lmDisabled), - m_bIsOnlyChangedHistory(false), - m_bIsOnlyChangedLogFile(false), - m_bShowPopupIfValueChanged(false), - m_pPopupSettings(nullptr) -{ - assert(m_pCurrencyRatesProvider); - - m_wLogMode = db_get_w(0, CURRENCYRATES_MODULE_NAME, DB_KEY_LogMode, static_cast<WORD>(lmDisabled)); - m_sFormatHistory = CurrencyRates_DBGetStringW(NULL, CURRENCYRATES_MODULE_NAME, DB_KEY_HistoryFormat, DB_DEF_HistoryFormat); - m_bIsOnlyChangedHistory = 1 == db_get_b(0, CURRENCYRATES_MODULE_NAME, DB_KEY_HistoryCondition, 0); - - m_sLogFileName = CurrencyRates_DBGetStringW(NULL, CURRENCYRATES_MODULE_NAME, DB_KEY_LogFile); - if (true == m_sLogFileName.empty()) { - m_sLogFileName = g_pszVariableUserProfile; - m_sLogFileName += L"\\CurrencyRates\\"; - m_sLogFileName += g_pszVariableCurrencyRateName; - m_sLogFileName += L".log"; - } - - m_sFormatLogFile = CurrencyRates_DBGetStringW(NULL, CURRENCYRATES_MODULE_NAME, DB_KEY_LogFormat, DB_DEF_LogFormat); - m_bIsOnlyChangedLogFile = (1 == db_get_b(0, CURRENCYRATES_MODULE_NAME, DB_KEY_LogCondition, 0)); - - m_sPopupFormat = CurrencyRates_DBGetStringW(NULL, CURRENCYRATES_MODULE_NAME, DB_KEY_PopupFormat, DB_DEF_PopupFormat); - m_bShowPopupIfValueChanged = (1 == db_get_b(0, CURRENCYRATES_MODULE_NAME, DB_KEY_PopupCondition, 0)); -} - -CAdvProviderSettings::~CAdvProviderSettings() -{ - delete m_pPopupSettings; -} - -const ICurrencyRatesProvider* CAdvProviderSettings::GetProviderPtr() const -{ - return m_pCurrencyRatesProvider; -} - -void CAdvProviderSettings::SaveToDb() const -{ - db_set_w(0, CURRENCYRATES_MODULE_NAME, DB_KEY_LogMode, m_wLogMode); - db_set_ws(0, CURRENCYRATES_MODULE_NAME, DB_KEY_HistoryFormat, m_sFormatHistory.c_str()); - db_set_b(0, CURRENCYRATES_MODULE_NAME, DB_KEY_HistoryCondition, m_bIsOnlyChangedHistory); - db_set_ws(0, CURRENCYRATES_MODULE_NAME, DB_KEY_LogFile, m_sLogFileName.c_str()); - db_set_ws(0, CURRENCYRATES_MODULE_NAME, DB_KEY_LogFormat, m_sFormatLogFile.c_str()); - db_set_b(0, CURRENCYRATES_MODULE_NAME, DB_KEY_LogCondition, m_bIsOnlyChangedLogFile); - db_set_ws(0, CURRENCYRATES_MODULE_NAME, DB_KEY_PopupFormat, m_sPopupFormat.c_str()); - db_set_b(0, CURRENCYRATES_MODULE_NAME, DB_KEY_PopupCondition, m_bShowPopupIfValueChanged); - - if (nullptr != m_pPopupSettings) { - db_set_b(0, CURRENCYRATES_MODULE_NAME, DB_KEY_PopupColourMode, static_cast<BYTE>(m_pPopupSettings->GetColourMode())); - db_set_dw(0, CURRENCYRATES_MODULE_NAME, DB_KEY_PopupBkColour, m_pPopupSettings->GetColourBk()); - db_set_dw(0, CURRENCYRATES_MODULE_NAME, DB_KEY_PopupTextColour, m_pPopupSettings->GetColourText()); - db_set_b(0, CURRENCYRATES_MODULE_NAME, DB_KEY_PopupDelayMode, static_cast<BYTE>(m_pPopupSettings->GetDelayMode())); - db_set_w(0, CURRENCYRATES_MODULE_NAME, DB_KEY_PopupDelayTimeout, m_pPopupSettings->GetDelayTimeout()); - db_set_b(0, CURRENCYRATES_MODULE_NAME, DB_KEY_PopupHistoryFlag, m_pPopupSettings->GetHistoryFlag()); - } -} - -WORD CAdvProviderSettings::GetLogMode() const -{ - return m_wLogMode; -} - -void CAdvProviderSettings::SetLogMode(WORD wMode) -{ - m_wLogMode = wMode; -} - -tstring CAdvProviderSettings::GetHistoryFormat() const -{ - return m_sFormatHistory; -} - -void CAdvProviderSettings::SetHistoryFormat(const tstring& rsFormat) -{ - m_sFormatHistory = rsFormat; -} - -bool CAdvProviderSettings::GetHistoryOnlyChangedFlag() const -{ - return m_bIsOnlyChangedHistory; -} - -void CAdvProviderSettings::SetHistoryOnlyChangedFlag(bool bMode) -{ - m_bIsOnlyChangedHistory = bMode; -} - -tstring CAdvProviderSettings::GetLogFileName() const -{ - return m_sLogFileName; -} - -void CAdvProviderSettings::SetLogFileName(const tstring& rsFile) -{ - m_sLogFileName = rsFile; -} - -tstring CAdvProviderSettings::GetLogFormat() const -{ - return m_sFormatLogFile; -} - -void CAdvProviderSettings::SetLogFormat(const tstring& rsFormat) -{ - m_sFormatLogFile = rsFormat; -} - -bool CAdvProviderSettings::GetLogOnlyChangedFlag() const -{ - return m_bIsOnlyChangedLogFile; -} - -void CAdvProviderSettings::SetLogOnlyChangedFlag(bool bMode) -{ - m_bIsOnlyChangedLogFile = bMode; -} - -const tstring& CAdvProviderSettings::GetPopupFormat() const -{ - return m_sPopupFormat; -} - -void CAdvProviderSettings::SetPopupFormat(const tstring& val) -{ - m_sPopupFormat = val; -} - -bool CAdvProviderSettings::GetShowPopupIfValueChangedFlag() const -{ - return m_bShowPopupIfValueChanged; -} - -void CAdvProviderSettings::SetShowPopupIfValueChangedFlag(bool val) -{ - m_bShowPopupIfValueChanged = val; -} - -CPopupSettings* CAdvProviderSettings::GetPopupSettingsPtr() const -{ - if (nullptr == m_pPopupSettings) - m_pPopupSettings = new CPopupSettings(); - - return m_pPopupSettings; -} - -///////////////////////////////////////////////////////////////////////////////////////// -// class CPopupSettings - -CPopupSettings::CPopupSettings() : - m_modeColour(colourDefault), - m_modeDelay(delayFromPopup), - m_rgbBkg(GetDefColourBk()), - m_rgbText(GetDefColourText()), - m_wDelay(3), - m_bUseHistory(false) - -{ - BYTE m = db_get_b(0, CURRENCYRATES_MODULE_NAME, DB_KEY_PopupColourMode, static_cast<BYTE>(m_modeColour)); - if (m >= colourDefault && m <= colourUserDefined) - m_modeColour = static_cast<EColourMode>(m); - - m_rgbBkg = db_get_dw(0, CURRENCYRATES_MODULE_NAME, DB_KEY_PopupBkColour, m_rgbBkg); - m_rgbText = db_get_dw(0, CURRENCYRATES_MODULE_NAME, DB_KEY_PopupTextColour, m_rgbText); - - m = db_get_b(0, CURRENCYRATES_MODULE_NAME, DB_KEY_PopupDelayMode, static_cast<BYTE>(m_modeDelay)); - if (m >= delayFromPopup && m <= delayPermanent) { - m_modeDelay = static_cast<EDelayMode>(m); - } - m_wDelay = db_get_w(0, CURRENCYRATES_MODULE_NAME, DB_KEY_PopupDelayTimeout, m_wDelay); - m_bUseHistory = (1 == db_get_b(0, CURRENCYRATES_MODULE_NAME, DB_KEY_PopupHistoryFlag, m_bUseHistory)); -} - -/*static */ -COLORREF CPopupSettings::GetDefColourBk() -{ - return ::GetSysColor(COLOR_BTNFACE); -} - -/*static */ -COLORREF CPopupSettings::GetDefColourText() -{ - return ::GetSysColor(COLOR_BTNTEXT); -} - -void CPopupSettings::InitForContact(MCONTACT hContact) -{ - BYTE m = db_get_b(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CURRENCYRATE_POPUP_COLOUR_MODE, static_cast<BYTE>(m_modeColour)); - if (m >= CPopupSettings::colourDefault && m <= CPopupSettings::colourUserDefined) { - m_modeColour = static_cast<CPopupSettings::EColourMode>(m); - } - - m_rgbBkg = db_get_dw(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CURRENCYRATE_POPUP_COLOUR_BK, m_rgbBkg); - m_rgbText = db_get_dw(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CURRENCYRATE_POPUP_COLOUR_TEXT, m_rgbText); - - m = db_get_b(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CURRENCYRATE_POPUP_DELAY_MODE, static_cast<BYTE>(m_modeDelay)); - if (m >= CPopupSettings::delayFromPopup && m <= CPopupSettings::delayPermanent) { - m_modeDelay = static_cast<CPopupSettings::EDelayMode>(m); - } - m_wDelay = db_get_w(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CURRENCYRATE_POPUP_DELAY_TIMEOUT, m_wDelay); - m_bUseHistory = 1 == db_get_b(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CURRENCYRATE_POPUP_HISTORY_FLAG, m_bUseHistory); -} - -void CPopupSettings::SaveForContact(MCONTACT hContact) const -{ - db_set_b(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CURRENCYRATE_POPUP_COLOUR_MODE, static_cast<BYTE>(m_modeColour)); - db_set_dw(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CURRENCYRATE_POPUP_COLOUR_BK, m_rgbBkg); - db_set_dw(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CURRENCYRATE_POPUP_COLOUR_TEXT, m_rgbText); - db_set_b(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CURRENCYRATE_POPUP_DELAY_MODE, static_cast<BYTE>(m_modeDelay)); - db_set_w(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CURRENCYRATE_POPUP_DELAY_TIMEOUT, m_wDelay); - db_set_b(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CURRENCYRATE_POPUP_HISTORY_FLAG, m_bUseHistory); -} - -CPopupSettings::EColourMode CPopupSettings::GetColourMode() const -{ - return m_modeColour; -} - -void CPopupSettings::SetColourMode(EColourMode nMode) -{ - m_modeColour = nMode; -} - -COLORREF CPopupSettings::GetColourBk() const -{ - return m_rgbBkg; -} - -void CPopupSettings::SetColourBk(COLORREF rgb) -{ - m_rgbBkg = rgb; -} - -COLORREF CPopupSettings::GetColourText() const -{ - return m_rgbText; -} - -void CPopupSettings::SetColourText(COLORREF rgb) -{ - m_rgbText = rgb; -} - -CPopupSettings::EDelayMode CPopupSettings::GetDelayMode() const -{ - return m_modeDelay; -} - -void CPopupSettings::SetDelayMode(EDelayMode nMode) -{ - m_modeDelay = nMode; -} - -WORD CPopupSettings::GetDelayTimeout() const -{ - return m_wDelay; -} - -void CPopupSettings::SetDelayTimeout(WORD delay) -{ - m_wDelay = delay; -} - -bool CPopupSettings::GetHistoryFlag() const -{ - return m_bUseHistory; -} - -void CPopupSettings::SetHistoryFlag(bool flag) -{ - m_bUseHistory = flag; -} - -bool ShowSettingsDlg(HWND hWndParent, CAdvProviderSettings* pAdvSettings) -{ - assert(pAdvSettings); - - return (IDOK == DialogBoxParam(g_plugin.getInst(), - MAKEINTRESOURCE(IDD_PROVIDER_ADV_SETTINGS), - hWndParent, - EditSettingsPerProviderDlgProc, - reinterpret_cast<LPARAM>(pAdvSettings))); -} - -tstring GenerateLogFileName(const tstring &rsLogFilePattern, const tstring &rsCurrencyRateSymbol, int nFlags) -{ - tstring sPath = rsLogFilePattern; - if (nFlags&glfnResolveCurrencyRateName) { - assert(false == rsCurrencyRateSymbol.empty()); - - tstring::size_type n = sPath.find(g_pszVariableCurrencyRateName); - if (tstring::npos != n) { - tstring s = rsCurrencyRateSymbol; - FixInvalidChars(s); - sPath.replace(n, _countof(g_pszVariableCurrencyRateName)-1, s.c_str()); - } - } - - if (nFlags & glfnResolveUserProfile) { - wchar_t *ptszParsedName = Utils_ReplaceVarsW(sPath.c_str()); - if (ptszParsedName) { - sPath = ptszParsedName; - mir_free(ptszParsedName); - } - } - - return sPath; -} - -tstring GetContactLogFileName(MCONTACT hContact) -{ - tstring result; - - auto pProvider = GetContactProviderPtr(hContact); - if (pProvider) { - tstring sPattern; - bool bUseContactSpecific = (db_get_b(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CONTACT_SPEC_SETTINGS, 0) > 0); - if (bUseContactSpecific) - sPattern = CurrencyRates_DBGetStringW(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CURRENCYRATE_LOG_FILE); - else { - CAdvProviderSettings global_settings(pProvider); - sPattern = global_settings.GetLogFileName(); - } - - result = GenerateLogFileName(sPattern, CurrencyRates_DBGetStringW(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CURRENCYRATE_SYMBOL)); - } - - return result; -} - -tstring GetContactName(MCONTACT hContact) -{ - tstring sDescription = CurrencyRates_DBGetStringW(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CURRENCYRATE_DESCRIPTION); - if (sDescription.empty()) - sDescription = CurrencyRates_DBGetStringW(hContact, CURRENCYRATES_MODULE_NAME, DB_STR_CURRENCYRATE_SYMBOL); - - return sDescription; -} diff --git a/plugins/CurrencyRates/src/SettingsDlg.h b/plugins/CurrencyRates/src/SettingsDlg.h deleted file mode 100644 index b6b49b97bd..0000000000 --- a/plugins/CurrencyRates/src/SettingsDlg.h +++ /dev/null @@ -1,116 +0,0 @@ -#ifndef __E211E4D9_383C_43BE_A787_7EF1D585B90D_SettingsDlg_h__ -#define __E211E4D9_383C_43BE_A787_7EF1D585B90D_SettingsDlg_h__ - -class CPopupSettings -{ -public: - enum EColourMode - { - colourDefault, - colourUserDefined, - }; - - enum EDelayMode - { - delayFromPopup, - delayCustom, - delayPermanent - }; - -public: - CPopupSettings(); - - static COLORREF GetDefColourBk(); - static COLORREF GetDefColourText(); - - void InitForContact(MCONTACT hContact); - void SaveForContact(MCONTACT hContact) const; - - EColourMode GetColourMode() const; - void SetColourMode(EColourMode nMode); - - COLORREF GetColourBk() const; - void SetColourBk(COLORREF rgb); - - COLORREF GetColourText() const; - void SetColourText(COLORREF rgb); - - EDelayMode GetDelayMode() const; - void SetDelayMode(EDelayMode nMode); - - WORD GetDelayTimeout() const; - void SetDelayTimeout(WORD delay); - - bool GetHistoryFlag() const; - void SetHistoryFlag(bool flag); - -private: - EColourMode m_modeColour; - EDelayMode m_modeDelay; - COLORREF m_rgbBkg; - COLORREF m_rgbText; - WORD m_wDelay; - bool m_bUseHistory; -}; - - -class CAdvProviderSettings -{ -public: - CAdvProviderSettings(const ICurrencyRatesProvider *pCurrencyRatesProvider); - ~CAdvProviderSettings(); - - void SaveToDb() const; - - const ICurrencyRatesProvider* GetProviderPtr() const; - - WORD GetLogMode() const; - void SetLogMode(WORD wMode); - tstring GetHistoryFormat() const; - void SetHistoryFormat(const tstring& rsFormat); - bool GetHistoryOnlyChangedFlag() const; - void SetHistoryOnlyChangedFlag(bool bMode); - - tstring GetLogFileName() const; - void SetLogFileName(const tstring& rsFile); - tstring GetLogFormat() const; - void SetLogFormat(const tstring& rsFormat); - bool GetLogOnlyChangedFlag() const; - void SetLogOnlyChangedFlag(bool bMode); - - const tstring& GetPopupFormat() const; - void SetPopupFormat(const tstring& val); - - bool GetShowPopupIfValueChangedFlag() const; - void SetShowPopupIfValueChangedFlag(bool val); - - CPopupSettings* GetPopupSettingsPtr() const; - -private: - const ICurrencyRatesProvider *m_pCurrencyRatesProvider; - WORD m_wLogMode; - tstring m_sFormatHistory; - bool m_bIsOnlyChangedHistory; - tstring m_sLogFileName; - tstring m_sFormatLogFile; - bool m_bIsOnlyChangedLogFile; - tstring m_sPopupFormat; - bool m_bShowPopupIfValueChanged; - mutable CPopupSettings* m_pPopupSettings; -}; - -void ShowSettingsDlg(MCONTACT hContact); -bool ShowSettingsDlg(HWND hWndParent, CAdvProviderSettings* pAdvSettings); - -enum -{ - glfnResolveCurrencyRateName = 0x0001, - glfnResolveUserProfile = 0x0002, - glfnResolveAll = glfnResolveCurrencyRateName | glfnResolveUserProfile, -}; -tstring GenerateLogFileName(const tstring& rsLogFilePattern, const tstring& rsCurrencyRateSymbol, int nFlags = glfnResolveAll); -tstring GetContactLogFileName(MCONTACT hContact); -tstring GetContactName(MCONTACT hContact); - -#endif //__E211E4D9_383C_43BE_A787_7EF1D585B90D_SettingsDlg_h__ - diff --git a/plugins/CurrencyRates/src/WinCtrlHelper.cpp b/plugins/CurrencyRates/src/WinCtrlHelper.cpp deleted file mode 100644 index f45c4db536..0000000000 --- a/plugins/CurrencyRates/src/WinCtrlHelper.cpp +++ /dev/null @@ -1,31 +0,0 @@ -#include "stdafx.h" - -class CVariableListDlg : public CDlgBase -{ - const ICurrencyRatesProvider *m_pProvider; - -public: - CVariableListDlg(HWND hwndParent, const ICurrencyRatesProvider *pProvider) : - CDlgBase(g_plugin, IDD_DIALOG_VARIABLE_LIST), - m_pProvider(pProvider) - { - SetParent(hwndParent); - } - - bool OnInitDialog() override - { - TFormatSpecificators aSpecificators; - m_pProvider->FillFormat(aSpecificators); - - tostringstream o; - for (auto &spec : aSpecificators) - o << spec.first << '\t' << spec.second << L"\r\n"; - ::SetDlgItemText(m_hwnd, IDC_EDIT_VARIABLE, o.str().c_str()); - return true; - } -}; - -void show_variable_list(HWND hwndParent, const ICurrencyRatesProvider *pProvider) -{ - CVariableListDlg(hwndParent, pProvider).DoModal(); -} diff --git a/plugins/CurrencyRates/src/WinCtrlHelper.h b/plugins/CurrencyRates/src/WinCtrlHelper.h deleted file mode 100644 index a770072bd6..0000000000 --- a/plugins/CurrencyRates/src/WinCtrlHelper.h +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef __a05d6852_4497_4f28_85e1_48a15a170738_WinCtrlHelper_h__ -#define __a05d6852_4497_4f28_85e1_48a15a170738_WinCtrlHelper_h__ - -class ICurrencyRatesProvider; - -inline tstring get_window_text(HWND hWnd) -{ - int cBytes = ::GetWindowTextLength(hWnd); - - std::vector<wchar_t> aBuf(cBytes + 1); - LPTSTR pBuffer = &*(aBuf.begin()); - ::GetWindowText(hWnd, pBuffer, cBytes + 1); - - return tstring(pBuffer); -} - -inline void prepare_edit_ctrl_for_error(HWND hwndEdit) -{ - ::SetFocus(hwndEdit); - ::SendMessage(hwndEdit, EM_SETSEL, 0, -1); - ::SendMessage(hwndEdit, EM_SCROLLCARET, 0, 0); -} - -void show_variable_list(HWND hwndParent, const ICurrencyRatesProvider *pProvider); - -inline int CurrencyRates_MessageBox(HWND hWnd, LPCTSTR pszText, UINT nType = MB_OK) -{ - return ::MessageBox(hWnd, pszText, currencyrates_a2t(MIRANDANAME).c_str(), nType); -} - -inline void spin_set_range(HWND hwndSpin, short nLower, short nUpper) -{ - ::SendMessage(hwndSpin, UDM_SETRANGE, 0, MAKELPARAM(nUpper, nLower)); -} - - -#endif //__a05d6852_4497_4f28_85e1_48a15a170738_WinCtrlHelper_h__ diff --git a/plugins/CurrencyRates/src/resource.h b/plugins/CurrencyRates/src/resource.h deleted file mode 100644 index e1216a897c..0000000000 --- a/plugins/CurrencyRates/src/resource.h +++ /dev/null @@ -1,102 +0,0 @@ -//{{NO_DEPENDENCIES}} -// Microsoft Visual C++ generated include file. -// Used by w:\miranda-ng\plugins\CurrencyRates\res\Forex.rc -// -#define IDI_ICON_MAIN 102 -#define IDD_DIALOG_CURRENCYRATE_INFO 102 -#define IDD_DIALOG_OPT_GOOGLE 103 -#define IDI_ICON_SECTION 110 -#define IDI_ICON_CURRENCYRATE 111 -#define IDI_ICON_UP 113 -#define IDI_ICON_DOWN 114 -#define IDD_CONTACT_SETTINGS 115 -#define IDI_ICON_NOTCHANGED 116 -#define IDD_CURRENCY_CONVERTER 116 -#define IDI_ICON_CURRENCY_CONVERTER 117 -#define IDD_DIALOG_CURRENCYRATE_INFO_1 118 -#define IDI_ICON_REFRESH 118 -#define IDI_ICON_IMPORT 119 -#define IDI_ICON_EXPORT 120 -#define IDD_PROVIDER_ADV_SETTINGS 120 -#define IDI_ICON_SWAP 121 -#define IDD_DIALOG_POPUP 121 -#define IDI_ICON_MAIN1 122 -#define IDI_ICON_DISABLED 122 -#define IDD_DIALOG_VARIABLE_LIST 123 -#define IDC_EDIT_REFRESH_RATE 1002 -#define IDC_SPIN_REFRESH_RATE 1003 -#define IDC_COMBO_REFRESH_RATE 1004 -#define IDC_STATIC_CURRENCYRATE_NAME 1008 -#define IDC_SYSLINK_PROVIDER 1009 -#define IDC_STATIC_CHART 1010 -#define IDC_STATIC_CURRENCYRATE_CHART 1010 -#define IDC_COMBO_CONVERT_FROM 1011 -#define IDC_COMBO_CONVERT_INTO 1012 -#define IDC_BUTTON_ADD 1013 -#define IDC_LIST_RATES 1014 -#define IDC_BUTTON_REMOVE 1015 -#define IDC_EDIT_RATE 1016 -#define IDC_EDIT_RATE_FETCH_TIME 1017 -#define IDC_EDIT_CONTACT_LIST_FORMAT 1018 -#define IDC_EDIT_PREVIOUS_RATE 1018 -#define IDC_BUTTON_DESCRIPTION 1019 -#define IDC_CHECK_INTERNAL_HISTORY 1020 -#define IDC_EDIT_STATUS_MESSAGE_FORMAT 1020 -#define IDC_CHECK_EXTERNAL_FILE 1021 -#define IDC_EDIT_FILE_NAME 1022 -#define IDC_EDIT_TENDENCY_FORMAT 1022 -#define IDC_BUTTON_BROWSE 1023 -#define IDC_EDIT_TENDENCY_FORMAT2 1023 -#define IDC_EDIT_PERSONAL_KEY 1023 -#define IDC_STATIC_SELECT_FILE 1024 -#define IDC_EDIT_NAME 1025 -#define IDC_EDIT_HISTORY_FORMAT 1026 -#define IDC_EDIT_LOG_FILE_FORMAT 1027 -#define IDC_BUTTON_DESCRIPTION2 1028 -#define IDC_BUTTON_LOG_FILE_DESCRIPTION 1028 -#define IDC_STATIC_HISTORY_FORMAT 1029 -#define IDC_BUTTON_HISTORY_DESCRIPTION 1030 -#define IDC_STATIC_LOG_FILE_FORMAT 1031 -#define IDC_CHECK_HISTORY_CONDITION 1032 -#define IDC_CHECK_LOG_CONDITION2 1033 -#define IDC_CHECK_LOG_FILE_CONDITION 1033 -#define IDC_EDIT_VALUE 1033 -#define IDC_BUTTON_CONVERT 1034 -#define IDC_CHECK_SHOW_POPUP_ONLY_VALUE_CHANGED 1034 -#define IDC_STATIC_POPUP_FORMAT 1035 -#define IDC_EDIT_POPUP_FORMAT 1036 -#define IDC_BUTTON_LOG_FILE_DESCRIPTION2 1037 -#define IDC_BUTTON_POPUP_FORMAT_DESCRIPTION 1037 -#define IDC_EDIT_RESULT 1039 -#define IDC_BUTTON_SWAP 1060 -#define IDC_BUTTON_ADVANCED_SETTINGS 1061 -#define IDC_BUTTON_POPUP_SETTINGS 1061 -#define IDC_CHECK_CONTACT_SPECIFIC 1062 -#define IDC_RADIO_DEFAULT_COLOURS 1063 -#define IDC_CHECK_SHOW_POPUP 1064 -#define IDC_RADIO_USER_DEFINED_COLOURS 1064 -#define IDC_MFCCOLORBUTTON1 1066 -#define IDC_CHECK1 1067 -#define IDC_CHECK_DONT_USE_POPUPHISTORY 1067 -#define IDC_EDIT_FROM2 1071 -#define IDC_STATIC_PROVIDER_NAME 1071 -#define IDC_DELAY 1072 -#define IDC_EDIT1 1072 -#define IDC_EDIT_VARIABLE 1072 -#define IDC_BGCOLOR 1074 -#define IDC_TEXTCOLOR 1075 -#define IDC_PREV 1076 -#define IDC_DELAYFROMPU 1093 -#define IDC_DELAYCUSTOM 1094 -#define IDC_DELAYPERMANENT 1095 - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 126 -#define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 1073 -#define _APS_NEXT_SYMED_VALUE 101 -#endif -#endif diff --git a/plugins/CurrencyRates/src/stdafx.cxx b/plugins/CurrencyRates/src/stdafx.cxx deleted file mode 100644 index 66afad80f1..0000000000 --- a/plugins/CurrencyRates/src/stdafx.cxx +++ /dev/null @@ -1,18 +0,0 @@ -/* -Copyright (C) 2012-19 Miranda NG team (https://miranda-ng.org) - -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 version 2 -of the License. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ - -#include "stdafx.h" diff --git a/plugins/CurrencyRates/src/stdafx.h b/plugins/CurrencyRates/src/stdafx.h deleted file mode 100644 index d2bc83fd18..0000000000 --- a/plugins/CurrencyRates/src/stdafx.h +++ /dev/null @@ -1,113 +0,0 @@ -// stdafx.h : include file for standard system include files, -// or project specific include files that are used frequently, but -// are changed infrequently -// - -#pragma once - -#undef _HAS_EXCEPTIONS -#define _HAS_EXCEPTIONS 1 - -#include <windows.h> -#include <mshtml.h> -#include <comdef.h> -#include <commctrl.h> -#include <ShellAPI.h> -#include <sys/stat.h> -#include <CommDlg.h> -#include <fstream> -#include <msapi/comptr.h> - -#include <newpluginapi.h> -#include <m_database.h> -#include <win2k.h> -#include <m_xml.h> -#include <m_clist.h> -#include <m_langpack.h> -#include <m_options.h> -#include <m_protosvc.h> -#include <m_extraicons.h> -#include <m_icolib.h> -#include <m_genmenu.h> -#include <m_netlib.h> -#include <m_popup.h> -#include <m_userinfo.h> -#include <m_gui.h> - -#include <m_variables.h> -#include <m_CurrencyRates.h> -#include <m_toptoolbar.h> - -#include <boost\date_time\posix_time\posix_time.hpp> -#include <boost\date_time\c_local_time_adjustor.hpp> - -typedef std::wstring tstring; -typedef std::wostringstream tostringstream; -typedef std::wistringstream tistringstream; -typedef std::wofstream tofstream; -typedef std::wifstream tifstream; -typedef std::wostream tostream; -typedef std::wistream tistream; -typedef boost::posix_time::wtime_input_facet ttime_input_facet; -typedef boost::posix_time::wtime_facet ttime_facet; - -inline std::string currencyrates_t2a(const wchar_t* t) -{ - std::string s; - char* p = mir_u2a(t); - if (p) { - s = p; - mir_free(p); - } - return s; -} - -inline tstring currencyrates_a2t(const char* s) -{ - tstring t; - wchar_t* p = mir_a2u(s); - if (p) { - t = p; - mir_free(p); - } - return t; -} - -#include "resource.h" -#include "version.h" -#include "IconLib.h" -#include "CurrencyRateInfoDlg.h" -#include "ModuleInfo.h" -#include "DBUtils.h" -#include "HTTPSession.h" -#include "CurrencyConverter.h" -#include "WinCtrlHelper.h" -#include "ImportExport.h" -#include "ComHelper.h" -#include "Log.h" -#include "CommonOptionDlg.h" -#include "EconomicRateInfo.h" -#include "SettingsDlg.h" -#include "CreateFilePath.h" -#include "Locale.h" -#include "ExtraImages.h" -#include "IsWithinAccuracy.h" -#include "ICurrencyRatesProvider.h" -#include "CurrencyRatesProviderBase.h" - -#define CHART_IMPLEMENT -#ifdef CHART_IMPLEMENT -#include "CurrencyRateChart.h" -#include "Chart.h" -#endif -#include "IHTMLParser.h" -#include "IHTMLEngine.h" -#include "HTMLParserMS.h" - -struct CMPlugin : public PLUGIN<CMPlugin> -{ - CMPlugin(); - - int Load() override; - int Unload() override; -}; diff --git a/plugins/CurrencyRates/src/version.h b/plugins/CurrencyRates/src/version.h deleted file mode 100644 index cd73fb3f68..0000000000 --- a/plugins/CurrencyRates/src/version.h +++ /dev/null @@ -1,13 +0,0 @@ -#define __MAJOR_VERSION 0 -#define __MINOR_VERSION 2 -#define __RELEASE_NUM 0 -#define __BUILD_NUM 3 - -#include <stdver.h> - -#define __PLUGIN_NAME "Currency Rates" -#define __FILENAME "CurrencyRates.dll" -#define __DESCRIPTION "Shows currency rates." -#define __AUTHOR "Dioksin" -#define __AUTHORWEB "https://miranda-ng.org/p/CurrencyRates/" -#define __COPYRIGHT "" |