├── tests └── setup.ps1 ├── ContactPoint ├── ipphone.ico ├── Resources │ ├── mic.png │ ├── close.png │ ├── error.png │ ├── green.png │ ├── info.png │ ├── logo.png │ ├── play.gif │ ├── renew.png │ ├── btn_mute.png │ ├── minimize.png │ ├── settings.png │ ├── shade_bg.png │ ├── speaker.png │ ├── warning.png │ ├── btn-online.png │ ├── red_button.png │ ├── btn-offline.png │ ├── btn_transfer.png │ ├── call_red_big.png │ ├── splash_back.jpg │ ├── call_green_big.png │ ├── status_warning.png │ ├── status-connecting.png │ ├── status_connected.png │ ├── status_connecting.png │ ├── background_gradient.jpg │ └── status_disconnected.png ├── sounds │ ├── dial.wav │ ├── ring.wav │ ├── ringback.wav │ └── congestion.wav ├── Properties │ └── AssemblyInfo.cs ├── Services │ ├── MainFormApplicationContext.cs │ └── AudioDeviceService.cs ├── NotifyControls │ ├── AudioDeviceChangedNotifyControl.cs │ ├── AudioDevicesRemovedNotifyControl.cs │ ├── AudioDevicesAddedNotifyControl.cs │ └── AudioDeviceChangedNotifyControl.Designer.cs ├── Forms │ └── AboutForm.cs ├── Commands │ ├── StartPhoneCallCommand.cs │ └── CheckedPluginUIElementCommand.cs └── Controls │ ├── MainFormMenuItemControl.cs │ └── ColorSlider.designer.cs ├── .gitmodules ├── AudioLibrary.PjSIP ├── SharpDX.dll ├── SharpDX.DirectSound.dll ├── Properties │ └── AssemblyInfo.cs └── PjLoader.cs ├── ContactPoint.BaseDesign ├── Tweener.cs ├── Resources │ ├── close1.png │ └── ic_dialog_alert.png ├── Components │ ├── IEntityControl.cs │ └── SelectableVerticalLayoutList.cs ├── Notifications.cs ├── Properties │ └── AssemblyInfo.cs ├── app.config ├── LineSeparator.cs ├── SyncUi.cs └── BaseNotifyControls │ └── NotifyControl.cs ├── ContactPoint.Plugins.WebServer ├── HttpServer.dll ├── Templates │ ├── contactpoint.png │ └── Call.html ├── IHandler.cs ├── HandlerManager.cs ├── TemplateTools.cs └── Properties │ └── AssemblyInfo.cs ├── ContactPoint.BaseDesign.Wpf ├── Resources │ ├── close.png │ ├── edit.png │ ├── Entypo.ttf │ ├── cancel.png │ ├── close1.png │ ├── contacts.png │ ├── corner.png │ ├── expander.png │ ├── ipphone.ico │ ├── minimize.png │ ├── button_up.png │ ├── contacts1.png │ ├── icon-lock.png │ ├── hangup16_16.png │ ├── incoming20_20.png │ ├── logo_small4.png │ ├── incoming2x20_20.png │ ├── logo_small_white.png │ └── Entypo-license.txt ├── Controls │ ├── CallButton.xaml.cs │ └── CircleButton.xaml.cs ├── Properties │ └── AssemblyInfo.cs ├── AboutWindow.xaml.cs ├── CoreDesign │ ├── PhoneWindow.xaml │ ├── PhoneWindow.xaml.cs │ └── PhoneView.xaml.cs ├── ViewModel.cs ├── SipLog.xaml.cs ├── DelegateCommand.cs ├── CommonStyles.xaml └── WindowHelper.cs ├── ContactPoint.Plugins.Pause ├── Resources │ └── pause.png ├── PauseService.cs └── Properties │ └── AssemblyInfo.cs ├── ExceptionReporter ├── ExceptionReporter │ ├── warning.ico │ ├── Resources │ │ └── warning (1).png │ ├── ICSharpCode.SharpZipLib.dll │ ├── Properties │ │ ├── AssemblyInfo.cs │ │ └── Settings.settings │ ├── SystemInfo │ │ ├── SysInfoQueries.cs │ │ └── SysInfoQuery.cs │ ├── IInternalExceptionView.cs │ ├── Config │ │ └── FileReader.cs │ ├── Core │ │ ├── IClipboard.cs │ │ ├── AssemblyReferenceDigger.cs │ │ ├── ExceptionReport.cs │ │ ├── ExceptionReporterExtensions.cs │ │ └── Disposable.cs │ ├── Web References │ │ └── ua.com.artpoint.bug │ │ │ ├── Reference.map │ │ │ └── Report.disco │ ├── Mail │ │ └── EmailTextBuilder.cs │ ├── ViewFactory.cs │ └── IExceptionReportView.cs └── Win32Mapi │ ├── Properties │ └── AssemblyInfo.cs │ └── Win32Mapi.csproj ├── ContactPoint.Plugins.CallTools ├── Resources │ ├── 1line.png │ ├── pause.png │ ├── btn-online.png │ ├── coffee02.png │ ├── coffee_01.png │ ├── service01.png │ ├── Speaker (1).png │ ├── btn-offline.png │ ├── call_red_big.png │ └── call_green_big.png ├── Properties │ └── AssemblyInfo.cs ├── Pause │ └── PauseButtonUiElement.cs ├── IncomingCallNotificationPlugin.cs ├── AutoAnswer │ └── AutoAnswerService.cs ├── CallNotifyWindow │ └── CallNotifyWindowService.cs └── OneLine │ ├── OneLineService.cs │ └── OneLinePluginUIElement.cs ├── ContactPoint.Plugins.CallsLog ├── Resources │ ├── delete.png │ ├── address-book.png │ ├── ic_call_log_list_incoming_call.png │ └── ic_call_log_list_outgoing_call.png ├── Properties │ └── AssemblyInfo.cs └── CallEntry.cs ├── ContactPoint.Plugins.GoogleContacts ├── zlib.x86.dll ├── Newtonsoft.Json.dll ├── Google.GData.Client.dll ├── Google.GData.Contacts.dll ├── Google.GData.Extensions.dll ├── Model │ ├── ContactTag.cs │ ├── ContactEmail.cs │ ├── ContactPhone.cs │ ├── Contact.cs │ └── Versionable.cs ├── Properties │ └── AssemblyInfo.cs └── GoogleContactsPlugin.cs ├── ContactPoint.Plugins.OneLine ├── Resources │ └── 1line.png └── Properties │ └── AssemblyInfo.cs ├── ContactPoint.Plugins.ContactsUi ├── Resources │ └── contacts1.png ├── Properties │ └── AssemblyInfo.cs ├── ViewModels │ ├── ViewModel.cs │ ├── ContactPhoneViewModel.cs │ └── ContactEmailViewModel.cs ├── Controls │ ├── AddPhoneEmailControl.cs │ ├── TextDetailsControl.cs │ └── TextBoxValidationHelper.cs ├── ContactsUiService.cs └── Forms │ └── TagForm.cs ├── ContactPoint.Common ├── Contacts │ ├── IEntity.cs │ ├── IContactTag.cs │ ├── Local │ │ ├── IContactPhoneLocal.cs │ │ ├── IContactEmailLocal.cs │ │ ├── IContactInfoLocal.cs │ │ └── IContactTagLocal.cs │ ├── IContactEmail.cs │ ├── IContactPhone.cs │ ├── IContactInfo.cs │ ├── IVersionable.cs │ └── IContactsManager.cs ├── SIP │ ├── ISipMessenger.cs │ ├── SipTransportType.cs │ ├── SipDTMFMode.cs │ ├── Account │ │ ├── PresenceStatusCode.cs │ │ └── SipAccountState.cs │ ├── ISipCodec.cs │ └── ISip.cs ├── CallManager │ ├── CallAction.cs │ ├── ICallStateInfo.cs │ ├── IHeader.cs │ ├── CallRemoveReason.cs │ ├── CallState.cs │ └── IHeaderCollection.cs ├── Properties │ └── AssemblyInfo.cs ├── Audio │ ├── IAudioPlayer.cs │ ├── AudioDeviceType.cs │ └── IAudioDevice.cs ├── PluginManager │ ├── IPluginAction.cs │ ├── IPluginInformationProvider.cs │ ├── IPluginInformation.cs │ ├── IPlugin.cs │ ├── IPluginManager.cs │ ├── IPluginCheckedUIElement.cs │ └── PluginAttribute.cs ├── IUi.cs ├── CommonDelegates.cs ├── ContactPoint.Common.csproj ├── Settings.cs ├── IService.cs ├── ICore.cs └── CommonExtensions.cs ├── SipekSDK └── SipekSdk │ ├── Native.cs │ ├── Properties │ └── AssemblyInfo.cs │ └── SipekSdk.csproj ├── ContactPoint.Plugins.MySqlAddressBook ├── packages.config ├── SqliteExtensions.cs ├── AddressBook │ ├── ContactTag.cs │ ├── ContactEmail.cs │ ├── ContactPhone.cs │ ├── ContactInfo.cs │ └── Versionable.cs ├── app.config ├── Properties │ └── AssemblyInfo.cs ├── SqlConnectionManager.cs ├── server_script.sql └── MySqlAddressBookPlugin.cs ├── AudioLibrary ├── Properties │ ├── AssemblyInfo.cs │ ├── Settings.settings │ └── Settings.Designer.cs └── Interfaces │ ├── IAudioPlayer.cs │ ├── IAudio.cs │ └── IAudioDevice.cs ├── ContactPoint.Core ├── Properties │ └── AssemblyInfo.cs ├── Security │ ├── SecurityTokenContent.cs │ └── SecurityLicenseContent.cs ├── Settings │ ├── Loaders │ │ ├── ISettingsLoader.cs │ │ └── SettingsLoaderV3.cs │ ├── CoreSettings.cs │ └── DataStructures │ │ ├── SettingsRawItem.cs │ │ └── TypeHelpers.cs ├── CallManager │ ├── CallStateInfo.cs │ └── Header.cs ├── Audio │ ├── AudioLoader.cs │ └── AudioPlayerProxy.cs ├── CoreLoader.cs ├── SIP │ ├── SipMessenger.cs │ └── SipCodec.cs ├── ContactPoint.Core.csproj ├── PluginManager │ └── JObjectReadOnlySettingsManagerSection.cs └── Ui.cs ├── ContactPoint.Tests.WinForms ├── Properties │ └── AssemblyInfo.cs └── ContactPoint.Tests.WinForms.csproj ├── AudioLibrary.WMME ├── Properties │ └── AssemblyInfo.cs ├── AudioLoader.cs ├── MixerException.cs ├── MuteAudioLineControl.cs ├── VolumeAudioLineControl.cs ├── AudioDeviceDescriptor.cs └── AudioLibrary.WMME.csproj ├── ContactPoint.Contacts ├── Properties │ └── AssemblyInfo.cs ├── SqliteExtensions.cs ├── EnsuredResourceCriticalOperation.cs ├── Fakes │ └── VersionGeneratorFake.cs ├── Schemas │ ├── SchemaV2.cs │ └── SchemaV1.cs └── Locals │ └── VersionableLocal.cs ├── ContactPoint.Plugins.HotKeys ├── Properties │ └── AssemblyInfo.cs └── Actions │ └── UserAction.cs ├── ContactPoint.Plugins.LocalAddressBook ├── Properties │ └── AssemblyInfo.cs ├── Contracts │ ├── ContactEmail.cs │ ├── ContactPhone.cs │ └── ContactTag.cs ├── ContactPoint.Plugins.LocalAddressBook.csproj └── LocalAddressBookPlugin.cs ├── ContactPoint.Plugins.PauseNotifications ├── Properties │ └── AssemblyInfo.cs └── ContactPoint.Plugins.PauseNotifications.csproj ├── ContactPoint.vsext ├── .editorconfig ├── ContactPoint.Plugins.WebBrowser ├── Properties │ └── AssemblyInfo.cs ├── Browser.cs └── ContactPoint.Plugins.WebBrowser.csproj ├── CommonAssemblyInfo.cs ├── IPPhone.Build.nuspec ├── IPPhone.Common.nuspec ├── IPPhone.Plugins.HotKeys.nuspec ├── IPPhone.Plugins.CallsLog.nuspec ├── IPPhone.Plugins.CallTools.nuspec ├── IPPhone.Plugins.ContactsUI.nuspec ├── IPPhone.Plugins.WebBrowser.nuspec ├── IPPhone.Plugins.LocalAddressbook.nuspec ├── IPPhone.Plugins.PauseNotifications.nuspec ├── IPPhone.Contacts.nuspec └── README.md /tests/setup.ps1: -------------------------------------------------------------------------------- 1 | npm install -g appium 2 | -------------------------------------------------------------------------------- /ContactPoint/ipphone.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint/ipphone.ico -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "docs"] 2 | path = docs 3 | url = https://github.com/ipphone/core-docs.git 4 | -------------------------------------------------------------------------------- /AudioLibrary.PjSIP/SharpDX.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/AudioLibrary.PjSIP/SharpDX.dll -------------------------------------------------------------------------------- /ContactPoint/Resources/mic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint/Resources/mic.png -------------------------------------------------------------------------------- /ContactPoint/sounds/dial.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint/sounds/dial.wav -------------------------------------------------------------------------------- /ContactPoint/sounds/ring.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint/sounds/ring.wav -------------------------------------------------------------------------------- /ContactPoint/Resources/close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint/Resources/close.png -------------------------------------------------------------------------------- /ContactPoint/Resources/error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint/Resources/error.png -------------------------------------------------------------------------------- /ContactPoint/Resources/green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint/Resources/green.png -------------------------------------------------------------------------------- /ContactPoint/Resources/info.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint/Resources/info.png -------------------------------------------------------------------------------- /ContactPoint/Resources/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint/Resources/logo.png -------------------------------------------------------------------------------- /ContactPoint/Resources/play.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint/Resources/play.gif -------------------------------------------------------------------------------- /ContactPoint/Resources/renew.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint/Resources/renew.png -------------------------------------------------------------------------------- /ContactPoint/sounds/ringback.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint/sounds/ringback.wav -------------------------------------------------------------------------------- /ContactPoint.BaseDesign/Tweener.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint.BaseDesign/Tweener.cs -------------------------------------------------------------------------------- /ContactPoint/Resources/btn_mute.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint/Resources/btn_mute.png -------------------------------------------------------------------------------- /ContactPoint/Resources/minimize.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint/Resources/minimize.png -------------------------------------------------------------------------------- /ContactPoint/Resources/settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint/Resources/settings.png -------------------------------------------------------------------------------- /ContactPoint/Resources/shade_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint/Resources/shade_bg.png -------------------------------------------------------------------------------- /ContactPoint/Resources/speaker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint/Resources/speaker.png -------------------------------------------------------------------------------- /ContactPoint/Resources/warning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint/Resources/warning.png -------------------------------------------------------------------------------- /ContactPoint/sounds/congestion.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint/sounds/congestion.wav -------------------------------------------------------------------------------- /ContactPoint/Resources/btn-online.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint/Resources/btn-online.png -------------------------------------------------------------------------------- /ContactPoint/Resources/red_button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint/Resources/red_button.png -------------------------------------------------------------------------------- /ContactPoint/Resources/btn-offline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint/Resources/btn-offline.png -------------------------------------------------------------------------------- /ContactPoint/Resources/btn_transfer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint/Resources/btn_transfer.png -------------------------------------------------------------------------------- /ContactPoint/Resources/call_red_big.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint/Resources/call_red_big.png -------------------------------------------------------------------------------- /ContactPoint/Resources/splash_back.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint/Resources/splash_back.jpg -------------------------------------------------------------------------------- /AudioLibrary.PjSIP/SharpDX.DirectSound.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/AudioLibrary.PjSIP/SharpDX.DirectSound.dll -------------------------------------------------------------------------------- /ContactPoint/Resources/call_green_big.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint/Resources/call_green_big.png -------------------------------------------------------------------------------- /ContactPoint/Resources/status_warning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint/Resources/status_warning.png -------------------------------------------------------------------------------- /ContactPoint.BaseDesign/Resources/close1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint.BaseDesign/Resources/close1.png -------------------------------------------------------------------------------- /ContactPoint.Plugins.WebServer/HttpServer.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint.Plugins.WebServer/HttpServer.dll -------------------------------------------------------------------------------- /ContactPoint/Resources/status-connecting.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint/Resources/status-connecting.png -------------------------------------------------------------------------------- /ContactPoint/Resources/status_connected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint/Resources/status_connected.png -------------------------------------------------------------------------------- /ContactPoint/Resources/status_connecting.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint/Resources/status_connecting.png -------------------------------------------------------------------------------- /ContactPoint.BaseDesign.Wpf/Resources/close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint.BaseDesign.Wpf/Resources/close.png -------------------------------------------------------------------------------- /ContactPoint.BaseDesign.Wpf/Resources/edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint.BaseDesign.Wpf/Resources/edit.png -------------------------------------------------------------------------------- /ContactPoint.Plugins.Pause/Resources/pause.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint.Plugins.Pause/Resources/pause.png -------------------------------------------------------------------------------- /ContactPoint/Resources/background_gradient.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint/Resources/background_gradient.jpg -------------------------------------------------------------------------------- /ContactPoint/Resources/status_disconnected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint/Resources/status_disconnected.png -------------------------------------------------------------------------------- /ExceptionReporter/ExceptionReporter/warning.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ExceptionReporter/ExceptionReporter/warning.ico -------------------------------------------------------------------------------- /ContactPoint.BaseDesign.Wpf/Resources/Entypo.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint.BaseDesign.Wpf/Resources/Entypo.ttf -------------------------------------------------------------------------------- /ContactPoint.BaseDesign.Wpf/Resources/cancel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint.BaseDesign.Wpf/Resources/cancel.png -------------------------------------------------------------------------------- /ContactPoint.BaseDesign.Wpf/Resources/close1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint.BaseDesign.Wpf/Resources/close1.png -------------------------------------------------------------------------------- /ContactPoint.BaseDesign.Wpf/Resources/contacts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint.BaseDesign.Wpf/Resources/contacts.png -------------------------------------------------------------------------------- /ContactPoint.BaseDesign.Wpf/Resources/corner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint.BaseDesign.Wpf/Resources/corner.png -------------------------------------------------------------------------------- /ContactPoint.BaseDesign.Wpf/Resources/expander.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint.BaseDesign.Wpf/Resources/expander.png -------------------------------------------------------------------------------- /ContactPoint.BaseDesign.Wpf/Resources/ipphone.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint.BaseDesign.Wpf/Resources/ipphone.ico -------------------------------------------------------------------------------- /ContactPoint.BaseDesign.Wpf/Resources/minimize.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint.BaseDesign.Wpf/Resources/minimize.png -------------------------------------------------------------------------------- /ContactPoint.Plugins.CallTools/Resources/1line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint.Plugins.CallTools/Resources/1line.png -------------------------------------------------------------------------------- /ContactPoint.Plugins.CallTools/Resources/pause.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint.Plugins.CallTools/Resources/pause.png -------------------------------------------------------------------------------- /ContactPoint.Plugins.CallsLog/Resources/delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint.Plugins.CallsLog/Resources/delete.png -------------------------------------------------------------------------------- /ContactPoint.Plugins.GoogleContacts/zlib.x86.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint.Plugins.GoogleContacts/zlib.x86.dll -------------------------------------------------------------------------------- /ContactPoint.Plugins.OneLine/Resources/1line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint.Plugins.OneLine/Resources/1line.png -------------------------------------------------------------------------------- /ContactPoint.BaseDesign.Wpf/Resources/button_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint.BaseDesign.Wpf/Resources/button_up.png -------------------------------------------------------------------------------- /ContactPoint.BaseDesign.Wpf/Resources/contacts1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint.BaseDesign.Wpf/Resources/contacts1.png -------------------------------------------------------------------------------- /ContactPoint.BaseDesign.Wpf/Resources/icon-lock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint.BaseDesign.Wpf/Resources/icon-lock.png -------------------------------------------------------------------------------- /ContactPoint.BaseDesign.Wpf/Resources/hangup16_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint.BaseDesign.Wpf/Resources/hangup16_16.png -------------------------------------------------------------------------------- /ContactPoint.BaseDesign.Wpf/Resources/incoming20_20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint.BaseDesign.Wpf/Resources/incoming20_20.png -------------------------------------------------------------------------------- /ContactPoint.BaseDesign.Wpf/Resources/logo_small4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint.BaseDesign.Wpf/Resources/logo_small4.png -------------------------------------------------------------------------------- /ContactPoint.BaseDesign/Resources/ic_dialog_alert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint.BaseDesign/Resources/ic_dialog_alert.png -------------------------------------------------------------------------------- /ContactPoint.Plugins.CallTools/Resources/btn-online.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint.Plugins.CallTools/Resources/btn-online.png -------------------------------------------------------------------------------- /ContactPoint.Plugins.CallTools/Resources/coffee02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint.Plugins.CallTools/Resources/coffee02.png -------------------------------------------------------------------------------- /ContactPoint.Plugins.CallTools/Resources/coffee_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint.Plugins.CallTools/Resources/coffee_01.png -------------------------------------------------------------------------------- /ContactPoint.Plugins.CallTools/Resources/service01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint.Plugins.CallTools/Resources/service01.png -------------------------------------------------------------------------------- /ContactPoint.Plugins.ContactsUi/Resources/contacts1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint.Plugins.ContactsUi/Resources/contacts1.png -------------------------------------------------------------------------------- /ContactPoint.Plugins.GoogleContacts/Newtonsoft.Json.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint.Plugins.GoogleContacts/Newtonsoft.Json.dll -------------------------------------------------------------------------------- /ContactPoint.BaseDesign.Wpf/Resources/incoming2x20_20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint.BaseDesign.Wpf/Resources/incoming2x20_20.png -------------------------------------------------------------------------------- /ContactPoint.Plugins.CallTools/Resources/Speaker (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint.Plugins.CallTools/Resources/Speaker (1).png -------------------------------------------------------------------------------- /ContactPoint.Plugins.CallTools/Resources/btn-offline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint.Plugins.CallTools/Resources/btn-offline.png -------------------------------------------------------------------------------- /ContactPoint.Plugins.CallTools/Resources/call_red_big.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint.Plugins.CallTools/Resources/call_red_big.png -------------------------------------------------------------------------------- /ContactPoint.Plugins.CallsLog/Resources/address-book.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint.Plugins.CallsLog/Resources/address-book.png -------------------------------------------------------------------------------- /ContactPoint.Plugins.WebServer/Templates/contactpoint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint.Plugins.WebServer/Templates/contactpoint.png -------------------------------------------------------------------------------- /ContactPoint.BaseDesign.Wpf/Resources/logo_small_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint.BaseDesign.Wpf/Resources/logo_small_white.png -------------------------------------------------------------------------------- /ContactPoint.Plugins.CallTools/Resources/call_green_big.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint.Plugins.CallTools/Resources/call_green_big.png -------------------------------------------------------------------------------- /ContactPoint.Plugins.GoogleContacts/Google.GData.Client.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint.Plugins.GoogleContacts/Google.GData.Client.dll -------------------------------------------------------------------------------- /ContactPoint.Plugins.GoogleContacts/Google.GData.Contacts.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint.Plugins.GoogleContacts/Google.GData.Contacts.dll -------------------------------------------------------------------------------- /ExceptionReporter/ExceptionReporter/Resources/warning (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ExceptionReporter/ExceptionReporter/Resources/warning (1).png -------------------------------------------------------------------------------- /ContactPoint.Common/Contacts/IEntity.cs: -------------------------------------------------------------------------------- 1 | namespace ContactPoint.Common.Contacts 2 | { 3 | public interface IEntity 4 | { 5 | long Id { get; } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /ContactPoint.Plugins.GoogleContacts/Google.GData.Extensions.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint.Plugins.GoogleContacts/Google.GData.Extensions.dll -------------------------------------------------------------------------------- /ExceptionReporter/ExceptionReporter/ICSharpCode.SharpZipLib.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ExceptionReporter/ExceptionReporter/ICSharpCode.SharpZipLib.dll -------------------------------------------------------------------------------- /SipekSDK/SipekSdk/Native.cs: -------------------------------------------------------------------------------- 1 | namespace Sipek 2 | { 3 | public static class Native 4 | { 5 | public const string PJSIP_DLL = @"pjsipDll.dll"; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /ContactPoint.Plugins.CallsLog/Resources/ic_call_log_list_incoming_call.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint.Plugins.CallsLog/Resources/ic_call_log_list_incoming_call.png -------------------------------------------------------------------------------- /ContactPoint.Plugins.CallsLog/Resources/ic_call_log_list_outgoing_call.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipphone/core/HEAD/ContactPoint.Plugins.CallsLog/Resources/ic_call_log_list_outgoing_call.png -------------------------------------------------------------------------------- /ContactPoint.BaseDesign/Components/IEntityControl.cs: -------------------------------------------------------------------------------- 1 | namespace ContactPoint.BaseDesign.Components 2 | { 3 | public interface IEntityControl 4 | { 5 | T Entity { get; set; } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /ContactPoint.Plugins.MySqlAddressBook/packages.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /ContactPoint.BaseDesign/Notifications.cs: -------------------------------------------------------------------------------- 1 | namespace ContactPoint.BaseDesign 2 | { 3 | public static class Notifications 4 | { 5 | public const string IncomingCall = "IncomingCallNotification"; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /ContactPoint.Common/SIP/ISipMessenger.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace ContactPoint.Common.SIP 4 | { 5 | public interface ISipMessenger 6 | { 7 | event Action MessageReceived; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /ContactPoint.BaseDesign.Wpf/Resources/Entypo-license.txt: -------------------------------------------------------------------------------- 1 | Entypo (http://www.entypo.com/) is created by Daniel Bruce and released under the Creative Commons, Share Alike/Attribution license. 2 | 3 | http://creativecommons.org/licenses/by-sa/3.0/ -------------------------------------------------------------------------------- /ContactPoint.Common/CallManager/CallAction.cs: -------------------------------------------------------------------------------- 1 | namespace ContactPoint.Common 2 | { 3 | public enum CallAction 4 | { 5 | NULL, 6 | Make, 7 | Answer, 8 | Transfer, 9 | Hangup 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /ContactPoint/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.InteropServices; 3 | 4 | [assembly: AssemblyTitle("IP Phone")] 5 | [assembly: AssemblyDescription("ContactPoint IP Phone")] 6 | [assembly: ComVisible(false)] 7 | -------------------------------------------------------------------------------- /ContactPoint.Common/CallManager/ICallStateInfo.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace ContactPoint.Common 4 | { 5 | public interface ICallStateInfo 6 | { 7 | CallState State { get; } 8 | TimeSpan Duration { get; } 9 | } 10 | } -------------------------------------------------------------------------------- /AudioLibrary/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.InteropServices; 3 | 4 | [assembly: AssemblyTitle("AudioLibrary.dll")] 5 | [assembly: AssemblyDescription("ContactPoint IP Phone Common Audio")] 6 | [assembly: ComVisible(false)] 7 | -------------------------------------------------------------------------------- /SipekSDK/SipekSdk/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.InteropServices; 3 | 4 | [assembly: AssemblyTitle("SipekSDK.dll")] 5 | [assembly: AssemblyDescription("ContactPoint IP Phone Sipek SDK")] 6 | [assembly: ComVisible(false)] 7 | -------------------------------------------------------------------------------- /ContactPoint.Core/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.InteropServices; 3 | 4 | [assembly: AssemblyTitle("ContactPoint.Core.dll")] 5 | [assembly: AssemblyDescription("ContactPoint IP Phone Core")] 6 | [assembly: ComVisible(false)] 7 | -------------------------------------------------------------------------------- /ContactPoint.Common/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.InteropServices; 3 | 4 | [assembly: AssemblyTitle("ContactPoint.Common.dll")] 5 | [assembly: AssemblyDescription("ContactPoint IP Phone Common")] 6 | [assembly: ComVisible(false)] 7 | -------------------------------------------------------------------------------- /ContactPoint.Tests.WinForms/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | [assembly: ComVisible(false)] 6 | 7 | [assembly: Guid("e867edfc-3f38-48b0-8ab7-d894c743c1f7")] 8 | -------------------------------------------------------------------------------- /ExceptionReporter/Win32Mapi/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.InteropServices; 3 | 4 | [assembly: AssemblyTitle("Win32MAPI.dll")] 5 | [assembly: AssemblyDescription("ContactPoint IP Phone Win32 MAPI")] 6 | [assembly: ComVisible(false)] 7 | -------------------------------------------------------------------------------- /AudioLibrary.WMME/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.InteropServices; 3 | 4 | [assembly: AssemblyTitle("AudioLibrary.WMME.dll")] 5 | [assembly: AssemblyDescription("ContactPoint IP Phone WMME Audio Driver")] 6 | [assembly: ComVisible(false)] 7 | -------------------------------------------------------------------------------- /ContactPoint.BaseDesign.Wpf/Controls/CallButton.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace ContactPoint.BaseDesign.Wpf.Controls 2 | { 3 | public partial class CallButton 4 | { 5 | public CallButton() 6 | { 7 | InitializeComponent(); 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /AudioLibrary.PjSIP/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.InteropServices; 3 | 4 | [assembly: AssemblyTitle("AudioLibrary.PjSIP.dll")] 5 | [assembly: AssemblyDescription("ContactPoint IP Phone PjSIP Audio Driver")] 6 | [assembly: ComVisible(false)] 7 | -------------------------------------------------------------------------------- /ContactPoint.Contacts/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.InteropServices; 3 | 4 | [assembly: AssemblyTitle("ContactPoint.Contacts.dll")] 5 | [assembly: AssemblyDescription("ContactPoint IP Phone Contacts Book")] 6 | [assembly: ComVisible(false)] 7 | -------------------------------------------------------------------------------- /ContactPoint.Common/SIP/SipTransportType.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace ContactPoint.Common.SIP 6 | { 7 | public enum SipTransportType : int 8 | { 9 | UDP = 0, 10 | TCP = 1 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /AudioLibrary/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ContactPoint.BaseDesign.Wpf/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.InteropServices; 3 | 4 | [assembly: AssemblyTitle("ContactPoint.BaseDesign.WPF.dll")] 5 | [assembly: AssemblyDescription("ContactPoint IP Phone Base UI for WPF")] 6 | [assembly: ComVisible(false)] 7 | -------------------------------------------------------------------------------- /ContactPoint.BaseDesign/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.InteropServices; 3 | 4 | [assembly: AssemblyTitle("ContactPoint.BaseDesign.dll")] 5 | [assembly: AssemblyDescription("ContactPoint IP Phone Base UI for Windows Forms")] 6 | [assembly: ComVisible(false)] 7 | -------------------------------------------------------------------------------- /ContactPoint.Plugins.HotKeys/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.InteropServices; 3 | 4 | [assembly: AssemblyTitle("ContactPoint.Plugins.HotKeys.dll")] 5 | [assembly: AssemblyDescription("ContactPoint IP Phone Hot Keys Plugin")] 6 | [assembly: ComVisible(false)] 7 | -------------------------------------------------------------------------------- /ExceptionReporter/ExceptionReporter/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.InteropServices; 3 | 4 | [assembly: AssemblyTitle("ExceptionReporter.Core.dll")] 5 | [assembly: AssemblyDescription("ContactPoint IP Phone Exception Reporter")] 6 | [assembly: ComVisible(false)] 7 | -------------------------------------------------------------------------------- /ContactPoint.Common/CallManager/IHeader.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace ContactPoint.Common.CallManager 6 | { 7 | public interface IHeader 8 | { 9 | string Name { get; } 10 | string Value { get; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /ContactPoint.Plugins.CallTools/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.InteropServices; 3 | 4 | [assembly: AssemblyTitle("ContactPoint.Plugins.CallTools.dll")] 5 | [assembly: AssemblyDescription("ContactPoint IP Phone Call Tools Plugin")] 6 | [assembly: ComVisible(false)] 7 | -------------------------------------------------------------------------------- /AudioLibrary/Interfaces/IAudioPlayer.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace AudioLibrary.Interfaces 6 | { 7 | public interface IAudioPlayer : IDisposable 8 | { 9 | void Play(string fileName); 10 | void Stop(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /ContactPoint.Plugins.ContactsUi/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.InteropServices; 3 | 4 | [assembly: AssemblyTitle("ContactPoint.Plugins.ContactsUI.dll")] 5 | [assembly: AssemblyDescription("ContactPoint IP Phone Contacts Book UI Plugin")] 6 | [assembly: ComVisible(false)] 7 | -------------------------------------------------------------------------------- /ContactPoint.Common/Audio/IAudioPlayer.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace ContactPoint.Common.Audio 6 | { 7 | public interface IAudioPlayer : IDisposable 8 | { 9 | void Play(string filename); 10 | void Stop(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /ContactPoint.Common/SIP/SipDTMFMode.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace ContactPoint.Common.SIP 6 | { 7 | public enum SipDTMFMode : int 8 | { 9 | RFC2833 = 0, 10 | Transparent = 1, 11 | OutOfBand = 2 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /ContactPoint.Plugins.LocalAddressBook/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.InteropServices; 3 | 4 | [assembly: AssemblyTitle("ContactPoint.Plugins.LocalAddressBook.dll")] 5 | [assembly: AssemblyDescription("ContactPoint IP Phone Local Contacts Book Plugin")] 6 | [assembly: ComVisible(false)] 7 | -------------------------------------------------------------------------------- /ContactPoint.Plugins.PauseNotifications/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.InteropServices; 3 | 4 | [assembly: AssemblyTitle("ContactPoint.Plugins.PauseNotifications.dll")] 5 | [assembly: AssemblyDescription("ContactPoint IP Phone Pause Notifier Plugin")] 6 | [assembly: ComVisible(false)] 7 | -------------------------------------------------------------------------------- /ContactPoint.Common/SIP/Account/PresenceStatusCode.cs: -------------------------------------------------------------------------------- 1 | namespace ContactPoint.Common.SIP.Account 2 | { 3 | public enum PresenceStatusCode : int 4 | { 5 | Available = 0, 6 | Away = 1, 7 | DND = 2, 8 | NotAvailable = 3, 9 | Offline = 4, 10 | Unknown = -1 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /ContactPoint.vsext: -------------------------------------------------------------------------------- 1 | { 2 | "extensions": { 3 | "mandatory": [ 4 | { 5 | "name": "EditorConfig", 6 | "link": "http://editorconfig.org/", 7 | "productId": "EditorConfig..5cd8e6a2-be43-4fcc-a345-40f6cc1e9c9f" 8 | } 9 | ] 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_style = space 5 | indent_size = 4 6 | tab_width = 4 7 | max_line_length = 180 8 | charset = utf-8 9 | end_of_line = crlf 10 | insert_final_newline = true 11 | 12 | [*.{js,json}] 13 | indent_size = 2 14 | tab_width = 2 15 | 16 | [*.{xml,csproj,conf,config,yml,yaml}] 17 | indent_size = 2 18 | tab_width = 2 19 | -------------------------------------------------------------------------------- /ContactPoint.Plugins.CallsLog/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.InteropServices; 3 | 4 | [assembly: AssemblyTitle("ContactPoint.Plugins.CallsLog.dll")] 5 | [assembly: AssemblyDescription("ContactPoint IP Phone Call Log UI Plugin")] 6 | [assembly: ComVisible(true)] 7 | [assembly: Guid("27329ad9-82d6-42e0-86bc-5970c2c3e685")] 8 | -------------------------------------------------------------------------------- /ContactPoint.Plugins.WebBrowser/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.InteropServices; 3 | 4 | [assembly: AssemblyTitle("ContactPoint.Plugins.WebBrowser.dll")] 5 | [assembly: AssemblyDescription("ContactPoint IP Phone WEB Browser Plugin")] 6 | [assembly: ComVisible(true)] 7 | [assembly: Guid("d23dad40-1b0d-4cd4-a906-4e143993bc08")] 8 | -------------------------------------------------------------------------------- /ContactPoint.Common/CallManager/CallRemoveReason.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace ContactPoint.Common 6 | { 7 | public enum CallRemoveReason 8 | { 9 | NULL, 10 | UserHangup, 11 | RemoteHangup, 12 | Transfer, 13 | Busy, 14 | InvalidData 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /ContactPoint.Common/Contacts/IContactTag.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | 6 | namespace ContactPoint.Common.Contacts 7 | { 8 | public interface IContactTag : IVersionable 9 | { 10 | string Key { get; } 11 | string Name { get; set; } 12 | string Color { get; set; } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /ContactPoint.Common/CallManager/CallState.cs: -------------------------------------------------------------------------------- 1 | namespace ContactPoint.Common 2 | { 3 | public enum CallState : int 4 | { 5 | NULL = 0x0, 6 | IDLE = 0x1, 7 | CONNECTING = 0x2, 8 | ALERTING = 0x4, 9 | ACTIVE = 0x8, 10 | RELEASED = 0x10, 11 | INCOMING = 0x20, 12 | HOLDING = 0x40, 13 | TERMINATED = 0x80 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /ContactPoint.BaseDesign.Wpf/AboutWindow.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | namespace ContactPoint.BaseDesign.Wpf 4 | { 5 | /// 6 | /// Interaction logic for AboutWindow.xaml 7 | /// 8 | public partial class AboutWindow : Window 9 | { 10 | public AboutWindow() 11 | { 12 | InitializeComponent(); 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /ContactPoint.Common/Contacts/Local/IContactPhoneLocal.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | 6 | namespace ContactPoint.Common.Contacts.Local 7 | { 8 | public interface IContactPhoneLocal : IContactPhone, IEntity 9 | { 10 | void UpdateFrom(IContactPhone phoneNumber); 11 | void UpdateKey(string key); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /ContactPoint.Common/Audio/AudioDeviceType.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace ContactPoint.Common.Audio 6 | { 7 | /// 8 | /// Indicating is this input or output device (record or playback) 9 | /// 10 | public enum AudioDeviceType 11 | { 12 | Playback = 0, 13 | Recording = 1 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /ContactPoint.Common/Contacts/Local/IContactEmailLocal.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | 6 | namespace ContactPoint.Common.Contacts.Local 7 | { 8 | public interface IContactEmailLocal : IContactEmail, IEntity 9 | { 10 | void UpdateFrom(IContactEmail contactEmail); 11 | void UpdateKey(string key); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /ContactPoint.Common/SIP/Account/SipAccountState.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace ContactPoint.Common.SIP.Account 6 | { 7 | /// 8 | /// Connection state of SIP account 9 | /// 10 | public enum SipAccountState 11 | { 12 | Offline = -1, 13 | Connecting = 0, 14 | Online = 200 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /ExceptionReporter/ExceptionReporter/SystemInfo/SysInfoQueries.cs: -------------------------------------------------------------------------------- 1 | namespace ExceptionReporter.SystemInfo 2 | { 3 | internal static class SysInfoQueries 4 | { 5 | public static readonly SysInfoQuery OperatingSystem = new SysInfoQuery("Operating System", "Win32_OperatingSystem", false); 6 | public static readonly SysInfoQuery Machine = new SysInfoQuery("Machine", "Win32_ComputerSystem", true); 7 | } 8 | } -------------------------------------------------------------------------------- /ContactPoint.Core/Security/SecurityTokenContent.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace ContactPoint.Core.Security 4 | { 5 | [Serializable] 6 | public sealed class SecurityTokenContent 7 | { 8 | public Guid Id { get; set; } 9 | public DateTime? ExpireDate { get; set; } 10 | public byte[] AssemblyKey { get; set; } 11 | public Guid[] AllowedOperations { get; set; } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /ExceptionReporter/ExceptionReporter/IInternalExceptionView.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace ExceptionReporter 4 | { 5 | /// 6 | /// An interface that represents the presentation of an internal exception 7 | /// 8 | public interface IInternalExceptionView 9 | { 10 | /// Show the internal exception 11 | void ShowException(string message, Exception exception); 12 | } 13 | } -------------------------------------------------------------------------------- /ContactPoint.Core/Settings/Loaders/ISettingsLoader.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Xml.XPath; 3 | using ContactPoint.Core.Settings.DataStructures; 4 | 5 | namespace ContactPoint.Core.Settings.Loaders 6 | { 7 | internal interface ISettingsLoader 8 | { 9 | IEnumerable Load(XPathNavigator nav); 10 | object DeserializeRawItem(SettingsRawItem rawItem); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /ContactPoint.Core/CallManager/CallStateInfo.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using ContactPoint.Common; 3 | 4 | namespace ContactPoint.Core.CallManager 5 | { 6 | class CallStateInfo : ICallStateInfo 7 | { 8 | public static readonly CallStateInfo Default = new CallStateInfo { State = CallState.NULL, Duration = TimeSpan.Zero }; 9 | 10 | public CallState State { get; set; } 11 | public TimeSpan Duration { get; set; } 12 | } 13 | } -------------------------------------------------------------------------------- /ContactPoint.BaseDesign/Components/SelectableVerticalLayoutList.cs: -------------------------------------------------------------------------------- 1 | using System.Drawing; 2 | 3 | namespace ContactPoint.BaseDesign.Components 4 | { 5 | public class SelectableVerticalLayoutList : SelectableVerticalLayoutPanel 6 | { 7 | public SelectableVerticalLayoutList() 8 | { 9 | BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; 10 | BackColor = SystemColors.Window; 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /ContactPoint.Plugins.MySqlAddressBook/SqliteExtensions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Data; 3 | 4 | namespace ContactPoint.Plugins.MySqlAddressBook 5 | { 6 | internal static class SqliteExtensions 7 | { 8 | public static string GetStringSafe(this IDataReader reader, int number) 9 | { 10 | if (reader.IsDBNull(number)) return String.Empty; 11 | 12 | return reader.GetString(number); 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /ContactPoint.Plugins.WebServer/IHandler.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace ContactPoint.Plugins.WebServer 6 | { 7 | internal interface IHandler 8 | { 9 | void Execute( 10 | HttpServer.IHttpClientContext context, 11 | HttpServer.IHttpRequest request, 12 | HttpServer.IHttpResponse response, 13 | HttpServer.Sessions.IHttpSession session); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /ContactPoint.Plugins.GoogleContacts/Model/ContactTag.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using ContactPoint.Common.Contacts; 6 | 7 | namespace ContactPoint.Plugins.GoogleContacts.Model 8 | { 9 | internal class ContactTag : Versionable, IContactTag 10 | { 11 | public string Key { get; set; } 12 | public string Name { get; set; } 13 | public string Color { get; set; } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /ContactPoint.Plugins.GoogleContacts/Model/ContactEmail.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using ContactPoint.Common.Contacts; 6 | 7 | namespace ContactPoint.Plugins.GoogleContacts.Model 8 | { 9 | internal class ContactEmail : Versionable, IContactEmail 10 | { 11 | public string Key { get; set; } 12 | public string Comment { get; set; } 13 | public string Email { get; set; } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /ContactPoint.Plugins.GoogleContacts/Model/ContactPhone.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using ContactPoint.Common.Contacts; 6 | 7 | namespace ContactPoint.Plugins.GoogleContacts.Model 8 | { 9 | internal class ContactPhone : Versionable, IContactPhone 10 | { 11 | public string Key { get; set; } 12 | public string Comment { get; set; } 13 | public string Number { get; set; } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /ContactPoint/Services/MainFormApplicationContext.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Forms; 2 | using ContactPoint.BaseDesign; 3 | using ContactPoint.Forms; 4 | 5 | namespace ContactPoint.Services 6 | { 7 | class MainFormApplicationContext : ApplicationContext 8 | { 9 | public MainForm ContactPointForm => (MainForm)MainForm; 10 | 11 | public MainFormApplicationContext() : base(new MainForm()) 12 | { 13 | SyncUi.Initialize(MainForm); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /ContactPoint.BaseDesign/app.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /ContactPoint.Common/PluginManager/IPluginAction.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace ContactPoint.Common.PluginManager 6 | { 7 | public interface IPluginAction 8 | { 9 | /// 10 | /// Unique code of action 11 | /// 12 | Guid ActionCode { get; } 13 | 14 | /// 15 | /// Optional object 16 | /// 17 | object Object { get; } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /ContactPoint.Plugins.MySqlAddressBook/AddressBook/ContactTag.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using ContactPoint.Common.Contacts; 6 | 7 | namespace ContactPoint.Plugins.MySqlAddressBook.AddressBook 8 | { 9 | internal class ContactTag : Versionable, IContactTag 10 | { 11 | public string Key { get; private set; } 12 | public string Name { get; set; } 13 | public string Color { get; set; } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /ExceptionReporter/ExceptionReporter/Config/FileReader.cs: -------------------------------------------------------------------------------- 1 | using System.IO; 2 | 3 | namespace ExceptionReporter.Config 4 | { 5 | /// generic interface to reading a file 6 | public interface IFileReader 7 | { 8 | /// read all contents of a file 9 | string ReadAll(string fileName); 10 | } 11 | 12 | internal class FileReader : IFileReader 13 | { 14 | public string ReadAll(string fileName) 15 | { 16 | return File.ReadAllText(fileName); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /ExceptionReporter/ExceptionReporter/Core/IClipboard.cs: -------------------------------------------------------------------------------- 1 | namespace ExceptionReporter.Core 2 | { 3 | /// 4 | /// interface to abstract the concept of a clipboard - required because of the different implementations 5 | /// of clipboard in windows (ie WPF and WinForms) 6 | /// 7 | public interface IClipboard 8 | { 9 | /// copy text to clipboard 10 | /// plain-text string 11 | void CopyTo(string text); 12 | } 13 | } -------------------------------------------------------------------------------- /ContactPoint.BaseDesign.Wpf/CoreDesign/PhoneWindow.xaml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /ContactPoint.Plugins.MySqlAddressBook/AddressBook/ContactEmail.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using ContactPoint.Common.Contacts; 6 | 7 | namespace ContactPoint.Plugins.MySqlAddressBook.AddressBook 8 | { 9 | internal class ContactEmail : Versionable, IContactEmail 10 | { 11 | public string Key { get; private set; } 12 | public string Comment { get; set; } 13 | public string Email { get; set; } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /ContactPoint.Plugins.MySqlAddressBook/AddressBook/ContactPhone.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using ContactPoint.Common.Contacts; 6 | 7 | namespace ContactPoint.Plugins.MySqlAddressBook.AddressBook 8 | { 9 | internal class ContactPhone : Versionable, IContactPhone 10 | { 11 | public string Key { get; private set; } 12 | public string Comment { get; set; } 13 | public string Number { get; set; } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /ContactPoint.Plugins.ContactsUi/ViewModels/ViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel; 2 | 3 | namespace ContactPoint.Plugins.ContactsUi.ViewModels 4 | { 5 | public class ViewModel : INotifyPropertyChanged 6 | { 7 | public event PropertyChangedEventHandler PropertyChanged; 8 | 9 | protected void NotifyPropertyChanged(string propertyName) 10 | { 11 | if (PropertyChanged != null) PropertyChanged.Invoke(this, new PropertyChangedEventArgs(propertyName)); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /ContactPoint/NotifyControls/AudioDeviceChangedNotifyControl.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel; 4 | using System.Drawing; 5 | using System.Data; 6 | using System.Text; 7 | using System.Windows.Forms; 8 | 9 | namespace ContactPoint.NotifyControls 10 | { 11 | public partial class AudioDeviceChangedNotifyControl : UserControl 12 | { 13 | public AudioDeviceChangedNotifyControl() 14 | { 15 | InitializeComponent(); 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /ContactPoint.Contacts/SqliteExtensions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Data.SQLite; 4 | using System.Linq; 5 | using System.Text; 6 | 7 | namespace ContactPoint.Contacts 8 | { 9 | internal static class SqliteExtensions 10 | { 11 | public static string GetStringSafe(this SQLiteDataReader reader, int number) 12 | { 13 | if (reader.IsDBNull(number)) return String.Empty; 14 | 15 | return reader.GetString(number); 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /ContactPoint.Plugins.HotKeys/Actions/UserAction.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | using ContactPoint.Common; 5 | 6 | namespace ContactPoint.Plugins.HotKeys.Actions 7 | { 8 | public class UserAction 9 | { 10 | public virtual string Name { get; set; } 11 | 12 | public virtual Action Command { get; set; } 13 | 14 | public UserAction() 15 | { 16 | Name = ""; 17 | Command = x => { }; 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /ContactPoint.Contacts/EnsuredResourceCriticalOperation.cs: -------------------------------------------------------------------------------- 1 | using System.Threading; 2 | using ContactPoint.Common; 3 | 4 | namespace ContactPoint.Contacts 5 | { 6 | public class EnsuredResourceCriticalOperation : ResourceCriticalOperation 7 | { 8 | public EnsuredResourceCriticalOperation(params object[] resources) 9 | : base(Lock, resources) 10 | { } 11 | 12 | private static bool Lock(object resource) 13 | { 14 | Monitor.Enter(resource); 15 | 16 | return true; 17 | } 18 | } 19 | } -------------------------------------------------------------------------------- /AudioLibrary.WMME/AudioLoader.cs: -------------------------------------------------------------------------------- 1 | using AudioLibrary.Interfaces; 2 | 3 | namespace AudioLibrary.WMME 4 | { 5 | public static class AudioLoader 6 | { 7 | static object LockObject = new object(); 8 | static IAudio AudioInstance = null; 9 | 10 | public static IAudio GetAudio() 11 | { 12 | lock (LockObject) 13 | { 14 | if (AudioInstance == null) 15 | AudioInstance = new Audio(); 16 | 17 | return AudioInstance; 18 | } 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /ContactPoint.Common/PluginManager/IPluginInformationProvider.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Reflection; 3 | 4 | namespace ContactPoint.Common.PluginManager 5 | { 6 | /// 7 | /// Plugin information provider 8 | /// 9 | public interface IPluginInformationProvider 10 | { 11 | /// 12 | /// List of plugin information descriptors that can be supported by provider 13 | /// 14 | IEnumerable GetPluginInformations(Assembly assembly); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /ExceptionReporter/ExceptionReporter/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | http://bug.artpoint.com.ua/Report.asmx 7 | 8 | 9 | -------------------------------------------------------------------------------- /ContactPoint.Common/PluginManager/IPluginInformation.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace ContactPoint.Common.PluginManager 4 | { 5 | public interface IPluginInformation : IService 6 | { 7 | Guid ID { get; } 8 | string Name { get; } 9 | string Version { get; } 10 | string AssemblyName { get; } 11 | string FileName { get; } 12 | string Info { get; } 13 | int Priority { get; } 14 | bool HaveSettingsForm { get; } 15 | void ShowSettingsDialog(); 16 | IPlugin GetInstance(bool create = true); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /ContactPoint.BaseDesign.Wpf/ViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel; 2 | using System.Windows; 3 | 4 | namespace ContactPoint.BaseDesign.Wpf 5 | { 6 | public class ViewModel : DependencyObject, INotifyPropertyChanged 7 | { 8 | public event PropertyChangedEventHandler PropertyChanged; 9 | 10 | public ViewModel() 11 | { } 12 | 13 | protected void NotifyPropertyChanged(string propertyName) 14 | { 15 | if (PropertyChanged != null) PropertyChanged.Invoke(this, new PropertyChangedEventArgs(propertyName)); 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /AudioLibrary.WMME/MixerException.cs: -------------------------------------------------------------------------------- 1 | using AudioLibrary.WMME.Native; 2 | 3 | namespace AudioLibrary.WMME 4 | { 5 | public class MixerException : System.Exception 6 | { 7 | #region Variables Declaration 8 | private readonly MMErrors mErrorCode; 9 | #endregion 10 | 11 | #region Constructors 12 | public MixerException(MMErrors errorCode, string errorMessage) : base(errorMessage) 13 | { 14 | mErrorCode = errorCode; 15 | } 16 | #endregion 17 | 18 | #region Properties 19 | public MMErrors ErrorCode 20 | { 21 | get{return mErrorCode;} 22 | } 23 | #endregion 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /CommonAssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Reflection; 3 | using System.Resources; 4 | using System.Runtime.CompilerServices; 5 | 6 | [assembly: AssemblyCompany("ContactPoint")] 7 | [assembly: AssemblyProduct("ContactPoint® IP Phone")] 8 | [assembly: AssemblyCopyright("ContactPoint")] 9 | [assembly: AssemblyTrademark("IP Phone")] 10 | [assembly: AssemblyVersion("1.0.0.0")] 11 | [assembly: AssemblyFileVersion("1.0.0.0")] 12 | [assembly: AssemblyInformationalVersion("1.0.0.0")] 13 | [assembly: NeutralResourcesLanguage("en-US")] 14 | [assembly: CLSCompliant(true)] 15 | [assembly: CompilationRelaxations(8)] 16 | -------------------------------------------------------------------------------- /ContactPoint.Plugins.MySqlAddressBook/app.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /AudioLibrary.WMME/MuteAudioLineControl.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using AudioLibrary.Interfaces; 3 | using AudioLibrary.WMME.Native; 4 | 5 | namespace AudioLibrary.WMME 6 | { 7 | internal class MuteAudioLineControl : AudioLineControl 8 | { 9 | public MuteAudioLineControl(AudioLine audioLine, MIXERCONTROL mc, Action raiseEventDelegate) 10 | : base(audioLine, mc, raiseEventDelegate) 11 | { } 12 | 13 | public override unsafe object Value 14 | { 15 | get { return ValueAsBoolean; } 16 | set { ValueAsBoolean = (bool)value; } 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /AudioLibrary.WMME/VolumeAudioLineControl.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using AudioLibrary.Interfaces; 3 | using AudioLibrary.WMME.Native; 4 | 5 | namespace AudioLibrary.WMME 6 | { 7 | internal class VolumeAudioLineControl : AudioLineControl 8 | { 9 | public VolumeAudioLineControl(AudioLine audioLine, MIXERCONTROL mc, Action raiseEventDelegate) 10 | : base(audioLine, mc, raiseEventDelegate) 11 | { } 12 | 13 | public override unsafe object Value 14 | { 15 | get { return ValueAsUnsigned; } 16 | set { ValueAsUnsigned = (int)value; } 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /ContactPoint.Plugins.WebServer/Templates/Call.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ContactPoint softphone: making call to %number% 5 | 10 | 11 | 12 |
13 |
14 | Calling %number%

