SEBWIN-449: Refactored notification implementation, moved icon resources to core library (again) and removed client contracts.
This commit is contained in:
parent
f92c717e32
commit
48f9344164
73 changed files with 256 additions and 382 deletions
|
@ -6,7 +6,7 @@
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
using SafeExamBrowser.Applications.Contracts.Resources.Icons;
|
using SafeExamBrowser.Core.Contracts.Resources.Icons;
|
||||||
|
|
||||||
namespace SafeExamBrowser.Applications.Contracts.Events
|
namespace SafeExamBrowser.Applications.Contracts.Events
|
||||||
{
|
{
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using SafeExamBrowser.Applications.Contracts.Events;
|
using SafeExamBrowser.Applications.Contracts.Events;
|
||||||
using SafeExamBrowser.Applications.Contracts.Resources.Icons;
|
using SafeExamBrowser.Core.Contracts.Resources.Icons;
|
||||||
|
|
||||||
namespace SafeExamBrowser.Applications.Contracts
|
namespace SafeExamBrowser.Applications.Contracts
|
||||||
{
|
{
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using SafeExamBrowser.Applications.Contracts.Events;
|
using SafeExamBrowser.Applications.Contracts.Events;
|
||||||
using SafeExamBrowser.Applications.Contracts.Resources.Icons;
|
using SafeExamBrowser.Core.Contracts.Resources.Icons;
|
||||||
|
|
||||||
namespace SafeExamBrowser.Applications.Contracts
|
namespace SafeExamBrowser.Applications.Contracts
|
||||||
{
|
{
|
||||||
|
|
|
@ -61,14 +61,13 @@
|
||||||
<Compile Include="IApplication.cs" />
|
<Compile Include="IApplication.cs" />
|
||||||
<Compile Include="IApplicationFactory.cs" />
|
<Compile Include="IApplicationFactory.cs" />
|
||||||
<Compile Include="IApplicationWindow.cs" />
|
<Compile Include="IApplicationWindow.cs" />
|
||||||
<Compile Include="Resources\Icons\BitmapIconResource.cs" />
|
|
||||||
<Compile Include="Resources\Icons\EmbeddedIconResource.cs" />
|
|
||||||
<Compile Include="Resources\Icons\IconResource.cs" />
|
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
<Compile Include="Resources\Icons\NativeIconResource.cs" />
|
|
||||||
<Compile Include="Resources\Icons\XamlIconResource.cs" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\SafeExamBrowser.Core.Contracts\SafeExamBrowser.Core.Contracts.csproj">
|
||||||
|
<Project>{fe0e1224-b447-4b14-81e7-ed7d84822aa0}</Project>
|
||||||
|
<Name>SafeExamBrowser.Core.Contracts</Name>
|
||||||
|
</ProjectReference>
|
||||||
<ProjectReference Include="..\SafeExamBrowser.Settings\SafeExamBrowser.Settings.csproj">
|
<ProjectReference Include="..\SafeExamBrowser.Settings\SafeExamBrowser.Settings.csproj">
|
||||||
<Project>{30b2d907-5861-4f39-abad-c4abf1b3470e}</Project>
|
<Project>{30b2d907-5861-4f39-abad-c4abf1b3470e}</Project>
|
||||||
<Name>SafeExamBrowser.Settings</Name>
|
<Name>SafeExamBrowser.Settings</Name>
|
||||||
|
|
|
@ -11,7 +11,7 @@ using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using SafeExamBrowser.Applications.Contracts;
|
using SafeExamBrowser.Applications.Contracts;
|
||||||
using SafeExamBrowser.Applications.Contracts.Events;
|
using SafeExamBrowser.Applications.Contracts.Events;
|
||||||
using SafeExamBrowser.Applications.Contracts.Resources.Icons;
|
using SafeExamBrowser.Core.Contracts.Resources.Icons;
|
||||||
using SafeExamBrowser.Logging.Contracts;
|
using SafeExamBrowser.Logging.Contracts;
|
||||||
using SafeExamBrowser.Monitoring.Contracts.Applications;
|
using SafeExamBrowser.Monitoring.Contracts.Applications;
|
||||||
using SafeExamBrowser.Settings.Applications;
|
using SafeExamBrowser.Settings.Applications;
|
||||||
|
|
|
@ -12,7 +12,7 @@ using System.Linq;
|
||||||
using System.Timers;
|
using System.Timers;
|
||||||
using SafeExamBrowser.Applications.Contracts;
|
using SafeExamBrowser.Applications.Contracts;
|
||||||
using SafeExamBrowser.Applications.Contracts.Events;
|
using SafeExamBrowser.Applications.Contracts.Events;
|
||||||
using SafeExamBrowser.Applications.Contracts.Resources.Icons;
|
using SafeExamBrowser.Core.Contracts.Resources.Icons;
|
||||||
using SafeExamBrowser.Applications.Events;
|
using SafeExamBrowser.Applications.Events;
|
||||||
using SafeExamBrowser.Logging.Contracts;
|
using SafeExamBrowser.Logging.Contracts;
|
||||||
using SafeExamBrowser.WindowsApi.Contracts;
|
using SafeExamBrowser.WindowsApi.Contracts;
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
using System;
|
using System;
|
||||||
using SafeExamBrowser.Applications.Contracts;
|
using SafeExamBrowser.Applications.Contracts;
|
||||||
using SafeExamBrowser.Applications.Contracts.Events;
|
using SafeExamBrowser.Applications.Contracts.Events;
|
||||||
using SafeExamBrowser.Applications.Contracts.Resources.Icons;
|
using SafeExamBrowser.Core.Contracts.Resources.Icons;
|
||||||
using SafeExamBrowser.WindowsApi.Contracts;
|
using SafeExamBrowser.WindowsApi.Contracts;
|
||||||
|
|
||||||
namespace SafeExamBrowser.Applications
|
namespace SafeExamBrowser.Applications
|
||||||
|
|
|
@ -66,6 +66,10 @@
|
||||||
<Project>{ac77745d-3b41-43e2-8e84-d40e5a4ee77f}</Project>
|
<Project>{ac77745d-3b41-43e2-8e84-d40e5a4ee77f}</Project>
|
||||||
<Name>SafeExamBrowser.Applications.Contracts</Name>
|
<Name>SafeExamBrowser.Applications.Contracts</Name>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
|
<ProjectReference Include="..\SafeExamBrowser.Core.Contracts\SafeExamBrowser.Core.Contracts.csproj">
|
||||||
|
<Project>{fe0e1224-b447-4b14-81e7-ed7d84822aa0}</Project>
|
||||||
|
<Name>SafeExamBrowser.Core.Contracts</Name>
|
||||||
|
</ProjectReference>
|
||||||
<ProjectReference Include="..\SafeExamBrowser.Logging.Contracts\SafeExamBrowser.Logging.Contracts.csproj">
|
<ProjectReference Include="..\SafeExamBrowser.Logging.Contracts\SafeExamBrowser.Logging.Contracts.csproj">
|
||||||
<Project>{64ea30fb-11d4-436a-9c2b-88566285363e}</Project>
|
<Project>{64ea30fb-11d4-436a-9c2b-88566285363e}</Project>
|
||||||
<Name>SafeExamBrowser.Logging.Contracts</Name>
|
<Name>SafeExamBrowser.Logging.Contracts</Name>
|
||||||
|
|
|
@ -14,7 +14,7 @@ using CefSharp;
|
||||||
using CefSharp.WinForms;
|
using CefSharp.WinForms;
|
||||||
using SafeExamBrowser.Applications.Contracts;
|
using SafeExamBrowser.Applications.Contracts;
|
||||||
using SafeExamBrowser.Applications.Contracts.Events;
|
using SafeExamBrowser.Applications.Contracts.Events;
|
||||||
using SafeExamBrowser.Applications.Contracts.Resources.Icons;
|
using SafeExamBrowser.Core.Contracts.Resources.Icons;
|
||||||
using SafeExamBrowser.Browser.Contracts;
|
using SafeExamBrowser.Browser.Contracts;
|
||||||
using SafeExamBrowser.Browser.Contracts.Events;
|
using SafeExamBrowser.Browser.Contracts.Events;
|
||||||
using SafeExamBrowser.Browser.Events;
|
using SafeExamBrowser.Browser.Events;
|
||||||
|
|
|
@ -12,7 +12,7 @@ using System.Threading.Tasks;
|
||||||
using CefSharp;
|
using CefSharp;
|
||||||
using SafeExamBrowser.Applications.Contracts;
|
using SafeExamBrowser.Applications.Contracts;
|
||||||
using SafeExamBrowser.Applications.Contracts.Events;
|
using SafeExamBrowser.Applications.Contracts.Events;
|
||||||
using SafeExamBrowser.Applications.Contracts.Resources.Icons;
|
using SafeExamBrowser.Core.Contracts.Resources.Icons;
|
||||||
using SafeExamBrowser.Browser.Contracts.Events;
|
using SafeExamBrowser.Browser.Contracts.Events;
|
||||||
using SafeExamBrowser.Browser.Contracts.Filters;
|
using SafeExamBrowser.Browser.Contracts.Filters;
|
||||||
using SafeExamBrowser.Browser.Events;
|
using SafeExamBrowser.Browser.Events;
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using SafeExamBrowser.Applications.Contracts.Resources.Icons;
|
using SafeExamBrowser.Core.Contracts.Resources.Icons;
|
||||||
|
|
||||||
namespace SafeExamBrowser.Browser
|
namespace SafeExamBrowser.Browser
|
||||||
{
|
{
|
||||||
|
|
|
@ -122,6 +122,10 @@
|
||||||
<Project>{7d74555e-63e1-4c46-bd0a-8580552368c8}</Project>
|
<Project>{7d74555e-63e1-4c46-bd0a-8580552368c8}</Project>
|
||||||
<Name>SafeExamBrowser.Configuration.Contracts</Name>
|
<Name>SafeExamBrowser.Configuration.Contracts</Name>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
|
<ProjectReference Include="..\SafeExamBrowser.Core.Contracts\SafeExamBrowser.Core.Contracts.csproj">
|
||||||
|
<Project>{fe0e1224-b447-4b14-81e7-ed7d84822aa0}</Project>
|
||||||
|
<Name>SafeExamBrowser.Core.Contracts</Name>
|
||||||
|
</ProjectReference>
|
||||||
<ProjectReference Include="..\SafeExamBrowser.I18n.Contracts\SafeExamBrowser.I18n.Contracts.csproj">
|
<ProjectReference Include="..\SafeExamBrowser.I18n.Contracts\SafeExamBrowser.I18n.Contracts.csproj">
|
||||||
<Project>{1858ddf3-bc2a-4bff-b663-4ce2ffeb8b7d}</Project>
|
<Project>{1858ddf3-bc2a-4bff-b663-4ce2ffeb8b7d}</Project>
|
||||||
<Name>SafeExamBrowser.I18n.Contracts</Name>
|
<Name>SafeExamBrowser.I18n.Contracts</Name>
|
||||||
|
|
|
@ -1,28 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2021 ETH Zürich, Educational Development and Technology (LET)
|
|
||||||
*
|
|
||||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
||||||
*/
|
|
||||||
|
|
||||||
using SafeExamBrowser.Applications.Contracts.Resources.Icons;
|
|
||||||
|
|
||||||
namespace SafeExamBrowser.Client.Contracts
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// The information about a notification.
|
|
||||||
/// </summary>
|
|
||||||
public interface INotificationInfo
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// The tooltip for the notification.
|
|
||||||
/// </summary>
|
|
||||||
string Tooltip { get; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// The resource providing the notification icon.
|
|
||||||
/// </summary>
|
|
||||||
IconResource IconResource { get; }
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,33 +0,0 @@
|
||||||
using System.Reflection;
|
|
||||||
using System.Runtime.InteropServices;
|
|
||||||
|
|
||||||
// General Information about an assembly is controlled through the following
|
|
||||||
// set of attributes. Change these attribute values to modify the information
|
|
||||||
// associated with an assembly.
|
|
||||||
[assembly: AssemblyTitle("SafeExamBrowser.Client.Contracts")]
|
|
||||||
[assembly: AssemblyDescription("Safe Exam Browser")]
|
|
||||||
[assembly: AssemblyCompany("ETH Zürich")]
|
|
||||||
[assembly: AssemblyProduct("SafeExamBrowser.Client.Contracts")]
|
|
||||||
[assembly: AssemblyCopyright("Copyright © 2021 ETH Zürich, Educational Development and Technology (LET)")]
|
|
||||||
|
|
||||||
// Setting ComVisible to false makes the types in this assembly not visible
|
|
||||||
// to COM components. If you need to access a type in this assembly from
|
|
||||||
// COM, set the ComVisible attribute to true on that type.
|
|
||||||
[assembly: ComVisible(false)]
|
|
||||||
|
|
||||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
|
||||||
[assembly: Guid("d39aea14-9d5e-404d-be39-a552e1bd2c7d")]
|
|
||||||
|
|
||||||
// Version information for an assembly consists of the following four values:
|
|
||||||
//
|
|
||||||
// Major Version
|
|
||||||
// Minor Version
|
|
||||||
// Build Number
|
|
||||||
// Revision
|
|
||||||
//
|
|
||||||
// You can specify all the values or you can default the Build and Revision Numbers
|
|
||||||
// by using the '*' as shown below:
|
|
||||||
// [assembly: AssemblyVersion("1.0.*")]
|
|
||||||
[assembly: AssemblyVersion("1.0.0.0")]
|
|
||||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
|
||||||
[assembly: AssemblyInformationalVersion("1.0.0.0")]
|
|
|
@ -1,72 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
|
||||||
<PropertyGroup>
|
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
|
||||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
|
||||||
<ProjectGuid>{D39AEA14-9D5E-404D-BE39-A552E1BD2C7D}</ProjectGuid>
|
|
||||||
<OutputType>Library</OutputType>
|
|
||||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
|
||||||
<RootNamespace>SafeExamBrowser.Client.Contracts</RootNamespace>
|
|
||||||
<AssemblyName>SafeExamBrowser.Client.Contracts</AssemblyName>
|
|
||||||
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
|
|
||||||
<FileAlignment>512</FileAlignment>
|
|
||||||
<Deterministic>true</Deterministic>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
|
|
||||||
<DebugSymbols>true</DebugSymbols>
|
|
||||||
<OutputPath>bin\x86\Debug\</OutputPath>
|
|
||||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
|
||||||
<DebugType>full</DebugType>
|
|
||||||
<PlatformTarget>x86</PlatformTarget>
|
|
||||||
<ErrorReport>prompt</ErrorReport>
|
|
||||||
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
|
|
||||||
<OutputPath>bin\x86\Release\</OutputPath>
|
|
||||||
<DefineConstants>TRACE</DefineConstants>
|
|
||||||
<Optimize>true</Optimize>
|
|
||||||
<DebugType>pdbonly</DebugType>
|
|
||||||
<PlatformTarget>x86</PlatformTarget>
|
|
||||||
<ErrorReport>prompt</ErrorReport>
|
|
||||||
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
|
|
||||||
<DebugSymbols>true</DebugSymbols>
|
|
||||||
<OutputPath>bin\x64\Debug\</OutputPath>
|
|
||||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
|
||||||
<DebugType>full</DebugType>
|
|
||||||
<PlatformTarget>x64</PlatformTarget>
|
|
||||||
<ErrorReport>prompt</ErrorReport>
|
|
||||||
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
|
|
||||||
<OutputPath>bin\x64\Release\</OutputPath>
|
|
||||||
<DefineConstants>TRACE</DefineConstants>
|
|
||||||
<Optimize>true</Optimize>
|
|
||||||
<DebugType>pdbonly</DebugType>
|
|
||||||
<PlatformTarget>x64</PlatformTarget>
|
|
||||||
<ErrorReport>prompt</ErrorReport>
|
|
||||||
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
|
||||||
</PropertyGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<Reference Include="System" />
|
|
||||||
<Reference Include="Microsoft.CSharp" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<Compile Include="INotificationController.cs" />
|
|
||||||
<Compile Include="INotificationInfo.cs" />
|
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ProjectReference Include="..\SafeExamBrowser.Applications.Contracts\SafeExamBrowser.Applications.Contracts.csproj">
|
|
||||||
<Project>{ac77745d-3b41-43e2-8e84-d40e5a4ee77f}</Project>
|
|
||||||
<Name>SafeExamBrowser.Applications.Contracts</Name>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\SafeExamBrowser.Core.Contracts\SafeExamBrowser.Core.Contracts.csproj">
|
|
||||||
<Project>{fe0e1224-b447-4b14-81e7-ed7d84822aa0}</Project>
|
|
||||||
<Name>SafeExamBrowser.Core.Contracts</Name>
|
|
||||||
</ProjectReference>
|
|
||||||
</ItemGroup>
|
|
||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
|
||||||
</Project>
|
|
|
@ -10,6 +10,7 @@ using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||||
using Moq;
|
using Moq;
|
||||||
using SafeExamBrowser.Client.Notifications;
|
using SafeExamBrowser.Client.Notifications;
|
||||||
using SafeExamBrowser.Configuration.Contracts;
|
using SafeExamBrowser.Configuration.Contracts;
|
||||||
|
using SafeExamBrowser.I18n.Contracts;
|
||||||
using SafeExamBrowser.UserInterface.Contracts;
|
using SafeExamBrowser.UserInterface.Contracts;
|
||||||
using SafeExamBrowser.UserInterface.Contracts.Windows;
|
using SafeExamBrowser.UserInterface.Contracts.Windows;
|
||||||
|
|
||||||
|
@ -19,12 +20,14 @@ namespace SafeExamBrowser.Client.UnitTests.Notifications
|
||||||
public class AboutNotificationControllerTests
|
public class AboutNotificationControllerTests
|
||||||
{
|
{
|
||||||
private Mock<AppConfig> appConfig;
|
private Mock<AppConfig> appConfig;
|
||||||
|
private Mock<IText> text;
|
||||||
private Mock<IUserInterfaceFactory> uiFactory;
|
private Mock<IUserInterfaceFactory> uiFactory;
|
||||||
|
|
||||||
[TestInitialize]
|
[TestInitialize]
|
||||||
public void Initialize()
|
public void Initialize()
|
||||||
{
|
{
|
||||||
appConfig = new Mock<AppConfig>();
|
appConfig = new Mock<AppConfig>();
|
||||||
|
text = new Mock<IText>();
|
||||||
uiFactory = new Mock<IUserInterfaceFactory>();
|
uiFactory = new Mock<IUserInterfaceFactory>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -32,7 +35,7 @@ namespace SafeExamBrowser.Client.UnitTests.Notifications
|
||||||
public void MustCloseWindowWhenTerminating()
|
public void MustCloseWindowWhenTerminating()
|
||||||
{
|
{
|
||||||
var window = new Mock<IWindow>();
|
var window = new Mock<IWindow>();
|
||||||
var sut = new AboutNotificationController(appConfig.Object, uiFactory.Object);
|
var sut = new AboutNotification(appConfig.Object, text.Object, uiFactory.Object);
|
||||||
|
|
||||||
uiFactory.Setup(u => u.CreateAboutWindow(It.IsAny<AppConfig>())).Returns(window.Object);
|
uiFactory.Setup(u => u.CreateAboutWindow(It.IsAny<AppConfig>())).Returns(window.Object);
|
||||||
|
|
||||||
|
@ -46,7 +49,7 @@ namespace SafeExamBrowser.Client.UnitTests.Notifications
|
||||||
public void MustOpenOnlyOneWindow()
|
public void MustOpenOnlyOneWindow()
|
||||||
{
|
{
|
||||||
var window = new Mock<IWindow>();
|
var window = new Mock<IWindow>();
|
||||||
var sut = new AboutNotificationController(appConfig.Object, uiFactory.Object);
|
var sut = new AboutNotification(appConfig.Object, text.Object, uiFactory.Object);
|
||||||
|
|
||||||
uiFactory.Setup(u => u.CreateAboutWindow(It.IsAny<AppConfig>())).Returns(window.Object);
|
uiFactory.Setup(u => u.CreateAboutWindow(It.IsAny<AppConfig>())).Returns(window.Object);
|
||||||
|
|
||||||
|
@ -64,7 +67,7 @@ namespace SafeExamBrowser.Client.UnitTests.Notifications
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void MustNotFailToTerminateIfNotStarted()
|
public void MustNotFailToTerminateIfNotStarted()
|
||||||
{
|
{
|
||||||
var sut = new AboutNotificationController(appConfig.Object, uiFactory.Object);
|
var sut = new AboutNotification(appConfig.Object, text.Object, uiFactory.Object);
|
||||||
|
|
||||||
sut.Terminate();
|
sut.Terminate();
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||||
using Moq;
|
using Moq;
|
||||||
using SafeExamBrowser.Client.Notifications;
|
using SafeExamBrowser.Client.Notifications;
|
||||||
|
using SafeExamBrowser.I18n.Contracts;
|
||||||
using SafeExamBrowser.Logging.Contracts;
|
using SafeExamBrowser.Logging.Contracts;
|
||||||
using SafeExamBrowser.UserInterface.Contracts;
|
using SafeExamBrowser.UserInterface.Contracts;
|
||||||
using SafeExamBrowser.UserInterface.Contracts.Windows;
|
using SafeExamBrowser.UserInterface.Contracts.Windows;
|
||||||
|
@ -19,12 +20,14 @@ namespace SafeExamBrowser.Client.UnitTests.Notifications
|
||||||
public class LogNotificationControllerTests
|
public class LogNotificationControllerTests
|
||||||
{
|
{
|
||||||
private Mock<ILogger> logger;
|
private Mock<ILogger> logger;
|
||||||
|
private Mock<IText> text;
|
||||||
private Mock<IUserInterfaceFactory> uiFactory;
|
private Mock<IUserInterfaceFactory> uiFactory;
|
||||||
|
|
||||||
[TestInitialize]
|
[TestInitialize]
|
||||||
public void Initialize()
|
public void Initialize()
|
||||||
{
|
{
|
||||||
logger = new Mock<ILogger>();
|
logger = new Mock<ILogger>();
|
||||||
|
text = new Mock<IText>();
|
||||||
uiFactory = new Mock<IUserInterfaceFactory>();
|
uiFactory = new Mock<IUserInterfaceFactory>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -32,7 +35,7 @@ namespace SafeExamBrowser.Client.UnitTests.Notifications
|
||||||
public void MustCloseWindowWhenTerminating()
|
public void MustCloseWindowWhenTerminating()
|
||||||
{
|
{
|
||||||
var window = new Mock<IWindow>();
|
var window = new Mock<IWindow>();
|
||||||
var sut = new LogNotificationController(logger.Object, uiFactory.Object);
|
var sut = new LogNotification(logger.Object, text.Object, uiFactory.Object);
|
||||||
|
|
||||||
uiFactory.Setup(u => u.CreateLogWindow(It.IsAny<ILogger>())).Returns(window.Object);
|
uiFactory.Setup(u => u.CreateLogWindow(It.IsAny<ILogger>())).Returns(window.Object);
|
||||||
|
|
||||||
|
@ -46,7 +49,7 @@ namespace SafeExamBrowser.Client.UnitTests.Notifications
|
||||||
public void MustOpenOnlyOneWindow()
|
public void MustOpenOnlyOneWindow()
|
||||||
{
|
{
|
||||||
var window = new Mock<IWindow>();
|
var window = new Mock<IWindow>();
|
||||||
var sut = new LogNotificationController(logger.Object, uiFactory.Object);
|
var sut = new LogNotification(logger.Object, text.Object, uiFactory.Object);
|
||||||
|
|
||||||
uiFactory.Setup(u => u.CreateLogWindow(It.IsAny<ILogger>())).Returns(window.Object);
|
uiFactory.Setup(u => u.CreateLogWindow(It.IsAny<ILogger>())).Returns(window.Object);
|
||||||
|
|
||||||
|
@ -64,7 +67,7 @@ namespace SafeExamBrowser.Client.UnitTests.Notifications
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void MustNotFailToTerminateIfNotStarted()
|
public void MustNotFailToTerminateIfNotStarted()
|
||||||
{
|
{
|
||||||
var sut = new LogNotificationController(logger.Object, uiFactory.Object);
|
var sut = new LogNotification(logger.Object, text.Object, uiFactory.Object);
|
||||||
|
|
||||||
sut.Terminate();
|
sut.Terminate();
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,8 +9,8 @@
|
||||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||||
using Moq;
|
using Moq;
|
||||||
using SafeExamBrowser.Applications.Contracts;
|
using SafeExamBrowser.Applications.Contracts;
|
||||||
using SafeExamBrowser.Client.Contracts;
|
|
||||||
using SafeExamBrowser.Client.Operations;
|
using SafeExamBrowser.Client.Operations;
|
||||||
|
using SafeExamBrowser.Core.Contracts.Notifications;
|
||||||
using SafeExamBrowser.I18n.Contracts;
|
using SafeExamBrowser.I18n.Contracts;
|
||||||
using SafeExamBrowser.Logging.Contracts;
|
using SafeExamBrowser.Logging.Contracts;
|
||||||
using SafeExamBrowser.Settings;
|
using SafeExamBrowser.Settings;
|
||||||
|
@ -32,11 +32,9 @@ namespace SafeExamBrowser.Client.UnitTests.Operations
|
||||||
private Mock<IAudio> audio;
|
private Mock<IAudio> audio;
|
||||||
private ClientContext context;
|
private ClientContext context;
|
||||||
private Mock<ILogger> logger;
|
private Mock<ILogger> logger;
|
||||||
private Mock<INotificationInfo> aboutInfo;
|
private Mock<INotification> aboutNotification;
|
||||||
private Mock<INotificationController> aboutController;
|
|
||||||
private Mock<IKeyboard> keyboard;
|
private Mock<IKeyboard> keyboard;
|
||||||
private Mock<INotificationInfo> logInfo;
|
private Mock<INotification> logNotification;
|
||||||
private Mock<INotificationController> logController;
|
|
||||||
private Mock<IPowerSupply> powerSupply;
|
private Mock<IPowerSupply> powerSupply;
|
||||||
private Mock<ISystemInfo> systemInfo;
|
private Mock<ISystemInfo> systemInfo;
|
||||||
private Mock<ITaskbar> taskbar;
|
private Mock<ITaskbar> taskbar;
|
||||||
|
@ -54,11 +52,9 @@ namespace SafeExamBrowser.Client.UnitTests.Operations
|
||||||
audio = new Mock<IAudio>();
|
audio = new Mock<IAudio>();
|
||||||
context = new ClientContext();
|
context = new ClientContext();
|
||||||
logger = new Mock<ILogger>();
|
logger = new Mock<ILogger>();
|
||||||
aboutInfo = new Mock<INotificationInfo>();
|
aboutNotification = new Mock<INotification>();
|
||||||
aboutController = new Mock<INotificationController>();
|
|
||||||
keyboard = new Mock<IKeyboard>();
|
keyboard = new Mock<IKeyboard>();
|
||||||
logInfo = new Mock<INotificationInfo>();
|
logNotification = new Mock<INotification>();
|
||||||
logController = new Mock<INotificationController>();
|
|
||||||
powerSupply = new Mock<IPowerSupply>();
|
powerSupply = new Mock<IPowerSupply>();
|
||||||
systemInfo = new Mock<ISystemInfo>();
|
systemInfo = new Mock<ISystemInfo>();
|
||||||
taskbar = new Mock<ITaskbar>();
|
taskbar = new Mock<ITaskbar>();
|
||||||
|
@ -70,19 +66,17 @@ namespace SafeExamBrowser.Client.UnitTests.Operations
|
||||||
context.Settings = new AppSettings();
|
context.Settings = new AppSettings();
|
||||||
|
|
||||||
uiFactory
|
uiFactory
|
||||||
.Setup(u => u.CreateNotificationControl(It.IsAny<INotificationController>(), It.IsAny<INotificationInfo>(), It.IsAny<Location>()))
|
.Setup(u => u.CreateNotificationControl(It.IsAny<INotification>(), It.IsAny<Location>()))
|
||||||
.Returns(new Mock<INotificationControl>().Object);
|
.Returns(new Mock<INotificationControl>().Object);
|
||||||
|
|
||||||
sut = new ShellOperation(
|
sut = new ShellOperation(
|
||||||
actionCenter.Object,
|
actionCenter.Object,
|
||||||
audio.Object,
|
audio.Object,
|
||||||
aboutInfo.Object,
|
aboutNotification.Object,
|
||||||
aboutController.Object,
|
|
||||||
context,
|
context,
|
||||||
keyboard.Object,
|
keyboard.Object,
|
||||||
logger.Object,
|
logger.Object,
|
||||||
logInfo.Object,
|
logNotification.Object,
|
||||||
logController.Object,
|
|
||||||
powerSupply.Object,
|
powerSupply.Object,
|
||||||
systemInfo.Object,
|
systemInfo.Object,
|
||||||
taskbar.Object,
|
taskbar.Object,
|
||||||
|
@ -272,7 +266,7 @@ namespace SafeExamBrowser.Client.UnitTests.Operations
|
||||||
context.Settings.Taskbar.ShowApplicationLog = false;
|
context.Settings.Taskbar.ShowApplicationLog = false;
|
||||||
|
|
||||||
uiFactory
|
uiFactory
|
||||||
.Setup(f => f.CreateNotificationControl(It.IsAny<INotificationController>(), It.Is<INotificationInfo>(i => i == logInfo.Object), It.IsAny<Location>()))
|
.Setup(f => f.CreateNotificationControl(It.IsAny<INotification>(), It.IsAny<Location>()))
|
||||||
.Returns(logControl.Object);
|
.Returns(logControl.Object);
|
||||||
|
|
||||||
sut.Perform();
|
sut.Perform();
|
||||||
|
@ -409,9 +403,9 @@ namespace SafeExamBrowser.Client.UnitTests.Operations
|
||||||
{
|
{
|
||||||
sut.Revert();
|
sut.Revert();
|
||||||
|
|
||||||
aboutController.Verify(c => c.Terminate(), Times.Once);
|
aboutNotification.Verify(c => c.Terminate(), Times.Once);
|
||||||
audio.Verify(a => a.Terminate(), Times.Once);
|
audio.Verify(a => a.Terminate(), Times.Once);
|
||||||
logController.Verify(c => c.Terminate(), Times.Once);
|
logNotification.Verify(c => c.Terminate(), Times.Once);
|
||||||
powerSupply.Verify(p => p.Terminate(), Times.Once);
|
powerSupply.Verify(p => p.Terminate(), Times.Once);
|
||||||
keyboard.Verify(k => k.Terminate(), Times.Once);
|
keyboard.Verify(k => k.Terminate(), Times.Once);
|
||||||
wirelessAdapter.Verify(w => w.Terminate(), Times.Once);
|
wirelessAdapter.Verify(w => w.Terminate(), Times.Once);
|
||||||
|
|
|
@ -116,10 +116,6 @@
|
||||||
<Project>{5fb5273d-277c-41dd-8593-a25ce1aff2e9}</Project>
|
<Project>{5fb5273d-277c-41dd-8593-a25ce1aff2e9}</Project>
|
||||||
<Name>SafeExamBrowser.Browser.Contracts</Name>
|
<Name>SafeExamBrowser.Browser.Contracts</Name>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
<ProjectReference Include="..\SafeExamBrowser.Client.Contracts\SafeExamBrowser.Client.Contracts.csproj">
|
|
||||||
<Project>{d39aea14-9d5e-404d-be39-a552e1bd2c7d}</Project>
|
|
||||||
<Name>SafeExamBrowser.Client.Contracts</Name>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\SafeExamBrowser.Client\SafeExamBrowser.Client.csproj">
|
<ProjectReference Include="..\SafeExamBrowser.Client\SafeExamBrowser.Client.csproj">
|
||||||
<Project>{7CC5A895-E0D3-4E43-9B39-CCEC05A5A6A7}</Project>
|
<Project>{7CC5A895-E0D3-4E43-9B39-CCEC05A5A6A7}</Project>
|
||||||
<Name>SafeExamBrowser.Client</Name>
|
<Name>SafeExamBrowser.Client</Name>
|
||||||
|
|
|
@ -250,7 +250,7 @@ namespace SafeExamBrowser.Client
|
||||||
private IOperation BuildProctoringOperation()
|
private IOperation BuildProctoringOperation()
|
||||||
{
|
{
|
||||||
var controller = new ProctoringController(context.AppConfig, new FileSystem(), ModuleLogger(nameof(ProctoringController)), uiFactory);
|
var controller = new ProctoringController(context.AppConfig, new FileSystem(), ModuleLogger(nameof(ProctoringController)), uiFactory);
|
||||||
var operation = new ProctoringOperation(context, logger, controller);
|
var operation = new ProctoringOperation(actionCenter, context, controller, logger, controller, taskbar, uiFactory);
|
||||||
|
|
||||||
context.ProctoringController = controller;
|
context.ProctoringController = controller;
|
||||||
|
|
||||||
|
@ -269,22 +269,18 @@ namespace SafeExamBrowser.Client
|
||||||
|
|
||||||
private IOperation BuildShellOperation()
|
private IOperation BuildShellOperation()
|
||||||
{
|
{
|
||||||
var aboutInfo = new AboutNotificationInfo(text);
|
var aboutNotification = new AboutNotification(context.AppConfig, text, uiFactory);
|
||||||
var aboutController = new AboutNotificationController(context.AppConfig, uiFactory);
|
|
||||||
var audio = new Audio(context.Settings.Audio, ModuleLogger(nameof(Audio)));
|
var audio = new Audio(context.Settings.Audio, ModuleLogger(nameof(Audio)));
|
||||||
var keyboard = new Keyboard(ModuleLogger(nameof(Keyboard)));
|
var keyboard = new Keyboard(ModuleLogger(nameof(Keyboard)));
|
||||||
var logInfo = new LogNotificationInfo(text);
|
var logNotification = new LogNotification(logger, text, uiFactory);
|
||||||
var logController = new LogNotificationController(logger, uiFactory);
|
|
||||||
var operation = new ShellOperation(
|
var operation = new ShellOperation(
|
||||||
actionCenter,
|
actionCenter,
|
||||||
audio,
|
audio,
|
||||||
aboutInfo,
|
aboutNotification,
|
||||||
aboutController,
|
|
||||||
context,
|
context,
|
||||||
keyboard,
|
keyboard,
|
||||||
logger,
|
logger,
|
||||||
logInfo,
|
logNotification,
|
||||||
logController,
|
|
||||||
powerSupply,
|
powerSupply,
|
||||||
systemInfo,
|
systemInfo,
|
||||||
taskbar,
|
taskbar,
|
||||||
|
|
|
@ -6,23 +6,35 @@
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
using SafeExamBrowser.Client.Contracts;
|
using System;
|
||||||
using SafeExamBrowser.Configuration.Contracts;
|
using SafeExamBrowser.Configuration.Contracts;
|
||||||
|
using SafeExamBrowser.Core.Contracts.Notifications;
|
||||||
|
using SafeExamBrowser.Core.Contracts.Resources.Icons;
|
||||||
|
using SafeExamBrowser.I18n.Contracts;
|
||||||
using SafeExamBrowser.UserInterface.Contracts;
|
using SafeExamBrowser.UserInterface.Contracts;
|
||||||
using SafeExamBrowser.UserInterface.Contracts.Windows;
|
using SafeExamBrowser.UserInterface.Contracts.Windows;
|
||||||
|
|
||||||
namespace SafeExamBrowser.Client.Notifications
|
namespace SafeExamBrowser.Client.Notifications
|
||||||
{
|
{
|
||||||
internal class AboutNotificationController : INotificationController
|
internal class AboutNotification : INotification
|
||||||
{
|
{
|
||||||
private AppConfig appConfig;
|
private readonly AppConfig appConfig;
|
||||||
private IUserInterfaceFactory uiFactory;
|
private readonly IText text;
|
||||||
|
private readonly IUserInterfaceFactory uiFactory;
|
||||||
|
|
||||||
private IWindow window;
|
private IWindow window;
|
||||||
|
|
||||||
public AboutNotificationController(AppConfig appConfig, IUserInterfaceFactory uiFactory)
|
public string Tooltip { get; }
|
||||||
|
public IconResource IconResource { get; }
|
||||||
|
|
||||||
|
public AboutNotification(AppConfig appConfig, IText text, IUserInterfaceFactory uiFactory)
|
||||||
{
|
{
|
||||||
this.appConfig = appConfig;
|
this.appConfig = appConfig;
|
||||||
|
this.text = text;
|
||||||
this.uiFactory = uiFactory;
|
this.uiFactory = uiFactory;
|
||||||
|
|
||||||
|
IconResource = new XamlIconResource { Uri = new Uri("pack://application:,,,/SafeExamBrowser.UserInterface.Desktop;component/Images/AboutNotification.xaml") };
|
||||||
|
Tooltip = text.Get(TextKey.Notification_AboutTooltip);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Activate()
|
public void Activate()
|
|
@ -1,27 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2021 ETH Zürich, Educational Development and Technology (LET)
|
|
||||||
*
|
|
||||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
||||||
*/
|
|
||||||
|
|
||||||
using System;
|
|
||||||
using SafeExamBrowser.Applications.Contracts.Resources.Icons;
|
|
||||||
using SafeExamBrowser.Client.Contracts;
|
|
||||||
using SafeExamBrowser.I18n.Contracts;
|
|
||||||
|
|
||||||
namespace SafeExamBrowser.Client.Notifications
|
|
||||||
{
|
|
||||||
internal class AboutNotificationInfo : INotificationInfo
|
|
||||||
{
|
|
||||||
public string Tooltip { get; }
|
|
||||||
public IconResource IconResource { get; }
|
|
||||||
|
|
||||||
public AboutNotificationInfo(IText text)
|
|
||||||
{
|
|
||||||
IconResource = new XamlIconResource { Uri = new Uri("pack://application:,,,/SafeExamBrowser.UserInterface.Desktop;component/Images/AboutNotification.xaml") };
|
|
||||||
Tooltip = text.Get(TextKey.Notification_AboutTooltip);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -6,23 +6,35 @@
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
using SafeExamBrowser.Client.Contracts;
|
using System;
|
||||||
|
using SafeExamBrowser.Core.Contracts.Notifications;
|
||||||
|
using SafeExamBrowser.Core.Contracts.Resources.Icons;
|
||||||
|
using SafeExamBrowser.I18n.Contracts;
|
||||||
using SafeExamBrowser.Logging.Contracts;
|
using SafeExamBrowser.Logging.Contracts;
|
||||||
using SafeExamBrowser.UserInterface.Contracts;
|
using SafeExamBrowser.UserInterface.Contracts;
|
||||||
using SafeExamBrowser.UserInterface.Contracts.Windows;
|
using SafeExamBrowser.UserInterface.Contracts.Windows;
|
||||||
|
|
||||||
namespace SafeExamBrowser.Client.Notifications
|
namespace SafeExamBrowser.Client.Notifications
|
||||||
{
|
{
|
||||||
internal class LogNotificationController : INotificationController
|
internal class LogNotification : INotification
|
||||||
{
|
{
|
||||||
private ILogger logger;
|
private readonly ILogger logger;
|
||||||
private IUserInterfaceFactory uiFactory;
|
private readonly IText text;
|
||||||
|
private readonly IUserInterfaceFactory uiFactory;
|
||||||
|
|
||||||
private IWindow window;
|
private IWindow window;
|
||||||
|
|
||||||
public LogNotificationController(ILogger logger, IUserInterfaceFactory uiFactory)
|
public string Tooltip { get; }
|
||||||
|
public IconResource IconResource { get; }
|
||||||
|
|
||||||
|
public LogNotification(ILogger logger, IText text, IUserInterfaceFactory uiFactory)
|
||||||
{
|
{
|
||||||
this.logger = logger;
|
this.logger = logger;
|
||||||
|
this.text = text;
|
||||||
this.uiFactory = uiFactory;
|
this.uiFactory = uiFactory;
|
||||||
|
|
||||||
|
IconResource = new BitmapIconResource { Uri = new Uri("pack://application:,,,/SafeExamBrowser.UserInterface.Desktop;component/Images/LogNotification.ico") };
|
||||||
|
Tooltip = text.Get(TextKey.Notification_LogTooltip);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Activate()
|
public void Activate()
|
|
@ -1,27 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2021 ETH Zürich, Educational Development and Technology (LET)
|
|
||||||
*
|
|
||||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
||||||
*/
|
|
||||||
|
|
||||||
using System;
|
|
||||||
using SafeExamBrowser.Applications.Contracts.Resources.Icons;
|
|
||||||
using SafeExamBrowser.Client.Contracts;
|
|
||||||
using SafeExamBrowser.I18n.Contracts;
|
|
||||||
|
|
||||||
namespace SafeExamBrowser.Client.Notifications
|
|
||||||
{
|
|
||||||
internal class LogNotificationInfo : INotificationInfo
|
|
||||||
{
|
|
||||||
public string Tooltip { get; }
|
|
||||||
public IconResource IconResource { get; }
|
|
||||||
|
|
||||||
public LogNotificationInfo(IText text)
|
|
||||||
{
|
|
||||||
IconResource = new BitmapIconResource { Uri = new Uri("pack://application:,,,/SafeExamBrowser.UserInterface.Desktop;component/Images/LogNotification.ico") };
|
|
||||||
Tooltip = text.Get(TextKey.Notification_LogTooltip);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -6,26 +6,44 @@
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
using SafeExamBrowser.Core.Contracts.Notifications;
|
||||||
using SafeExamBrowser.Core.Contracts.OperationModel;
|
using SafeExamBrowser.Core.Contracts.OperationModel;
|
||||||
using SafeExamBrowser.Core.Contracts.OperationModel.Events;
|
using SafeExamBrowser.Core.Contracts.OperationModel.Events;
|
||||||
using SafeExamBrowser.I18n.Contracts;
|
using SafeExamBrowser.I18n.Contracts;
|
||||||
using SafeExamBrowser.Logging.Contracts;
|
using SafeExamBrowser.Logging.Contracts;
|
||||||
using SafeExamBrowser.Proctoring.Contracts;
|
using SafeExamBrowser.Proctoring.Contracts;
|
||||||
|
using SafeExamBrowser.UserInterface.Contracts;
|
||||||
|
using SafeExamBrowser.UserInterface.Contracts.Shell;
|
||||||
|
|
||||||
namespace SafeExamBrowser.Client.Operations
|
namespace SafeExamBrowser.Client.Operations
|
||||||
{
|
{
|
||||||
internal class ProctoringOperation : ClientOperation
|
internal class ProctoringOperation : ClientOperation
|
||||||
{
|
{
|
||||||
private readonly ILogger logger;
|
private readonly IActionCenter actionCenter;
|
||||||
private readonly IProctoringController controller;
|
private readonly IProctoringController controller;
|
||||||
|
private readonly ILogger logger;
|
||||||
|
private readonly INotification notification;
|
||||||
|
private readonly ITaskbar taskbar;
|
||||||
|
private readonly IUserInterfaceFactory uiFactory;
|
||||||
|
|
||||||
public override event ActionRequiredEventHandler ActionRequired { add { } remove { } }
|
public override event ActionRequiredEventHandler ActionRequired { add { } remove { } }
|
||||||
public override event StatusChangedEventHandler StatusChanged;
|
public override event StatusChangedEventHandler StatusChanged;
|
||||||
|
|
||||||
public ProctoringOperation(ClientContext context, ILogger logger, IProctoringController controller) : base(context)
|
public ProctoringOperation(
|
||||||
|
IActionCenter actionCenter,
|
||||||
|
ClientContext context,
|
||||||
|
IProctoringController controller,
|
||||||
|
ILogger logger,
|
||||||
|
INotification notification,
|
||||||
|
ITaskbar taskbar,
|
||||||
|
IUserInterfaceFactory uiFactory) : base(context)
|
||||||
{
|
{
|
||||||
|
this.actionCenter = actionCenter;
|
||||||
this.controller = controller;
|
this.controller = controller;
|
||||||
this.logger = logger;
|
this.logger = logger;
|
||||||
|
this.notification = notification;
|
||||||
|
this.taskbar = taskbar;
|
||||||
|
this.uiFactory = uiFactory;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override OperationResult Perform()
|
public override OperationResult Perform()
|
||||||
|
@ -35,7 +53,13 @@ namespace SafeExamBrowser.Client.Operations
|
||||||
logger.Info("Initializing proctoring...");
|
logger.Info("Initializing proctoring...");
|
||||||
StatusChanged?.Invoke(TextKey.OperationStatus_InitializeProctoring);
|
StatusChanged?.Invoke(TextKey.OperationStatus_InitializeProctoring);
|
||||||
|
|
||||||
|
var actionCenterControl = uiFactory.CreateNotificationControl(notification, Location.ActionCenter);
|
||||||
|
var taskbarControl = uiFactory.CreateNotificationControl(notification, Location.Taskbar);
|
||||||
|
|
||||||
controller.Initialize(Context.Settings.Proctoring);
|
controller.Initialize(Context.Settings.Proctoring);
|
||||||
|
|
||||||
|
actionCenter.AddNotificationControl(actionCenterControl);
|
||||||
|
taskbar.AddNotificationControl(taskbarControl);
|
||||||
}
|
}
|
||||||
|
|
||||||
return OperationResult.Success;
|
return OperationResult.Success;
|
||||||
|
@ -49,6 +73,7 @@ namespace SafeExamBrowser.Client.Operations
|
||||||
StatusChanged?.Invoke(TextKey.OperationStatus_TerminateProctoring);
|
StatusChanged?.Invoke(TextKey.OperationStatus_TerminateProctoring);
|
||||||
|
|
||||||
controller.Terminate();
|
controller.Terminate();
|
||||||
|
notification.Terminate();
|
||||||
}
|
}
|
||||||
|
|
||||||
return OperationResult.Success;
|
return OperationResult.Success;
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using SafeExamBrowser.Client.Contracts;
|
using SafeExamBrowser.Core.Contracts.Notifications;
|
||||||
using SafeExamBrowser.Core.Contracts.OperationModel;
|
using SafeExamBrowser.Core.Contracts.OperationModel;
|
||||||
using SafeExamBrowser.Core.Contracts.OperationModel.Events;
|
using SafeExamBrowser.Core.Contracts.OperationModel.Events;
|
||||||
using SafeExamBrowser.I18n.Contracts;
|
using SafeExamBrowser.I18n.Contracts;
|
||||||
|
@ -26,12 +26,10 @@ namespace SafeExamBrowser.Client.Operations
|
||||||
{
|
{
|
||||||
private IActionCenter actionCenter;
|
private IActionCenter actionCenter;
|
||||||
private IAudio audio;
|
private IAudio audio;
|
||||||
private INotificationInfo aboutInfo;
|
private INotification aboutNotification;
|
||||||
private INotificationController aboutController;
|
|
||||||
private IKeyboard keyboard;
|
private IKeyboard keyboard;
|
||||||
private ILogger logger;
|
private ILogger logger;
|
||||||
private INotificationInfo logInfo;
|
private INotification logNotification;
|
||||||
private INotificationController logController;
|
|
||||||
private IPowerSupply powerSupply;
|
private IPowerSupply powerSupply;
|
||||||
private ISystemInfo systemInfo;
|
private ISystemInfo systemInfo;
|
||||||
private ITaskbar taskbar;
|
private ITaskbar taskbar;
|
||||||
|
@ -46,13 +44,11 @@ namespace SafeExamBrowser.Client.Operations
|
||||||
public ShellOperation(
|
public ShellOperation(
|
||||||
IActionCenter actionCenter,
|
IActionCenter actionCenter,
|
||||||
IAudio audio,
|
IAudio audio,
|
||||||
INotificationInfo aboutInfo,
|
INotification aboutNotification,
|
||||||
INotificationController aboutController,
|
|
||||||
ClientContext context,
|
ClientContext context,
|
||||||
IKeyboard keyboard,
|
IKeyboard keyboard,
|
||||||
ILogger logger,
|
ILogger logger,
|
||||||
INotificationInfo logInfo,
|
INotification logNotification,
|
||||||
INotificationController logController,
|
|
||||||
IPowerSupply powerSupply,
|
IPowerSupply powerSupply,
|
||||||
ISystemInfo systemInfo,
|
ISystemInfo systemInfo,
|
||||||
ITaskbar taskbar,
|
ITaskbar taskbar,
|
||||||
|
@ -61,14 +57,12 @@ namespace SafeExamBrowser.Client.Operations
|
||||||
IUserInterfaceFactory uiFactory,
|
IUserInterfaceFactory uiFactory,
|
||||||
IWirelessAdapter wirelessAdapter) : base(context)
|
IWirelessAdapter wirelessAdapter) : base(context)
|
||||||
{
|
{
|
||||||
this.aboutInfo = aboutInfo;
|
this.aboutNotification = aboutNotification;
|
||||||
this.aboutController = aboutController;
|
|
||||||
this.actionCenter = actionCenter;
|
this.actionCenter = actionCenter;
|
||||||
this.audio = audio;
|
this.audio = audio;
|
||||||
this.keyboard = keyboard;
|
this.keyboard = keyboard;
|
||||||
this.logger = logger;
|
this.logger = logger;
|
||||||
this.logInfo = logInfo;
|
this.logNotification = logNotification;
|
||||||
this.logController = logController;
|
|
||||||
this.powerSupply = powerSupply;
|
this.powerSupply = powerSupply;
|
||||||
this.systemInfo = systemInfo;
|
this.systemInfo = systemInfo;
|
||||||
this.text = text;
|
this.text = text;
|
||||||
|
@ -218,7 +212,7 @@ namespace SafeExamBrowser.Client.Operations
|
||||||
{
|
{
|
||||||
if (Context.Settings.ActionCenter.ShowApplicationInfo)
|
if (Context.Settings.ActionCenter.ShowApplicationInfo)
|
||||||
{
|
{
|
||||||
actionCenter.AddNotificationControl(uiFactory.CreateNotificationControl(aboutController, aboutInfo, Location.ActionCenter));
|
actionCenter.AddNotificationControl(uiFactory.CreateNotificationControl(aboutNotification, Location.ActionCenter));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -226,7 +220,7 @@ namespace SafeExamBrowser.Client.Operations
|
||||||
{
|
{
|
||||||
if (Context.Settings.Taskbar.ShowApplicationInfo)
|
if (Context.Settings.Taskbar.ShowApplicationInfo)
|
||||||
{
|
{
|
||||||
taskbar.AddNotificationControl(uiFactory.CreateNotificationControl(aboutController, aboutInfo, Location.Taskbar));
|
taskbar.AddNotificationControl(uiFactory.CreateNotificationControl(aboutNotification, Location.Taskbar));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -260,7 +254,7 @@ namespace SafeExamBrowser.Client.Operations
|
||||||
{
|
{
|
||||||
if (Context.Settings.ActionCenter.ShowApplicationLog)
|
if (Context.Settings.ActionCenter.ShowApplicationLog)
|
||||||
{
|
{
|
||||||
actionCenter.AddNotificationControl(uiFactory.CreateNotificationControl(logController, logInfo, Location.ActionCenter));
|
actionCenter.AddNotificationControl(uiFactory.CreateNotificationControl(logNotification, Location.ActionCenter));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -268,7 +262,7 @@ namespace SafeExamBrowser.Client.Operations
|
||||||
{
|
{
|
||||||
if (Context.Settings.Taskbar.ShowApplicationLog)
|
if (Context.Settings.Taskbar.ShowApplicationLog)
|
||||||
{
|
{
|
||||||
taskbar.AddNotificationControl(uiFactory.CreateNotificationControl(logController, logInfo, Location.Taskbar));
|
taskbar.AddNotificationControl(uiFactory.CreateNotificationControl(logNotification, Location.Taskbar));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -340,8 +334,8 @@ namespace SafeExamBrowser.Client.Operations
|
||||||
|
|
||||||
private void TerminateNotifications()
|
private void TerminateNotifications()
|
||||||
{
|
{
|
||||||
aboutController.Terminate();
|
aboutNotification.Terminate();
|
||||||
logController.Terminate();
|
logNotification.Terminate();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void TerminateSystemComponents()
|
private void TerminateSystemComponents()
|
||||||
|
|
|
@ -85,10 +85,8 @@
|
||||||
<Compile Include="Operations\RuntimeConnectionOperation.cs" />
|
<Compile Include="Operations\RuntimeConnectionOperation.cs" />
|
||||||
<Compile Include="Communication\ClientHost.cs" />
|
<Compile Include="Communication\ClientHost.cs" />
|
||||||
<Compile Include="CompositionRoot.cs" />
|
<Compile Include="CompositionRoot.cs" />
|
||||||
<Compile Include="Notifications\AboutNotificationController.cs" />
|
<Compile Include="Notifications\AboutNotification.cs" />
|
||||||
<Compile Include="Notifications\AboutNotificationInfo.cs" />
|
<Compile Include="Notifications\LogNotification.cs" />
|
||||||
<Compile Include="Notifications\LogNotificationController.cs" />
|
|
||||||
<Compile Include="Notifications\LogNotificationInfo.cs" />
|
|
||||||
<Compile Include="Operations\BrowserOperation.cs" />
|
<Compile Include="Operations\BrowserOperation.cs" />
|
||||||
<Compile Include="Operations\ClipboardOperation.cs" />
|
<Compile Include="Operations\ClipboardOperation.cs" />
|
||||||
<Compile Include="Operations\DisplayMonitorOperation.cs" />
|
<Compile Include="Operations\DisplayMonitorOperation.cs" />
|
||||||
|
@ -143,10 +141,6 @@
|
||||||
<Project>{04E653F1-98E6-4E34-9DD7-7F2BC1A8B767}</Project>
|
<Project>{04E653F1-98E6-4E34-9DD7-7F2BC1A8B767}</Project>
|
||||||
<Name>SafeExamBrowser.Browser</Name>
|
<Name>SafeExamBrowser.Browser</Name>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
<ProjectReference Include="..\SafeExamBrowser.Client.Contracts\SafeExamBrowser.Client.Contracts.csproj">
|
|
||||||
<Project>{d39aea14-9d5e-404d-be39-a552e1bd2c7d}</Project>
|
|
||||||
<Name>SafeExamBrowser.Client.Contracts</Name>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\SafeExamBrowser.Communication.Contracts\SafeExamBrowser.Communication.Contracts.csproj">
|
<ProjectReference Include="..\SafeExamBrowser.Communication.Contracts\SafeExamBrowser.Communication.Contracts.csproj">
|
||||||
<Project>{0cd2c5fe-711a-4c32-afe0-bb804fe8b220}</Project>
|
<Project>{0cd2c5fe-711a-4c32-afe0-bb804fe8b220}</Project>
|
||||||
<Name>SafeExamBrowser.Communication.Contracts</Name>
|
<Name>SafeExamBrowser.Communication.Contracts</Name>
|
||||||
|
|
|
@ -6,20 +6,32 @@
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
namespace SafeExamBrowser.Client.Contracts
|
using SafeExamBrowser.Core.Contracts.Resources.Icons;
|
||||||
|
|
||||||
|
namespace SafeExamBrowser.Core.Contracts.Notifications
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Controls the lifetime and functionality of a notification which can be activated via the UI.
|
/// Controls the lifetime and functionality of a notification which can be activated via the UI.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public interface INotificationController
|
public interface INotification
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// The tooltip for the notification.
|
||||||
|
/// </summary>
|
||||||
|
string Tooltip { get; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The resource providing the notification icon.
|
||||||
|
/// </summary>
|
||||||
|
IconResource IconResource { get; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Executes the notification functionality.
|
/// Executes the notification functionality.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
void Activate();
|
void Activate();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Instructs the controller to shut down and release all used resources.
|
/// Terminates the notification functionality and release all used resources.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
void Terminate();
|
void Terminate();
|
||||||
}
|
}
|
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
|
|
||||||
namespace SafeExamBrowser.Applications.Contracts.Resources.Icons
|
namespace SafeExamBrowser.Core.Contracts.Resources.Icons
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Defines an icon resource which is a bitmap image (i.e. raster graphics).
|
/// Defines an icon resource which is a bitmap image (i.e. raster graphics).
|
|
@ -6,7 +6,7 @@
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
namespace SafeExamBrowser.Applications.Contracts.Resources.Icons
|
namespace SafeExamBrowser.Core.Contracts.Resources.Icons
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Defines an icon resource which is a file with embedded icon data (e.g. an executable).
|
/// Defines an icon resource which is a file with embedded icon data (e.g. an executable).
|
|
@ -6,7 +6,7 @@
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
namespace SafeExamBrowser.Applications.Contracts.Resources.Icons
|
namespace SafeExamBrowser.Core.Contracts.Resources.Icons
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Defines an icon resource.
|
/// Defines an icon resource.
|
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
|
|
||||||
namespace SafeExamBrowser.Applications.Contracts.Resources.Icons
|
namespace SafeExamBrowser.Core.Contracts.Resources.Icons
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Defines an icon resource which is managed by the operating system.
|
/// Defines an icon resource which is managed by the operating system.
|
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
|
|
||||||
namespace SafeExamBrowser.Applications.Contracts.Resources.Icons
|
namespace SafeExamBrowser.Core.Contracts.Resources.Icons
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Defines an icon resource which consists of XAML markup (i.e. vector graphics).
|
/// Defines an icon resource which consists of XAML markup (i.e. vector graphics).
|
|
@ -54,6 +54,7 @@
|
||||||
<Reference Include="Microsoft.CSharp" />
|
<Reference Include="Microsoft.CSharp" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<Compile Include="Notifications\INotification.cs" />
|
||||||
<Compile Include="OperationModel\Events\ActionRequiredEventArgs.cs" />
|
<Compile Include="OperationModel\Events\ActionRequiredEventArgs.cs" />
|
||||||
<Compile Include="OperationModel\Events\ActionRequiredEventHandler.cs" />
|
<Compile Include="OperationModel\Events\ActionRequiredEventHandler.cs" />
|
||||||
<Compile Include="OperationModel\Events\ProgressChangedEventArgs.cs" />
|
<Compile Include="OperationModel\Events\ProgressChangedEventArgs.cs" />
|
||||||
|
@ -65,6 +66,11 @@
|
||||||
<Compile Include="OperationModel\IRepeatableOperationSequence.cs" />
|
<Compile Include="OperationModel\IRepeatableOperationSequence.cs" />
|
||||||
<Compile Include="OperationModel\OperationResult.cs" />
|
<Compile Include="OperationModel\OperationResult.cs" />
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
|
<Compile Include="Resources\Icons\BitmapIconResource.cs" />
|
||||||
|
<Compile Include="Resources\Icons\EmbeddedIconResource.cs" />
|
||||||
|
<Compile Include="Resources\Icons\IconResource.cs" />
|
||||||
|
<Compile Include="Resources\Icons\NativeIconResource.cs" />
|
||||||
|
<Compile Include="Resources\Icons\XamlIconResource.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\SafeExamBrowser.I18n.Contracts\SafeExamBrowser.I18n.Contracts.csproj">
|
<ProjectReference Include="..\SafeExamBrowser.I18n.Contracts\SafeExamBrowser.I18n.Contracts.csproj">
|
||||||
|
|
|
@ -58,6 +58,10 @@
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\SafeExamBrowser.Core.Contracts\SafeExamBrowser.Core.Contracts.csproj">
|
||||||
|
<Project>{fe0e1224-b447-4b14-81e7-ed7d84822aa0}</Project>
|
||||||
|
<Name>SafeExamBrowser.Core.Contracts</Name>
|
||||||
|
</ProjectReference>
|
||||||
<ProjectReference Include="..\SafeExamBrowser.Settings\SafeExamBrowser.Settings.csproj">
|
<ProjectReference Include="..\SafeExamBrowser.Settings\SafeExamBrowser.Settings.csproj">
|
||||||
<Project>{30b2d907-5861-4f39-abad-c4abf1b3470e}</Project>
|
<Project>{30b2d907-5861-4f39-abad-c4abf1b3470e}</Project>
|
||||||
<Name>SafeExamBrowser.Settings</Name>
|
<Name>SafeExamBrowser.Settings</Name>
|
||||||
|
|
|
@ -10,6 +10,8 @@ using System;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using SafeExamBrowser.Configuration.Contracts;
|
using SafeExamBrowser.Configuration.Contracts;
|
||||||
|
using SafeExamBrowser.Core.Contracts.Notifications;
|
||||||
|
using SafeExamBrowser.Core.Contracts.Resources.Icons;
|
||||||
using SafeExamBrowser.Logging.Contracts;
|
using SafeExamBrowser.Logging.Contracts;
|
||||||
using SafeExamBrowser.Proctoring.Contracts;
|
using SafeExamBrowser.Proctoring.Contracts;
|
||||||
using SafeExamBrowser.Settings.Proctoring;
|
using SafeExamBrowser.Settings.Proctoring;
|
||||||
|
@ -19,7 +21,7 @@ using SafeExamBrowser.UserInterface.Contracts.Proctoring;
|
||||||
|
|
||||||
namespace SafeExamBrowser.Proctoring
|
namespace SafeExamBrowser.Proctoring
|
||||||
{
|
{
|
||||||
public class ProctoringController : IProctoringController
|
public class ProctoringController : IProctoringController, INotification
|
||||||
{
|
{
|
||||||
private readonly AppConfig appConfig;
|
private readonly AppConfig appConfig;
|
||||||
private readonly IFileSystem fileSystem;
|
private readonly IFileSystem fileSystem;
|
||||||
|
@ -29,6 +31,9 @@ namespace SafeExamBrowser.Proctoring
|
||||||
private string filePath;
|
private string filePath;
|
||||||
private IProctoringWindow window;
|
private IProctoringWindow window;
|
||||||
|
|
||||||
|
public string Tooltip => "TODO!!!";
|
||||||
|
public IconResource IconResource => new XamlIconResource();
|
||||||
|
|
||||||
public ProctoringController(AppConfig appConfig, IFileSystem fileSystem, IModuleLogger logger, IUserInterfaceFactory uiFactory)
|
public ProctoringController(AppConfig appConfig, IFileSystem fileSystem, IModuleLogger logger, IUserInterfaceFactory uiFactory)
|
||||||
{
|
{
|
||||||
this.appConfig = appConfig;
|
this.appConfig = appConfig;
|
||||||
|
@ -37,6 +42,11 @@ namespace SafeExamBrowser.Proctoring
|
||||||
this.uiFactory = uiFactory;
|
this.uiFactory = uiFactory;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void Activate()
|
||||||
|
{
|
||||||
|
window?.Show();
|
||||||
|
}
|
||||||
|
|
||||||
public void Initialize(ProctoringSettings settings)
|
public void Initialize(ProctoringSettings settings)
|
||||||
{
|
{
|
||||||
if (settings.JitsiMeet.Enabled || settings.Zoom.Enabled)
|
if (settings.JitsiMeet.Enabled || settings.Zoom.Enabled)
|
||||||
|
|
|
@ -78,6 +78,10 @@
|
||||||
<Project>{7d74555e-63e1-4c46-bd0a-8580552368c8}</Project>
|
<Project>{7d74555e-63e1-4c46-bd0a-8580552368c8}</Project>
|
||||||
<Name>SafeExamBrowser.Configuration.Contracts</Name>
|
<Name>SafeExamBrowser.Configuration.Contracts</Name>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
|
<ProjectReference Include="..\SafeExamBrowser.Core.Contracts\SafeExamBrowser.Core.Contracts.csproj">
|
||||||
|
<Project>{fe0e1224-b447-4b14-81e7-ed7d84822aa0}</Project>
|
||||||
|
<Name>SafeExamBrowser.Core.Contracts</Name>
|
||||||
|
</ProjectReference>
|
||||||
<ProjectReference Include="..\SafeExamBrowser.Logging.Contracts\SafeExamBrowser.Logging.Contracts.csproj">
|
<ProjectReference Include="..\SafeExamBrowser.Logging.Contracts\SafeExamBrowser.Logging.Contracts.csproj">
|
||||||
<Project>{64ea30fb-11d4-436a-9c2b-88566285363e}</Project>
|
<Project>{64ea30fb-11d4-436a-9c2b-88566285363e}</Project>
|
||||||
<Name>SafeExamBrowser.Logging.Contracts</Name>
|
<Name>SafeExamBrowser.Logging.Contracts</Name>
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using SafeExamBrowser.Applications.Contracts.Resources.Icons;
|
using SafeExamBrowser.Core.Contracts.Resources.Icons;
|
||||||
using SafeExamBrowser.UserInterface.Contracts.Browser.Data;
|
using SafeExamBrowser.UserInterface.Contracts.Browser.Data;
|
||||||
using SafeExamBrowser.UserInterface.Contracts.Browser.Events;
|
using SafeExamBrowser.UserInterface.Contracts.Browser.Events;
|
||||||
using SafeExamBrowser.UserInterface.Contracts.Windows;
|
using SafeExamBrowser.UserInterface.Contracts.Windows;
|
||||||
|
|
|
@ -8,8 +8,8 @@
|
||||||
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using SafeExamBrowser.Applications.Contracts;
|
using SafeExamBrowser.Applications.Contracts;
|
||||||
using SafeExamBrowser.Client.Contracts;
|
|
||||||
using SafeExamBrowser.Configuration.Contracts;
|
using SafeExamBrowser.Configuration.Contracts;
|
||||||
|
using SafeExamBrowser.Core.Contracts.Notifications;
|
||||||
using SafeExamBrowser.I18n.Contracts;
|
using SafeExamBrowser.I18n.Contracts;
|
||||||
using SafeExamBrowser.Logging.Contracts;
|
using SafeExamBrowser.Logging.Contracts;
|
||||||
using SafeExamBrowser.Server.Contracts.Data;
|
using SafeExamBrowser.Server.Contracts.Data;
|
||||||
|
@ -79,7 +79,7 @@ namespace SafeExamBrowser.UserInterface.Contracts
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Creates a notification control for the given notification, initialized for the specified location.
|
/// Creates a notification control for the given notification, initialized for the specified location.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
INotificationControl CreateNotificationControl(INotificationController controller, INotificationInfo info, Location location);
|
INotificationControl CreateNotificationControl(INotification notification, Location location);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Creates a password dialog with the given message and title.
|
/// Creates a password dialog with the given message and title.
|
||||||
|
|
|
@ -108,14 +108,14 @@
|
||||||
<Project>{ac77745d-3b41-43e2-8e84-d40e5a4ee77f}</Project>
|
<Project>{ac77745d-3b41-43e2-8e84-d40e5a4ee77f}</Project>
|
||||||
<Name>SafeExamBrowser.Applications.Contracts</Name>
|
<Name>SafeExamBrowser.Applications.Contracts</Name>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
<ProjectReference Include="..\SafeExamBrowser.Client.Contracts\SafeExamBrowser.Client.Contracts.csproj">
|
|
||||||
<Project>{d39aea14-9d5e-404d-be39-a552e1bd2c7d}</Project>
|
|
||||||
<Name>SafeExamBrowser.Client.Contracts</Name>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\SafeExamBrowser.Configuration.Contracts\SafeExamBrowser.Configuration.Contracts.csproj">
|
<ProjectReference Include="..\SafeExamBrowser.Configuration.Contracts\SafeExamBrowser.Configuration.Contracts.csproj">
|
||||||
<Project>{7d74555e-63e1-4c46-bd0a-8580552368c8}</Project>
|
<Project>{7d74555e-63e1-4c46-bd0a-8580552368c8}</Project>
|
||||||
<Name>SafeExamBrowser.Configuration.Contracts</Name>
|
<Name>SafeExamBrowser.Configuration.Contracts</Name>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
|
<ProjectReference Include="..\SafeExamBrowser.Core.Contracts\SafeExamBrowser.Core.Contracts.csproj">
|
||||||
|
<Project>{fe0e1224-b447-4b14-81e7-ed7d84822aa0}</Project>
|
||||||
|
<Name>SafeExamBrowser.Core.Contracts</Name>
|
||||||
|
</ProjectReference>
|
||||||
<ProjectReference Include="..\SafeExamBrowser.I18n.Contracts\SafeExamBrowser.I18n.Contracts.csproj">
|
<ProjectReference Include="..\SafeExamBrowser.I18n.Contracts\SafeExamBrowser.I18n.Contracts.csproj">
|
||||||
<Project>{1858ddf3-bc2a-4bff-b663-4ce2ffeb8b7d}</Project>
|
<Project>{1858ddf3-bc2a-4bff-b663-4ce2ffeb8b7d}</Project>
|
||||||
<Name>SafeExamBrowser.I18n.Contracts</Name>
|
<Name>SafeExamBrowser.I18n.Contracts</Name>
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Windows.Controls;
|
using System.Windows.Controls;
|
||||||
using SafeExamBrowser.Applications.Contracts;
|
using SafeExamBrowser.Applications.Contracts;
|
||||||
using SafeExamBrowser.Applications.Contracts.Resources.Icons;
|
using SafeExamBrowser.Core.Contracts.Resources.Icons;
|
||||||
using SafeExamBrowser.UserInterface.Shared.Utilities;
|
using SafeExamBrowser.UserInterface.Shared.Utilities;
|
||||||
|
|
||||||
namespace SafeExamBrowser.UserInterface.Desktop.Controls.ActionCenter
|
namespace SafeExamBrowser.UserInterface.Desktop.Controls.ActionCenter
|
||||||
|
|
|
@ -13,7 +13,7 @@ using System.Windows.Controls;
|
||||||
using System.Windows.Controls.Primitives;
|
using System.Windows.Controls.Primitives;
|
||||||
using System.Windows.Media;
|
using System.Windows.Media;
|
||||||
using System.Windows.Threading;
|
using System.Windows.Threading;
|
||||||
using SafeExamBrowser.Applications.Contracts.Resources.Icons;
|
using SafeExamBrowser.Core.Contracts.Resources.Icons;
|
||||||
using SafeExamBrowser.I18n.Contracts;
|
using SafeExamBrowser.I18n.Contracts;
|
||||||
using SafeExamBrowser.SystemComponents.Contracts.Audio;
|
using SafeExamBrowser.SystemComponents.Contracts.Audio;
|
||||||
using SafeExamBrowser.UserInterface.Contracts.Shell;
|
using SafeExamBrowser.UserInterface.Contracts.Shell;
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
using System.Windows.Controls;
|
using System.Windows.Controls;
|
||||||
using SafeExamBrowser.Client.Contracts;
|
using SafeExamBrowser.Core.Contracts.Notifications;
|
||||||
using SafeExamBrowser.UserInterface.Contracts.Shell;
|
using SafeExamBrowser.UserInterface.Contracts.Shell;
|
||||||
using SafeExamBrowser.UserInterface.Shared.Utilities;
|
using SafeExamBrowser.UserInterface.Shared.Utilities;
|
||||||
|
|
||||||
|
@ -16,26 +16,26 @@ namespace SafeExamBrowser.UserInterface.Desktop.Controls.ActionCenter
|
||||||
{
|
{
|
||||||
internal partial class NotificationButton : UserControl, INotificationControl
|
internal partial class NotificationButton : UserControl, INotificationControl
|
||||||
{
|
{
|
||||||
private INotificationController controller;
|
private INotification notification;
|
||||||
|
|
||||||
internal NotificationButton(INotificationController controller, INotificationInfo info)
|
internal NotificationButton(INotification notification)
|
||||||
{
|
{
|
||||||
this.controller = controller;
|
this.notification = notification;
|
||||||
|
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
InitializeNotificationIcon(info);
|
InitializeNotification();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void IconButton_Click(object sender, RoutedEventArgs e)
|
private void IconButton_Click(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
controller.Activate();
|
notification.Activate();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void InitializeNotificationIcon(INotificationInfo info)
|
private void InitializeNotification()
|
||||||
{
|
{
|
||||||
Icon.Content = IconResourceLoader.Load(info.IconResource);
|
Icon.Content = IconResourceLoader.Load(notification.IconResource);
|
||||||
IconButton.ToolTip = info.Tooltip;
|
IconButton.ToolTip = notification.Tooltip;
|
||||||
Text.Text = info.Tooltip;
|
Text.Text = notification.Tooltip;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
using System;
|
using System;
|
||||||
using System.ComponentModel;
|
using System.ComponentModel;
|
||||||
using System.Windows.Controls;
|
using System.Windows.Controls;
|
||||||
using SafeExamBrowser.Applications.Contracts.Resources.Icons;
|
using SafeExamBrowser.Core.Contracts.Resources.Icons;
|
||||||
using SafeExamBrowser.UserInterface.Contracts.Shell.Events;
|
using SafeExamBrowser.UserInterface.Contracts.Shell.Events;
|
||||||
using SafeExamBrowser.UserInterface.Shared.Utilities;
|
using SafeExamBrowser.UserInterface.Shared.Utilities;
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,7 @@ using System.Windows;
|
||||||
using System.Windows.Controls;
|
using System.Windows.Controls;
|
||||||
using System.Windows.Media;
|
using System.Windows.Media;
|
||||||
using FontAwesome.WPF;
|
using FontAwesome.WPF;
|
||||||
using SafeExamBrowser.Applications.Contracts.Resources.Icons;
|
using SafeExamBrowser.Core.Contracts.Resources.Icons;
|
||||||
using SafeExamBrowser.I18n.Contracts;
|
using SafeExamBrowser.I18n.Contracts;
|
||||||
using SafeExamBrowser.SystemComponents.Contracts.WirelessNetwork;
|
using SafeExamBrowser.SystemComponents.Contracts.WirelessNetwork;
|
||||||
using SafeExamBrowser.UserInterface.Contracts.Shell;
|
using SafeExamBrowser.UserInterface.Contracts.Shell;
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
using System.Windows.Controls;
|
using System.Windows.Controls;
|
||||||
using SafeExamBrowser.Applications.Contracts;
|
using SafeExamBrowser.Applications.Contracts;
|
||||||
using SafeExamBrowser.Applications.Contracts.Resources.Icons;
|
using SafeExamBrowser.Core.Contracts.Resources.Icons;
|
||||||
using SafeExamBrowser.UserInterface.Shared.Utilities;
|
using SafeExamBrowser.UserInterface.Shared.Utilities;
|
||||||
|
|
||||||
namespace SafeExamBrowser.UserInterface.Desktop.Controls.Taskbar
|
namespace SafeExamBrowser.UserInterface.Desktop.Controls.Taskbar
|
||||||
|
|
|
@ -12,7 +12,7 @@ using System.Windows;
|
||||||
using System.Windows.Controls;
|
using System.Windows.Controls;
|
||||||
using System.Windows.Controls.Primitives;
|
using System.Windows.Controls.Primitives;
|
||||||
using System.Windows.Media;
|
using System.Windows.Media;
|
||||||
using SafeExamBrowser.Applications.Contracts.Resources.Icons;
|
using SafeExamBrowser.Core.Contracts.Resources.Icons;
|
||||||
using SafeExamBrowser.I18n.Contracts;
|
using SafeExamBrowser.I18n.Contracts;
|
||||||
using SafeExamBrowser.SystemComponents.Contracts.Audio;
|
using SafeExamBrowser.SystemComponents.Contracts.Audio;
|
||||||
using SafeExamBrowser.UserInterface.Contracts.Shell;
|
using SafeExamBrowser.UserInterface.Contracts.Shell;
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
using System.Windows.Controls;
|
using System.Windows.Controls;
|
||||||
using SafeExamBrowser.Client.Contracts;
|
using SafeExamBrowser.Core.Contracts.Notifications;
|
||||||
using SafeExamBrowser.UserInterface.Contracts.Shell;
|
using SafeExamBrowser.UserInterface.Contracts.Shell;
|
||||||
using SafeExamBrowser.UserInterface.Shared.Utilities;
|
using SafeExamBrowser.UserInterface.Shared.Utilities;
|
||||||
|
|
||||||
|
@ -16,25 +16,25 @@ namespace SafeExamBrowser.UserInterface.Desktop.Controls.Taskbar
|
||||||
{
|
{
|
||||||
internal partial class NotificationButton : UserControl, INotificationControl
|
internal partial class NotificationButton : UserControl, INotificationControl
|
||||||
{
|
{
|
||||||
private INotificationController controller;
|
private INotification notification;
|
||||||
|
|
||||||
internal NotificationButton(INotificationController controller, INotificationInfo info)
|
internal NotificationButton(INotification notification)
|
||||||
{
|
{
|
||||||
this.controller = controller;
|
this.notification = notification;
|
||||||
|
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
InitializeNotificationIcon(info);
|
InitializeNotification();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void IconButton_Click(object sender, RoutedEventArgs e)
|
private void IconButton_Click(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
controller.Activate();
|
notification.Activate();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void InitializeNotificationIcon(INotificationInfo info)
|
private void InitializeNotification()
|
||||||
{
|
{
|
||||||
IconButton.ToolTip = info.Tooltip;
|
IconButton.ToolTip = notification.Tooltip;
|
||||||
IconButton.Content = IconResourceLoader.Load(info.IconResource);
|
IconButton.Content = IconResourceLoader.Load(notification.IconResource);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,7 +10,7 @@ using System;
|
||||||
using System.ComponentModel;
|
using System.ComponentModel;
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
using System.Windows.Controls;
|
using System.Windows.Controls;
|
||||||
using SafeExamBrowser.Applications.Contracts.Resources.Icons;
|
using SafeExamBrowser.Core.Contracts.Resources.Icons;
|
||||||
using SafeExamBrowser.UserInterface.Contracts.Shell.Events;
|
using SafeExamBrowser.UserInterface.Contracts.Shell.Events;
|
||||||
using SafeExamBrowser.UserInterface.Shared.Utilities;
|
using SafeExamBrowser.UserInterface.Shared.Utilities;
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@ using System.Windows.Controls;
|
||||||
using System.Windows.Controls.Primitives;
|
using System.Windows.Controls.Primitives;
|
||||||
using System.Windows.Media;
|
using System.Windows.Media;
|
||||||
using FontAwesome.WPF;
|
using FontAwesome.WPF;
|
||||||
using SafeExamBrowser.Applications.Contracts.Resources.Icons;
|
using SafeExamBrowser.Core.Contracts.Resources.Icons;
|
||||||
using SafeExamBrowser.I18n.Contracts;
|
using SafeExamBrowser.I18n.Contracts;
|
||||||
using SafeExamBrowser.SystemComponents.Contracts.WirelessNetwork;
|
using SafeExamBrowser.SystemComponents.Contracts.WirelessNetwork;
|
||||||
using SafeExamBrowser.UserInterface.Contracts.Shell;
|
using SafeExamBrowser.UserInterface.Contracts.Shell;
|
||||||
|
|
|
@ -11,7 +11,7 @@ using System.Windows;
|
||||||
using System.Windows.Controls;
|
using System.Windows.Controls;
|
||||||
using System.Windows.Threading;
|
using System.Windows.Threading;
|
||||||
using SafeExamBrowser.Applications.Contracts;
|
using SafeExamBrowser.Applications.Contracts;
|
||||||
using SafeExamBrowser.Applications.Contracts.Resources.Icons;
|
using SafeExamBrowser.Core.Contracts.Resources.Icons;
|
||||||
using SafeExamBrowser.UserInterface.Shared.Utilities;
|
using SafeExamBrowser.UserInterface.Shared.Utilities;
|
||||||
|
|
||||||
namespace SafeExamBrowser.UserInterface.Desktop.Controls.Taskview
|
namespace SafeExamBrowser.UserInterface.Desktop.Controls.Taskview
|
||||||
|
|
|
@ -479,14 +479,14 @@
|
||||||
<Project>{ac77745d-3b41-43e2-8e84-d40e5a4ee77f}</Project>
|
<Project>{ac77745d-3b41-43e2-8e84-d40e5a4ee77f}</Project>
|
||||||
<Name>SafeExamBrowser.Applications.Contracts</Name>
|
<Name>SafeExamBrowser.Applications.Contracts</Name>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
<ProjectReference Include="..\SafeExamBrowser.Client.Contracts\SafeExamBrowser.Client.Contracts.csproj">
|
|
||||||
<Project>{d39aea14-9d5e-404d-be39-a552e1bd2c7d}</Project>
|
|
||||||
<Name>SafeExamBrowser.Client.Contracts</Name>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\SafeExamBrowser.Configuration.Contracts\SafeExamBrowser.Configuration.Contracts.csproj">
|
<ProjectReference Include="..\SafeExamBrowser.Configuration.Contracts\SafeExamBrowser.Configuration.Contracts.csproj">
|
||||||
<Project>{7d74555e-63e1-4c46-bd0a-8580552368c8}</Project>
|
<Project>{7d74555e-63e1-4c46-bd0a-8580552368c8}</Project>
|
||||||
<Name>SafeExamBrowser.Configuration.Contracts</Name>
|
<Name>SafeExamBrowser.Configuration.Contracts</Name>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
|
<ProjectReference Include="..\SafeExamBrowser.Core.Contracts\SafeExamBrowser.Core.Contracts.csproj">
|
||||||
|
<Project>{fe0e1224-b447-4b14-81e7-ed7d84822aa0}</Project>
|
||||||
|
<Name>SafeExamBrowser.Core.Contracts</Name>
|
||||||
|
</ProjectReference>
|
||||||
<ProjectReference Include="..\SafeExamBrowser.I18n.Contracts\SafeExamBrowser.I18n.Contracts.csproj">
|
<ProjectReference Include="..\SafeExamBrowser.I18n.Contracts\SafeExamBrowser.I18n.Contracts.csproj">
|
||||||
<Project>{1858ddf3-bc2a-4bff-b663-4ce2ffeb8b7d}</Project>
|
<Project>{1858ddf3-bc2a-4bff-b663-4ce2ffeb8b7d}</Project>
|
||||||
<Name>SafeExamBrowser.I18n.Contracts</Name>
|
<Name>SafeExamBrowser.I18n.Contracts</Name>
|
||||||
|
|
|
@ -12,8 +12,8 @@ using System.Windows;
|
||||||
using System.Windows.Media;
|
using System.Windows.Media;
|
||||||
using FontAwesome.WPF;
|
using FontAwesome.WPF;
|
||||||
using SafeExamBrowser.Applications.Contracts;
|
using SafeExamBrowser.Applications.Contracts;
|
||||||
using SafeExamBrowser.Client.Contracts;
|
|
||||||
using SafeExamBrowser.Configuration.Contracts;
|
using SafeExamBrowser.Configuration.Contracts;
|
||||||
|
using SafeExamBrowser.Core.Contracts.Notifications;
|
||||||
using SafeExamBrowser.I18n.Contracts;
|
using SafeExamBrowser.I18n.Contracts;
|
||||||
using SafeExamBrowser.Logging.Contracts;
|
using SafeExamBrowser.Logging.Contracts;
|
||||||
using SafeExamBrowser.Server.Contracts.Data;
|
using SafeExamBrowser.Server.Contracts.Data;
|
||||||
|
@ -129,15 +129,15 @@ namespace SafeExamBrowser.UserInterface.Desktop
|
||||||
return window;
|
return window;
|
||||||
}
|
}
|
||||||
|
|
||||||
public INotificationControl CreateNotificationControl(INotificationController controller, INotificationInfo info, Location location)
|
public INotificationControl CreateNotificationControl(INotification notification, Location location)
|
||||||
{
|
{
|
||||||
if (location == Location.ActionCenter)
|
if (location == Location.ActionCenter)
|
||||||
{
|
{
|
||||||
return new Controls.ActionCenter.NotificationButton(controller, info);
|
return new Controls.ActionCenter.NotificationButton(notification);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return new Controls.Taskbar.NotificationButton(controller, info);
|
return new Controls.Taskbar.NotificationButton(notification);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,7 @@ using System.Windows.Controls.Primitives;
|
||||||
using System.Windows.Input;
|
using System.Windows.Input;
|
||||||
using System.Windows.Interop;
|
using System.Windows.Interop;
|
||||||
using System.Windows.Media.Imaging;
|
using System.Windows.Media.Imaging;
|
||||||
using SafeExamBrowser.Applications.Contracts.Resources.Icons;
|
using SafeExamBrowser.Core.Contracts.Resources.Icons;
|
||||||
using SafeExamBrowser.I18n.Contracts;
|
using SafeExamBrowser.I18n.Contracts;
|
||||||
using SafeExamBrowser.Settings.Browser;
|
using SafeExamBrowser.Settings.Browser;
|
||||||
using SafeExamBrowser.UserInterface.Contracts;
|
using SafeExamBrowser.UserInterface.Contracts;
|
||||||
|
|
|
@ -5,5 +5,4 @@
|
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
xmlns:local="clr-namespace:SafeExamBrowser.UserInterface.Desktop.Windows"
|
xmlns:local="clr-namespace:SafeExamBrowser.UserInterface.Desktop.Windows"
|
||||||
mc:Ignorable="d" Height="250" Width="350" Topmost="True" WindowStyle="None">
|
mc:Ignorable="d" Height="250" Width="350" Topmost="True" WindowStyle="None">
|
||||||
<DockPanel Name="ControlContainer" />
|
|
||||||
</Window>
|
</Window>
|
||||||
|
|
|
@ -71,7 +71,7 @@ namespace SafeExamBrowser.UserInterface.Desktop.Windows
|
||||||
{
|
{
|
||||||
if (control is UIElement element)
|
if (control is UIElement element)
|
||||||
{
|
{
|
||||||
ControlContainer.Children.Add(element);
|
Content = element;
|
||||||
}
|
}
|
||||||
|
|
||||||
Closing += ProctoringWindow_Closing;
|
Closing += ProctoringWindow_Closing;
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Windows.Controls;
|
using System.Windows.Controls;
|
||||||
using SafeExamBrowser.Applications.Contracts;
|
using SafeExamBrowser.Applications.Contracts;
|
||||||
using SafeExamBrowser.Applications.Contracts.Resources.Icons;
|
using SafeExamBrowser.Core.Contracts.Resources.Icons;
|
||||||
using SafeExamBrowser.UserInterface.Shared.Utilities;
|
using SafeExamBrowser.UserInterface.Shared.Utilities;
|
||||||
|
|
||||||
namespace SafeExamBrowser.UserInterface.Mobile.Controls.ActionCenter
|
namespace SafeExamBrowser.UserInterface.Mobile.Controls.ActionCenter
|
||||||
|
|
|
@ -13,7 +13,7 @@ using System.Windows.Controls;
|
||||||
using System.Windows.Controls.Primitives;
|
using System.Windows.Controls.Primitives;
|
||||||
using System.Windows.Media;
|
using System.Windows.Media;
|
||||||
using System.Windows.Threading;
|
using System.Windows.Threading;
|
||||||
using SafeExamBrowser.Applications.Contracts.Resources.Icons;
|
using SafeExamBrowser.Core.Contracts.Resources.Icons;
|
||||||
using SafeExamBrowser.I18n.Contracts;
|
using SafeExamBrowser.I18n.Contracts;
|
||||||
using SafeExamBrowser.SystemComponents.Contracts.Audio;
|
using SafeExamBrowser.SystemComponents.Contracts.Audio;
|
||||||
using SafeExamBrowser.UserInterface.Contracts.Shell;
|
using SafeExamBrowser.UserInterface.Contracts.Shell;
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
using System.Windows.Controls;
|
using System.Windows.Controls;
|
||||||
using SafeExamBrowser.Client.Contracts;
|
using SafeExamBrowser.Core.Contracts.Notifications;
|
||||||
using SafeExamBrowser.UserInterface.Contracts.Shell;
|
using SafeExamBrowser.UserInterface.Contracts.Shell;
|
||||||
using SafeExamBrowser.UserInterface.Shared.Utilities;
|
using SafeExamBrowser.UserInterface.Shared.Utilities;
|
||||||
|
|
||||||
|
@ -16,26 +16,26 @@ namespace SafeExamBrowser.UserInterface.Mobile.Controls.ActionCenter
|
||||||
{
|
{
|
||||||
internal partial class NotificationButton : UserControl, INotificationControl
|
internal partial class NotificationButton : UserControl, INotificationControl
|
||||||
{
|
{
|
||||||
private INotificationController controller;
|
private INotification notification;
|
||||||
|
|
||||||
internal NotificationButton(INotificationController controller, INotificationInfo info)
|
internal NotificationButton(INotification notification)
|
||||||
{
|
{
|
||||||
this.controller = controller;
|
this.notification = notification;
|
||||||
|
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
InitializeNotificationIcon(info);
|
InitializeNotification();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void IconButton_Click(object sender, RoutedEventArgs e)
|
private void IconButton_Click(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
controller.Activate();
|
notification.Activate();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void InitializeNotificationIcon(INotificationInfo info)
|
private void InitializeNotification()
|
||||||
{
|
{
|
||||||
Icon.Content = IconResourceLoader.Load(info.IconResource);
|
Icon.Content = IconResourceLoader.Load(notification.IconResource);
|
||||||
IconButton.ToolTip = info.Tooltip;
|
IconButton.ToolTip = notification.Tooltip;
|
||||||
Text.Text = info.Tooltip;
|
Text.Text = notification.Tooltip;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
using System;
|
using System;
|
||||||
using System.ComponentModel;
|
using System.ComponentModel;
|
||||||
using System.Windows.Controls;
|
using System.Windows.Controls;
|
||||||
using SafeExamBrowser.Applications.Contracts.Resources.Icons;
|
using SafeExamBrowser.Core.Contracts.Resources.Icons;
|
||||||
using SafeExamBrowser.UserInterface.Contracts.Shell.Events;
|
using SafeExamBrowser.UserInterface.Contracts.Shell.Events;
|
||||||
using SafeExamBrowser.UserInterface.Shared.Utilities;
|
using SafeExamBrowser.UserInterface.Shared.Utilities;
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,7 @@ using System.Windows;
|
||||||
using System.Windows.Controls;
|
using System.Windows.Controls;
|
||||||
using System.Windows.Media;
|
using System.Windows.Media;
|
||||||
using FontAwesome.WPF;
|
using FontAwesome.WPF;
|
||||||
using SafeExamBrowser.Applications.Contracts.Resources.Icons;
|
using SafeExamBrowser.Core.Contracts.Resources.Icons;
|
||||||
using SafeExamBrowser.I18n.Contracts;
|
using SafeExamBrowser.I18n.Contracts;
|
||||||
using SafeExamBrowser.SystemComponents.Contracts.WirelessNetwork;
|
using SafeExamBrowser.SystemComponents.Contracts.WirelessNetwork;
|
||||||
using SafeExamBrowser.UserInterface.Contracts.Shell;
|
using SafeExamBrowser.UserInterface.Contracts.Shell;
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
using System.Windows.Controls;
|
using System.Windows.Controls;
|
||||||
using SafeExamBrowser.Applications.Contracts;
|
using SafeExamBrowser.Applications.Contracts;
|
||||||
using SafeExamBrowser.Applications.Contracts.Resources.Icons;
|
using SafeExamBrowser.Core.Contracts.Resources.Icons;
|
||||||
using SafeExamBrowser.UserInterface.Shared.Utilities;
|
using SafeExamBrowser.UserInterface.Shared.Utilities;
|
||||||
|
|
||||||
namespace SafeExamBrowser.UserInterface.Mobile.Controls.Taskbar
|
namespace SafeExamBrowser.UserInterface.Mobile.Controls.Taskbar
|
||||||
|
|
|
@ -12,7 +12,7 @@ using System.Windows;
|
||||||
using System.Windows.Controls;
|
using System.Windows.Controls;
|
||||||
using System.Windows.Controls.Primitives;
|
using System.Windows.Controls.Primitives;
|
||||||
using System.Windows.Media;
|
using System.Windows.Media;
|
||||||
using SafeExamBrowser.Applications.Contracts.Resources.Icons;
|
using SafeExamBrowser.Core.Contracts.Resources.Icons;
|
||||||
using SafeExamBrowser.I18n.Contracts;
|
using SafeExamBrowser.I18n.Contracts;
|
||||||
using SafeExamBrowser.SystemComponents.Contracts.Audio;
|
using SafeExamBrowser.SystemComponents.Contracts.Audio;
|
||||||
using SafeExamBrowser.UserInterface.Contracts.Shell;
|
using SafeExamBrowser.UserInterface.Contracts.Shell;
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
using System.Windows.Controls;
|
using System.Windows.Controls;
|
||||||
using SafeExamBrowser.Client.Contracts;
|
using SafeExamBrowser.Core.Contracts.Notifications;
|
||||||
using SafeExamBrowser.UserInterface.Contracts.Shell;
|
using SafeExamBrowser.UserInterface.Contracts.Shell;
|
||||||
using SafeExamBrowser.UserInterface.Shared.Utilities;
|
using SafeExamBrowser.UserInterface.Shared.Utilities;
|
||||||
|
|
||||||
|
@ -16,25 +16,25 @@ namespace SafeExamBrowser.UserInterface.Mobile.Controls.Taskbar
|
||||||
{
|
{
|
||||||
internal partial class NotificationButton : UserControl, INotificationControl
|
internal partial class NotificationButton : UserControl, INotificationControl
|
||||||
{
|
{
|
||||||
private INotificationController controller;
|
private INotification notification;
|
||||||
|
|
||||||
internal NotificationButton(INotificationController controller, INotificationInfo info)
|
internal NotificationButton(INotification notification)
|
||||||
{
|
{
|
||||||
this.controller = controller;
|
this.notification = notification;
|
||||||
|
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
InitializeNotificationIcon(info);
|
InitializeNotification();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void IconButton_Click(object sender, RoutedEventArgs e)
|
private void IconButton_Click(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
controller.Activate();
|
notification.Activate();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void InitializeNotificationIcon(INotificationInfo info)
|
private void InitializeNotification()
|
||||||
{
|
{
|
||||||
IconButton.ToolTip = info.Tooltip;
|
IconButton.ToolTip = notification.Tooltip;
|
||||||
IconButton.Content = IconResourceLoader.Load(info.IconResource);
|
IconButton.Content = IconResourceLoader.Load(notification.IconResource);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,7 +10,7 @@ using System;
|
||||||
using System.ComponentModel;
|
using System.ComponentModel;
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
using System.Windows.Controls;
|
using System.Windows.Controls;
|
||||||
using SafeExamBrowser.Applications.Contracts.Resources.Icons;
|
using SafeExamBrowser.Core.Contracts.Resources.Icons;
|
||||||
using SafeExamBrowser.UserInterface.Contracts.Shell.Events;
|
using SafeExamBrowser.UserInterface.Contracts.Shell.Events;
|
||||||
using SafeExamBrowser.UserInterface.Shared.Utilities;
|
using SafeExamBrowser.UserInterface.Shared.Utilities;
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@ using System.Windows.Controls;
|
||||||
using System.Windows.Controls.Primitives;
|
using System.Windows.Controls.Primitives;
|
||||||
using System.Windows.Media;
|
using System.Windows.Media;
|
||||||
using FontAwesome.WPF;
|
using FontAwesome.WPF;
|
||||||
using SafeExamBrowser.Applications.Contracts.Resources.Icons;
|
using SafeExamBrowser.Core.Contracts.Resources.Icons;
|
||||||
using SafeExamBrowser.I18n.Contracts;
|
using SafeExamBrowser.I18n.Contracts;
|
||||||
using SafeExamBrowser.SystemComponents.Contracts.WirelessNetwork;
|
using SafeExamBrowser.SystemComponents.Contracts.WirelessNetwork;
|
||||||
using SafeExamBrowser.UserInterface.Contracts.Shell;
|
using SafeExamBrowser.UserInterface.Contracts.Shell;
|
||||||
|
|
|
@ -10,7 +10,7 @@ using System;
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
using System.Windows.Controls;
|
using System.Windows.Controls;
|
||||||
using SafeExamBrowser.Applications.Contracts;
|
using SafeExamBrowser.Applications.Contracts;
|
||||||
using SafeExamBrowser.Applications.Contracts.Resources.Icons;
|
using SafeExamBrowser.Core.Contracts.Resources.Icons;
|
||||||
using SafeExamBrowser.UserInterface.Shared.Utilities;
|
using SafeExamBrowser.UserInterface.Shared.Utilities;
|
||||||
|
|
||||||
namespace SafeExamBrowser.UserInterface.Mobile.Controls.Taskview
|
namespace SafeExamBrowser.UserInterface.Mobile.Controls.Taskview
|
||||||
|
|
|
@ -198,14 +198,14 @@
|
||||||
<Project>{ac77745d-3b41-43e2-8e84-d40e5a4ee77f}</Project>
|
<Project>{ac77745d-3b41-43e2-8e84-d40e5a4ee77f}</Project>
|
||||||
<Name>SafeExamBrowser.Applications.Contracts</Name>
|
<Name>SafeExamBrowser.Applications.Contracts</Name>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
<ProjectReference Include="..\SafeExamBrowser.Client.Contracts\SafeExamBrowser.Client.Contracts.csproj">
|
|
||||||
<Project>{d39aea14-9d5e-404d-be39-a552e1bd2c7d}</Project>
|
|
||||||
<Name>SafeExamBrowser.Client.Contracts</Name>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\SafeExamBrowser.Configuration.Contracts\SafeExamBrowser.Configuration.Contracts.csproj">
|
<ProjectReference Include="..\SafeExamBrowser.Configuration.Contracts\SafeExamBrowser.Configuration.Contracts.csproj">
|
||||||
<Project>{7d74555e-63e1-4c46-bd0a-8580552368c8}</Project>
|
<Project>{7d74555e-63e1-4c46-bd0a-8580552368c8}</Project>
|
||||||
<Name>SafeExamBrowser.Configuration.Contracts</Name>
|
<Name>SafeExamBrowser.Configuration.Contracts</Name>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
|
<ProjectReference Include="..\SafeExamBrowser.Core.Contracts\SafeExamBrowser.Core.Contracts.csproj">
|
||||||
|
<Project>{fe0e1224-b447-4b14-81e7-ed7d84822aa0}</Project>
|
||||||
|
<Name>SafeExamBrowser.Core.Contracts</Name>
|
||||||
|
</ProjectReference>
|
||||||
<ProjectReference Include="..\SafeExamBrowser.I18n.Contracts\SafeExamBrowser.I18n.Contracts.csproj">
|
<ProjectReference Include="..\SafeExamBrowser.I18n.Contracts\SafeExamBrowser.I18n.Contracts.csproj">
|
||||||
<Project>{1858ddf3-bc2a-4bff-b663-4ce2ffeb8b7d}</Project>
|
<Project>{1858ddf3-bc2a-4bff-b663-4ce2ffeb8b7d}</Project>
|
||||||
<Name>SafeExamBrowser.I18n.Contracts</Name>
|
<Name>SafeExamBrowser.I18n.Contracts</Name>
|
||||||
|
|
|
@ -12,8 +12,8 @@ using System.Windows;
|
||||||
using System.Windows.Media;
|
using System.Windows.Media;
|
||||||
using FontAwesome.WPF;
|
using FontAwesome.WPF;
|
||||||
using SafeExamBrowser.Applications.Contracts;
|
using SafeExamBrowser.Applications.Contracts;
|
||||||
using SafeExamBrowser.Client.Contracts;
|
|
||||||
using SafeExamBrowser.Configuration.Contracts;
|
using SafeExamBrowser.Configuration.Contracts;
|
||||||
|
using SafeExamBrowser.Core.Contracts.Notifications;
|
||||||
using SafeExamBrowser.I18n.Contracts;
|
using SafeExamBrowser.I18n.Contracts;
|
||||||
using SafeExamBrowser.Logging.Contracts;
|
using SafeExamBrowser.Logging.Contracts;
|
||||||
using SafeExamBrowser.Server.Contracts.Data;
|
using SafeExamBrowser.Server.Contracts.Data;
|
||||||
|
@ -129,15 +129,15 @@ namespace SafeExamBrowser.UserInterface.Mobile
|
||||||
return window;
|
return window;
|
||||||
}
|
}
|
||||||
|
|
||||||
public INotificationControl CreateNotificationControl(INotificationController controller, INotificationInfo info, Location location)
|
public INotificationControl CreateNotificationControl(INotification notification, Location location)
|
||||||
{
|
{
|
||||||
if (location == Location.ActionCenter)
|
if (location == Location.ActionCenter)
|
||||||
{
|
{
|
||||||
return new Controls.ActionCenter.NotificationButton(controller, info);
|
return new Controls.ActionCenter.NotificationButton(notification);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return new Controls.Taskbar.NotificationButton(controller, info);
|
return new Controls.Taskbar.NotificationButton(notification);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,7 @@ using System.Windows.Controls.Primitives;
|
||||||
using System.Windows.Input;
|
using System.Windows.Input;
|
||||||
using System.Windows.Interop;
|
using System.Windows.Interop;
|
||||||
using System.Windows.Media.Imaging;
|
using System.Windows.Media.Imaging;
|
||||||
using SafeExamBrowser.Applications.Contracts.Resources.Icons;
|
using SafeExamBrowser.Core.Contracts.Resources.Icons;
|
||||||
using SafeExamBrowser.I18n.Contracts;
|
using SafeExamBrowser.I18n.Contracts;
|
||||||
using SafeExamBrowser.Settings.Browser;
|
using SafeExamBrowser.Settings.Browser;
|
||||||
using SafeExamBrowser.UserInterface.Contracts;
|
using SafeExamBrowser.UserInterface.Contracts;
|
||||||
|
|
|
@ -79,9 +79,9 @@
|
||||||
<Compile Include="Utilities\WindowExtensions.cs" />
|
<Compile Include="Utilities\WindowExtensions.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\SafeExamBrowser.Applications.Contracts\SafeExamBrowser.Applications.Contracts.csproj">
|
<ProjectReference Include="..\SafeExamBrowser.Core.Contracts\SafeExamBrowser.Core.Contracts.csproj">
|
||||||
<Project>{ac77745d-3b41-43e2-8e84-d40e5a4ee77f}</Project>
|
<Project>{fe0e1224-b447-4b14-81e7-ed7d84822aa0}</Project>
|
||||||
<Name>SafeExamBrowser.Applications.Contracts</Name>
|
<Name>SafeExamBrowser.Core.Contracts</Name>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
<ProjectReference Include="..\SafeExamBrowser.Logging.Contracts\SafeExamBrowser.Logging.Contracts.csproj">
|
<ProjectReference Include="..\SafeExamBrowser.Logging.Contracts\SafeExamBrowser.Logging.Contracts.csproj">
|
||||||
<Project>{64ea30fb-11d4-436a-9c2b-88566285363e}</Project>
|
<Project>{64ea30fb-11d4-436a-9c2b-88566285363e}</Project>
|
||||||
|
|
|
@ -16,7 +16,7 @@ using System.Windows.Documents;
|
||||||
using System.Windows.Interop;
|
using System.Windows.Interop;
|
||||||
using System.Windows.Markup;
|
using System.Windows.Markup;
|
||||||
using System.Windows.Media.Imaging;
|
using System.Windows.Media.Imaging;
|
||||||
using SafeExamBrowser.Applications.Contracts.Resources.Icons;
|
using SafeExamBrowser.Core.Contracts.Resources.Icons;
|
||||||
using Brushes = System.Windows.Media.Brushes;
|
using Brushes = System.Windows.Media.Brushes;
|
||||||
using Image = System.Windows.Controls.Image;
|
using Image = System.Windows.Controls.Image;
|
||||||
|
|
||||||
|
|
|
@ -72,8 +72,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SafeExamBrowser.Browser.Con
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SafeExamBrowser.Applications.Contracts", "SafeExamBrowser.Applications.Contracts\SafeExamBrowser.Applications.Contracts.csproj", "{AC77745D-3B41-43E2-8E84-D40E5A4EE77F}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SafeExamBrowser.Applications.Contracts", "SafeExamBrowser.Applications.Contracts\SafeExamBrowser.Applications.Contracts.csproj", "{AC77745D-3B41-43E2-8E84-D40E5A4EE77F}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SafeExamBrowser.Client.Contracts", "SafeExamBrowser.Client.Contracts\SafeExamBrowser.Client.Contracts.csproj", "{D39AEA14-9D5E-404D-BE39-A552E1BD2C7D}"
|
|
||||||
EndProject
|
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SafeExamBrowser.Communication.Contracts", "SafeExamBrowser.Communication.Contracts\SafeExamBrowser.Communication.Contracts.csproj", "{0CD2C5FE-711A-4C32-AFE0-BB804FE8B220}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SafeExamBrowser.Communication.Contracts", "SafeExamBrowser.Communication.Contracts\SafeExamBrowser.Communication.Contracts.csproj", "{0CD2C5FE-711A-4C32-AFE0-BB804FE8B220}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SafeExamBrowser.Configuration.Contracts", "SafeExamBrowser.Configuration.Contracts\SafeExamBrowser.Configuration.Contracts.csproj", "{7D74555E-63E1-4C46-BD0A-8580552368C8}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SafeExamBrowser.Configuration.Contracts", "SafeExamBrowser.Configuration.Contracts\SafeExamBrowser.Configuration.Contracts.csproj", "{7D74555E-63E1-4C46-BD0A-8580552368C8}"
|
||||||
|
@ -334,14 +332,6 @@ Global
|
||||||
{AC77745D-3B41-43E2-8E84-D40E5A4EE77F}.Release|x64.Build.0 = Release|x64
|
{AC77745D-3B41-43E2-8E84-D40E5A4EE77F}.Release|x64.Build.0 = Release|x64
|
||||||
{AC77745D-3B41-43E2-8E84-D40E5A4EE77F}.Release|x86.ActiveCfg = Release|x86
|
{AC77745D-3B41-43E2-8E84-D40E5A4EE77F}.Release|x86.ActiveCfg = Release|x86
|
||||||
{AC77745D-3B41-43E2-8E84-D40E5A4EE77F}.Release|x86.Build.0 = Release|x86
|
{AC77745D-3B41-43E2-8E84-D40E5A4EE77F}.Release|x86.Build.0 = Release|x86
|
||||||
{D39AEA14-9D5E-404D-BE39-A552E1BD2C7D}.Debug|x64.ActiveCfg = Debug|x64
|
|
||||||
{D39AEA14-9D5E-404D-BE39-A552E1BD2C7D}.Debug|x64.Build.0 = Debug|x64
|
|
||||||
{D39AEA14-9D5E-404D-BE39-A552E1BD2C7D}.Debug|x86.ActiveCfg = Debug|x86
|
|
||||||
{D39AEA14-9D5E-404D-BE39-A552E1BD2C7D}.Debug|x86.Build.0 = Debug|x86
|
|
||||||
{D39AEA14-9D5E-404D-BE39-A552E1BD2C7D}.Release|x64.ActiveCfg = Release|x64
|
|
||||||
{D39AEA14-9D5E-404D-BE39-A552E1BD2C7D}.Release|x64.Build.0 = Release|x64
|
|
||||||
{D39AEA14-9D5E-404D-BE39-A552E1BD2C7D}.Release|x86.ActiveCfg = Release|x86
|
|
||||||
{D39AEA14-9D5E-404D-BE39-A552E1BD2C7D}.Release|x86.Build.0 = Release|x86
|
|
||||||
{0CD2C5FE-711A-4C32-AFE0-BB804FE8B220}.Debug|x64.ActiveCfg = Debug|x64
|
{0CD2C5FE-711A-4C32-AFE0-BB804FE8B220}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
{0CD2C5FE-711A-4C32-AFE0-BB804FE8B220}.Debug|x64.Build.0 = Debug|x64
|
{0CD2C5FE-711A-4C32-AFE0-BB804FE8B220}.Debug|x64.Build.0 = Debug|x64
|
||||||
{0CD2C5FE-711A-4C32-AFE0-BB804FE8B220}.Debug|x86.ActiveCfg = Debug|x86
|
{0CD2C5FE-711A-4C32-AFE0-BB804FE8B220}.Debug|x86.ActiveCfg = Debug|x86
|
||||||
|
|
Loading…
Add table
Reference in a new issue