15 | Close 16 |
17 | 18 | -------------------------------------------------------------------------------- /ExceptionReporter/ExceptionReporter/Web References/ua.com.artpoint.bug/Reference.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /ContactPoint.Plugins.OneLine/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | [assembly: AssemblyTitle("CallService: plugin for restricting line count to 1")] 6 | 7 | // Setting ComVisible to false makes the types in this assembly not visible 8 | // to COM components. If you need to access a type in this assembly from 9 | // COM, set the ComVisible attribute to true on that type. 10 | [assembly: ComVisible(false)] 11 | 12 | // The following GUID is for the ID of the typelib if this project is exposed to COM 13 | [assembly: Guid("08501d19-674f-4f81-8911-fb3a96d88e4f")] 14 | -------------------------------------------------------------------------------- /ContactPoint.Common/Contacts/IContactEmail.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace ContactPoint.Common.Contacts 6 | { 7 | /// 8 | /// Email of the contact 9 | /// 10 | public interface IContactEmail : IVersionable 11 | { 12 | /// 13 | /// Unique key for email. 14 | /// 15 | string Key { get; } 16 | 17 | /// 18 | /// Optional comment for email. 19 | /// 20 | string Comment { get; set; } 21 | 22 | /// 23 | /// Email address. 24 | /// 25 | string Email { get; set; } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /ContactPoint.Common/Contacts/Local/IContactInfoLocal.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | 4 | namespace ContactPoint.Common.Contacts.Local 5 | { 6 | public interface IContactInfoLocal : IContactInfo, IEntity 7 | { 8 | event Action Changed; 9 | 10 | IAddressBookLocal AddressBook { get; } 11 | IContact Contact { get; } 12 | 13 | new ICollection Tags { get; } 14 | new ICollection PhoneNumbers { get; } 15 | new ICollection Emails { get; } 16 | 17 | void Submit(); 18 | void Remove(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /ContactPoint.Core/Settings/CoreSettings.cs: -------------------------------------------------------------------------------- 1 | using ContactPoint.Common; 2 | using ContactPoint.Common.Audio; 3 | using ContactPoint.Common.Contacts; 4 | using ContactPoint.Common.PluginManager; 5 | using ContactPoint.Common.SIP; 6 | 7 | namespace ContactPoint.Core.Settings 8 | { 9 | class CoreSettings 10 | { 11 | public ISip Sip { get; set; } 12 | public ICallManager CallManager { get; set; } 13 | public IPluginManager PluginManager { get; set; } 14 | public ISettingsManagerSection SettingsManager { get; set; } 15 | public IContactsManager ContactsManager { get; set; } 16 | public IAudio Audio { get; set; } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /AudioLibrary.WMME/AudioDeviceDescriptor.cs: -------------------------------------------------------------------------------- 1 | using AudioLibrary.WMME.Native; 2 | 3 | namespace AudioLibrary.WMME 4 | { 5 | internal class AudioDeviceDescriptor 6 | { 7 | public int DeviceId { get; set; } 8 | public string Name { get; set; } 9 | public bool PlaybackSupport { get; set; } 10 | public bool RecordingSupport { get; set; } 11 | public MIXERLINE_COMPONENTTYPE PlaybackComponentType { get; set; } 12 | public MIXERLINE_COMPONENTTYPE RecordingComponentType { get; set; } 13 | 14 | public AudioDevice CreateAudioDevice(Audio audio) 15 | { 16 | return new AudioDevice(audio, this); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /ContactPoint.Common/Contacts/IContactPhone.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace ContactPoint.Common.Contacts 6 | { 7 | /// 8 | /// Phone number of the contact 9 | /// 10 | public interface IContactPhone : IVersionable 11 | { 12 | /// 13 | /// Unique key for phone number. 14 | /// 15 | string Key { get; } 16 | 17 | /// 18 | /// Optional phone number comment. 19 | /// 20 | string Comment { get; set; } 21 | 22 | /// 23 | /// Phone number. 24 | /// 25 | string Number { get; set; } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /ContactPoint.Common/IUi.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel; 2 | 3 | namespace ContactPoint.Common 4 | { 5 | /// 6 | /// Interface to allow some actions on UI from plugins. 7 | /// 8 | public interface IUi : ISynchronizeInvoke 9 | { 10 | /// 11 | /// Make specific call active. 12 | /// 13 | /// Target call. 14 | void ActivateCall(ICall call); 15 | 16 | /// 17 | /// Gets phone number that has been typed in the textbox 18 | /// 19 | /// Phone number 20 | string GetPhoneNumber(); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /ContactPoint/Forms/AboutForm.cs: -------------------------------------------------------------------------------- 1 | using System.Drawing; 2 | using System.Windows.Forms; 3 | using ContactPoint.Common; 4 | 5 | namespace ContactPoint.Forms 6 | { 7 | public partial class AboutForm : Form 8 | { 9 | public AboutForm() 10 | { 11 | InitializeComponent(); 12 | 13 | try 14 | { 15 | pictureBoxPartnerLogo.Image = Image.FromFile("partner_logo.png"); 16 | } 17 | catch 18 | { 19 | Logger.LogNotice("Unable to load partner logo."); 20 | } 21 | 22 | labelVersion.Text = GetType().Assembly.GetName().Version.ToString(4); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /ExceptionReporter/Win32Mapi/Win32Mapi.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | net472 4 | false 5 | ..\..\..\Binaries\ 6 | 7 | 8 | full 9 | 10 | 11 | pdbonly 12 | false 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /ContactPoint.BaseDesign.Wpf/SipLog.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Windows; 6 | using System.Windows.Controls; 7 | using System.Windows.Data; 8 | using System.Windows.Documents; 9 | using System.Windows.Input; 10 | using System.Windows.Media; 11 | using System.Windows.Media.Imaging; 12 | using System.Windows.Shapes; 13 | 14 | namespace ContactPoint.BaseDesign.Wpf 15 | { 16 | /// 17 | /// Interaction logic for SipLog.xaml 18 | /// 19 | public partial class SipLog : Window 20 | { 21 | public SipLog() 22 | { 23 | InitializeComponent(); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /ContactPoint.Common/CommonDelegates.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace ContactPoint.Common 6 | { 7 | //public delegate T Func(); 8 | //public delegate T Func(P1 p1); 9 | //public delegate T Func(P1 p1, P2 p2); 10 | //public delegate T Func(P1 p1, P2 p2, P3 p3); 11 | //public delegate T Func(P1 p1, P2 p2, P3 p3, P4 p4); 12 | 13 | //public delegate void Action(); 14 | //public delegate void Action(P1 p1, P2 p2); 15 | //public delegate void Action(P1 p1, P2 p2, P3 p3); 16 | //public delegate void Action(P1 p1, P2 p2, P3 p3, P4 p4); 17 | } 18 | -------------------------------------------------------------------------------- /ContactPoint.Common/Contacts/IContactInfo.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace ContactPoint.Common.Contacts 6 | { 7 | /// 8 | /// Contact 9 | /// 10 | public interface IContactInfo : IVersionable 11 | { 12 | string Key { get; } 13 | string FirstName { get; set; } 14 | string MiddleName { get; set; } 15 | string LastName { get; set; } 16 | 17 | string Company { get; set; } 18 | string JobTitle { get; set; } 19 | 20 | string Note { get; set; } 21 | 22 | ICollection PhoneNumbers { get; } 23 | ICollection Emails { get; } 24 | ICollection Tags { get; } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /ContactPoint.BaseDesign.Wpf/CoreDesign/PhoneWindow.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Windows; 6 | using System.Windows.Controls; 7 | using System.Windows.Data; 8 | using System.Windows.Documents; 9 | using System.Windows.Input; 10 | using System.Windows.Media; 11 | using System.Windows.Media.Imaging; 12 | using System.Windows.Shapes; 13 | 14 | namespace ContactPoint.BaseDesign.Wpf.CoreDesign 15 | { 16 | /// 17 | /// Interaction logic for PhoneWindow.xaml 18 | /// 19 | public partial class PhoneWindow : Window 20 | { 21 | public PhoneWindow() 22 | { 23 | InitializeComponent(); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /ContactPoint.Core/CallManager/Header.cs: -------------------------------------------------------------------------------- 1 | using ContactPoint.Common.CallManager; 2 | using Sipek.Sip; 3 | 4 | namespace ContactPoint.Core.CallManager 5 | { 6 | internal class Header : IHeader 7 | { 8 | public string Name { get; private set; } 9 | public string Value { get; private set; } 10 | 11 | public Header(string name, string value) 12 | { 13 | Name = name; 14 | Value = value; 15 | } 16 | } 17 | 18 | public static class HeaderExtensions 19 | { 20 | public static SipHeader ToSipHeader(this IHeader header) 21 | { 22 | return new SipHeader { name = header.Name.Substring(0, 64), value = header.Value.Substring(0, 255) }; 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /ContactPoint.Plugins.LocalAddressBook/Contracts/ContactEmail.cs: -------------------------------------------------------------------------------- 1 | using ContactPoint.Common.Contacts; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Runtime.Serialization; 6 | using System.Text; 7 | 8 | namespace ContactPoint.Plugins.LocalAddressBook.Contracts 9 | { 10 | [DataContract] 11 | internal class ContactEmail : Versionable, IContactEmail 12 | { 13 | [DataMember] 14 | public string Key { get; set; } 15 | [DataMember] 16 | public string Comment { get; set; } 17 | [DataMember] 18 | public string Email { get; set; } 19 | 20 | public ContactEmail() 21 | { 22 | Key = Guid.NewGuid().ToString("D"); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /ContactPoint.Plugins.LocalAddressBook/Contracts/ContactPhone.cs: -------------------------------------------------------------------------------- 1 | using ContactPoint.Common.Contacts; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Runtime.Serialization; 6 | using System.Text; 7 | 8 | namespace ContactPoint.Plugins.LocalAddressBook.Contracts 9 | { 10 | [DataContract] 11 | internal class ContactPhone : Versionable, IContactPhone 12 | { 13 | [DataMember] 14 | public string Key { get; set; } 15 | [DataMember] 16 | public string Comment { get; set; } 17 | [DataMember] 18 | public string Number { get; set; } 19 | 20 | public ContactPhone() 21 | { 22 | Key = Guid.NewGuid().ToString("D"); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /ContactPoint.Common/ContactPoint.Common.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | net472 4 | false 5 | ..\..\Binaries\ 6 | 7 | 8 | full 9 | 10 | 11 | pdbonly 12 | 13 | Auto 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /ContactPoint.Core/Audio/AudioLoader.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.Linq; 5 | using System.Reflection; 6 | using System.Text; 7 | using AudioLibrary.Interfaces; 8 | 9 | namespace ContactPoint.Core.Audio 10 | { 11 | internal class AudioLoader 12 | { 13 | public static IAudio LoadAudio() 14 | { 15 | var assembly = Assembly.LoadFile(Path.GetFullPath("AudioLibrary.PjSIP.dll")); 16 | 17 | var audioDriverType = assembly.GetTypes().FirstOrDefault(x => x.GetInterfaces().Contains(typeof(IAudio))); 18 | if (audioDriverType != null) 19 | return (IAudio)Activator.CreateInstance(audioDriverType); 20 | 21 | return null; 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /ContactPoint.Plugins.ContactsUi/Controls/AddPhoneEmailControl.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows.Forms; 3 | 4 | namespace ContactPoint.Plugins.ContactsUi.Controls 5 | { 6 | internal partial class AddPhoneEmailControl : UserControl 7 | { 8 | public event Action AddPhone; 9 | public event Action AddEmail; 10 | 11 | public AddPhoneEmailControl() 12 | { 13 | InitializeComponent(); 14 | } 15 | 16 | private void buttonAddPhone_Click(object sender, EventArgs e) 17 | { 18 | if (AddPhone != null) AddPhone(); 19 | } 20 | 21 | private void buttonAddEmail_Click(object sender, EventArgs e) 22 | { 23 | if (AddEmail != null) AddEmail(); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /ExceptionReporter/ExceptionReporter/Web References/ua.com.artpoint.bug/Report.disco: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /AudioLibrary/Interfaces/IAudio.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace AudioLibrary.Interfaces 6 | { 7 | public interface IAudio : IDisposable 8 | { 9 | event Action> AudioDevicesAdded; 10 | event Action> AudioDevicesRemoved; 11 | event Action PlaybackDeviceChanged; 12 | event Action RecordingDeviceChanged; 13 | 14 | IEnumerable AudioDevices { get; } 15 | IAudioDevice PlaybackDevice { get; set; } 16 | IAudioDevice RecordingDevice { get; set; } 17 | 18 | IAudioDevice DefaultPlaybackDevice { get; } 19 | IAudioDevice DefaultRecordingDevice { get; } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /AudioLibrary/Interfaces/IAudioDevice.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace AudioLibrary.Interfaces 6 | { 7 | /// 8 | /// Audio device hi-level representation. 9 | /// Each audio device can support only recording or playback! 10 | /// 11 | public interface IAudioDevice : IDisposable 12 | { 13 | event Action VolumeChanged; 14 | event Action MuteChanged; 15 | 16 | IAudio Audio { get; } 17 | 18 | string Name { get; } 19 | bool PlaybackSupport { get; } 20 | bool RecordingSupport { get; } 21 | 22 | int Volume { get; set; } 23 | bool Mute { get; set; } 24 | 25 | IAudioPlayer CreateAudioPlayer(); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /ContactPoint.BaseDesign.Wpf/CoreDesign/PhoneView.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Windows; 6 | using System.Windows.Controls; 7 | using System.Windows.Data; 8 | using System.Windows.Documents; 9 | using System.Windows.Input; 10 | using System.Windows.Media; 11 | using System.Windows.Media.Imaging; 12 | using System.Windows.Navigation; 13 | using System.Windows.Shapes; 14 | 15 | namespace ContactPoint.BaseDesign.Wpf.CoreDesign 16 | { 17 | /// 18 | /// Interaction logic for PhoneView.xaml 19 | /// 20 | public partial class PhoneView : UserControl 21 | { 22 | public PhoneView() 23 | { 24 | InitializeComponent(); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /ContactPoint.Core/Security/SecurityLicenseContent.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace ContactPoint.Core.Security 4 | { 5 | [Serializable] 6 | public sealed class SecurityLicenseContent 7 | { 8 | public Guid Id { get; set; } 9 | public SecurityTokenContent[] Tokens { get; set; } 10 | public string Company { get; set; } 11 | public DateTime ActivationDate { get; set; } 12 | public byte[] MachineId { get; set; } 13 | 14 | public static readonly SecurityLicenseContent Empty = new SecurityLicenseContent() 15 | { 16 | Id = Guid.Empty, 17 | Tokens = new SecurityTokenContent[0], 18 | Company = "ContactPoint", 19 | ActivationDate = new DateTime(2005, 1, 1), 20 | MachineId = new byte[0] 21 | }; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /ContactPoint.Core/Audio/AudioPlayerProxy.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | using ContactPoint.Common.Audio; 5 | 6 | namespace ContactPoint.Core.Audio 7 | { 8 | internal class AudioPlayerProxy : IAudioPlayer 9 | { 10 | private AudioLibrary.Interfaces.IAudioPlayer _audioPlayer; 11 | 12 | public AudioPlayerProxy(AudioLibrary.Interfaces.IAudioPlayer audioPlayer) 13 | { 14 | _audioPlayer = audioPlayer; 15 | } 16 | 17 | public void Play(string filename) 18 | { 19 | _audioPlayer.Play(filename); 20 | } 21 | 22 | public void Stop() 23 | { 24 | _audioPlayer.Stop(); 25 | } 26 | 27 | public void Dispose() 28 | { 29 | _audioPlayer.Dispose(); 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /ContactPoint.Plugins.GoogleContacts/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("Google contacts integration plugin.")] 9 | 10 | // Setting ComVisible to false makes the types in this assembly not visible 11 | // to COM components. If you need to access a type in this assembly from 12 | // COM, set the ComVisible attribute to true on that type. 13 | [assembly: ComVisible(false)] 14 | 15 | // The following GUID is for the ID of the typelib if this project is exposed to COM 16 | [assembly: Guid("25884703-fa65-4d66-ba14-5d493d35b69a")] 17 | -------------------------------------------------------------------------------- /ContactPoint.Plugins.MySqlAddressBook/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("ContactPoint.Plugins.MySqlAddressBook")] 9 | 10 | // Setting ComVisible to false makes the types in this assembly not visible 11 | // to COM components. If you need to access a type in this assembly from 12 | // COM, set the ComVisible attribute to true on that type. 13 | [assembly: ComVisible(false)] 14 | 15 | // The following GUID is for the ID of the typelib if this project is exposed to COM 16 | [assembly: Guid("0a87e1ed-a15b-470e-ae88-7e25230d2e2a")] 17 | -------------------------------------------------------------------------------- /ContactPoint.Core/Settings/DataStructures/SettingsRawItem.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | 4 | namespace ContactPoint.Core.Settings.DataStructures 5 | { 6 | internal class SettingsRawItem 7 | { 8 | public string Name { get; set; } 9 | public string Type { get; set; } 10 | public bool IsCollection { get; set; } 11 | public string ItemType { get; set; } 12 | public string Value { get; set; } 13 | public List ValuesCollection { get; private set; } 14 | 15 | public SettingsRawItem() 16 | { 17 | Name = String.Empty; 18 | Type = String.Empty; 19 | IsCollection = false; 20 | ItemType = String.Empty; 21 | Value = String.Empty; 22 | ValuesCollection = new List(); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /ContactPoint/NotifyControls/AudioDevicesRemovedNotifyControl.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | using ContactPoint.Forms; 5 | 6 | namespace ContactPoint.NotifyControls 7 | { 8 | public class AudioDevicesRemovedNotifyControl : AudioDevicesNotifyControl 9 | { 10 | public AudioDevicesRemovedNotifyControl() 11 | : base() 12 | { 13 | IsDevicesAdded = false; 14 | 15 | linkLabelUseDevices.Text = CaptionStrings.CaptionStrings.ShowAudioDevicesSettings; 16 | } 17 | 18 | protected override void LinkLabelClick(object sender, EventArgs e) 19 | { 20 | var settingsForm = new SettingsForm(Core); 21 | settingsForm.Show(SettingsFormPart.Audio); 22 | 23 | base.LinkLabelClick(sender, e); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /ContactPoint.Common/SIP/ISipCodec.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace ContactPoint.Common.SIP 6 | { 7 | /// 8 | /// Interface representing SIP codec 9 | /// 10 | public interface ISipCodec 11 | { 12 | /// 13 | /// Occurs when IsEnabled property has been changed 14 | /// 15 | event Action EnabledChanged; 16 | 17 | /// 18 | /// Codec name 19 | /// 20 | string Name { get; } 21 | 22 | /// 23 | /// Indicating that we use or not this codec 24 | /// 25 | bool Enabled { get; set; } 26 | 27 | /// 28 | /// Codec priority 29 | /// 30 | int Priority { get; } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /ContactPoint.Common/Settings.cs: -------------------------------------------------------------------------------- 1 | namespace ContactPoint.Common.Properties { 2 | // This class allows you to handle specific events on the settings class: 3 | // The SettingChanging event is raised before a setting's value is changed. 4 | // The PropertyChanged event is raised after a setting's value is changed. 5 | // The SettingsLoaded event is raised after the setting values are loaded. 6 | // The SettingsSaving event is raised before the setting values are saved. 7 | internal sealed partial class Settings { 8 | public Settings() { 9 | } 10 | 11 | private void SettingChangingEventHandler(object sender, System.Configuration.SettingChangingEventArgs e) { 12 | } 13 | 14 | private void SettingsSavingEventHandler(object sender, System.ComponentModel.CancelEventArgs e) { 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /ContactPoint.BaseDesign/LineSeparator.cs: -------------------------------------------------------------------------------- 1 | using System.Drawing; 2 | using System.Windows.Forms; 3 | 4 | namespace ContactPoint.BaseDesign 5 | { 6 | public class LineSeparator : UserControl 7 | { 8 | public LineSeparator() 9 | { 10 | this.Paint += LineSeparator_Paint; 11 | 12 | this.MaximumSize = new Size(2000, 2); 13 | this.MinimumSize = new Size(0, 2); 14 | 15 | this.Width = 350; 16 | this.Height = 2; 17 | } 18 | 19 | private void LineSeparator_Paint(object sender, PaintEventArgs e) 20 | { 21 | using (Graphics g = e.Graphics) 22 | { 23 | g.DrawLine(Pens.DarkGray, new Point(0, 0), new Point(this.Width, 0)); 24 | g.DrawLine(Pens.White, new Point(0, 1), new Point(this.Width, 1)); 25 | } 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /ContactPoint.Common/PluginManager/IPlugin.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using ContactPoint.Common.Contacts; 3 | 4 | namespace ContactPoint.Common.PluginManager 5 | { 6 | public interface IPlugin : IService 7 | { 8 | /// 9 | /// Plugin manager that handles this plugin 10 | /// 11 | IPluginManager PluginManager { get; } 12 | 13 | /// 14 | /// Plugin address book. 15 | /// 16 | /// Plugins can expose their own address books. 17 | /// 18 | IAddressBook AddressBook { get; } 19 | 20 | /// 21 | /// Elements exported to UI 22 | /// 23 | IEnumerable UIElements { get; } 24 | 25 | /// 26 | /// Show settings dialog if it exists 27 | /// 28 | void ShowSettingsDialog(); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /ContactPoint/NotifyControls/AudioDevicesAddedNotifyControl.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace ContactPoint.NotifyControls 6 | { 7 | public class AudioDevicesAddedNotifyControl : AudioDevicesNotifyControl 8 | { 9 | public AudioDevicesAddedNotifyControl() 10 | : base() 11 | { 12 | IsDevicesAdded = true; 13 | 14 | linkLabelUseDevices.Text = CaptionStrings.CaptionStrings.UseDevice; 15 | } 16 | 17 | protected override void LinkLabelClick(object sender, EventArgs e) 18 | { 19 | foreach (var device in AudioDevices) 20 | if (device.Type == Common.Audio.AudioDeviceType.Playback) Core.Audio.PlaybackDevice = device; 21 | else Core.Audio.RecordingDevice = device; 22 | 23 | base.LinkLabelClick(sender, e); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /ContactPoint.Plugins.ContactsUi/Controls/TextDetailsControl.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows.Forms; 3 | 4 | namespace ContactPoint.Plugins.ContactsUi.Controls 5 | { 6 | public partial class TextDetailsControl : UserControl 7 | { 8 | private readonly Action _valueFunc; 9 | 10 | public bool ReadOnly 11 | { 12 | get { return textBox.ReadOnly; } 13 | set { textBox.ReadOnly = value; } 14 | } 15 | 16 | public TextDetailsControl(string name, string initialValue, Action valueFunc) 17 | { 18 | _valueFunc = valueFunc; 19 | InitializeComponent(); 20 | 21 | label.Text = name; 22 | textBox.Text = initialValue; 23 | } 24 | 25 | private void textBox_TextChanged(object sender, EventArgs e) 26 | { 27 | _valueFunc(textBox.Text); 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /ContactPoint.Contacts/Fakes/VersionGeneratorFake.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using ContactPoint.Common.Contacts; 3 | 4 | namespace ContactPoint.Contacts.Fakes 5 | { 6 | internal class VersionGeneratorFake : IVersionGenerator 7 | { 8 | public object GetDefaultVersion() 9 | { 10 | return String.Empty; 11 | } 12 | 13 | public object GenerateNextVersion(object currentKey) 14 | { 15 | return String.Empty; 16 | } 17 | 18 | public object GetKeyFromString(string value) 19 | { 20 | return String.Empty; 21 | } 22 | 23 | public string ConvertKeyToString(object value) 24 | { 25 | return String.Empty; 26 | } 27 | 28 | public VersionsCompareResult CompareVersions(IVersionable current, IVersionable target) 29 | { 30 | return VersionsCompareResult.Unknown; 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /ContactPoint.Contacts/Schemas/SchemaV2.cs: -------------------------------------------------------------------------------- 1 | namespace ContactPoint.Contacts.Schemas 2 | { 3 | internal class SchemaV2 : SchemaV1 4 | { 5 | public override int Version => 2; 6 | 7 | public override void Upgrade(System.Data.SQLite.SQLiteConnection connection, DatabaseSchema currentSchema) 8 | { 9 | base.Upgrade(connection, currentSchema); 10 | 11 | if (currentSchema.Version < Version) 12 | { 13 | using (var command = connection.CreateCommand()) 14 | { 15 | command.CommandText = @" 16 | alter table contact_infos add column is_deleted int(1) not null default 0; 17 | alter table tags add column is_deleted int(1) not null default 0; 18 | 19 | update info set value_int = 2 where name = 'db_version'; 20 | "; 21 | 22 | command.ExecuteNonQuery(); 23 | } 24 | } 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /ContactPoint.Plugins.ContactsUi/ContactsUiService.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using ContactPoint.Common.PluginManager; 3 | using ContactPoint.Core.PluginManager; 4 | 5 | namespace ContactPoint.Plugins.ContactsUi 6 | { 7 | [Plugin("{9B75A7BA-5B95-494A-833A-2E258675A108}", "AddressBook UI", HaveSettingsForm = false)] 8 | public class ContactsUiService : Plugin 9 | { 10 | private readonly IPluginUIElement[] _uiElements; 11 | 12 | public ContactsUiService(IPluginManager pluginManager) 13 | : base(pluginManager) 14 | { 15 | _uiElements = new IPluginUIElement[] { new ContactsCommand(this) }; 16 | } 17 | 18 | public override IEnumerable UIElements => _uiElements; 19 | public override bool IsStarted => true; 20 | 21 | public override void Start() 22 | { } 23 | 24 | public override void Stop() 25 | { } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /AudioLibrary.WMME/AudioLibrary.WMME.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | net472 4 | false 5 | true 6 | ..\..\Binaries\ 7 | 3009,3003,3001 8 | 9 | 10 | full 11 | 12 | 13 | pdbonly 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /ExceptionReporter/ExceptionReporter/Mail/EmailTextBuilder.cs: -------------------------------------------------------------------------------- 1 | using System.Text; 2 | 3 | namespace ExceptionReporter.Mail 4 | { 5 | /// 6 | /// textual content for email 7 | /// 8 | public class EmailTextBuilder 9 | { 10 | public string CreateIntro(bool takeScreenshot) 11 | { 12 | var s = new StringBuilder() 13 | .AppendLine("The email is ready to be sent.") 14 | .AppendLine("Information relating to the error is included. Please feel free to add any relevant information or attach any files."); 15 | 16 | if (takeScreenshot) 17 | { 18 | s.AppendLine("A screenshot, taken at the time of the exception, is attached.") 19 | .AppendLine("You may delete the attachment before sending if you prefer.") 20 | .AppendLine(); 21 | } 22 | 23 | return s.ToString(); 24 | } 25 | } 26 | } -------------------------------------------------------------------------------- /ContactPoint.Common/Contacts/IVersionable.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | 6 | namespace ContactPoint.Common.Contacts 7 | { 8 | /// 9 | /// Implements versions for objects. 10 | /// 11 | public interface IVersionable 12 | { 13 | /// 14 | /// Version generator assigned to current version container. 15 | /// 16 | IVersionGenerator VersionGenerator { get; } 17 | 18 | /// 19 | /// Version key. 20 | /// 21 | object VersionKey { get; } 22 | 23 | /// 24 | /// Indicates is object changed since initial load. 25 | /// 26 | bool IsChanged { get; } 27 | 28 | /// 29 | /// Generate new version that is greater than current. 30 | /// 31 | void IncrementVersion(); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /ContactPoint.Core/CoreLoader.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.ComponentModel; 3 | using ContactPoint.Common; 4 | 5 | namespace ContactPoint.Core 6 | { 7 | public static class CoreLoader 8 | { 9 | public static event Action PartLoading; 10 | public static event Action LoadingFailed; 11 | 12 | public static ICore CreateCore(ISynchronizeInvoke syncInvoke) 13 | { 14 | try 15 | { 16 | RaisePartLoadingEvent("Initializing Core"); 17 | Core.PartLoading += RaisePartLoadingEvent; 18 | 19 | return new Core(syncInvoke); 20 | } 21 | catch (Exception e) 22 | { 23 | LoadingFailed?.Invoke(e); 24 | throw; 25 | } 26 | } 27 | 28 | private static void RaisePartLoadingEvent(string partName) 29 | { 30 | PartLoading?.Invoke(partName); 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /ContactPoint.BaseDesign/SyncUi.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.ComponentModel; 3 | 4 | namespace ContactPoint.BaseDesign 5 | { 6 | /// 7 | /// Providing static class for synchronizing with UI thread 8 | /// 9 | public static class SyncUi 10 | { 11 | private static ISynchronizeInvoke _syncObject = null; 12 | 13 | /// 14 | /// Initializing mechanism. Should be called from UI thread. 15 | /// Should be called once. Second calls will not affect object. 16 | /// 17 | /// Object to synchronize with. Should be alive while program running. 18 | public static void Initialize(ISynchronizeInvoke syncObject) => _syncObject = syncObject; 19 | 20 | public static bool InvokeRequired => _syncObject.InvokeRequired; 21 | 22 | public static object Invoke(Delegate method, params object[] args) => _syncObject.Invoke(method, args); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /ContactPoint.Plugins.MySqlAddressBook/AddressBook/ContactInfo.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using ContactPoint.Common.Contacts; 6 | 7 | namespace ContactPoint.Plugins.MySqlAddressBook.AddressBook 8 | { 9 | internal class ContactInfo : Versionable, IContactInfo 10 | { 11 | internal int Id { get; set; } 12 | 13 | public string Key { get { return Id.ToString(); } } 14 | public string FirstName { get; set; } 15 | public string MiddleName { get; set; } 16 | public string LastName { get; set; } 17 | public string Company { get; set; } 18 | public string JobTitle { get; set; } 19 | public string Note { get; set; } 20 | 21 | public ICollection PhoneNumbers { get; private set; } 22 | public ICollection Emails { get; private set; } 23 | public ICollection Tags { get; private set; } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /ContactPoint.Plugins.CallsLog/CallEntry.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using ContactPoint.Common; 3 | 4 | namespace ContactPoint.Plugins.CallsLog 5 | { 6 | internal class CallEntry 7 | { 8 | public string Name { get; set; } 9 | public string Number { get; set; } 10 | public DateTime CallDate { get; set; } 11 | public TimeSpan Duration { get; set; } 12 | public bool IsIncoming { get; set; } 13 | public CallRemoveReason DropReason { get; set; } 14 | public bool IsAnswered { get; set; } 15 | 16 | public CallEntry(ICall call, CallRemoveReason reason) 17 | { 18 | Name = call.Name; 19 | Number = call.Number; 20 | CallDate = DateTime.Now - call.Duration; 21 | Duration = call.Duration; 22 | IsIncoming = call.IsIncoming; 23 | DropReason = reason; 24 | IsAnswered = call.LastState == CallState.ACTIVE || call.LastState == CallState.HOLDING; 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /ContactPoint.Plugins.WebServer/HandlerManager.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | using ContactPoint.Plugins.WebServer.Handlers; 5 | using ContactPoint.Common; 6 | 7 | namespace ContactPoint.Plugins.WebServer 8 | { 9 | internal class HandlerManager 10 | { 11 | private Dictionary _handlers = new Dictionary(); 12 | 13 | public IHandler this[string uri] 14 | { 15 | get 16 | { 17 | if (_handlers.ContainsKey(uri)) 18 | return _handlers[uri]; 19 | 20 | return null; 21 | } 22 | } 23 | 24 | public HandlerManager() 25 | { } 26 | 27 | public void RegisterHandler(string uri, IHandler handler) 28 | { 29 | _handlers.Add(uri, handler); 30 | } 31 | 32 | public void UnregisterHandler(string uri) 33 | { 34 | _handlers.Remove(uri); 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /ContactPoint.Common/IService.cs: -------------------------------------------------------------------------------- 1 | namespace ContactPoint.Common 2 | { 3 | public delegate void ServiceStartedDelegate(object sender); 4 | public delegate void ServiceStoppedDelegate(object sender, string message); 5 | 6 | /// 7 | /// Base CallService service 8 | /// 9 | public interface IService 10 | { 11 | /// 12 | /// Occurs when service started 13 | /// 14 | event ServiceStartedDelegate Started; 15 | 16 | /// 17 | /// Occurs when service stopped 18 | /// 19 | event ServiceStoppedDelegate Stopped; 20 | 21 | /// 22 | /// Start service 23 | /// 24 | void Start(); 25 | 26 | /// 27 | /// Stop service 28 | /// 29 | void Stop(); 30 | 31 | /// 32 | /// Indicates that service is started 33 | /// 34 | bool IsStarted { get; } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /ContactPoint.Common/PluginManager/IPluginManager.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | 4 | namespace ContactPoint.Common.PluginManager 5 | { 6 | /// 7 | /// Plugin manager 8 | /// 9 | public interface IPluginManager : IService 10 | { 11 | /// 12 | /// Core object 13 | /// 14 | ICore Core { get; } 15 | 16 | /// 17 | /// List of all available plugins 18 | /// 19 | IEnumerable Plugins { get; } 20 | 21 | /// 22 | /// Execute plugin action 23 | /// 24 | /// Target action ID 25 | /// Target plugin ID 26 | /// Optional data 27 | /// Return checked/unchecked action result or NULL 28 | bool? ExecuteAction(Guid actionId, Guid? pluginId = null, object data = null); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /ExceptionReporter/ExceptionReporter/Core/AssemblyReferenceDigger.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Text; 3 | 4 | namespace ExceptionReporter.Core 5 | { 6 | /// 7 | /// Used to find and do things with referenced assemblies 8 | /// 9 | public class AssemblyReferenceDigger 10 | { 11 | private readonly Assembly _assembly; 12 | 13 | ///Initialise with assembly 14 | public AssemblyReferenceDigger(Assembly assembly) 15 | { 16 | _assembly = assembly; 17 | } 18 | 19 | /// Finds all assemblies referenced and return a string 20 | /// line-delimited string of referenced assemblies 21 | public string CreateReferencesString() 22 | { 23 | var stringBuilder = new StringBuilder(); 24 | 25 | foreach (var assemblyName in _assembly.GetReferencedAssemblies()) 26 | { 27 | stringBuilder.AppendLine(string.Format("{0}, Version={1}", assemblyName.Name, assemblyName.Version)); 28 | } 29 | 30 | return stringBuilder.ToString(); 31 | } 32 | } 33 | } -------------------------------------------------------------------------------- /ContactPoint.Plugins.MySqlAddressBook/AddressBook/Versionable.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using ContactPoint.Common.Contacts; 6 | 7 | namespace ContactPoint.Plugins.MySqlAddressBook.AddressBook 8 | { 9 | internal class Versionable : IVersionable 10 | { 11 | internal static int DefaultValue = 0; 12 | 13 | public Versionable() 14 | { 15 | VersionKey = DefaultValue; 16 | } 17 | 18 | public int VersionKey { get; set; } 19 | public virtual bool IsChanged { get; set; } 20 | 21 | public IVersionGenerator VersionGenerator 22 | { 23 | get { return MySqlAddressBook.AddressBook.VersionGenerator.Instance; } 24 | } 25 | 26 | public void IncrementVersion() 27 | { 28 | VersionKey = MySqlAddressBook.AddressBook.VersionGenerator.Instance.GenerateNextVersion(this); 29 | } 30 | 31 | object IVersionable.VersionKey { get { return VersionKey; } } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /ExceptionReporter/ExceptionReporter/ViewFactory.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using ContactPoint.BaseDesign; 3 | using ExceptionReporter.Core; 4 | 5 | namespace ExceptionReporter 6 | { 7 | /// 8 | /// ViewFactory inspects the assembly and retrieves the appropriate class 9 | /// 10 | internal static class ViewFactory 11 | { 12 | public static T Create(ViewResolver viewResolver, ExceptionReportInfo reportInfo) where T : class 13 | { 14 | if (SyncUi.InvokeRequired) 15 | { 16 | return (T)SyncUi.Invoke(new Func(Create), viewResolver, reportInfo); 17 | } 18 | 19 | var view = viewResolver.Resolve(); 20 | 21 | var constructor = view.GetConstructor(new[] {typeof (ExceptionReportInfo)}); 22 | var newInstance = constructor.Invoke(new object[] {reportInfo}); 23 | return newInstance as T; 24 | } 25 | 26 | public static T Create(ViewResolver viewResolver) where T : class 27 | { 28 | return Activator.CreateInstance(viewResolver.Resolve()) as T; 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /ExceptionReporter/ExceptionReporter/SystemInfo/SysInfoQuery.cs: -------------------------------------------------------------------------------- 1 | namespace ExceptionReporter.SystemInfo 2 | { 3 | /// 4 | /// describes a query to SysInfo (more precisely, the Windows 'WMI' ManagementObjectSearcher) 5 | /// 6 | internal class SysInfoQuery 7 | { 8 | private readonly string _name; 9 | private readonly bool _useNameAsDisplayField; 10 | private readonly string _queryText; 11 | 12 | public SysInfoQuery(string name, string query, bool useNameAsDisplayField) 13 | { 14 | _name = name; 15 | _useNameAsDisplayField = useNameAsDisplayField; 16 | _queryText = query; 17 | } 18 | 19 | public string QueryText 20 | { 21 | get { return _queryText; } 22 | } 23 | 24 | public string DisplayField 25 | { 26 | get { return _useNameAsDisplayField ? "Name" : "Caption"; } 27 | } 28 | 29 | public string Name 30 | { 31 | get { return _name; } 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /ContactPoint.Plugins.ContactsUi/ViewModels/ContactPhoneViewModel.cs: -------------------------------------------------------------------------------- 1 | using ContactPoint.Common; 2 | using ContactPoint.Common.Contacts.Local; 3 | 4 | namespace ContactPoint.Plugins.ContactsUi.ViewModels 5 | { 6 | internal class ContactPhoneViewModel : ViewModel 7 | { 8 | private readonly ICallManager _callManager; 9 | public long Id { get; private set; } 10 | public string Number { get; set; } 11 | public string Comment { get; set; } 12 | 13 | public ContactPhoneViewModel(ICallManager callManager, IContactPhoneLocal contactPhone) 14 | { 15 | _callManager = callManager; 16 | Id = contactPhone.Id; 17 | Number = contactPhone.Number; 18 | Comment = contactPhone.Comment; 19 | } 20 | 21 | public void UnWrap(IContactPhoneLocal contactPhone) 22 | { 23 | contactPhone.Number = Number; 24 | contactPhone.Comment = Comment; 25 | } 26 | 27 | public void Call() 28 | { 29 | _callManager.MakeCall(Number); 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /ContactPoint.Plugins.LocalAddressBook/ContactPoint.Plugins.LocalAddressBook.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | net472 4 | false 5 | ..\..\binaries\plugins\LocalAddressbook\ 6 | 7 | 8 | full 9 | 10 | 11 | pdbonly 12 | 13 | 14 | 15 | 16 | 17 | 18 | false 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /IPPhone.Build.nuspec: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | IPPhone.Build 5 | ContactPoint® IP Phone 6 | 1.9.0 7 | Alex Yevtushenko 8 | Alex Yevtushenko 9 | https://github.com/ipphone/core/ 10 | https://avatars3.githubusercontent.com/u/26443470 11 | 12 | false 13 | ContactPoint IP Phone 14 | ContactPoint IP Phone is an implementation of SIP softphone for Windows 15 | Copyright © ContactPoint 2021 16 | voip voip-application softphone windows-forms sip pjsip pjsua asterisk phone telephony telephone plugin plugins 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /ContactPoint.BaseDesign.Wpf/DelegateCommand.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows.Input; 3 | 4 | namespace ContactPoint.BaseDesign.Wpf 5 | { 6 | public class DelegateCommand : ICommand 7 | { 8 | private readonly Action _handler; 9 | private readonly Func _canExecuteHandler; 10 | 11 | #pragma warning disable 0067 12 | public event EventHandler CanExecuteChanged; 13 | #pragma warning restore 0067 14 | 15 | public DelegateCommand(Action handler) 16 | { 17 | _handler = handler; 18 | } 19 | 20 | public DelegateCommand(Action handler, Func canExecuteHandler) 21 | : this(handler) 22 | { 23 | _canExecuteHandler = canExecuteHandler; 24 | } 25 | 26 | public void Execute(object parameter) 27 | { 28 | _handler(parameter); 29 | } 30 | 31 | public bool CanExecute(object parameter) 32 | { 33 | return _canExecuteHandler == null || _canExecuteHandler(parameter); 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /ContactPoint.Plugins.GoogleContacts/Model/Contact.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using ContactPoint.Common.Contacts; 6 | 7 | namespace ContactPoint.Plugins.GoogleContacts.Model 8 | { 9 | internal class Contact : Versionable, IContactInfo 10 | { 11 | public string Key { get; set; } 12 | public string FirstName { get; set; } 13 | public string MiddleName { get; set; } 14 | public string LastName { get; set; } 15 | public string Company { get; set; } 16 | public string JobTitle { get; set; } 17 | public string Note { get; set; } 18 | public ICollection PhoneNumbers { get; private set; } 19 | public ICollection Emails { get; private set; } 20 | public ICollection Tags { get; private set; } 21 | 22 | public Contact() 23 | { 24 | PhoneNumbers = new List(); 25 | Emails = new List(); 26 | Tags = new List(); 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /ContactPoint.BaseDesign/BaseNotifyControls/NotifyControl.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel; 2 | using System.Threading; 3 | using System.Windows.Forms; 4 | 5 | namespace ContactPoint.BaseDesign.BaseNotifyControls 6 | { 7 | public delegate void Action(); 8 | 9 | [ToolboxItem(false)] 10 | public class NotifyControl : UserControl 11 | { 12 | private readonly ManualResetEvent _formAssignedEvent = new ManualResetEvent(false); 13 | public NotifyForm NotifyForm { get; set; } 14 | 15 | public NotifyControl() 16 | { } 17 | 18 | public void Close() 19 | { 20 | if (InvokeRequired) 21 | { 22 | Invoke(new Action(Close)); 23 | 24 | return; 25 | } 26 | 27 | if (_formAssignedEvent.WaitOne(2000)) 28 | NotifyForm.QueryClose(); 29 | } 30 | 31 | public virtual void OnShow() 32 | { } 33 | 34 | public virtual void OnClosing() 35 | { } 36 | 37 | internal void NotifyOnCreate() 38 | { 39 | _formAssignedEvent.Set(); 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /ContactPoint.Core/SIP/SipMessenger.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Linq; 3 | using ContactPoint.Common; 4 | using ContactPoint.Common.SIP; 5 | 6 | namespace ContactPoint.Core.SIP 7 | { 8 | class SipMessenger : ISipMessenger 9 | { 10 | public event Action MessageReceived; 11 | 12 | public SipMessenger(SIP sip) 13 | { 14 | sip.SipekResources.Messenger.MessageReceived += MessengerOnMessageReceived; 15 | } 16 | 17 | private void MessengerOnMessageReceived(string from, string message) 18 | { 19 | Logger.LogNotice($"SIP message received from '{from}': {message}"); 20 | foreach (var handler in MessageReceived?.GetInvocationList() ?? Enumerable.Empty()) 21 | { 22 | try 23 | { 24 | handler.DynamicInvoke(from, message); 25 | } 26 | catch (Exception e) 27 | { 28 | Logger.LogWarn(e, "Exception occured while processing 'MessageReceived' event"); 29 | } 30 | } 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /ContactPoint.BaseDesign.Wpf/CommonStyles.xaml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 10 | 11 | 14 | 15 | 18 | 19 | 29 | -------------------------------------------------------------------------------- /SipekSDK/SipekSdk/SipekSdk.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | Sipek 4 | net472 5 | false 6 | true 7 | ..\..\Binaries\ 8 | 3005 9 | portable 10 | 11 | 12 | Full 13 | False 14 | 15 | 16 | pdbonly 17 | Auto 18 | False 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /ContactPoint.Plugins.CallTools/Pause/PauseButtonUiElement.cs: -------------------------------------------------------------------------------- 1 | using ContactPoint.Common.PluginManager; 2 | using ContactPoint.Common.SIP.Account; 3 | 4 | namespace ContactPoint.Plugins.CallTools.Pause 5 | { 6 | public class PauseButtonUiElement : AccountStateUiElement 7 | { 8 | public PauseButtonUiElement(IPlugin plugin) : base(plugin) 9 | { } 10 | 11 | protected override void ExecuteCheckedCommand(object sender, bool checkedValue, object data) 12 | { 13 | base.ExecuteCheckedCommand(sender, checkedValue, data); 14 | 15 | Checked = false; 16 | Plugin.PluginManager.Core.Sip.Account.PresenceStatus = new PresenceStatus(TargetState, data as string ?? Text, null); 17 | } 18 | 19 | protected override void AccountOnPresenceStatusChanged(ISipAccount account) 20 | { } 21 | 22 | protected override void AccountOnRegisterStateChanged(ISipAccount account) 23 | { 24 | if (account == null) 25 | { 26 | return; 27 | } 28 | 29 | SetEnabled(true); 30 | RaiseUIChangedEvent(); 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /ContactPoint/Commands/StartPhoneCallCommand.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Linq; 3 | 4 | namespace ContactPoint.Commands 5 | { 6 | public class StartPhoneCallCommand 7 | { 8 | public List> Attributes { get; set; } = new List>(); 9 | public string Destination { get; set; } 10 | 11 | public static StartPhoneCallCommand CreateFromCommandLine(string cmd) 12 | { 13 | if (string.IsNullOrEmpty(cmd)) 14 | { 15 | return null; 16 | } 17 | 18 | var parts = cmd.Split('&'); 19 | return new StartPhoneCallCommand() 20 | { 21 | Destination = parts[0], 22 | Attributes = parts.Length > 1 23 | ? parts.Skip(1) 24 | .Select(x => x.Split(new[] {'='}, 2)) 25 | .Select(x => new KeyValuePair(x[0], x.Length > 1 ? x[1] : null)) 26 | .ToList() 27 | : new List>() 28 | }; 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /ContactPoint.Plugins.ContactsUi/Controls/TextBoxValidationHelper.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Drawing; 3 | using System.Windows.Forms; 4 | 5 | namespace ContactPoint.Plugins.ContactsUi.Controls 6 | { 7 | internal class TextBoxValidationHelper 8 | { 9 | private readonly TextBox _textBox; 10 | private readonly Func _validator; 11 | private readonly Color _initialColor; 12 | 13 | public TextBoxValidationHelper(TextBox textBox, Func validator) 14 | { 15 | _textBox = textBox; 16 | _validator = validator; 17 | 18 | _initialColor = textBox.BackColor; 19 | 20 | textBox.Validating += TextBoxValidating; 21 | } 22 | 23 | void TextBoxValidating(object sender, System.ComponentModel.CancelEventArgs e) 24 | { 25 | if (!_validator.Invoke()) 26 | { 27 | _textBox.BackColor = Color.LightCoral; 28 | e.Cancel = true; 29 | } 30 | else 31 | { 32 | _textBox.BackColor = _initialColor; 33 | e.Cancel = false; 34 | } 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /ContactPoint.Plugins.CallTools/IncomingCallNotificationPlugin.cs: -------------------------------------------------------------------------------- 1 | using ContactPoint.Common.PluginManager; 2 | using ContactPoint.Core.PluginManager; 3 | using ContactPoint.Plugins.CallTools.CallNotifyWindow; 4 | 5 | namespace ContactPoint.Plugins.CallTools 6 | { 7 | [Plugin("{718a93ed-2355-436c-979d-e2ca8b40f977}", "Incoming call notifications plugin", HaveSettingsForm = false)] 8 | public class IncomingCallNotificationPlugin : Plugin 9 | { 10 | private readonly CallNotifyWindowService _callNotifyWindowService; 11 | private bool _isStarted; 12 | 13 | public override bool IsStarted => _isStarted; 14 | 15 | public IncomingCallNotificationPlugin(IPluginManager pluginManager) 16 | : base(pluginManager) 17 | { 18 | _callNotifyWindowService = new CallNotifyWindowService(this); 19 | } 20 | 21 | public override void Start() 22 | { 23 | _isStarted = true; 24 | _callNotifyWindowService.Start(); 25 | } 26 | 27 | public override void Stop() 28 | { 29 | _isStarted = false; 30 | _callNotifyWindowService.Stop(); 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /AudioLibrary/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace AudioLibrary.Properties { 12 | 13 | 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")] 16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { 17 | 18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 19 | 20 | public static Settings Default { 21 | get { 22 | return defaultInstance; 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /ExceptionReporter/ExceptionReporter/IExceptionReportView.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | 4 | #pragma warning disable 1591 5 | 6 | namespace ExceptionReporter 7 | { 8 | /// 9 | /// The interface (contract) for an ExceptionReportView 10 | /// 11 | public interface IExceptionReportView 12 | { 13 | string ProgressMessage { set; } 14 | bool EnableEmailButton { set; } 15 | bool ShowProgressBar { set; } 16 | bool ShowFullDetail { get; set; } 17 | string UserExplanation { get; } 18 | void ShowErrorDialog(string message, Exception exception); 19 | void SetEmailCompletedState(bool success); 20 | void SetEmailCompletedState_WithMessageIfSuccess(bool success, string successMessage); 21 | void SetInProgressState(); 22 | void PopulateConfigTab(string filePath); 23 | void PopulateExceptionTab(IList exceptions); 24 | void PopulateAssembliesTab(); 25 | void PopulateSysInfoTab(); 26 | void SetProgressCompleteState(); 27 | void ToggleShowFullDetail(); 28 | void ShowExceptionReport(); 29 | } 30 | } 31 | 32 | #pragma warning restore 1591 33 | -------------------------------------------------------------------------------- /ContactPoint.BaseDesign.Wpf/Controls/CircleButton.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Windows; 6 | using System.Windows.Controls; 7 | using System.Windows.Data; 8 | using System.Windows.Documents; 9 | using System.Windows.Input; 10 | using System.Windows.Media; 11 | using System.Windows.Media.Imaging; 12 | using System.Windows.Navigation; 13 | using System.Windows.Shapes; 14 | 15 | namespace ContactPoint.BaseDesign.Wpf.Controls 16 | { 17 | /// 18 | /// Interaction logic for CircleButton.xaml 19 | /// 20 | public partial class CircleButton 21 | { 22 | public static readonly DependencyProperty IconProperty = DependencyProperty.Register("Icon", typeof(FrameworkElement), typeof(CircleButton), new PropertyMetadata(null)); 23 | 24 | public FrameworkElement Icon 25 | { 26 | get { return (FrameworkElement)GetValue(IconProperty); } 27 | set { SetValue(IconProperty, value); } 28 | } 29 | 30 | public string Text { get; set; } 31 | 32 | public CircleButton() 33 | { 34 | InitializeComponent(); 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /ContactPoint/Controls/MainFormMenuItemControl.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using ComponentFactory.Krypton.Toolkit; 3 | 4 | namespace ContactPoint.Controls 5 | { 6 | class MainFormMenuItemControl : KryptonContextMenuItem 7 | { 8 | private readonly KryptonCommand _command; 9 | 10 | public KryptonContextMenuItems Parent { get; } 11 | 12 | public override KryptonCommand KryptonCommand 13 | { 14 | get { return _command; } 15 | set { } 16 | } 17 | 18 | public MainFormMenuItemControl(KryptonCommand command, KryptonContextMenuItems parent) 19 | { 20 | Parent = parent; 21 | 22 | _command = command; 23 | _command.Disposed += CommandDisposed; 24 | } 25 | 26 | protected override void Dispose(bool disposing) 27 | { 28 | if (disposing) 29 | { 30 | Parent?.Items?.Remove(this); 31 | KryptonCommand.Disposed -= CommandDisposed; 32 | } 33 | 34 | base.Dispose(disposing); 35 | } 36 | 37 | private void CommandDisposed(object sender, EventArgs e) 38 | { 39 | Dispose(true); 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /ContactPoint.Plugins.MySqlAddressBook/SqlConnectionManager.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using ContactPoint.Common; 6 | using MySql.Data.MySqlClient; 7 | 8 | namespace ContactPoint.Plugins.MySqlAddressBook 9 | { 10 | internal class SqlConnectionManager 11 | { 12 | private string _connectionString = String.Empty; 13 | 14 | public string ConnectionString 15 | { 16 | get { return _connectionString; } 17 | set { _connectionString = value; } 18 | } 19 | 20 | public SqlConnectionManager(string connectionString) 21 | { 22 | _connectionString = connectionString; 23 | } 24 | 25 | public MySqlConnection OpenConnection() 26 | { 27 | try 28 | { 29 | var connection = new MySqlConnection(_connectionString); 30 | connection.Open(); 31 | 32 | return connection; 33 | } 34 | catch (Exception ex) 35 | { 36 | Logger.LogWarn(ex, "Couldn't open connection to MySQL server."); 37 | throw; 38 | } 39 | } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /ContactPoint.Plugins.PauseNotifications/ContactPoint.Plugins.PauseNotifications.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | net472 4 | false 5 | ..\..\Binaries\Plugins\PauseNotifications\ 6 | 7 | 8 | full 9 | DEBUG 10 | 11 | 12 | pdbonly 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | false 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /AudioLibrary.PjSIP/PjLoader.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Runtime.InteropServices; 3 | using System.Windows.Threading; 4 | using AudioLibrary.Interfaces; 5 | using Sipek; 6 | 7 | namespace AudioLibrary.PjSIP 8 | { 9 | public class PjLoader : IDisposable 10 | { 11 | [DllImport(Sipek.Native.PJSIP_DLL, EntryPoint = "dll_init", CallingConvention = CallingConvention.Cdecl)] 12 | private static extern int dll_init(); 13 | [DllImport(Sipek.Native.PJSIP_DLL, EntryPoint = "dll_main", CallingConvention = CallingConvention.Cdecl)] 14 | private static extern int dll_main(); 15 | [DllImport(Sipek.Native.PJSIP_DLL, EntryPoint = "dll_shutdown", CallingConvention = CallingConvention.Cdecl)] 16 | private static extern int dll_shutdown(); 17 | 18 | public PjLoader() 19 | { } 20 | 21 | public IAudio GetAudio() 22 | { 23 | return new Audio(); 24 | } 25 | 26 | public void Init() 27 | { 28 | CommonDelegates.Initialize(Dispatcher.CurrentDispatcher); 29 | 30 | dll_init(); 31 | dll_main(); 32 | } 33 | 34 | public void Dispose() 35 | { 36 | dll_shutdown(); 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /ContactPoint.Common/CallManager/IHeaderCollection.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace ContactPoint.Common.CallManager 6 | { 7 | /// 8 | /// Collection of headers 9 | /// 10 | public interface IHeaderCollection : IEnumerable 11 | { 12 | /// 13 | /// Get header by name (case insensitive) 14 | /// 15 | /// Header name 16 | /// Header 17 | IHeader this[string key] { get; } 18 | 19 | /// 20 | /// Headers count 21 | /// 22 | int Count { get; } 23 | 24 | /// 25 | /// Check if header with specified name is exists 26 | /// 27 | /// Header name 28 | /// True if header exists 29 | bool Contains(string key); 30 | 31 | /// 32 | /// Get value if exists or return empty string if not 33 | /// 34 | /// Header name 35 | /// Header value 36 | string GetValueSafe(string key); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /ContactPoint.Plugins.CallTools/AutoAnswer/AutoAnswerService.cs: -------------------------------------------------------------------------------- 1 | using ContactPoint.Common; 2 | using ContactPoint.Common.PluginManager; 3 | 4 | namespace ContactPoint.Plugins.CallTools.AutoAnswer { 5 | class AutoAnswerService { 6 | private readonly IPluginManager _pluginManager; 7 | 8 | internal bool IsStarted { get; private set; } 9 | 10 | public void Start() { 11 | if (IsStarted) { return; } 12 | _pluginManager.Core.CallManager.OnCallStateChanged += CallManager_OnCallStateChanged; 13 | IsStarted = true; 14 | } 15 | 16 | public void Stop() { 17 | if (!IsStarted) { return; } 18 | _pluginManager.Core.CallManager.OnCallStateChanged -= CallManager_OnCallStateChanged; 19 | IsStarted = false; 20 | } 21 | 22 | public AutoAnswerService(IPlugin plugin) { 23 | _pluginManager = plugin.PluginManager; 24 | } 25 | 26 | void CallManager_OnCallStateChanged(ICall call) { 27 | if (call != null && !call.IsDisposed && call.IsIncoming && (call.State == CallState.ALERTING || call.State == CallState.INCOMING) && call.Headers.Contains("x-auto-answer")) 28 | call.Answer(); 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /IPPhone.Common.nuspec: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | IPPhone.Common 5 | ContactPoint® IP Phone Common 6 | 1.9.0 7 | Alex Yevtushenko 8 | Alex Yevtushenko 9 | https://github.com/ipphone/core/ 10 | https://avatars3.githubusercontent.com/u/26443470 11 | 12 | false 13 | ContactPoint IP Phone Common Assemblies 14 | ContactPoint IP Phone is an implementation of SIP softphone for Windows 15 | Copyright © ContactPoint 2021 16 | voip voip-application softphone windows-forms sip pjsip pjsua asterisk phone telephony telephone plugin plugins 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /ContactPoint.Plugins.Pause/PauseService.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | using ContactPoint.Common.PluginManager; 5 | using ContactPoint.Core.PluginManager; 6 | 7 | namespace ContactPoint.Plugins.Pause 8 | { 9 | [Plugin("{D114913D-5656-44b8-B57B-DA0C4F116988}", "Pause")] 10 | public class PauseService : Plugin 11 | { 12 | private List _uiElements = new List(); 13 | public override List UIElements 14 | { 15 | get { return _uiElements; } 16 | } 17 | 18 | public PauseService(IPluginManager pluginManager) 19 | : base(pluginManager) 20 | { 21 | _uiElements.Add(new PauseUiElement(this)); 22 | } 23 | 24 | public override void Start() 25 | { 26 | _isStarted = true; 27 | RaiseStartedEvent(); 28 | } 29 | 30 | public override void Stop() 31 | { 32 | _isStarted = false; 33 | RaiseStoppedEvent("Normal stop"); 34 | } 35 | 36 | private bool _isStarted; 37 | public override bool IsStarted 38 | { 39 | get { return _isStarted; } 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /ContactPoint.Plugins.CallTools/CallNotifyWindow/CallNotifyWindowService.cs: -------------------------------------------------------------------------------- 1 | using ContactPoint.BaseDesign; 2 | using ContactPoint.BaseDesign.BaseNotifyControls; 3 | using ContactPoint.Common; 4 | using ContactPoint.Common.PluginManager; 5 | 6 | namespace ContactPoint.Plugins.CallTools.CallNotifyWindow 7 | { 8 | internal class CallNotifyWindowService 9 | { 10 | private readonly IPlugin _plugin; 11 | 12 | public bool IsWindowPersistent => _plugin.PluginManager.Core.SettingsManager.Get(CallToolsOptions.NotHideCallWindowName); 13 | 14 | public CallNotifyWindowService(IPlugin plugin) 15 | { 16 | _plugin = plugin; 17 | } 18 | 19 | public void Start() 20 | { 21 | NotifyControlFactory.RegisterNotifyControlFactory(Notifications.IncomingCall, CreateCallNotifyControl); 22 | } 23 | 24 | public void Stop() 25 | { 26 | NotifyControlFactory.UnregisterNotifyControlFactory(Notifications.IncomingCall, CreateCallNotifyControl); 27 | } 28 | 29 | private NotifyControl CreateCallNotifyControl(object param) 30 | { 31 | return param is ICall call ? new CallNotifyControl(call, IsWindowPersistent) : null; 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /ContactPoint.Plugins.MySqlAddressBook/server_script.sql: -------------------------------------------------------------------------------- 1 | delimiter $$ 2 | 3 | CREATE TABLE `contacts` ( 4 | `id` INT(11) PRIMARY KEY AUTOINCREMENT NOT NULL, 5 | `first_name` NVARCHAR(255) NULL, 6 | `last_name` NVARCHAR(255) NULL, 7 | `middle_name` NVARCHAR(255) NULL, 8 | `company` NVARCHAR(255) NULL, 9 | `job_title` NVARCHAR(255) NULL, 10 | `note` NTEXT NULL, 11 | `version_tag` INT(11) NOT NULL DEFAULT 1 12 | ) 13 | $$ 14 | 15 | CREATE TABLE `contact_phones` ( 16 | `id` INT(11) PRIMARY KEY AUTOINCREMENT NOT NULL, 17 | `contact_id` INT(11) NOT NULL, 18 | `number` NVARCHAR(50) NOT NULL, 19 | `comment` NVARCHAR(255) NULL, 20 | `version_tag` INT(11) NOT NULL DEFAULT 1 21 | ) 22 | $$ 23 | 24 | CREATE TABLE `contact_emails` ( 25 | `id` INT(11) PRIMARY KEY AUTOINCREMENT NOT NULL, 26 | `contact_id` INT(11) NOT NULL, 27 | `key` NVARCHAR(50) NULL, 28 | `email` NVARCHAR(50) NOT NULL, 29 | `comment` NVARCHAR(255) NULL, 30 | `version_tag` INT(11) NOT NULL DEFAULT 1 31 | ) 32 | $$ 33 | 34 | CREATE TABLE `tags` ( 35 | `id` INT(11) PRIMARY KEY AUTOINCREMENT NOT NULL, 36 | `version_tag` INT(11) NOT NULL DEFAULT 1, 37 | `name` NVARCHAR(50) NOT NULL, 38 | `color` NVARCHAR(16) DEFAULT '' NOT NULL 39 | ) 40 | $$ 41 | 42 | CREATE TABLE `tags_links` ( 43 | `tag_id` INT(11) NOT NULL, 44 | `contact_id` INT(11) NOT NULL 45 | ) 46 | $$ 47 | -------------------------------------------------------------------------------- /ContactPoint.Plugins.ContactsUi/ViewModels/ContactEmailViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | using ContactPoint.Common.Contacts.Local; 3 | 4 | namespace ContactPoint.Plugins.ContactsUi.ViewModels 5 | { 6 | internal class ContactEmailViewModel : ViewModel 7 | { 8 | public long Id { get; private set; } 9 | public string Email { get; set; } 10 | public string Comment { get; set; } 11 | 12 | public ContactEmailViewModel(IContactEmailLocal contactEmail) 13 | { 14 | Id = contactEmail.Id; 15 | Email = contactEmail.Email; 16 | Comment = contactEmail.Comment; 17 | } 18 | 19 | public void UnWrap(IContactEmailLocal contactEmail) 20 | { 21 | contactEmail.Email = Email; 22 | contactEmail.Comment = Comment; 23 | } 24 | 25 | public void SendEmail() 26 | { 27 | Process.Start(string.Format("mailto:{0}", Email)); 28 | } 29 | } 30 | 31 | internal class ContactEmailRemoveMessage 32 | { 33 | public ContactEmailViewModel ContactEmailViewModel { get; private set; } 34 | 35 | public ContactEmailRemoveMessage(ContactEmailViewModel viewModel) 36 | { 37 | ContactEmailViewModel = viewModel; 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /ExceptionReporter/ExceptionReporter/Core/ExceptionReport.cs: -------------------------------------------------------------------------------- 1 | using System.Text; 2 | 3 | namespace ExceptionReporter.Core 4 | { 5 | /// 6 | /// Encapsulates the concept of an ExceptionReport 7 | /// 8 | public class ExceptionReport 9 | { 10 | private readonly StringBuilder _reportString; 11 | 12 | public ExceptionReportInfo ReportInfo { get; private set; } 13 | 14 | /// 15 | /// Construct an ExceptionReport from a StringBuilder 16 | /// 17 | public ExceptionReport(StringBuilder stringBuilder, ExceptionReportInfo reportInfo) 18 | { 19 | _reportString = stringBuilder; 20 | 21 | ReportInfo = reportInfo; 22 | } 23 | 24 | public override string ToString() 25 | { 26 | return _reportString.ToString(); 27 | } 28 | 29 | private bool Equals(ExceptionReport obj) 30 | { 31 | return Equals(obj._reportString.ToString(), _reportString.ToString()); 32 | } 33 | 34 | public override bool Equals(object obj) 35 | { 36 | return Equals((ExceptionReport) obj); 37 | } 38 | 39 | public override int GetHashCode() 40 | { 41 | return _reportString.GetHashCode(); 42 | } 43 | } 44 | } -------------------------------------------------------------------------------- /ContactPoint.Tests.WinForms/ContactPoint.Tests.WinForms.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | net472 4 | UnitTest 5 | ..\..\Binaries\Tests\ 6 | false 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /ContactPoint/Services/AudioDeviceService.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using ContactPoint.BaseDesign; 4 | using ContactPoint.Common; 5 | using ContactPoint.NotifyControls; 6 | 7 | namespace ContactPoint.Services 8 | { 9 | class AudioDeviceService : IDisposable 10 | { 11 | private readonly ICore _core; 12 | 13 | public AudioDeviceService(ICore core) 14 | { 15 | _core = core; 16 | 17 | _core.Audio.AudioDevicesAdded += AudioDevicesAdded; 18 | _core.Audio.AudioDevicesRemoved += AudioDevicesRemoved; 19 | } 20 | 21 | void AudioDevicesAdded(IEnumerable obj) 22 | { 23 | NotifyManager.NotifyUser(new AudioDevicesAddedNotifyControl { AudioDevices = obj, Core = _core }); 24 | } 25 | 26 | void AudioDevicesRemoved(IEnumerable obj) 27 | { 28 | NotifyManager.NotifyUser(new AudioDevicesRemovedNotifyControl { AudioDevices = obj, Core = _core }); 29 | } 30 | 31 | public void Dispose() 32 | { 33 | _core.Audio.AudioDevicesAdded -= AudioDevicesAdded; 34 | _core.Audio.AudioDevicesRemoved -= AudioDevicesRemoved; 35 | 36 | _core.Audio.Dispose(); 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /IPPhone.Plugins.HotKeys.nuspec: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | IPPhone.Plugins.HotKeys 5 | ContactPoint® IP Phone Hot Keys Plugin 6 | 1.9.0 7 | Alex Yevtushenko 8 | Alex Yevtushenko 9 | https://github.com/ipphone/core/ 10 | https://avatars3.githubusercontent.com/u/26443470 11 | 12 | false 13 | ContactPoint IP Phone Hot Keys Plugin Assemblies 14 | ContactPoint IP Phone is an implementation of SIP softphone for Windows 15 | Copyright © ContactPoint 2021 16 | voip voip-application softphone windows-forms sip pjsip pjsua asterisk phone telephony telephone plugin plugins 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /IPPhone.Plugins.CallsLog.nuspec: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | IPPhone.Plugins.CallsLog 5 | ContactPoint® IP Phone Calls Log Plugin 6 | 1.9.0 7 | Alex Yevtushenko 8 | Alex Yevtushenko 9 | https://github.com/ipphone/core/ 10 | https://avatars3.githubusercontent.com/u/26443470 11 | 12 | false 13 | ContactPoint IP Phone Calls Log Plugin Assemblies 14 | ContactPoint IP Phone is an implementation of SIP softphone for Windows 15 | Copyright © ContactPoint 2021 16 | voip voip-application softphone windows-forms sip pjsip pjsua asterisk phone telephony telephone plugin plugins 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /IPPhone.Plugins.CallTools.nuspec: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | IPPhone.Plugins.CallTools 5 | ContactPoint® IP Phone Call Tools Plugin 6 | 1.9.0 7 | Alex Yevtushenko 8 | Alex Yevtushenko 9 | https://github.com/ipphone/core/ 10 | https://avatars3.githubusercontent.com/u/26443470 11 | 12 | false 13 | ContactPoint IP Phone Call Tools Plugin Assemblies 14 | ContactPoint IP Phone is an implementation of SIP softphone for Windows 15 | Copyright © ContactPoint 2021 16 | voip voip-application softphone windows-forms sip pjsip pjsua asterisk phone telephony telephone plugin plugins 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /ContactPoint.Plugins.WebServer/TemplateTools.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | using System.Reflection; 5 | using System.IO; 6 | 7 | namespace ContactPoint.Plugins.WebServer 8 | { 9 | internal static class TemplateTools 10 | { 11 | private static string DEFAULT_LOCATION = @"webserver\templates"; 12 | 13 | public static void InitializePath(string defaultLocation) 14 | { 15 | DEFAULT_LOCATION = Path.Combine(defaultLocation, "templates"); 16 | } 17 | 18 | public static byte[] ReadResourceFile(string fileName) 19 | { 20 | return File.ReadAllBytes(Path.Combine(DEFAULT_LOCATION, fileName)); 21 | } 22 | 23 | public static string ReadTemplateFile(string fileName) 24 | { 25 | return File.ReadAllText(Path.Combine(DEFAULT_LOCATION, fileName)); 26 | } 27 | 28 | public static byte[] ProcessTemplate(string fileName, IDictionary replaces) 29 | { 30 | var content = ReadTemplateFile(fileName); 31 | 32 | foreach (var replaceToken in replaces) 33 | content = content.Replace(String.Format("%{0}%", replaceToken.Key), replaceToken.Value); 34 | 35 | return Encoding.UTF8.GetBytes(content); 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /IPPhone.Plugins.ContactsUI.nuspec: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | IPPhone.Plugins.ContactsUI 5 | ContactPoint® IP Phone Contacts UI Plugin 6 | 1.9.0 7 | Alex Yevtushenko 8 | Alex Yevtushenko 9 | https://github.com/ipphone/core/ 10 | https://avatars3.githubusercontent.com/u/26443470 11 | 12 | false 13 | ContactPoint IP Phone Contacts UI Plugin Assemblies 14 | ContactPoint IP Phone is an implementation of SIP softphone for Windows 15 | Copyright © ContactPoint 2021 16 | voip voip-application softphone windows-forms sip pjsip pjsua asterisk phone telephony telephone plugin plugins 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /IPPhone.Plugins.WebBrowser.nuspec: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | IPPhone.Plugins.WebBrowser 5 | ContactPoint® IP Phone Web Browser Plugin 6 | 1.9.0 7 | Alex Yevtushenko 8 | Alex Yevtushenko 9 | https://github.com/ipphone/core/ 10 | https://avatars3.githubusercontent.com/u/26443470 11 | 12 | false 13 | ContactPoint IP Phone Web Browser Plugin Assemblies 14 | ContactPoint IP Phone is an implementation of SIP softphone for Windows 15 | Copyright © ContactPoint 2021 16 | voip voip-application softphone windows-forms sip pjsip pjsua asterisk phone telephony telephone plugin plugins 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /ContactPoint.Common/Contacts/Local/IContactTagLocal.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | 6 | namespace ContactPoint.Common.Contacts.Local 7 | { 8 | /// 9 | /// Local representation of address book tag. 10 | /// 11 | public interface IContactTagLocal : IContactTag, IEntity 12 | { 13 | event Action Changed; 14 | 15 | /// 16 | /// Address book that tag belongs to. 17 | /// 18 | IAddressBookLocal AddressBook { get; } 19 | 20 | /// 21 | /// Update internal information from give tag. 22 | /// 23 | /// Source object to update from. 24 | void UpdateFrom(IContactTag source); 25 | 26 | /// 27 | /// Update only tag address book specific key. 28 | /// 29 | /// New key value. 30 | void UpdateKey(string key); 31 | 32 | /// 33 | /// Submit changes to database and address book. 34 | /// 35 | void Submit(); 36 | 37 | /// 38 | /// Remove tag from database and address book. 39 | /// 40 | void Remove(); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /ContactPoint.Common/PluginManager/IPluginCheckedUIElement.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | using System.Drawing; 5 | 6 | namespace ContactPoint.Common.PluginManager 7 | { 8 | public interface IPluginCheckedUIElement : IPluginUIElement 9 | { 10 | /// 11 | /// Event raised when Checked property changed 12 | /// 13 | event Action CheckedChanged; 14 | 15 | /// 16 | /// Indicates that this is "select one from list" action 17 | /// 18 | bool IsGroupCheckAction { get; } 19 | 20 | /// 21 | /// Indicating checked state 22 | /// 23 | bool Checked { get; } 24 | 25 | /// 26 | /// Image showed when command state is checked 27 | /// 28 | Bitmap ImageChecked { get; } 29 | 30 | /// 31 | /// Executing plugin action and changing checked state. Use this operation when element implements this interface 32 | /// 33 | /// UI object assigned with this action 34 | /// New checked value 35 | void ExecuteChecked(object sender, bool checkedValue, object data = null); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /ContactPoint.Plugins.WebBrowser/Browser.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Diagnostics; 3 | 4 | namespace ContactPoint.Plugins.WebBrowser 5 | { 6 | class Browser 7 | { 8 | private readonly string _exe; 9 | public string Name { get; private set; } 10 | 11 | public Browser(string name, string exe) 12 | { 13 | _exe = exe; 14 | Name = name; 15 | } 16 | 17 | public void OpenUrl(string url) 18 | { 19 | Process.Start(_exe, url); 20 | } 21 | 22 | public override string ToString() 23 | { 24 | return Name; 25 | } 26 | 27 | public static Browser Create(string serialized) 28 | { 29 | if (string.IsNullOrEmpty(serialized)) return null; 30 | 31 | var browserNameIndex = serialized.IndexOf(';'); 32 | if (browserNameIndex <= 0) return null; 33 | 34 | var name = serialized.Substring(0, browserNameIndex); 35 | var exe = serialized.Substring(browserNameIndex + 1); 36 | 37 | return new Browser(name, exe); 38 | } 39 | 40 | public static string Serialize(Browser browser) 41 | { 42 | if (browser == null) return String.Empty; 43 | 44 | return string.Format("{0};{1}", browser.Name, browser._exe); 45 | } 46 | } 47 | } -------------------------------------------------------------------------------- /ContactPoint.Plugins.LocalAddressBook/Contracts/ContactTag.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Runtime.Serialization; 5 | using System.Text; 6 | using ContactPoint.Common.Contacts; 7 | 8 | namespace ContactPoint.Plugins.LocalAddressBook.Contracts 9 | { 10 | [DataContract] 11 | internal class ContactTag : Versionable, IContactTag 12 | { 13 | [DataMember] 14 | public string Key { get; set; } 15 | [DataMember] 16 | public string Name { get; set; } 17 | [DataMember] 18 | public string Color { get; set; } 19 | 20 | public ContactTag() 21 | { 22 | Key = Guid.NewGuid().ToString("D"); 23 | } 24 | 25 | private static ContactTag CreateFromContactTag(IContactTag tag) 26 | { 27 | var result = new ContactTag() 28 | { 29 | Color = tag.Color, 30 | Key = tag.Key, 31 | Name = tag.Name 32 | }; 33 | 34 | result.SetVersionKey(tag.VersionKey); 35 | 36 | return result; 37 | } 38 | 39 | public static ContactTag GetLocalObject(IContactTag tag) 40 | { 41 | var result = tag as ContactTag; 42 | return result ?? CreateFromContactTag(tag); 43 | } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /ContactPoint.Contacts/Locals/VersionableLocal.cs: -------------------------------------------------------------------------------- 1 | using ContactPoint.Common.Contacts; 2 | using ContactPoint.Common.Contacts.Local; 3 | 4 | namespace ContactPoint.Contacts.Locals 5 | { 6 | internal class VersionableLocal : IVersionable 7 | { 8 | private readonly IAddressBookLocal _addressBookLocal; 9 | private bool _isChanged; 10 | 11 | public virtual bool IsChanged 12 | { 13 | get { return _isChanged; } 14 | set { _isChanged = value; } 15 | } 16 | 17 | public string VersionKey { get; set; } 18 | 19 | public IVersionGenerator VersionGenerator 20 | { 21 | get { return _addressBookLocal.VersionGenerator; } 22 | } 23 | 24 | public VersionableLocal(IAddressBookLocal addressBookLocal) 25 | { 26 | _addressBookLocal = addressBookLocal; 27 | } 28 | 29 | public void IncrementVersion() 30 | { 31 | VersionKey = VersionGenerator.ConvertKeyToString(VersionGenerator.GenerateNextVersion(VersionGenerator.GetKeyFromString(VersionKey))); 32 | IsChanged = false; 33 | } 34 | 35 | public void ResetIsChanged() 36 | { 37 | IsChanged = false; 38 | } 39 | 40 | object IVersionable.VersionKey { get { return VersionGenerator.GetKeyFromString(VersionKey); } } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /ContactPoint/Controls/ColorSlider.designer.cs: -------------------------------------------------------------------------------- 1 | namespace ContactPoint.Controls 2 | { 3 | partial class ColorSlider 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Component Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | this.SuspendLayout(); 32 | // 33 | // ColorSlider 34 | // 35 | this.Size = new System.Drawing.Size(200, 30); 36 | this.ResumeLayout(false); 37 | 38 | } 39 | 40 | #endregion 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /IPPhone.Plugins.LocalAddressbook.nuspec: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | IPPhone.Plugins.LocalAddressbook 5 | ContactPoint® IP Phone Local Addressbook Plugin 6 | 1.9.0 7 | Alex Yevtushenko 8 | Alex Yevtushenko 9 | https://github.com/ipphone/core/ 10 | https://avatars3.githubusercontent.com/u/26443470 11 | 12 | false 13 | ContactPoint IP Phone Local Addressbook Plugin Assemblies 14 | ContactPoint IP Phone is an implementation of SIP softphone for Windows 15 | Copyright © ContactPoint 2021 16 | voip voip-application softphone windows-forms sip pjsip pjsua asterisk phone telephony telephone plugin plugins 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /ContactPoint/Commands/CheckedPluginUIElementCommand.cs: -------------------------------------------------------------------------------- 1 | using System.Drawing; 2 | using ContactPoint.Common.PluginManager; 3 | 4 | namespace ContactPoint.Commands 5 | { 6 | internal class CheckedPluginUIElementCommand : PluginUIElementCommand 7 | { 8 | private readonly IPluginCheckedUIElement _uiElement; 9 | 10 | public CheckedPluginUIElementCommand(IPluginCheckedUIElement uiElement) : base(uiElement) 11 | { 12 | _uiElement = uiElement; 13 | 14 | Checked = _uiElement.Checked; 15 | SetImage(_uiElement.Checked ? _uiElement.ImageChecked : _uiElement.Image); 16 | 17 | _uiElement.CheckedChanged += OnCheckedChanged; 18 | } 19 | 20 | protected override void UpdateImage() 21 | { 22 | if (_uiElement != null) 23 | { 24 | SetImage(_uiElement.Checked ? _uiElement.ImageChecked : _uiElement.Image); 25 | } 26 | } 27 | 28 | protected override void ExecuteInner() 29 | { 30 | _uiElement.ExecuteChecked(this, !Checked); 31 | } 32 | 33 | private void SetImage(Image image) 34 | { 35 | ImageLarge = image; 36 | ImageSmall = image; 37 | } 38 | 39 | void OnCheckedChanged(IPluginUIElement obj) 40 | { 41 | Checked = _uiElement.Checked; 42 | } 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /IPPhone.Plugins.PauseNotifications.nuspec: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | IPPhone.Plugins.PauseNotifications 5 | ContactPoint® IP Phone Pause Notifications Plugin 6 | 1.9.0 7 | Alex Yevtushenko 8 | Alex Yevtushenko 9 | https://github.com/ipphone/core/ 10 | https://avatars3.githubusercontent.com/u/26443470 11 | 12 | false 13 | ContactPoint IP Phone Pause Notifications Plugin Assemblies 14 | ContactPoint IP Phone is an implementation of SIP softphone for Windows 15 | Copyright © ContactPoint 2021 16 | voip voip-application softphone windows-forms sip pjsip pjsua asterisk phone telephony telephone plugin plugins 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /ContactPoint.Common/SIP/ISip.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | using System.Collections.Specialized; 5 | using ContactPoint.Common.Audio; 6 | using ContactPoint.Common.SIP.Account; 7 | 8 | namespace ContactPoint.Common.SIP 9 | { 10 | /// 11 | /// SIP wrapper interface 12 | /// 13 | public interface ISip 14 | { 15 | /// 16 | /// SIP account 17 | /// 18 | ISipAccount Account { get; } 19 | 20 | /// 21 | /// SIP messanger 22 | /// 23 | ISipMessenger Messenger { get; } 24 | 25 | /// 26 | /// All available codecs 27 | /// 28 | List Codecs { get; } 29 | 30 | /// 31 | /// Network transport type 32 | /// 33 | SipTransportType TransportType { get; set; } 34 | 35 | /// 36 | /// Used DTMF conventions type 37 | /// 38 | SipDTMFMode DTMFMode { get; set; } 39 | 40 | /// 41 | /// Echo cancelation timeout in ms 42 | /// 43 | int EchoCancelationTimeout { get; set; } 44 | 45 | /// 46 | /// Enable or disable voice active detection 47 | /// 48 | bool VoiceActiveDetection { get; set; } 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /ContactPoint.Core/Settings/Loaders/SettingsLoaderV3.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Xml.XPath; 4 | using ContactPoint.Common; 5 | using ContactPoint.Core.Settings.DataStructures; 6 | 7 | namespace ContactPoint.Core.Settings.Loaders 8 | { 9 | internal class SettingsLoaderV3 : SettingsLoaderV2 10 | { 11 | public SettingsLoaderV3(SettingsManager settingsManager) 12 | : base(settingsManager) 13 | { } 14 | 15 | public override IEnumerable Load(XPathNavigator nav) 16 | { 17 | var sections = new List(); 18 | 19 | XPathNodeIterator iter = nav.Select("/data/section"); 20 | if (iter != null) 21 | { 22 | while (iter.MoveNext()) 23 | { 24 | try 25 | { 26 | var name = iter.Current.GetAttribute("name", ""); 27 | 28 | var itemIter = iter.Current.Select("item"); 29 | if (itemIter != null) 30 | sections.Add(LoadSection(name, itemIter)); 31 | } 32 | catch (Exception e) 33 | { 34 | Logger.LogWarn(e); 35 | } 36 | } 37 | } 38 | 39 | return sections; 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /ContactPoint.BaseDesign.Wpf/WindowHelper.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Windows; 6 | using ContactPoint.Common; 7 | 8 | namespace ContactPoint.BaseDesign.Wpf 9 | { 10 | public static class WindowHelper 11 | { 12 | public static void SavePosition(this Window window, ISettingsManagerSection settingsManager) 13 | { 14 | settingsManager.Set(String.Format("{0}_Width", window.GetType()), window.Width); 15 | settingsManager.Set(String.Format("{0}_Height", window.GetType()), window.Height); 16 | settingsManager.Set(String.Format("{0}_X", window.GetType()), window.Left); 17 | settingsManager.Set(String.Format("{0}_Y", window.GetType()), window.Top); 18 | } 19 | 20 | public static void SetPosition(this Window window, ISettingsManagerSection settingsManager) 21 | { 22 | window.Width = settingsManager.GetValueOrSetDefault(String.Format("{0}_Width", window.GetType()), window.Width); 23 | window.Height = settingsManager.GetValueOrSetDefault(String.Format("{0}_Height", window.GetType()), window.Height); 24 | window.Left = settingsManager.GetValueOrSetDefault(String.Format("{0}_X", window.GetType()), window.Left); 25 | window.Top = settingsManager.GetValueOrSetDefault(String.Format("{0}_Y", window.GetType()), window.Top); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /ContactPoint.Common/ICore.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using ContactPoint.Common.Audio; 3 | using ContactPoint.Common.PluginManager; 4 | using ContactPoint.Common.SIP; 5 | using ContactPoint.Common.Contacts; 6 | 7 | namespace ContactPoint.Common 8 | { 9 | /// 10 | /// Main object interface in program 11 | /// 12 | public interface ICore : IDisposable 13 | { 14 | /// 15 | /// SIP control object 16 | /// 17 | ISip Sip { get; } 18 | 19 | /// 20 | /// Call manager. Contains information about all client calls 21 | /// 22 | ICallManager CallManager { get; } 23 | 24 | /// 25 | /// Plugin manager. Contains information about all plugins 26 | /// 27 | IPluginManager PluginManager { get; } 28 | 29 | /// 30 | /// Settings manager. Store program settings 31 | /// 32 | ISettingsManagerSection SettingsManager { get; } 33 | 34 | /// 35 | /// Contacts manager 36 | /// 37 | IContactsManager ContactsManager { get; } 38 | 39 | /// 40 | /// Audio manager. Controls audio in program 41 | /// 42 | IAudio Audio { get; } 43 | 44 | /// 45 | /// Shutdown core 46 | /// 47 | void Shutdown(); 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /ContactPoint.Core/ContactPoint.Core.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | net472 4 | false 5 | true 6 | ..\..\Binaries\ 7 | 8 | 9 | full 10 | 11 | 12 | pdbonly 13 | Auto 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /ContactPoint.Core/PluginManager/JObjectReadOnlySettingsManagerSection.cs: -------------------------------------------------------------------------------- 1 | using ContactPoint.Common; 2 | using Newtonsoft.Json.Linq; 3 | 4 | namespace ContactPoint.Core.PluginManager 5 | { 6 | class JObjectReadOnlySettingsManagerSection : ISettingsManagerSection 7 | { 8 | private readonly JObject _j; 9 | 10 | public object this[string name] 11 | { 12 | get { return _j.GetValue(name); } 13 | set { } 14 | } 15 | 16 | public JObjectReadOnlySettingsManagerSection(JObject j) 17 | { 18 | _j = j; 19 | } 20 | 21 | public T GetValueOrSetDefault(string name, T defaultValue) 22 | { 23 | JToken token; 24 | return _j.TryGetValue(name, out token) ? token.Value() : defaultValue; 25 | } 26 | 27 | public object GetValueOrSetDefault(string name, object defaultValue) 28 | { 29 | JToken token; 30 | return _j.TryGetValue(name, out token) ? token.Value() : defaultValue; 31 | } 32 | 33 | public T Get(string name) 34 | { 35 | return GetValueOrSetDefault(name, default(T)); 36 | } 37 | 38 | public object Get(string name) 39 | { 40 | return GetValueOrSetDefault(name, null); 41 | } 42 | 43 | public void Set(string name, object value) 44 | { } 45 | 46 | public void Save() 47 | { } 48 | } 49 | } -------------------------------------------------------------------------------- /ContactPoint.Plugins.GoogleContacts/Model/Versionable.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using ContactPoint.Common.Contacts; 6 | 7 | namespace ContactPoint.Plugins.GoogleContacts.Model 8 | { 9 | internal class Versionable : IVersionable 10 | { 11 | internal static int DefaultValue = 0; 12 | 13 | private long _versionKey = DefaultValue; 14 | 15 | public long VersionKey 16 | { 17 | get { return _versionKey; } 18 | set { _versionKey = value; } 19 | } 20 | 21 | public virtual bool IsChanged { get; set; } 22 | 23 | public IVersionGenerator VersionGenerator 24 | { 25 | get { return ContactPoint.Plugins.GoogleContacts.Model.VersionGenerator.Instance; } 26 | } 27 | 28 | public void IncrementVersion() 29 | { 30 | VersionKey = ContactPoint.Plugins.GoogleContacts.Model.VersionGenerator.Instance.GenerateNextVersion(this); 31 | } 32 | 33 | public void SetVersionKey(object versionKey) 34 | { 35 | if (versionKey == null) return; 36 | 37 | if (versionKey is long) _versionKey = (long)versionKey; 38 | 39 | if (!long.TryParse(versionKey.ToString(), out _versionKey)) 40 | _versionKey = DefaultValue; 41 | } 42 | 43 | object IVersionable.VersionKey { get { return VersionKey; } } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /ContactPoint.Common/CommonExtensions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Globalization; 3 | using System.Linq; 4 | 5 | namespace ContactPoint.Common 6 | { 7 | public static class CommonExtensions 8 | { 9 | public static bool WasActive(this ICall call) 10 | => WasInState(call, CallState.ACTIVE); 11 | 12 | public static bool WasIncoming(this ICall call) 13 | => WasInState(call, CallState.INCOMING); 14 | 15 | public static bool WasConnecting(this ICall call) 16 | => WasInState(call, CallState.CONNECTING); 17 | 18 | public static bool WasAlerting(this ICall call) 19 | => WasInState(call, CallState.ALERTING); 20 | 21 | public static bool WasHolding(this ICall call) 22 | => WasInState(call, CallState.HOLDING); 23 | 24 | public static bool Check(this T _, Func condition) where T : class 25 | => _ != null && condition(_); 26 | 27 | public static string ToFormattedString(this TimeSpan duration) 28 | => duration.ToString(duration.Hours > 0 ? @"hh\:mm\:ss" : @"mm\:ss", CultureInfo.InvariantCulture); 29 | 30 | public static string ToFormattedString(this TimeSpan? duration, string defaultValue = null) 31 | => duration?.ToFormattedString() ?? defaultValue; 32 | 33 | private static bool WasInState(ICall call, CallState state) 34 | => call?.States.Any(x => x.State == state) == true; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /ContactPoint.Common/PluginManager/PluginAttribute.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace ContactPoint.Common.PluginManager 6 | { 7 | /// 8 | /// Plugin attribute. Indicates that class must be loaded as plugin 9 | /// 10 | [AttributeUsage(AttributeTargets.Class)] 11 | public class PluginAttribute : Attribute 12 | { 13 | /// 14 | /// Plugin ID. Must be GUID 15 | /// 16 | public Guid ID { get; private set; } 17 | 18 | /// 19 | /// Plugin name 20 | /// 21 | public string Name { get; private set; } 22 | 23 | /// 24 | /// Indicates that plugin support or not setting dialog 25 | /// 26 | public bool HaveSettingsForm { get; set; } 27 | 28 | /// 29 | /// Some other public information about plugin 30 | /// 31 | public string Info { get; set; } 32 | 33 | /// 34 | /// Plugin attribute. Indicates that class must be loaded as plugin 35 | /// 36 | /// Plugin ID. Must be GUID. 37 | /// Plugin user-friendly name 38 | public PluginAttribute(string id, string name) 39 | { 40 | ID = new Guid(id); 41 | Name = name; 42 | } 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /ContactPoint.Core/Settings/DataStructures/TypeHelpers.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Linq; 3 | using ContactPoint.Common; 4 | 5 | namespace ContactPoint.Core.Settings.DataStructures 6 | { 7 | static class TypeHelpers 8 | { 9 | public static Type GetTypeByName(string typeName, bool throwOnError = true) 10 | { 11 | return Type.GetType(typeName, false) ?? GetTypeByNameFromAllAssemblies(typeName, throwOnError); 12 | } 13 | 14 | private static Type GetTypeByNameFromAllAssemblies(string typeName, bool throwOnError = true) 15 | { 16 | try 17 | { 18 | return AppDomain.CurrentDomain.GetAssemblies().SelectMany(x => x.GetTypes()).FirstOrDefault(x => x.FullName.Equals(typeName, StringComparison.InvariantCulture)); 19 | } 20 | catch 21 | { 22 | Logger.LogWarn($"Failed to get type '{typeName}', throwOnError={throwOnError}"); 23 | if (throwOnError) 24 | { 25 | throw; 26 | } 27 | 28 | // Try to remove assembly version from type name 29 | var typeNameParts = typeName.Split(',').Select(x => x.Trim()).ToArray(); 30 | if (typeNameParts.Length > 2) 31 | { 32 | return GetTypeByName(string.Join(", ", typeNameParts.Take(2)), false); 33 | } 34 | } 35 | 36 | return null; 37 | } 38 | } 39 | } -------------------------------------------------------------------------------- /ContactPoint.Plugins.LocalAddressBook/LocalAddressBookPlugin.cs: -------------------------------------------------------------------------------- 1 | using ContactPoint.Common.PluginManager; 2 | using ContactPoint.Core.PluginManager; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Linq; 6 | using System.Text; 7 | 8 | namespace ContactPoint.Plugins.LocalAddressBook 9 | { 10 | [Plugin("{D878BAF7-4336-4487-A5A4-F3A2ED300B7A}", "Local address book")] 11 | public class LocalAddressBookPlugin : Plugin 12 | { 13 | private bool _isStarted = false; 14 | private readonly LocalAddressBook _addressBook; 15 | 16 | public override bool IsStarted 17 | { 18 | get { return _isStarted; } 19 | } 20 | 21 | public override IEnumerable UIElements 22 | { 23 | get { return null; } 24 | } 25 | 26 | public override Common.Contacts.IAddressBook AddressBook 27 | { 28 | get { return _addressBook; } 29 | } 30 | 31 | public LocalAddressBookPlugin(IPluginManager pluginManager) 32 | : base(pluginManager) 33 | { 34 | _addressBook = new LocalAddressBook(this); 35 | } 36 | 37 | public override void Start() 38 | { 39 | _isStarted = true; 40 | 41 | RaiseStartedEvent(); 42 | } 43 | 44 | public override void Stop() 45 | { 46 | _isStarted = false; 47 | 48 | RaiseStoppedEvent("Normal stop"); 49 | } 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /ExceptionReporter/ExceptionReporter/Core/ExceptionReporterExtensions.cs: -------------------------------------------------------------------------------- 1 | using System.Text; 2 | 3 | namespace ExceptionReporter.Core 4 | { 5 | /// 6 | /// All extension methods for ExceptionReporter 7 | /// 8 | public static class ExceptionReporterExtensions 9 | { 10 | /// 11 | /// Append a dotted line to the given string 12 | /// 13 | public static StringBuilder AppendDottedLine(StringBuilder stringBuilder) 14 | { 15 | return stringBuilder.AppendLine("-----------------------------"); 16 | } 17 | 18 | /// 19 | /// Return a string if not null, else the current value 20 | /// 21 | public static string GetString(string newString, string currentString) 22 | { 23 | return string.IsNullOrEmpty(newString) ? currentString : newString.Trim(); 24 | } 25 | 26 | /// 27 | /// Returns the boolean value of configString; where configString is null or empty, the current value is returned 28 | /// all of (case insensitive) 'y' 'n' 'true' or 'false' are accepted as boolean indicators 29 | /// 30 | public static bool GetBool(string configString, bool currentValue) 31 | { 32 | if (string.IsNullOrEmpty(configString)) return currentValue; 33 | 34 | switch (configString.ToLower()) 35 | { 36 | case "y" : 37 | case "true": 38 | return true; 39 | 40 | case "n" : 41 | case "false" : 42 | return false; 43 | } 44 | 45 | return currentValue; 46 | } 47 | } 48 | } -------------------------------------------------------------------------------- /ContactPoint.Core/Ui.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using ContactPoint.Common; 3 | 4 | namespace ContactPoint.Core 5 | { 6 | public class Ui : IUi 7 | { 8 | private static IUi _implementation; 9 | 10 | public static IUi Current { get; } 11 | 12 | public static void SetCurrent(IUi ui) 13 | { 14 | _implementation = ui; 15 | } 16 | 17 | static Ui() 18 | { 19 | Current = new Ui(); 20 | } 21 | 22 | public void ActivateCall(ICall call) 23 | { 24 | try 25 | { 26 | _implementation.ActivateCall(call); 27 | } 28 | catch (Exception e) 29 | { 30 | Logger.LogWarn(e, "Can't activate call."); 31 | } 32 | } 33 | 34 | public string GetPhoneNumber() 35 | { 36 | return _implementation.GetPhoneNumber(); 37 | } 38 | 39 | public IAsyncResult BeginInvoke(Delegate method, object[] args) 40 | { 41 | return _implementation.BeginInvoke(method, args); 42 | } 43 | 44 | public object EndInvoke(IAsyncResult result) 45 | { 46 | return _implementation.EndInvoke(result); 47 | } 48 | 49 | public object Invoke(Delegate method, object[] args) 50 | { 51 | return _implementation.Invoke(method, args); 52 | } 53 | 54 | public bool InvokeRequired => _implementation.InvokeRequired; 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /ExceptionReporter/ExceptionReporter/Core/Disposable.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Threading; 3 | 4 | namespace ExceptionReporter.Core 5 | { 6 | /// 7 | /// Base class for all classes wanting to implement . 8 | /// 9 | /// 10 | /// Base on an article by Davy Brion 11 | /// . 12 | /// 13 | public abstract class Disposable : IDisposable 14 | { 15 | private int disposed; 16 | 17 | protected Disposable() 18 | { 19 | disposed = 0; 20 | } 21 | 22 | public bool IsDisposed 23 | { 24 | get { return disposed == 1; } 25 | } 26 | 27 | public void Dispose() 28 | { 29 | Dispose(true); 30 | GC.SuppressFinalize(this); 31 | } 32 | 33 | protected virtual void Dispose(bool disposing) 34 | { 35 | if (Interlocked.CompareExchange(ref disposed, 1, 0) == 0) 36 | { 37 | if (disposing) 38 | { 39 | DisposeManagedResources(); 40 | } 41 | DisposeUnmanagedResources(); 42 | } 43 | } 44 | 45 | protected virtual void DisposeManagedResources() {} 46 | protected virtual void DisposeUnmanagedResources() {} 47 | 48 | ~Disposable() 49 | { 50 | Dispose(false); 51 | } 52 | } 53 | } -------------------------------------------------------------------------------- /ContactPoint.Plugins.ContactsUi/Forms/TagForm.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows.Forms; 3 | using ComponentFactory.Krypton.Toolkit; 4 | using ContactPoint.Plugins.ContactsUi.ViewModels; 5 | 6 | namespace ContactPoint.Plugins.ContactsUi.Forms 7 | { 8 | public partial class TagForm : KryptonForm 9 | { 10 | private readonly ContactTagViewModel _contactTagViewModel; 11 | 12 | public TagForm(ContactTagViewModel contactTagViewModel) 13 | { 14 | _contactTagViewModel = contactTagViewModel; 15 | 16 | InitializeComponent(); 17 | 18 | ToolStripManager.Renderer = new ToolStripSystemRenderer(); 19 | 20 | colorPicker.SelectedColor = _contactTagViewModel.Color; 21 | textboxName.Text = _contactTagViewModel.Name; 22 | 23 | if (string.IsNullOrWhiteSpace(_contactTagViewModel.Name)) Text = "New tag"; 24 | else Text = String.Format("Editing tag: {0}", _contactTagViewModel.Name); 25 | } 26 | 27 | private void buttonOk_Click(object sender, EventArgs e) 28 | { 29 | _contactTagViewModel.Name = textboxName.Text; 30 | _contactTagViewModel.Color = colorPicker.SelectedColor; 31 | 32 | _contactTagViewModel.SubmitTag(); 33 | 34 | DialogResult = DialogResult.OK; 35 | Close(); 36 | } 37 | 38 | private void buttonCancel_Click(object sender, EventArgs e) 39 | { 40 | DialogResult = DialogResult.Cancel; 41 | Close(); 42 | } 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /ContactPoint.Plugins.GoogleContacts/GoogleContactsPlugin.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using ContactPoint.Common.Contacts; 6 | using ContactPoint.Common.PluginManager; 7 | using ContactPoint.Core.PluginManager; 8 | 9 | namespace ContactPoint.Plugins.GoogleContacts 10 | { 11 | [Plugin("{DFF2F859-4064-44E7-A165-33163C51B7D9}", "Google contacts", HaveSettingsForm = true)] 12 | public class GoogleContactsPlugin : Plugin 13 | { 14 | private bool _isStarted = false; 15 | private readonly GoogleAddressBook _googleAddressBook; 16 | 17 | public override IEnumerable UIElements 18 | { 19 | get { return null; } 20 | } 21 | 22 | public override Common.Contacts.IAddressBook AddressBook 23 | { 24 | get { return _googleAddressBook; } 25 | } 26 | 27 | public GoogleContactsPlugin(IPluginManager pluginManager) 28 | : base(pluginManager) 29 | { 30 | _googleAddressBook = new GoogleAddressBook(this); 31 | } 32 | 33 | public override void Start() 34 | { 35 | _isStarted = true; 36 | RaiseStartedEvent(); 37 | } 38 | 39 | public override void Stop() 40 | { 41 | _isStarted = false; 42 | RaiseStoppedEvent(String.Empty); 43 | } 44 | 45 | public override bool IsStarted 46 | { 47 | get { return _isStarted; } 48 | } 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /ContactPoint.Plugins.CallTools/OneLine/OneLineService.cs: -------------------------------------------------------------------------------- 1 | using ContactPoint.Common; 2 | using ContactPoint.Common.PluginManager; 3 | 4 | namespace ContactPoint.Plugins.CallTools.OneLine 5 | { 6 | public class OneLineService 7 | { 8 | private readonly IPluginManager _pluginManager; 9 | 10 | public bool IsOneLine { get; set; } = false; 11 | public bool IsStarted { get; private set; } = false; 12 | 13 | public OneLineService(IPlugin plugin) 14 | { 15 | _pluginManager = plugin.PluginManager; 16 | } 17 | 18 | public void Start() 19 | { 20 | if (IsStarted) { return; } 21 | _pluginManager.Core.CallManager.OnCallStateChanged += CallManager_OnCallStateChanged; 22 | 23 | this.IsStarted = true; 24 | } 25 | 26 | public void Stop() 27 | { 28 | if (!IsStarted) { return; } 29 | _pluginManager.Core.CallManager.OnCallStateChanged -= CallManager_OnCallStateChanged; 30 | 31 | this.IsStarted = false; 32 | } 33 | 34 | void CallManager_OnCallStateChanged(ICall call) 35 | { 36 | if (!IsOneLine) 37 | { 38 | return; 39 | } 40 | 41 | if (call == null || call.IsDisposed) 42 | { 43 | return; 44 | } 45 | 46 | if (call.IsIncoming && _pluginManager.Core.CallManager.Count > 1) 47 | { 48 | call.Drop(); 49 | } 50 | } 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /IPPhone.Contacts.nuspec: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | IPPhone.Contacts 5 | ContactPoint® IP Phone Contacts 6 | 1.9.0 7 | Alex Yevtushenko 8 | Alex Yevtushenko 9 | https://github.com/ipphone/core/ 10 | https://avatars3.githubusercontent.com/u/26443470 11 | 12 | false 13 | ContactPoint IP Phone Contacts Assemblies 14 | ContactPoint IP Phone Contacts Assemblies 15 | Copyright © ContactPoint 2021 16 | voip voip-application softphone windows-forms sip pjsip pjsua asterisk phone telephony telephone plugin plugins 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /ContactPoint.Plugins.Pause/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("CallService.Plugins.Pause")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("CallService.Plugins.Pause")] 13 | [assembly: AssemblyCopyright("Copyright © 2010")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("b3196258-a4f6-40f7-b9be-a00c76f77133")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /ContactPoint.Plugins.MySqlAddressBook/MySqlAddressBookPlugin.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using ContactPoint.Common.PluginManager; 6 | using ContactPoint.Core.PluginManager; 7 | 8 | namespace ContactPoint.Plugins.MySqlAddressBook 9 | { 10 | [Plugin("{15BECC65-D1B0-4829-B67D-3AC44F4255E6}", "MySQL address book", HaveSettingsForm = true)] 11 | public class MySqlAddressBookPlugin : Plugin 12 | { 13 | private bool _isStarted; 14 | private readonly SqlConnectionManager _connectionManager; 15 | 16 | public override IEnumerable UIElements 17 | { 18 | get { return null; } 19 | } 20 | 21 | public override bool IsStarted 22 | { 23 | get { return _isStarted; } 24 | } 25 | 26 | internal SqlConnectionManager ConnectionManager 27 | { 28 | get { return _connectionManager; } 29 | } 30 | 31 | public MySqlAddressBookPlugin(IPluginManager pluginManager) 32 | : base(pluginManager) 33 | { 34 | _connectionManager = new SqlConnectionManager(pluginManager.Core.SettingsManager.GetValueOrSetDefault("ConnectionString", String.Empty)); 35 | } 36 | 37 | public override void Start() 38 | { 39 | _isStarted = true; 40 | RaiseStartedEvent(); 41 | } 42 | 43 | public override void Stop() 44 | { 45 | _isStarted = false; 46 | RaiseStoppedEvent(String.Empty); 47 | } 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /ContactPoint.Plugins.WebBrowser/ContactPoint.Plugins.WebBrowser.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | net472 4 | false 5 | ..\..\Binaries\Plugins\WebBrowser\ 6 | 7 | 8 | full 9 | 10 | 11 | pdbonly 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | Form 20 | 21 | 22 | WebBrowserSettings.cs 23 | 24 | 25 | 26 | 27 | false 28 | 29 | 30 | 31 | 32 | 33 | 34 | WebBrowserSettings.cs 35 | 36 | 37 | -------------------------------------------------------------------------------- /ContactPoint.Core/SIP/SipCodec.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | using System.Windows.Forms; 5 | using ContactPoint.Common.SIP; 6 | 7 | namespace ContactPoint.Core.SIP 8 | { 9 | internal class SipCodec : ISipCodec 10 | { 11 | private string _name = ""; 12 | private SIP _sip; 13 | private int _priority = 0; 14 | 15 | public SipCodec(SIP sip, string name) 16 | { 17 | this._sip = sip; 18 | this._name = name; 19 | } 20 | 21 | private void RaiseEnabledChangedEvent() 22 | { 23 | if (this.EnabledChanged != null) 24 | this.EnabledChanged(this); 25 | } 26 | 27 | #region ISipCodec Members 28 | 29 | public event Action EnabledChanged; 30 | 31 | public string Name 32 | { 33 | get { return this._name; } 34 | } 35 | 36 | public bool Enabled 37 | { 38 | get { return this._priority > 0 ? true : false; } 39 | set 40 | { 41 | if (this.Enabled != value) 42 | { 43 | this._priority = value == true ? 128 : 0; 44 | 45 | // Save into settings 46 | this._sip.Core.SettingsManager[this.Name] = value; 47 | 48 | RaiseEnabledChangedEvent(); 49 | } 50 | } 51 | } 52 | 53 | public int Priority 54 | { 55 | get { return this._priority; } 56 | } 57 | 58 | #endregion 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /ContactPoint.Plugins.WebServer/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("ContactPoint.Plugins.WebServer")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("Microsoft")] 12 | [assembly: AssemblyProduct("ContactPoint.Plugins.WebServer")] 13 | [assembly: AssemblyCopyright("Copyright © Microsoft 2011")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("8bed7cef-ce26-4343-8ae9-ddff5752194b")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /ContactPoint.Common/Contacts/IContactsManager.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using ContactPoint.Common.Contacts.Local; 4 | 5 | namespace ContactPoint.Common.Contacts 6 | { 7 | /// 8 | /// Contacts manager. 9 | /// 10 | public interface IContactsManager : IDisposable 11 | { 12 | /// 13 | /// Fired when Address book reloaded. 14 | /// 15 | event Action AddressBookReloaded; 16 | 17 | /// 18 | /// Link to core object. 19 | /// 20 | ICore Core { get; } 21 | 22 | /// 23 | /// Possible address books. 24 | /// 25 | IEnumerable AddressBooks { get; } 26 | 27 | /// 28 | /// Contacts collection. 29 | /// 30 | ICollection Contacts { get; } 31 | 32 | /// 33 | /// All possible tags. 34 | /// 35 | IEnumerable Tags { get; } 36 | 37 | /// 38 | /// Create generic contact. 39 | /// 40 | /// Contact object. 41 | IContact CreateContact(); 42 | 43 | /// 44 | /// Search for contact by given phone number. 45 | /// 46 | /// Phone number to search. 47 | /// Contact. 48 | IContact GetContactByPhoneNumber(string phoneNumber); 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /ContactPoint.Contacts/Schemas/SchemaV1.cs: -------------------------------------------------------------------------------- 1 | using System.Data.SQLite; 2 | 3 | namespace ContactPoint.Contacts.Schemas 4 | { 5 | internal class SchemaV1 : InitialSchema 6 | { 7 | public override int Version => 1; 8 | 9 | public override void Upgrade(SQLiteConnection connection, DatabaseSchema currentSchema) 10 | { 11 | base.Upgrade(connection, currentSchema); 12 | 13 | if (currentSchema.Version < Version) 14 | { 15 | using (var command = connection.CreateCommand()) 16 | { 17 | command.CommandText = @"CREATE TABLE IF NOT EXISTS [info] ( 18 | [name] nvarchar(50) NOT NULL, 19 | [value_int] INTEGER NULL, 20 | [value_string] NVARCHAR(255) NULL, 21 | [id] INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL 22 | ); 23 | 24 | delete from info where name = 'db_version'; 25 | insert into info(name, value_int) values ('db_version', 1); 26 | "; 27 | 28 | command.ExecuteNonQuery(); 29 | } 30 | } 31 | } 32 | 33 | protected override int GetVersion(SQLiteConnection connection) 34 | { 35 | using (var command = connection.CreateCommand()) 36 | { 37 | command.CommandText = "select value_int from [info] where name = 'db_version'"; 38 | 39 | try 40 | { 41 | return (int)(long)command.ExecuteScalar(); 42 | } 43 | catch 44 | { 45 | return base.GetVersion(connection); 46 | } 47 | } 48 | } 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /ContactPoint.Plugins.CallTools/OneLine/OneLinePluginUIElement.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using ContactPoint.Common.PluginManager; 4 | using ContactPoint.Core.PluginManager; 5 | using ContactPoint.Plugins.CallTools.Properties; 6 | 7 | namespace ContactPoint.Plugins.CallTools.OneLine 8 | { 9 | public sealed class OneLinePluginUIElement : PluginCheckedUIElementBase 10 | { 11 | private readonly OneLineService _service; 12 | 13 | public override bool ShowInToolBar => true; 14 | public override System.Drawing.Bitmap Image => Resources._1line; 15 | public override IEnumerable Childrens => null; 16 | 17 | public override Guid ActionCode { get; } 18 | public override string Text { get; } 19 | 20 | public OneLinePluginUIElement(IPlugin plugin, OneLineService service, Guid actionCode = default(Guid), string text = null) 21 | : base(plugin) 22 | { 23 | ActionCode = actionCode != default(Guid) ? actionCode : Guid.Parse("{80A08139-0A47-4eea-93BD-E217E24B1C5B}"); 24 | Text = text ?? "Ограничить кол-во линий одной"; 25 | 26 | _service = service; 27 | _service.IsOneLine = Checked = Plugin.PluginManager.Core.SettingsManager.GetValueOrSetDefault("OneLinePluginEnabled", true); 28 | } 29 | 30 | protected override void ExecuteCheckedCommand(object sender, bool checkedValue, object data) 31 | { 32 | _service.IsOneLine = checkedValue; 33 | Plugin.PluginManager.Core.SettingsManager["OneLinePluginEnabled"] = checkedValue; 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /ContactPoint/NotifyControls/AudioDeviceChangedNotifyControl.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace ContactPoint.NotifyControls 2 | { 3 | partial class AudioDeviceChangedNotifyControl 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Component Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | this.SuspendLayout(); 32 | // 33 | // AudioDeviceChangedNotifyControl 34 | // 35 | this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); 36 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; 37 | this.Name = "AudioDeviceChangedNotifyControl"; 38 | this.Size = new System.Drawing.Size(312, 125); 39 | this.ResumeLayout(false); 40 | 41 | } 42 | 43 | #endregion 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /ContactPoint.Common/Audio/IAudioDevice.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace ContactPoint.Common.Audio 6 | { 7 | /// 8 | /// Interface represents audio device from WaveLibMixer 9 | /// 10 | public interface IAudioDevice 11 | { 12 | /// 13 | /// Occurs when user or system changed volume on device 14 | /// 15 | event Action VolumeChanged; 16 | 17 | /// 18 | /// Occurs when user or system changed mute flag on device 19 | /// 20 | event Action MuteChanged; 21 | 22 | /// 23 | /// Audio manager object 24 | /// 25 | IAudio Audio { get; } 26 | 27 | /// 28 | /// Device name 29 | /// 30 | string Name { get; } 31 | 32 | /// 33 | /// Device type 34 | /// 35 | AudioDeviceType Type { get; } 36 | 37 | /// 38 | /// Current device volume from 0 to 100 39 | /// 40 | int Volume { get; set; } 41 | 42 | /// 43 | /// Toggle mute of device 44 | /// 45 | bool Mute { get; set; } 46 | 47 | /// 48 | /// Create audio player for this device. 49 | /// If device is not support playback - returns null 50 | /// 51 | /// AudioPlayer object or null if playback not supported 52 | IAudioPlayer CreateAudioPlayer(); 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ContactPoint IP Phone - Core 2 | 3 | Latest binaries: https://github.com/ipphone/core/releases/latest 4 | 5 | ## Features 6 | 7 | - Lightweight SIP softphone 8 | - Supports Windows x32 & x64 9 | - Highly customizable plugin architecture 10 | - Contacts book 11 | - Calls log 12 | - Hot keys support 13 | - OS-native click to call 14 | - Browser trigger on incoming call 15 | - Advanced SIP headers support for Call Centers 16 | 17 | ## Screenshots 18 | 19 | 20 | 21 | ## Configuration 22 | 23 | SIP account configuration settings: 24 | - **Display Name:** _anything you want_ 25 | - **Username:** _sip account username_ (without domain name part, like: 1001) 26 | - **Password:** _sip account password_ 27 | - **Realm:** _*_ (asterisk symbol) 28 | - **SIP Registrar:** asterisk server address (server IP or DNS name) 29 | 30 | > **For example**, if you have SIP account `1001@asterisk.local` with password `12345678`, configuration settings you would use: 31 | > - **Display Name:** `1001@asterisk.local` 32 | > - **Username:** `1001` 33 | > - **Password:** `12345678` 34 | > - **Realm:** `*` 35 | > - **SIP Registrar:** `asterisk.local` 36 | 37 | 38 | ## References 39 | 40 | - [PJSIP – pjproject](https://github.com/pjsip/pjproject) 41 | - [ComponentFactory – Krypton](https://github.com/ComponentFactory/Krypton) 42 | 43 | ## License check 44 | 45 | [![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fipphone%2Fcore.svg?type=large)](https://app.fossa.io/projects/git%2Bgithub.com%2Fipphone%2Fcore?ref=badge_large) 46 | --------------------------------------------------------------------------------