client-qml: add initial commit
Change-Id: I32bfdd2a618aa7ac6181da2697e241667b010aab
diff --git a/.clang-format b/.clang-format
new file mode 100644
index 0000000..8a799fd
--- /dev/null
+++ b/.clang-format
@@ -0,0 +1,101 @@
+Language: Cpp
+AccessModifierOffset: -4
+AlignAfterOpenBracket: Align
+AlignConsecutiveAssignments: false
+AlignConsecutiveDeclarations: false
+AlignEscapedNewlines: DontAlign
+AlignOperands: true
+AlignTrailingComments: true
+AllowAllParametersOfDeclarationOnNextLine: true
+AllowShortBlocksOnASingleLine: false
+AllowShortCaseLabelsOnASingleLine: false
+AllowShortFunctionsOnASingleLine: Inline
+AllowShortIfStatementsOnASingleLine: false
+AllowShortLoopsOnASingleLine: false
+AlwaysBreakAfterReturnType: None
+AlwaysBreakBeforeMultilineStrings: false
+AlwaysBreakTemplateDeclarations: true
+AlwaysBreakAfterDefinitionReturnType: All
+BinPackArguments: false
+BinPackParameters: false
+BraceWrapping:
+ AfterClass: true
+ AfterControlStatement: false
+ AfterEnum: false
+ AfterFunction: true
+ AfterNamespace: false
+ AfterObjCDeclaration: false
+ AfterStruct: true
+ AfterUnion: false
+ BeforeCatch: false
+ BeforeElse: false
+ IndentBraces: false
+ SplitEmptyFunction: false
+ SplitEmptyRecord: false
+ SplitEmptyNamespace: false
+BreakBeforeBinaryOperators: All
+BreakBeforeBraces: Custom
+BreakBeforeInheritanceComma: false
+BreakBeforeTernaryOperators: true
+BreakConstructorInitializersBeforeComma: false
+BreakConstructorInitializers: BeforeComma
+BreakAfterJavaFieldAnnotations: false
+BreakStringLiterals: true
+ColumnLimit: 100
+CommentPragmas: '^ IWYU pragma:'
+CompactNamespaces: false
+ConstructorInitializerAllOnOneLineOrOnePerLine: false
+ConstructorInitializerIndentWidth: 4
+ContinuationIndentWidth: 4
+Cpp11BracedListStyle: true
+DerivePointerAlignment: false
+DisableFormat: false
+ExperimentalAutoDetectBinPacking: false
+FixNamespaceComments: true
+ForEachMacros:
+ - forever # avoids { wrapped to next line
+ - foreach
+ - Q_FOREACH
+ - BOOST_FOREACH
+IncludeCategories:
+ - Regex: '^<Q.*'
+ Priority: 200
+IncludeIsMainRegex: '(Test)?$'
+IndentCaseLabels: false
+IndentWidth: 4
+IndentWrappedFunctionNames: false
+JavaScriptQuotes: Leave
+JavaScriptWrapImports: true
+KeepEmptyLinesAtTheStartOfBlocks: false
+# Do not add QT_BEGIN_NAMESPACE/QT_END_NAMESPACE as this will indent lines in between.
+MacroBlockBegin: ""
+MacroBlockEnd: ""
+MaxEmptyLinesToKeep: 1
+NamespaceIndentation: None
+ObjCBlockIndentWidth: 4
+ObjCSpaceAfterProperty: false
+ObjCSpaceBeforeProtocolList: true
+PenaltyBreakAssignment: 150
+PenaltyBreakBeforeFirstCallParameter: 300
+PenaltyBreakComment: 500
+PenaltyBreakFirstLessLess: 400
+PenaltyBreakString: 600
+PenaltyExcessCharacter: 50
+PenaltyReturnTypeOnItsOwnLine: 300
+PointerAlignment: Right
+ReflowComments: false
+SortIncludes: true
+SortUsingDeclarations: true
+SpaceAfterCStyleCast: true
+SpaceAfterTemplateKeyword: false
+SpaceBeforeAssignmentOperators: true
+SpaceBeforeParens: ControlStatements
+SpaceInEmptyParentheses: false
+SpacesBeforeTrailingComments: 1
+SpacesInAngles: false
+SpacesInContainerLiterals: false
+SpacesInCStyleCastParentheses: false
+SpacesInParentheses: false
+SpacesInSquareBrackets: false
+Standard: Cpp11
+TabWidth: 4
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..e97920f
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,21 @@
+*.user
+
+GeneratedFiles/
+.vs/
+x64/
+x86/
+[wW]in32/
+.qmake.stash
+debug/
+release/
+beta/
+qrencode-win32/
+*.dll
+*.qm
+build/
+nuget.exe
+*.autosave
+changelog.html
+obj/
+build/
+build-local/
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000..3648cca
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,4 @@
+[submodule "libqrencode"]
+ path = libqrencode
+ url = https://github.com/fukuchi/libqrencode.git
+ ignore = dirty
diff --git a/.gitreview b/.gitreview
new file mode 100644
index 0000000..08e68f3
--- /dev/null
+++ b/.gitreview
@@ -0,0 +1,6 @@
+[gerrit]
+host=gerrit-ring.savoirfairelinux.com
+port=29420
+project=ring-client-window.git
+defaultremote=origin
+defaultbranch=master
diff --git a/.tx/config b/.tx/config
new file mode 100644
index 0000000..d22492e
--- /dev/null
+++ b/.tx/config
@@ -0,0 +1,8 @@
+[main]
+host = https://www.transifex.com
+
+[jami.ring_client_windowsts]
+file_filter = translations/ring_client_windows_<lang>.ts
+source_file = translations/ring_client_windows.ts
+source_lang = en
+type = TS
diff --git a/JamiInstaller/.gitignore b/JamiInstaller/.gitignore
new file mode 100644
index 0000000..26814d3
--- /dev/null
+++ b/JamiInstaller/.gitignore
@@ -0,0 +1,3 @@
+/obj
+/bin
+Components.wxs
diff --git a/JamiInstaller/Config.wxi b/JamiInstaller/Config.wxi
new file mode 100644
index 0000000..f24ee3f
--- /dev/null
+++ b/JamiInstaller/Config.wxi
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Include>
+ <?if $(var.Configuration) = Release ?>
+ <?define Name="Jami" ?>
+ <?else?>
+ <?define Name="Jami (BETA)" ?>
+ <?endif ?>
+
+ <?if $(var.Configuration) = Release ?>
+ <?define ReleaseDir="..\x64\Release"?>
+ <?else?>
+ <?define ReleaseDir="..\x64\Beta"?>
+ <?endif ?>
+
+ <?define AppName="Jami" ?>
+
+ <?define Manufacturer="Savoir-Faire Linux"?>
+ <?define UcrtDir="C:\Program Files (x86)\Windows Kits\10\Redist\ucrt\DLLs\x64"?>
+</Include>
diff --git a/JamiInstaller/HarvestFilter.xslt b/JamiInstaller/HarvestFilter.xslt
new file mode 100644
index 0000000..b9179f4
--- /dev/null
+++ b/JamiInstaller/HarvestFilter.xslt
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="1.0"
+xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+xmlns:wix="http://schemas.microsoft.com/wix/2006/wi">
+
+ <xsl:output method="xml" indent="yes" />
+
+ <xsl:template match="@*|node()">
+ <xsl:copy>
+ <xsl:apply-templates select="@*|node()"/>
+ </xsl:copy>
+ </xsl:template>
+
+ <xsl:key name="service-search" match="wix:Component[contains(wix:File/@Source, 'Jami.exe')]" use="@Id" />
+ <xsl:key name="vc-service-search" match="wix:Component[contains(wix:File/@Source, 'vcredist_x64.exe')]" use="@Id" />
+ <xsl:key name="pdb-search" match="wix:Component[contains(wix:File/@Source, '.pdb')]" use="@Id" />
+ <xsl:key name="lib-search" match="wix:Component[contains(wix:File/@Source, 'Jami.lib')]" use="@Id" />
+ <xsl:key name="exp-search" match="wix:Component[contains(wix:File/@Source, 'Jami.exp')]" use="@Id" />
+ <xsl:key name="qmake-search" match="wix:Component[contains(wix:File/@Source, 'qmake')]" use="@Id" />
+ <xsl:key name="obj-search" match="wix:Component[contains(wix:File/@Source, '.obj')]" use="@Id" />
+ <xsl:key name="tlog-search" match="wix:Component[contains(wix:File/@Source, '.tlog')]" use="@Id" />
+ <xsl:key name="log-search" match="wix:Component[contains(wix:File/@Source, '.log')]" use="@Id" />
+
+ <xsl:template match="wix:Component[key('service-search', @Id)]" />
+ <xsl:template match="wix:Component[key('vc-service-search', @Id)]" />
+ <xsl:template match="wix:Component[key('pdb-search', @Id)]" />
+ <xsl:template match="wix:Component[key('lib-search', @Id)]" />
+ <xsl:template match="wix:Component[key('exp-search', @Id)]" />
+ <xsl:template match="wix:Component[key('qmake-search', @Id)]" />
+ <xsl:template match="wix:Component[key('obj-search', @Id)]" />
+ <xsl:template match="wix:Component[key('tlog-search', @Id)]" />
+ <xsl:template match="wix:Component[key('log-search', @Id)]" />
+
+ <xsl:template match="wix:ComponentRef[key('service-search', @Id)]" />
+ <xsl:template match="wix:ComponentRef[key('vc-service-search', @Id)]" />
+ <xsl:template match="wix:ComponentRef[key('pdb-search', @Id)]" />
+ <xsl:template match="wix:ComponentRef[key('lib-search', @Id)]" />
+ <xsl:template match="wix:ComponentRef[key('exp-search', @Id)]" />
+ <xsl:template match="wix:ComponentRef[key('qmake-search', @Id)]" />
+ <xsl:template match="wix:ComponentRef[key('obj-search', @Id)]" />
+ <xsl:template match="wix:ComponentRef[key('tlog-search', @Id)]" />
+ <xsl:template match="wix:ComponentRef[key('log-search', @Id)]" />
+
+</xsl:stylesheet>
\ No newline at end of file
diff --git a/JamiInstaller/JamiInstaller.wax b/JamiInstaller/JamiInstaller.wax
new file mode 100644
index 0000000..a3b0365
--- /dev/null
+++ b/JamiInstaller/JamiInstaller.wax
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-16"?>
+<Configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <DeployedProjects />
+ <DirectoryMappings />
+ <FileMappings />
+ <DeploySymbols>false</DeploySymbols>
+ <DeployLocalizations>true</DeployLocalizations>
+ <DeployExternalLocalizations>false</DeployExternalLocalizations>
+</Configuration>
\ No newline at end of file
diff --git a/JamiInstaller/JamiInstaller.wixproj b/JamiInstaller/JamiInstaller.wixproj
new file mode 100644
index 0000000..9c64ca6
--- /dev/null
+++ b/JamiInstaller/JamiInstaller.wixproj
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" InitialTargets="EnsureWixToolsetInstalled" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">x64</Platform>
+ <ProductVersion>3.10</ProductVersion>
+ <ProjectGuid>dbbfbc55-1c20-4d21-ae3b-6e8b14c4fe48</ProjectGuid>
+ <SchemaVersion>2.0</SchemaVersion>
+ <OutputName Condition="'$(Configuration)' == 'Release'">jami.release.$(Platform)</OutputName>
+ <OutputName Condition="'$(Configuration)' == 'Beta'">jami.beta.$(Platform)</OutputName>
+ <OutputType>Package</OutputType>
+ <Name>JamiInstaller</Name>
+ <InstallerPlatform>x64</InstallerPlatform>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+ <OutputPath>bin\$(Configuration)\</OutputPath>
+ <IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath>
+ <DefineConstants>HarvestPath=..\x64\Release</DefineConstants>
+ <SuppressPdbOutput>True</SuppressPdbOutput>
+ <CompilerAdditionalOptions>
+ </CompilerAdditionalOptions>
+ <WixVariables>
+ </WixVariables>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Beta|x64' ">
+ <OutputPath>bin\$(Configuration)\</OutputPath>
+ <IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath>
+ <DefineConstants>HarvestPath=..\x64\Beta</DefineConstants>
+ <SuppressPdbOutput>True</SuppressPdbOutput>
+ <CompilerAdditionalOptions>
+ </CompilerAdditionalOptions>
+ <WixVariables>
+ </WixVariables>
+ </PropertyGroup>
+ <ItemGroup>
+ <Compile Include="Product.wxs" />
+ <Compile Include="StandardComponents.wxs" />
+ <Compile Include="Components.wxs" />
+ </ItemGroup>
+ <ItemGroup>
+ <Content Include="Config.wxi" />
+ <Content Include="HarvestFilter.xslt" />
+ <Content Include="JamiInstaller.wax" />
+ <Content Include="main-banner.bmp" />
+ <Content Include="top-banner.bmp" />
+ </ItemGroup>
+ <ItemGroup>
+ <WixExtension Include="WixUtilExtension">
+ <HintPath>$(WixExtDir)\WixUtilExtension.dll</HintPath>
+ <Name>WixUtilExtension</Name>
+ </WixExtension>
+ <WixExtension Include="WixUIExtension">
+ <HintPath>$(WixExtDir)\WixUIExtension.dll</HintPath>
+ <Name>WixUIExtension</Name>
+ </WixExtension>
+ </ItemGroup>
+ <ItemGroup>
+ <EmbeddedResource Include="Localization.wxl" />
+ </ItemGroup>
+ <Import Project="$(WixTargetsPath)" Condition=" '$(WixTargetsPath)' != '' " />
+ <Import Project="$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets" Condition=" '$(WixTargetsPath)' == '' AND Exists('$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets') " />
+ <Target Name="EnsureWixToolsetInstalled" Condition=" '$(WixTargetsImported)' != 'true' ">
+ <Error Text="The WiX Toolset v3.11 (or newer) build tools must be installed to build this project. To download the WiX Toolset, see http://wixtoolset.org/releases/" />
+ </Target>
+ <Target Name="BeforeBuild">
+ <HeatDirectory Directory="..\x64\$(Configuration)" PreprocessorVariable="var.HarvestPath" OutputFile="Components.wxs" ComponentGroupName="HeatGenerated" DirectoryRefId="APPLICATIONFOLDER" AutogenerateGuids="true" ToolPath="$(WixToolPath)" SuppressFragments="true" SuppressRegistry="true" SuppressRootDirectory="true" Transforms="HarvestFilter.xslt" />
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+</Project>
\ No newline at end of file
diff --git a/JamiInstaller/Localization.wxl b/JamiInstaller/Localization.wxl
new file mode 100644
index 0000000..a649d17
--- /dev/null
+++ b/JamiInstaller/Localization.wxl
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<WixLocalization Culture="en-us"
+ xmlns="http://schemas.microsoft.com/wix/2006/localization">
+ <String Id="AdvancedWelcomeEulaDlgDescriptionPerMachine">By installing this software you agree to the terms in the license agreement</String>
+ <UI Dialog="ExitDialog" Control="OptionalCheckBox" Width="10" Height="10" X="135" Y="110" />
+ <UI Dialog="ExitDialog" Control="OptionalText" X="150" Y="110" />
+</WixLocalization>
diff --git a/JamiInstaller/Product.wxs b/JamiInstaller/Product.wxs
new file mode 100644
index 0000000..fe6a02b
--- /dev/null
+++ b/JamiInstaller/Product.wxs
@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?include Config.wxi?>
+<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
+ <Product Id="*" Name="$(var.Name)" Language="1033" Version="$(fun.AutoVersion(1.0))" Manufacturer="$(var.Manufacturer)" UpgradeCode="7c45b52b-0390-4fe8-947a-3f13e82dd346">
+ <Package InstallerVersion="301" Compressed="yes" InstallScope="perMachine" />
+
+ <MajorUpgrade AllowSameVersionUpgrades="yes" DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
+ <MediaTemplate EmbedCab="yes" CompressionLevel="high" />
+
+ <!--Icon File should be in release folder(not wix project), otherwise cannot be read-->
+ <Icon Id="icon.ico" SourceFile="$(var.ReleaseDir)\jami.ico" />
+ <Property Id="ARPPRODUCTICON" Value="icon.ico" />
+ <Property Id="ARPNOMODIFY" Value="1" />
+
+ <Feature Id="ProductFeature" Title="Main" Level="1" Absent="disallow">
+ <ComponentGroupRef Id="StandardComponents" Primary="yes" />
+ <ComponentGroupRef Id="HeatGenerated" />
+ <ComponentRef Id="ApplicationShortcutDesktop" />
+ <ComponentRef Id="ApplicationShortcutStartMenu" />
+ <ComponentRef Id="RegistryEntries" />
+ </Feature>
+
+ <!--Visual C++ Redist merge module-->
+ <DirectoryRef Id="TARGETDIR">
+ <Merge Id="VCRedist" SourceFile="$(env.VCRedistMergeModule)" DiskId="1" Language="0" />
+ </DirectoryRef>
+ <Feature Id="VCRedist" Title="Visual C++ Runtime" AllowAdvertise="no" Display="hidden" Level="1">
+ <MergeRef Id="VCRedist"/>
+ </Feature>
+
+ <!--SetDirectory of APPLICATIONFOLDER -->
+ <SetDirectory Id="APPLICATIONFOLDER" Value="[ProgramFiles64Folder][ApplicationFolderName]">APPLICATIONFOLDER=""</SetDirectory>
+ <SetProperty Id="ARPINSTALLLOCATION" Value="[APPLICATIONFOLDER]" After="CostFinalize" />
+
+ <UIRef Id="CustomUI" />
+ <WixVariable Id="WixUIInfoIcon" Value="icon.ico"/>
+ <WixVariable Id="WixUIBannerBmp" Value="top-banner.bmp" />
+ <WixVariable Id="WixUIDialogBmp" Value="main-banner.bmp" />
+ <WixVariable Id="WixUISupportPerUser" Value="0" />
+
+ <CustomAction Id="removeOldJamiFiles" Directory="APPLICATIONFOLDER" ExeCommand="cmd /c "del vc_redist.x64.exe; del uninstall.exe; del WinSparkle.dll;"" Execute="deferred" Return="ignore" HideTarget="no" Impersonate="no" />
+
+ <Property Id="QtExecCmdLine" Value='"[WindowsFolder]\System32\taskkill.exe" /F /IM QtWebEngineProcess.exe /IM Jami.exe'/>
+ <CustomAction Id="JamiProcesses.TaskKill"
+ BinaryKey="WixCA"
+ DllEntry="CAQuietExec"
+ Execute="immediate"
+ Return="ignore"/>
+ </Product>
+
+ <Fragment Id="DirectoryStructure">
+ <Directory Id="TARGETDIR" Name="SourceDir">
+ <Directory Id="ProgramFiles64Folder">
+ <Directory Id="APPLICATIONFOLDER" Name="$(var.Name)" />
+ </Directory>
+ <Directory Id="DesktopFolder" Name="Desktop" />
+ <Directory Id="ProgramMenuFolder">
+ <Directory Id="ApplicationProgramsFolder" />
+ </Directory>
+ <Directory Id="WindowsFolder" Name="WINDOWS"/>
+ </Directory>
+ </Fragment>
+
+ <Fragment Id="Shortcuts">
+ <DirectoryRef Id="DesktopFolder">
+ <Component Id="ApplicationShortcutDesktop" Guid="*" Win64="yes">
+ <Shortcut Id="ApplicationShortcutDesktop" Name="$(var.Name)" Description="Launch $(var.Name)" Target="[#fileMain.exe]" WorkingDirectory="INSTALLFOLDER" />
+ <RemoveFolder Id="DesktopFolder" On="uninstall" />
+ <RegistryValue Root="HKCU" Key="Software\jami.net\$(var.Name)" Name="desktop" Type="integer" Value="1" KeyPath="yes" />
+ </Component>
+ </DirectoryRef>
+
+ <DirectoryRef Id="ApplicationProgramsFolder">
+ <Component Id="ApplicationShortcutStartMenu" Guid="*" Win64="yes">
+ <Shortcut Id="ApplicationShortcutStartMenu" Name="$(var.Name)" Description="Launch $(var.Name)" Target="[#fileMain.exe]" WorkingDirectory="INSTALLFOLDER" />
+ <RemoveFolder Id="StartMenuFolder" On="uninstall" />
+ <RegistryValue Root="HKCU" Key="Software\jami.net\$(var.Name)" Name="startmenu" Type="integer" Value="1" KeyPath="yes" />
+ </Component>
+ </DirectoryRef>
+ </Fragment>
+
+ <Fragment Id="OtherRegistryEntries">
+ <DirectoryRef Id="TARGETDIR">
+ <Component Id="RegistryEntries" Guid="*" Win64="yes">
+ <RegistryValue Root="HKCU" Key="Software\jami.net\$(var.AppName)" Name="hasRun" Type="integer" Value="0" KeyPath="yes" />
+ </Component>
+ </DirectoryRef>
+ </Fragment>
+
+ <Fragment Id="UI">
+ <UI Id="CustomUI">
+ <Property Id="WixAppFolder" Value="WixPerMachineFolder" />
+
+ <!--APPLICATIONFOLDER required by WixUI_Advanced, ApplicationFolderName reset APPLICATIONFOLDER path-->
+ <Property Id="ApplicationFolderName" Value="$(var.Manufacturer)\$(var.AppName)" />
+ <UIRef Id="WixUI_Advanced" />
+
+ <!--Remove User Exit Dialog-->
+ <Publish Dialog="AdvancedWelcomeEulaDlg" Control="Cancel" Property="AbortInstall" Value="1">1</Publish>
+ <Publish Dialog="InstallDirDlg" Control="Cancel" Property="AbortInstall" Value="1">1</Publish>
+ <Publish Dialog="FeaturesDlg" Control="Cancel" Property="AbortInstall" Value="1">1</Publish>
+ <Publish Dialog="MaintenanceWelcomeDlg" Control="Cancel" Property="AbortInstall" Value="1">1</Publish>
+ <Publish Dialog="MaintenanceTypeDlg" Control="Cancel" Property="AbortInstall" Value="1">1</Publish>
+
+ <!--Launch Program If Checkbox is clicked-->
+ <Publish Dialog="ExitDialog" Control="Finish" Event="DoAction" Value="LaunchApplication">WIXUI_EXITDIALOGOPTIONALCHECKBOX = 1 and NOT Installed</Publish>
+
+ <InstallUISequence>
+ <Show Dialog="UserExit" OnExit="cancel">NOT AbortInstall = 1</Show>
+ <Custom Action="Overwrite_WixSetDefaultPerMachineFolder" After="WixSetDefaultPerMachineFolder" />
+ </InstallUISequence>
+ </UI>
+ <InstallExecuteSequence>
+ <Custom Action='JamiProcesses.TaskKill' Before='InstallValidate'/>
+ <Custom Action="removeOldJamiFiles" After="RemoveFiles" />
+ <Custom Action="LaunchApplication_nonUI" After="InstallFinalize"> WIXNONUILAUNCH </Custom>
+ <Custom Action="Overwrite_WixSetDefaultPerMachineFolder" After="WixSetDefaultPerMachineFolder" />
+ </InstallExecuteSequence>
+
+ <!--License check box text, Launch check box text (auto check)-->
+ <Property Id="WIXUI_EXITDIALOGOPTIONALTEXT" Value="Launch $(var.Name)" />
+ <Property Id="WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT" Value="Launch $(var.Name)" />
+ <!--CheckBox Default Set to One-->
+ <Property Id="WIXUI_EXITDIALOGOPTIONALCHECKBOX" Value="1"/>
+ <Property Id="LicenseAccepted" Value="1"/>
+
+ <Property Id="WixShellExecTarget" Value="[#fileMain.exe]" />
+ <CustomAction Id="LaunchApplication" BinaryKey="WixCA" DllEntry="WixShellExec" Impersonate="yes" />
+ <CustomAction Id="LaunchApplication_nonUI" BinaryKey="WixCA" DllEntry="WixShellExec" Impersonate="yes"/>
+ <CustomAction Id="Overwrite_WixSetDefaultPerMachineFolder" Property="WixPerMachineFolder" Value="[ProgramFiles64Folder][ApplicationFolderName]" Execute="immediate" />
+ <!--License File-->
+ <WixVariable Id="WixUILicenseRtf" Value="$(var.ReleaseDir)\License.rtf"/>
+ </Fragment>
+
+</Wix>
diff --git a/JamiInstaller/StandardComponents.wxs b/JamiInstaller/StandardComponents.wxs
new file mode 100644
index 0000000..8584715
--- /dev/null
+++ b/JamiInstaller/StandardComponents.wxs
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Generated with WiX's heat tool using the command:
+ heat.exe dir x64\Release -ag -cg ProductComponents -dr APPLICATIONFOLDER -srd -var var.ReleaseDir -out JamiInstaller\Components.wxs
+ Includes:
+ - the api-ms-win dlls missing parts of vc merge module for windows 7 support
+ - Jami.exe with a named Id so we can reference it in Product.wxs to launch after install
+
+ We run heat in the prebuild step on x64\Release without Jami.exe (instead of an XSLT file), to harvest everything else.
+-->
+<?include Config.wxi?>
+<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
+ <Fragment>
+ <ComponentGroup Id="StandardComponents">
+ <Component Id="cmp9C61F84AF9761955FBF397AFAE21C11B" Directory="APPLICATIONFOLDER" Guid="*">
+ <File Id="fil2089BEC9A7AB899CED5A5EE501789299" KeyPath="yes" Source="$(var.UcrtDir)\api-ms-win-core-file-l1-2-0.dll" />
+ </Component>
+ <Component Id="cmp03BB2697EE10869C4A329E3EA987EFAA" Directory="APPLICATIONFOLDER" Guid="*">
+ <File Id="fil44C27F2C97596734BB3BEB7C21F7B71C" KeyPath="yes" Source="$(var.UcrtDir)\api-ms-win-core-file-l2-1-0.dll" />
+ </Component>
+ <Component Id="cmp6B6AA7AEA5A4D324A4EE7DAE1B1193E0" Directory="APPLICATIONFOLDER" Guid="*">
+ <File Id="fil1D16BE23D323A1E37FC1FC7354A9305F" KeyPath="yes" Source="$(var.UcrtDir)\api-ms-win-core-localization-l1-2-0.dll" />
+ </Component>
+ <Component Id="cmpB5454FB66442C9BFD2145AE30B32D7A9" Directory="APPLICATIONFOLDER" Guid="*">
+ <File Id="fil031B78DF53F7A3AC109410907624FC3E" KeyPath="yes" Source="$(var.UcrtDir)\api-ms-win-core-processthreads-l1-1-1.dll" />
+ </Component>
+ <Component Id="cmp9F6D22CD9B1739E4F75F92F3A07E4CA1" Directory="APPLICATIONFOLDER" Guid="*">
+ <File Id="filE9A3672FA504AA8E518DD72A02CD3E77" KeyPath="yes" Source="$(var.UcrtDir)\api-ms-win-core-synch-l1-2-0.dll" />
+ </Component>
+ <Component Id="cmp9451422B7074D46F019614C3DE73BD17" Directory="APPLICATIONFOLDER" Guid="*">
+ <File Id="fil3C902CA2889BB8855D285C3FBABB334F" KeyPath="yes" Source="$(var.UcrtDir)\api-ms-win-core-timezone-l1-1-0.dll" />
+ </Component>
+ <Component Id="cmp349250459EC2D8C328EED5138B073E7A" Directory="APPLICATIONFOLDER" Guid="*">
+ <File Id="fil2466F3D9FBA095A007D0909040D4D688" KeyPath="yes" Source="$(var.UcrtDir)\api-ms-win-crt-conio-l1-1-0.dll" />
+ </Component>
+ <Component Id="cmpCC880F2B054A87EF5FC68232652231BF" Directory="APPLICATIONFOLDER" Guid="*">
+ <File Id="fil605A691486569535A1C3548F7DCE753C" KeyPath="yes" Source="$(var.UcrtDir)\api-ms-win-crt-convert-l1-1-0.dll" />
+ </Component>
+ <Component Id="cmpD6CB40D5A5AFF2161B7B4B4F06F03301" Directory="APPLICATIONFOLDER" Guid="*">
+ <File Id="fil09AE032A32E2E542A232F7941AC77320" KeyPath="yes" Source="$(var.UcrtDir)\api-ms-win-crt-environment-l1-1-0.dll" />
+ </Component>
+ <Component Id="cmpC02538029646A27A9F786AD690EB3C8E" Directory="APPLICATIONFOLDER" Guid="*">
+ <File Id="fil7DE9C3CADCA188356922B0CBD8E313E7" KeyPath="yes" Source="$(var.UcrtDir)\api-ms-win-crt-filesystem-l1-1-0.dll" />
+ </Component>
+ <Component Id="cmp8E50197B377636123F0F1F94FFB004E7" Directory="APPLICATIONFOLDER" Guid="*">
+ <File Id="fil584F158D11B8A380C73F1EFE8BBA92B4" KeyPath="yes" Source="$(var.UcrtDir)\api-ms-win-crt-heap-l1-1-0.dll" />
+ </Component>
+ <Component Id="cmp7F729C94A363C73DC4D91B6F48E4F859" Directory="APPLICATIONFOLDER" Guid="*">
+ <File Id="fil4BE19B924B98D56F3155B66496D574E5" KeyPath="yes" Source="$(var.UcrtDir)\api-ms-win-crt-locale-l1-1-0.dll" />
+ </Component>
+ <Component Id="cmp7C573E66B0904BA73880788F7057AF88" Directory="APPLICATIONFOLDER" Guid="*">
+ <File Id="filE8495C446FA1237E92562498D20261AA" KeyPath="yes" Source="$(var.UcrtDir)\api-ms-win-crt-math-l1-1-0.dll" />
+ </Component>
+ <Component Id="cmp7A91CED53D8F6E5F20F2049B3B5CD143" Directory="APPLICATIONFOLDER" Guid="*">
+ <File Id="fil06951EB208628753677745AF15CC12A5" KeyPath="yes" Source="$(var.UcrtDir)\api-ms-win-crt-multibyte-l1-1-0.dll" />
+ </Component>
+ <Component Id="cmp1CE713C705A95306A1D246AC3AB9DE25" Directory="APPLICATIONFOLDER" Guid="*">
+ <File Id="fil8D102BB81768F998470C34797459E306" KeyPath="yes" Source="$(var.UcrtDir)\api-ms-win-crt-private-l1-1-0.dll" />
+ </Component>
+ <Component Id="cmp35840DFBF4D6AE827AFC4EF2A17BB3EB" Directory="APPLICATIONFOLDER" Guid="*">
+ <File Id="filC6C457BD901F940DCB673D271728F9FE" KeyPath="yes" Source="$(var.UcrtDir)\api-ms-win-crt-process-l1-1-0.dll" />
+ </Component>
+ <Component Id="cmpEBB86BDA48FE3B9E2043C1A80D26ACD5" Directory="APPLICATIONFOLDER" Guid="*">
+ <File Id="filE1B2095225B01DEFA5DA9895B432FBCB" KeyPath="yes" Source="$(var.UcrtDir)\api-ms-win-crt-runtime-l1-1-0.dll" />
+ </Component>
+ <Component Id="cmp80C8534B553078EA8B86F100FF542776" Directory="APPLICATIONFOLDER" Guid="*">
+ <File Id="filDAFE58019AD70832B8304DCEA534B5EE" KeyPath="yes" Source="$(var.UcrtDir)\api-ms-win-crt-stdio-l1-1-0.dll" />
+ </Component>
+ <Component Id="cmpCFC348111B5343749A2273A62421C07C" Directory="APPLICATIONFOLDER" Guid="*">
+ <File Id="fil1F1B38DB330CA413655F715578D4BE1A" KeyPath="yes" Source="$(var.UcrtDir)\api-ms-win-crt-string-l1-1-0.dll" />
+ </Component>
+ <Component Id="cmp7D5450E04EC419244107942A00DF7DDF" Directory="APPLICATIONFOLDER" Guid="*">
+ <File Id="filEB03BCF3155C5BAE2C2EDBF036EB659D" KeyPath="yes" Source="$(var.UcrtDir)\api-ms-win-crt-time-l1-1-0.dll" />
+ </Component>
+ <Component Id="cmp5456679BDCC818B2E9476B416F71AAA5" Directory="APPLICATIONFOLDER" Guid="*">
+ <File Id="fil5B120DD384CABED37DFC2652C6462666" KeyPath="yes" Source="$(var.UcrtDir)\api-ms-win-crt-utility-l1-1-0.dll" />
+ </Component>
+ <Component Id="cmpF23755F862A15FFCBD109C85599B7F20" Directory="APPLICATIONFOLDER" Guid="*">
+ <File Id="filD6887AD9110E4A8D49143C9A8F0B5843" KeyPath="yes" Source="$(var.UcrtDir)\ucrtbase.dll" />
+ </Component>
+ <Component Id="cmp9CFEE34E3A162AB05264E8B756EC1DEC" Directory="APPLICATIONFOLDER" Guid="*">
+ <File Id="fileMain.exe" KeyPath="yes" Source="$(var.ReleaseDir)\Jami.exe" />
+ </Component>
+ </ComponentGroup>
+ </Fragment>
+</Wix>
\ No newline at end of file
diff --git a/JamiInstaller/main-banner.bmp b/JamiInstaller/main-banner.bmp
new file mode 100644
index 0000000..a5e8842
--- /dev/null
+++ b/JamiInstaller/main-banner.bmp
Binary files differ
diff --git a/JamiInstaller/top-banner.bmp b/JamiInstaller/top-banner.bmp
new file mode 100644
index 0000000..c7efb6f
--- /dev/null
+++ b/JamiInstaller/top-banner.bmp
Binary files differ
diff --git a/License.rtf b/License.rtf
new file mode 100644
index 0000000..fecb01c
--- /dev/null
+++ b/License.rtf
@@ -0,0 +1,869 @@
+{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff0\deff0\stshfdbch31505\stshfloch31506\stshfhich31506\stshfbi0\deflang4105\deflangfe2052\themelang4105\themelangfe0\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f34\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria Math;}
+{\flomajor\f31500\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fdbmajor\f31501\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}
+{\fhimajor\f31502\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0302020204030204}Calibri Light;}{\fbimajor\f31503\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}
+{\flominor\f31504\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fdbminor\f31505\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}
+{\fhiminor\f31506\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}{\fbiminor\f31507\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f420\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
+{\f421\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\f423\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f424\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\f425\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
+{\f426\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f427\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\f428\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f760\fbidi \froman\fcharset238\fprq2 Cambria Math CE;}
+{\f761\fbidi \froman\fcharset204\fprq2 Cambria Math Cyr;}{\f763\fbidi \froman\fcharset161\fprq2 Cambria Math Greek;}{\f764\fbidi \froman\fcharset162\fprq2 Cambria Math Tur;}{\f767\fbidi \froman\fcharset186\fprq2 Cambria Math Baltic;}
+{\f768\fbidi \froman\fcharset163\fprq2 Cambria Math (Vietnamese);}{\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\flomajor\f31509\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
+{\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
+{\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}
+{\fdbmajor\f31518\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fdbmajor\f31519\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fdbmajor\f31521\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}
+{\fdbmajor\f31522\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fdbmajor\f31523\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fdbmajor\f31524\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
+{\fdbmajor\f31525\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fdbmajor\f31526\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fhimajor\f31528\fbidi \fswiss\fcharset238\fprq2 Calibri Light CE;}
+{\fhimajor\f31529\fbidi \fswiss\fcharset204\fprq2 Calibri Light Cyr;}{\fhimajor\f31531\fbidi \fswiss\fcharset161\fprq2 Calibri Light Greek;}{\fhimajor\f31532\fbidi \fswiss\fcharset162\fprq2 Calibri Light Tur;}
+{\fhimajor\f31535\fbidi \fswiss\fcharset186\fprq2 Calibri Light Baltic;}{\fbimajor\f31538\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbimajor\f31539\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
+{\fbimajor\f31541\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbimajor\f31542\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbimajor\f31543\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
+{\fbimajor\f31544\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbimajor\f31545\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbimajor\f31546\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}
+{\flominor\f31548\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\flominor\f31549\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flominor\f31551\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}
+{\flominor\f31552\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flominor\f31553\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flominor\f31554\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
+{\flominor\f31555\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flominor\f31556\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbminor\f31558\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
+{\fdbminor\f31559\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fdbminor\f31561\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbminor\f31562\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}
+{\fdbminor\f31563\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fdbminor\f31564\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbminor\f31565\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}
+{\fdbminor\f31566\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fhiminor\f31568\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\fhiminor\f31569\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}
+{\fhiminor\f31571\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\fhiminor\f31572\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}{\fhiminor\f31575\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}
+{\fhiminor\f31576\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}{\fbiminor\f31578\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbiminor\f31579\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
+{\fbiminor\f31581\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbiminor\f31582\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbiminor\f31583\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
+{\fbiminor\f31584\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbiminor\f31585\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbiminor\f31586\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}}
+{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;
+\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;\red0\green0\blue0;\red0\green0\blue0;}{\*\defchp \fs22\loch\af31506\hich\af31506\dbch\af31505 }{\*\defpap
+\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 }\noqfpromote {\stylesheet{\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1
+\af0\afs22\alang1025 \ltrch\fcs0 \fs22\lang4105\langfe2052\loch\f31506\hich\af31506\dbch\af31505\cgrid\langnp4105\langfenp2052 \snext0 \sqformat \spriority0 Normal;}{\*\cs10 \additive \ssemihidden \sunhideused \spriority1 Default Paragraph Font;}{\*
+\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tblind0\tblindtype3\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ql \li0\ri0\sa160\sl259\slmult1
+\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \fs22\lang4105\langfe2052\loch\f31506\hich\af31506\dbch\af31505\cgrid\langnp4105\langfenp2052 \snext11 \ssemihidden \sunhideused
+Normal Table;}{\s15\qc \li0\ri0\sb240\sa60\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af31503\afs32\alang1025 \ltrch\fcs0
+\b\fs32\lang4105\langfe2052\kerning28\loch\f31502\hich\af31502\dbch\af31501\cgrid\langnp4105\langfenp2052 \sbasedon0 \snext0 \slink16 \sqformat \spriority10 \styrsid15664314 Title;}{\*\cs16 \additive \rtlch\fcs1 \ab\af31503\afs32 \ltrch\fcs0
+\b\fs32\kerning28\loch\f31502\hich\af31502\dbch\af31501 \sbasedon10 \slink15 \slocked \spriority10 \styrsid15664314 Title Char;}}{\*\rsidtbl \rsid350521\rsid1073743\rsid4589873\rsid9323379\rsid10056905\rsid14959562\rsid15664314\rsid16088643\rsid16389575}
+{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\operator Zhang mingrui}{\creatim\yr2019\mo4\dy23\hr10\min37}{\revtim\yr2019\mo4\dy23\hr11\min15}{\version14}{\edmins11}
+{\nofpages28}{\nofwords5147}{\nofchars29338}{\nofcharsws34417}{\vern101}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}}\paperw12240\paperh15840\margl1440\margr1440\margt1440\margb1440\gutter0\ltrsect
+\widowctrl\ftnbj\aenddoc\trackmoves0\trackformatting1\donotembedsysfont0\relyonvml0\donotembedlingdata1\grfdocevents0\validatexml0\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors0\horzdoc\dghspace120\dgvspace120\dghorigin1701
+\dgvorigin1984\dghshow0\dgvshow3\jcompress\viewkind1\viewscale100\rsidroot1073743 \fet0{\*\wgrffmtfilter 2450}\ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2
+\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6
+\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang
+{\pntxtb (}{\pntxta )}}\pard\plain \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid4589873 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0
+\fs22\lang4105\langfe2052\loch\af31506\hich\af31506\dbch\af31505\cgrid\langnp4105\langfenp2052 {\rtlch\fcs1 \af31501\afs18 \ltrch\fcs0 \f31501\fs18\lang1033\langfe2052\langnp1033\insrsid16389575\charrsid16088643 \hich\af31501\dbch\af31505\loch\f31501
+GNU GENERAL PUBLIC LICENSE}{\rtlch\fcs1 \af31501\afs18 \ltrch\fcs0 \f31501\fs18\lang1033\langfe2052\langnp1033\insrsid15664314\charrsid16088643
+\par }{\rtlch\fcs1 \af31501\afs18 \ltrch\fcs0 \f31501\fs18\lang1033\langfe2052\langnp1033\insrsid16389575\charrsid16088643 \hich\af31501\dbch\af31505\loch\f31501 Version 3, 29 June 2007}{\rtlch\fcs1 \af31501\afs18 \ltrch\fcs0
+\f31501\fs18\lang1033\langfe2052\langnp1033\insrsid4589873\charrsid16088643
+\par }{\rtlch\fcs1 \af31501\afs18 \ltrch\fcs0 \f31501\fs18\lang1033\langfe2052\langnp1033\insrsid16389575\charrsid16088643 \hich\af31501\dbch\af31505\loch\f31501 Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+\par \hich\af31501\dbch\af31505\loch\f31501 Everyone is permitted to copy and distribute verbatim copies
+\par \hich\af31501\dbch\af31505\loch\f31501 of this license document, but changing it is not allowed.
+\par }{\rtlch\fcs1 \af31501\afs18 \ltrch\fcs0 \f31501\fs18\lang1033\langfe2052\langnp1033\insrsid4589873\charrsid16088643
+\par }{\rtlch\fcs1 \af31501\afs18 \ltrch\fcs0 \f31501\fs18\lang1033\langfe2052\langnp1033\insrsid16389575\charrsid16088643 \hich\af31501\dbch\af31505\loch\f31501 Preamble
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 The GNU General Public License is a free, copyleft license\hich\af31501\dbch\af31505\loch\f31501 for
+\par \hich\af31501\dbch\af31505\loch\f31501 software and other kinds of works.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 The licenses for most software and other practical works are designed
+\par \hich\af31501\dbch\af31505\loch\f31501 to take away your freedom to share and change the works. By contrast,
+\par \hich\af31501\dbch\af31505\loch\f31501 the GNU General Public License is intended to guarantee your freedom to
+\par \hich\af31501\dbch\af31505\loch\f31501 sh\hich\af31501\dbch\af31505\loch\f31501 are and change all versions of a program--to make sure it remains free
+\par \hich\af31501\dbch\af31505\loch\f31501 software for all its users. We, the Free Software Foundation, use the
+\par \hich\af31501\dbch\af31505\loch\f31501 GNU General Public License for most of our software; it applies also to
+\par \hich\af31501\dbch\af31505\loch\f31501 any other work released this way by its au\hich\af31501\dbch\af31505\loch\f31501 thors. You can apply it to
+\par \hich\af31501\dbch\af31505\loch\f31501 your programs, too.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 When we speak of free software, we are referring to freedom, not
+\par \hich\af31501\dbch\af31505\loch\f31501 price. Our General Public Licenses are designed to make sure that you
+\par \hich\af31501\dbch\af31505\loch\f31501 have the freedom to distribute copies of free software (and charge for
+\par \hich\af31501\dbch\af31505\loch\f31501 them if you wish), that you receive source code or can get it if you
+\par \hich\af31501\dbch\af31505\loch\f31501 want it, that you can change the software or use pieces of it in new
+\par \hich\af31501\dbch\af31505\loch\f31501 free programs, and that you know you can do these things.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 To protect your rights, we need to prevent others from denying you
+\par \hich\af31501\dbch\af31505\loch\f31501 these rights or asking you to surrender the rights. Therefore, you have
+\par \hich\af31501\dbch\af31505\loch\f31501 certain responsibilities if you distribute copies of the software, or if
+\par \hich\af31501\dbch\af31505\loch\f31501 you modify it: responsibilities to respect \hich\af31501\dbch\af31505\loch\f31501 the freedom of others.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 For example, if you distribute copies of such a program, whether
+\par \hich\af31501\dbch\af31505\loch\f31501 gratis or for a fee, you must pass on to the recipients the same
+\par \hich\af31501\dbch\af31505\loch\f31501 freedoms that you received. You must make sure that they, too, receive
+\par \hich\af31501\dbch\af31505\loch\f31501 or can get the source code. A\hich\af31501\dbch\af31505\loch\f31501 nd you must show them these terms so they
+\par \hich\af31501\dbch\af31505\loch\f31501 know their rights.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 Developers that use the GNU GPL protect your rights with two steps:
+\par \hich\af31501\dbch\af31505\loch\f31501 (1) assert copyright on the software, and (2) offer you this License
+\par \hich\af31501\dbch\af31505\loch\f31501 giving you legal permission to copy, distribute and/or mo\hich\af31501\dbch\af31505\loch\f31501 dify it.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 For the developers' and authors' protection, the GPL clearly explains
+\par \hich\af31501\dbch\af31505\loch\f31501 that there is no warranty for this free software. For both users' and
+\par \hich\af31501\dbch\af31505\loch\f31501 authors' sake, the GPL requires that modified versions be marked as
+\par \hich\af31501\dbch\af31505\loch\f31501 changed, so that their problems will \hich\af31501\dbch\af31505\loch\f31501 not be attributed erroneously to
+\par \hich\af31501\dbch\af31505\loch\f31501 authors of previous versions.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 Some devices are designed to deny users access to install or run
+\par \hich\af31501\dbch\af31505\loch\f31501 modified versions of the software inside them, although the manufacturer
+\par \hich\af31501\dbch\af31505\loch\f31501 can do so. This is fundamentally incompatible with the aim of
+\par \hich\af31501\dbch\af31505\loch\f31501 protecting users' freedom to change the software. The systematic
+\par \hich\af31501\dbch\af31505\loch\f31501 pattern of such abuse occurs in the area of products for individuals to
+\par \hich\af31501\dbch\af31505\loch\f31501 use, which is precisely where it is most unacceptable. \hich\af31501\dbch\af31505\loch\f31501 Therefore, we
+\par \hich\af31501\dbch\af31505\loch\f31501 have designed this version of the GPL to prohibit the practice for those
+\par \hich\af31501\dbch\af31505\loch\f31501 products. If such problems arise substantially in other domains, we
+\par \hich\af31501\dbch\af31505\loch\f31501 stand ready to extend this provision to those domains in future versions
+\par \hich\af31501\dbch\af31505\loch\f31501 of the GPL, as needed to p\hich\af31501\dbch\af31505\loch\f31501 rotect the freedom of users.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 Finally, every program is threatened constantly by software patents.
+\par \hich\af31501\dbch\af31505\loch\f31501 States should not allow patents to restrict development and use of
+\par \hich\af31501\dbch\af31505\loch\f31501 software on general-purpose computers, but in those that do, we wish to
+\par \hich\af31501\dbch\af31505\loch\f31501 avoid the special \hich\af31501\dbch\af31505\loch\f31501 danger that patents applied to a free program could
+\par \hich\af31501\dbch\af31505\loch\f31501 make it effectively proprietary. To prevent this, the GPL assures that
+\par \hich\af31501\dbch\af31505\loch\f31501 patents cannot be used to render the program non-free.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 The precise terms and conditions for copying, distribution and
+\par \hich\af31501\dbch\af31505\loch\f31501 modification \hich\af31501\dbch\af31505\loch\f31501 follow.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 TERMS AND CONDITIONS
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 0. Definitions.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 "This License" refers to version 3 of the GNU General Public License.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 "Copyright" also means copyright-like laws that apply to other kinds of
+\par \hich\af31501\dbch\af31505\loch\f31501 works, such as semiconductor masks.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 "The Program" refers to any copyrightable work licensed under this
+\par \hich\af31501\dbch\af31505\loch\f31501 License. Each licensee is addressed as "you". "Licensees" and
+\par \hich\af31501\dbch\af31505\loch\f31501 "recipients" may\hich\af31501\dbch\af31505\loch\f31501 be individuals or organizations.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 To "modify" a work means to copy from or adapt all or part of the work
+\par \hich\af31501\dbch\af31505\loch\f31501 in a fashion requiring copyright permission, other than the making of an
+\par \hich\af31501\dbch\af31505\loch\f31501 exact copy. The resulting work is called a "modified version" of the
+\par \hich\af31501\dbch\af31505\loch\f31501 earlier\hich\af31501\dbch\af31505\loch\f31501 work or a work "based on" the earlier work.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 A "covered work" means either the unmodified Program or a work based
+\par \hich\af31501\dbch\af31505\loch\f31501 on the Program.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 To "propagate" a work means to do anything with it that, without
+\par \hich\af31501\dbch\af31505\loch\f31501 permission, would make you directly or secondarily liable f\hich\af31501\dbch\af31505\loch\f31501 or
+\par \hich\af31501\dbch\af31505\loch\f31501 infringement under applicable copyright law, except executing it on a
+\par \hich\af31501\dbch\af31505\loch\f31501 computer or modifying a private copy. Propagation includes copying,
+\par \hich\af31501\dbch\af31505\loch\f31501 distribution (with or without modification), making available to the
+\par \hich\af31501\dbch\af31505\loch\f31501 public, and in some countries other activitie\hich\af31501\dbch\af31505\loch\f31501 s as well.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 To "convey" a work means any kind of propagation that enables other
+\par \hich\af31501\dbch\af31505\loch\f31501 parties to make or receive copies. Mere interaction with a user through
+\par \hich\af31501\dbch\af31505\loch\f31501 a computer network, with no transfer of a copy, is not conveying.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 An interactive user interface displays "Appropriate Legal Notices"
+\par \hich\af31501\dbch\af31505\loch\f31501 to the extent that it includes a convenient and prominently visible
+\par \hich\af31501\dbch\af31505\loch\f31501 feature that (1) displays an appropriate copyright notice, and (2)
+\par \hich\af31501\dbch\af31505\loch\f31501 tells the user that there is no warranty for the work \hich\af31501\dbch\af31505\loch\f31501 (except to the
+\par \hich\af31501\dbch\af31505\loch\f31501 extent that warranties are provided), that licensees may convey the
+\par \hich\af31501\dbch\af31505\loch\f31501 work under this License, and how to view a copy of this License. If
+\par \hich\af31501\dbch\af31505\loch\f31501 the interface presents a list of user commands or options, such as a
+\par \hich\af31501\dbch\af31505\loch\f31501 menu, a prominent item in the list \hich\af31501\dbch\af31505\loch\f31501 meets this criterion.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 1. Source Code.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 The "source code" for a work means the preferred form of the work
+\par \hich\af31501\dbch\af31505\loch\f31501 for making modifications to it. "Object code" means any non-source
+\par \hich\af31501\dbch\af31505\loch\f31501 form of a work.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 A "Standard Interface" means an interface that either is an offic\hich\af31501\dbch\af31505\loch\f31501 ial
+\par \hich\af31501\dbch\af31505\loch\f31501 standard defined by a recognized standards body, or, in the case of
+\par \hich\af31501\dbch\af31505\loch\f31501 interfaces specified for a particular programming language, one that
+\par \hich\af31501\dbch\af31505\loch\f31501 is widely used among developers working in that language.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 The "System Libraries" of an executable work include any\hich\af31501\dbch\af31505\loch\f31501 thing, other
+\par \hich\af31501\dbch\af31505\loch\f31501 than the work as a whole, that (a) is included in the normal form of
+\par \hich\af31501\dbch\af31505\loch\f31501 packaging a Major Component, but which is not part of that Major
+\par \hich\af31501\dbch\af31505\loch\f31501 Component, and (b) serves only to enable use of the work with that
+\par \hich\af31501\dbch\af31505\loch\f31501 Major Component, or to implement a Standard Interface for which an
+\par \hich\af31501\dbch\af31505\loch\f31501 implementation is available to the public in source code form. A
+\par \hich\af31501\dbch\af31505\loch\f31501 "Major Component", in this context, means a major essential component
+\par \hich\af31501\dbch\af31505\loch\f31501 (kernel, window system, and so on) of the specific op\hich\af31501\dbch\af31505\loch\f31501 erating system
+\par \hich\af31501\dbch\af31505\loch\f31501 (if any) on which the executable work runs, or a compiler used to
+\par \hich\af31501\dbch\af31505\loch\f31501 produce the work, or an object code interpreter used to run it.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 The "Corresponding Source" for a work in object code form means all
+\par \hich\af31501\dbch\af31505\loch\f31501 the source code needed to generate, instal\hich\af31501\dbch\af31505\loch\f31501 l, and (for an executable
+\par \hich\af31501\dbch\af31505\loch\f31501 work) run the object code and to modify the work, including scripts to
+\par \hich\af31501\dbch\af31505\loch\f31501 control those activities. However, it does not include the work's
+\par \hich\af31501\dbch\af31505\loch\f31501 System Libraries, or general-purpose tools or generally available free
+\par \hich\af31501\dbch\af31505\loch\f31501 programs which are us\hich\af31501\dbch\af31505\loch\f31501 ed unmodified in performing those activities but
+\par \hich\af31501\dbch\af31505\loch\f31501 which are not part of the work. For example, Corresponding Source
+\par \hich\af31501\dbch\af31505\loch\f31501 includes interface definition files associated with source files for
+\par \hich\af31501\dbch\af31505\loch\f31501 the work, and the source code for shared libraries and dynamically
+\par \hich\af31501\dbch\af31505\loch\f31501 link\hich\af31501\dbch\af31505\loch\f31501 ed subprograms that the work is specifically designed to require,
+\par \hich\af31501\dbch\af31505\loch\f31501 such as by intimate data communication or control flow between those
+\par \hich\af31501\dbch\af31505\loch\f31501 subprograms and other parts of the work.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 The Corresponding Source need not include anything that users
+\par \hich\af31501\dbch\af31505\loch\f31501 can regenerate au\hich\af31501\dbch\af31505\loch\f31501 tomatically from other parts of the Corresponding
+\par \hich\af31501\dbch\af31505\loch\f31501 Source.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 The Corresponding Source for a work in source code form is that
+\par \hich\af31501\dbch\af31505\loch\f31501 same work.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 2. Basic Permissions.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 All rights granted under this License are granted for the term of
+\par \hich\af31501\dbch\af31505\loch\f31501 copyright on the Program, and are irrevocable provided the stated
+\par \hich\af31501\dbch\af31505\loch\f31501 conditions are met. This License explicitly affirms your unlimited
+\par \hich\af31501\dbch\af31505\loch\f31501 permission to run the unmodified Program. The output fr\hich\af31501\dbch\af31505\loch\f31501 om running a
+\par \hich\af31501\dbch\af31505\loch\f31501 covered work is covered by this License only if the output, given its
+\par \hich\af31501\dbch\af31505\loch\f31501 content, constitutes a covered work. This License acknowledges your
+\par \hich\af31501\dbch\af31505\loch\f31501 rights of fair use or other equivalent, as provided by copyright law.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 You may make, run and propagate c\hich\af31501\dbch\af31505\loch\f31501 overed works that you do not
+\par \hich\af31501\dbch\af31505\loch\f31501 convey, without conditions so long as your license otherwise remains
+\par \hich\af31501\dbch\af31505\loch\f31501 in force. You may convey covered works to others for the sole purpose
+\par \hich\af31501\dbch\af31505\loch\f31501 of having them make modifications exclusively for you, or provide you
+\par \hich\af31501\dbch\af31505\loch\f31501 with facilities f\hich\af31501\dbch\af31505\loch\f31501 or running those works, provided that you comply with
+\par \hich\af31501\dbch\af31505\loch\f31501 the terms of this License in conveying all material for which you do
+\par \hich\af31501\dbch\af31505\loch\f31501 not control copyright. Those thus making or running the covered works
+\par \hich\af31501\dbch\af31505\loch\f31501 for you must do so exclusively on your behalf, under your dire\hich\af31501\dbch\af31505\loch\f31501 ction
+\par \hich\af31501\dbch\af31505\loch\f31501 and control, on terms that prohibit them from making any copies of
+\par \hich\af31501\dbch\af31505\loch\f31501 your copyrighted material outside their relationship with you.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 Conveying under any other circumstances is permitted solely under
+\par \hich\af31501\dbch\af31505\loch\f31501 the conditions stated below. Sublicensing is not all\hich\af31501\dbch\af31505\loch\f31501 owed; section 10
+\par \hich\af31501\dbch\af31505\loch\f31501 makes it unnecessary.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 No covered work shall be deemed part of an effective technological
+\par \hich\af31501\dbch\af31505\loch\f31501 measure under any applicable law fulfilling obligations under article
+\par \hich\af31501\dbch\af31505\loch\f31501 11 of the WIPO copyright treaty adopted on 20 December 1996, or
+\par \hich\af31501\dbch\af31505\loch\f31501 similar laws prohibiting or restricting circumvention of such
+\par \hich\af31501\dbch\af31505\loch\f31501 measures.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 When you convey a covered work, you waive any leg\hich\af31501\dbch\af31505\loch\f31501 al power to forbid
+\par \hich\af31501\dbch\af31505\loch\f31501 circumvention of technological measures to the extent such circumvention
+\par \hich\af31501\dbch\af31505\loch\f31501 is effected by exercising rights under this License with respect to
+\par \hich\af31501\dbch\af31505\loch\f31501 the covered work, and you disclaim any intention to limit operation or
+\par \hich\af31501\dbch\af31505\loch\f31501 modification of the work \hich\af31501\dbch\af31505\loch\f31501 as a means of enforcing, against the work's
+\par \hich\af31501\dbch\af31505\loch\f31501 users, your or third parties' legal rights to forbid circumvention of
+\par \hich\af31501\dbch\af31505\loch\f31501 technological measures.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 4. Conveying Verbatim Copies.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 You may convey verbatim copies of the Program's source code as you
+\par \hich\af31501\dbch\af31505\loch\f31501 receive it, in any \hich\af31501\dbch\af31505\loch\f31501 medium, provided that you conspicuously and
+\par \hich\af31501\dbch\af31505\loch\f31501 appropriately publish on each copy an appropriate copyright notice;
+\par \hich\af31501\dbch\af31505\loch\f31501 keep intact all notices stating that this License and any
+\par \hich\af31501\dbch\af31505\loch\f31501 non-permissive terms added in accord with section 7 apply to the code;
+\par \hich\af31501\dbch\af31505\loch\f31501 keep intact all notices of the absence of any warranty; and give all
+\par \hich\af31501\dbch\af31505\loch\f31501 recipients a copy of this License along with the Program.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 You may charge any price or no price for each copy that you convey,
+\par \hich\af31501\dbch\af31505\loch\f31501 and you may offer support or warranty protection for a fee.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 5. Conveying Modified Source Versions.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 You may convey a work based on the Program, or the modifications to
+\par \hich\af31501\dbch\af31505\loch\f31501 produce it from the Program, in the form of source code under the
+\par \hich\af31501\dbch\af31505\loch\f31501 terms of section 4, provided that you also meet all of these conditions:
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 a) The \hich\af31501\dbch\af31505\loch\f31501 work must carry prominent notices stating that you modified
+\par \hich\af31501\dbch\af31505\loch\f31501 it, and giving a relevant date.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 b) The work must carry prominent notices stating that it is
+\par \hich\af31501\dbch\af31505\loch\f31501 released under this License and any conditions added under section
+\par \hich\af31501\dbch\af31505\loch\f31501 7. This requirement modifies the re\hich\af31501\dbch\af31505\loch\f31501 quirement in section 4 to
+\par \hich\af31501\dbch\af31505\loch\f31501 "keep intact all notices".
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 c) You must license the entire work, as a whole, under this
+\par \hich\af31501\dbch\af31505\loch\f31501 License to anyone who comes into possession of a copy. This
+\par \hich\af31501\dbch\af31505\loch\f31501 License will therefore apply, along with any applicable section 7
+\par \hich\af31501\dbch\af31505\loch\f31501 additional term\hich\af31501\dbch\af31505\loch\f31501 s, to the whole of the work, and all its parts,
+\par \hich\af31501\dbch\af31505\loch\f31501 regardless of how they are packaged. This License gives no
+\par \hich\af31501\dbch\af31505\loch\f31501 permission to license the work in any other way, but it does not
+\par \hich\af31501\dbch\af31505\loch\f31501 invalidate such permission if you have separately received it.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 d) If the work has interactive user interfaces, each must display
+\par \hich\af31501\dbch\af31505\loch\f31501 Appropriate Legal Notices; however, if the Program has interactive
+\par \hich\af31501\dbch\af31505\loch\f31501 interfaces that do not display Appropriate Legal Notices, y\hich\af31501\dbch\af31505\loch\f31501 our
+\par \hich\af31501\dbch\af31505\loch\f31501 work need not make them do so.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 A compilation of a covered work with other separate and independent
+\par \hich\af31501\dbch\af31505\loch\f31501 works, which are not by their nature extensions of the covered work,
+\par \hich\af31501\dbch\af31505\loch\f31501 and which are not combined with it such as to form a larger program,
+\par \hich\af31501\dbch\af31505\loch\f31501 in or on a vol\hich\af31501\dbch\af31505\loch\f31501 ume of a storage or distribution medium, is called an
+\par \hich\af31501\dbch\af31505\loch\f31501 "aggregate" if the compilation and its resulting copyright are not
+\par \hich\af31501\dbch\af31505\loch\f31501 used to limit the access or legal rights of the compilation's users
+\par \hich\af31501\dbch\af31505\loch\f31501 beyond what the individual works permit. Inclusion of a covered wo\hich\af31501\dbch\af31505\loch\f31501 rk
+\par \hich\af31501\dbch\af31505\loch\f31501 in an aggregate does not cause this License to apply to the other
+\par \hich\af31501\dbch\af31505\loch\f31501 parts of the aggregate.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 6. Conveying Non-Source Forms.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 You may convey a covered work in object code form under the terms
+\par \hich\af31501\dbch\af31505\loch\f31501 of sections 4 and 5, provided that you also convey the
+\par \hich\af31501\dbch\af31505\loch\f31501 machine-r\hich\af31501\dbch\af31505\loch\f31501 eadable Corresponding Source under the terms of this License,
+\par \hich\af31501\dbch\af31505\loch\f31501 in one of these ways:
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 a) Convey the object code in, or embodied in, a physical product
+\par \hich\af31501\dbch\af31505\loch\f31501 (including a physical distribution medium), accompanied by the
+\par \hich\af31501\dbch\af31505\loch\f31501 Corresponding Source fixed on a durable physical medium
+\par \hich\af31501\dbch\af31505\loch\f31501 customarily used for software interchange.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 b) Convey the object code in, or embodied in, a physical product
+\par \hich\af31501\dbch\af31505\loch\f31501 (including a physical distri\hich\af31501\dbch\af31505\loch\f31501 bution medium), accompanied by a
+\par \hich\af31501\dbch\af31505\loch\f31501 written offer, valid for at least three years and valid for as
+\par \hich\af31501\dbch\af31505\loch\f31501 long as you offer spare parts or customer support for that product
+\par \hich\af31501\dbch\af31505\loch\f31501 model, to give anyone who possesses the object code either (1) a
+\par \hich\af31501\dbch\af31505\loch\f31501 copy of the Corresponding So\hich\af31501\dbch\af31505\loch\f31501 urce for all the software in the
+\par \hich\af31501\dbch\af31505\loch\f31501 product that is covered by this License, on a durable physical
+\par \hich\af31501\dbch\af31505\loch\f31501 medium customarily used for software interchange, for a price no
+\par \hich\af31501\dbch\af31505\loch\f31501 more than your reasonable cost of physically performing this
+\par \hich\af31501\dbch\af31505\loch\f31501 conveying of source, or (2) access\hich\af31501\dbch\af31505\loch\f31501 to copy the
+\par \hich\af31501\dbch\af31505\loch\f31501 Corresponding Source from a network server at no charge.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 c) Convey individual copies of the object code with a copy of the
+\par \hich\af31501\dbch\af31505\loch\f31501 written offer to provide the Corresponding Source. This
+\par \hich\af31501\dbch\af31505\loch\f31501 alternative is allowed only occasionally and noncommercially, \hich\af31501\dbch\af31505\loch\f31501 and
+\par \hich\af31501\dbch\af31505\loch\f31501 only if you received the object code with such an offer, in accord
+\par \hich\af31501\dbch\af31505\loch\f31501 with subsection 6b.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 d) Convey the object code by offering access from a designated
+\par \hich\af31501\dbch\af31505\loch\f31501 place (gratis or for a charge), and offer equivalent access to the
+\par \hich\af31501\dbch\af31505\loch\f31501 Corresponding Source in the same way through the same place at no
+\par \hich\af31501\dbch\af31505\loch\f31501 further charge. You need not require recipients to copy the
+\par \hich\af31501\dbch\af31505\loch\f31501 Corresponding Source along with the object code. If the place to
+\par \hich\af31501\dbch\af31505\loch\f31501 copy the object code is a network server, the Corresponding Sou\hich\af31501\dbch\af31505\loch\f31501 rce
+\par \hich\af31501\dbch\af31505\loch\f31501 may be on a different server (operated by you or a third party)
+\par \hich\af31501\dbch\af31505\loch\f31501 that supports equivalent copying facilities, provided you maintain
+\par \hich\af31501\dbch\af31505\loch\f31501 clear directions next to the object code saying where to find the
+\par \hich\af31501\dbch\af31505\loch\f31501 Corresponding Source. Regardless of what server hosts \hich\af31501\dbch\af31505\loch\f31501 the
+\par \hich\af31501\dbch\af31505\loch\f31501 Corresponding Source, you remain obligated to ensure that it is
+\par \hich\af31501\dbch\af31505\loch\f31501 available for as long as needed to satisfy these requirements.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 e) Convey the object code using peer-to-peer transmission, provided
+\par \hich\af31501\dbch\af31505\loch\f31501 you inform other peers where the object code and Corresp\hich\af31501\dbch\af31505\loch\f31501 onding
+\par \hich\af31501\dbch\af31505\loch\f31501 Source of the work are being offered to the general public at no
+\par \hich\af31501\dbch\af31505\loch\f31501 charge under subsection 6d.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 A separable portion of the object code, whose source code is excluded
+\par \hich\af31501\dbch\af31505\loch\f31501 from the Corresponding Source as a System Library, need not be
+\par \hich\af31501\dbch\af31505\loch\f31501 included in conveying \hich\af31501\dbch\af31505\loch\f31501 the object code work.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 A "User Product" is either (1) a "consumer product", which means any
+\par \hich\af31501\dbch\af31505\loch\f31501 tangible personal property which is normally used for personal, family,
+\par \hich\af31501\dbch\af31505\loch\f31501 or household purposes, or (2) anything designed or sold for incorporation
+\par \hich\af31501\dbch\af31505\loch\f31501 into a dwelling. \hich\af31501\dbch\af31505\loch\f31501 In determining whether a product is a consumer product,
+\par \hich\af31501\dbch\af31505\loch\f31501 doubtful cases shall be resolved in favor of coverage. For a particular
+\par \hich\af31501\dbch\af31505\loch\f31501 product received by a particular user, "normally used" refers to a
+\par \hich\af31501\dbch\af31505\loch\f31501 typical or common use of that class of product, regardless of the status
+\par \hich\af31501\dbch\af31505\loch\f31501 of the particular user or of the way in which the particular user
+\par \hich\af31501\dbch\af31505\loch\f31501 actually uses, or expects or is expected to use, t\hich\af31501\dbch\af31505\loch\f31501 he product. A product
+\par \hich\af31501\dbch\af31505\loch\f31501 is a consumer product regardless of whether the product has substantial
+\par \hich\af31501\dbch\af31505\loch\f31501 commercial, industrial or non-consumer uses, unless such uses represent
+\par \hich\af31501\dbch\af31505\loch\f31501 the only significant mode of use of the product.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 "Installation Information" for a User P\hich\af31501\dbch\af31505\loch\f31501 roduct means any methods,
+\par \hich\af31501\dbch\af31505\loch\f31501 procedures, authorization keys, or other information required to install
+\par \hich\af31501\dbch\af31505\loch\f31501 and execute modified versions of a covered work in that User Product from
+\par \hich\af31501\dbch\af31505\loch\f31501 a modified version of its Corresponding Source. The information must
+\par \hich\af31501\dbch\af31505\loch\f31501 suffice to en\hich\af31501\dbch\af31505\loch\f31501 sure that the continued functioning of the modified object
+\par \hich\af31501\dbch\af31505\loch\f31501 code is in no case prevented or interfered with solely because
+\par \hich\af31501\dbch\af31505\loch\f31501 modification has been made.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 If you convey an object code work under this section in, or with, or
+\par \hich\af31501\dbch\af31505\loch\f31501 specifically for use in, a User Prod\hich\af31501\dbch\af31505\loch\f31501 uct, and the conveying occurs as
+\par \hich\af31501\dbch\af31505\loch\f31501 part of a transaction in which the right of possession and use of the
+\par \hich\af31501\dbch\af31505\loch\f31501 User Product is transferred to the recipient in perpetuity or for a
+\par \hich\af31501\dbch\af31505\loch\f31501 fixed term (regardless of how the transaction is characterized), the
+\par \hich\af31501\dbch\af31505\loch\f31501 Corresponding So\hich\af31501\dbch\af31505\loch\f31501 urce conveyed under this section must be accompanied
+\par \hich\af31501\dbch\af31505\loch\f31501 by the Installation Information. But this requirement does not apply
+\par \hich\af31501\dbch\af31505\loch\f31501 if neither you nor any third party retains the ability to install
+\par \hich\af31501\dbch\af31505\loch\f31501 modified object code on the User Product (for example, the work has
+\par \hich\af31501\dbch\af31505\loch\f31501 been installed in ROM).
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 The requirement to provide Installation Information does not include a
+\par \hich\af31501\dbch\af31505\loch\f31501 requirement to continue to provide support service, warranty, or updates
+\par \hich\af31501\dbch\af31505\loch\f31501 for a work that has been modified or installed by the recipient, or for
+\par \hich\af31501\dbch\af31505\loch\f31501 the User Product in which it has been modified or installed. Access to a
+\par \hich\af31501\dbch\af31505\loch\f31501 network may be denied when the modification itself materially and
+\par \hich\af31501\dbch\af31505\loch\f31501 adversely affects the operation of the netwo\hich\af31501\dbch\af31505\loch\f31501 rk or violates the rules and
+\par \hich\af31501\dbch\af31505\loch\f31501 protocols for communication across the network.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 Corresponding Source conveyed, and Installation Information provided,
+\par \hich\af31501\dbch\af31505\loch\f31501 in accord with this section must be in a format that is publicly
+\par \hich\af31501\dbch\af31505\loch\f31501 documented (and with an implementation avai\hich\af31501\dbch\af31505\loch\f31501 lable to the public in
+\par \hich\af31501\dbch\af31505\loch\f31501 source code form), and must require no special password or key for
+\par \hich\af31501\dbch\af31505\loch\f31501 unpacking, reading or copying.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 7. Additional Terms.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 "Additional permissions" are terms that supplement the terms of this
+\par \hich\af31501\dbch\af31505\loch\f31501 License by making exceptions from one or mo\hich\af31501\dbch\af31505\loch\f31501 re of its conditions.
+\par \hich\af31501\dbch\af31505\loch\f31501 Additional permissions that are applicable to the entire Program shall
+\par \hich\af31501\dbch\af31505\loch\f31501 be treated as though they were included in this License, to the extent
+\par \hich\af31501\dbch\af31505\loch\f31501 that they are valid under applicable law. If additional permissions
+\par \hich\af31501\dbch\af31505\loch\f31501 apply only to part of t\hich\af31501\dbch\af31505\loch\f31501 he Program, that part may be used separately
+\par \hich\af31501\dbch\af31505\loch\f31501 under those permissions, but the entire Program remains governed by
+\par \hich\af31501\dbch\af31505\loch\f31501 this License without regard to the additional permissions.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 When you convey a copy of a covered work, you may at your option
+\par \hich\af31501\dbch\af31505\loch\f31501 remove any additional permissions from that copy, or from any part of
+\par \hich\af31501\dbch\af31505\loch\f31501 it. (Additional permissions may be written to require their own
+\par \hich\af31501\dbch\af31505\loch\f31501 removal in certain cases when you modify the work.) You\hich\af31501\dbch\af31505\loch\f31501 may place
+\par \hich\af31501\dbch\af31505\loch\f31501 additional permissions on material, added by you to a covered work,
+\par \hich\af31501\dbch\af31505\loch\f31501 for which you have or can give appropriate copyright permission.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 Notwithstanding any other provision of this License, for material you
+\par \hich\af31501\dbch\af31505\loch\f31501 add to a covered work, you may (if author\hich\af31501\dbch\af31505\loch\f31501 ized by the copyright holders of
+\par \hich\af31501\dbch\af31505\loch\f31501 that material) supplement the terms of this License with terms:
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 a) Disclaiming warranty or limiting liability differently from the
+\par \hich\af31501\dbch\af31505\loch\f31501 terms of sections 15 and 16 of this License; or
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 b) Requiring preservation of specified rea\hich\af31501\dbch\af31505\loch\f31501 sonable legal notices or
+\par \hich\af31501\dbch\af31505\loch\f31501 author attributions in that material or in the Appropriate Legal
+\par \hich\af31501\dbch\af31505\loch\f31501 Notices displayed by works containing it; or
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 c) Prohibiting misrepresentation of the origin of that material, or
+\par \hich\af31501\dbch\af31505\loch\f31501 requiring that modified versions of such material be\hich\af31501\dbch\af31505\loch\f31501 marked in
+\par \hich\af31501\dbch\af31505\loch\f31501 reasonable ways as different from the original version; or
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 d) Limiting the use for publicity purposes of names of licensors or
+\par \hich\af31501\dbch\af31505\loch\f31501 authors of the material; or
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 e) Declining to grant rights under trademark law for use of some
+\par \hich\af31501\dbch\af31505\loch\f31501 trade names, trademarks, or service marks; or
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 f) Requiring indemnification of licensors and authors of that
+\par \hich\af31501\dbch\af31505\loch\f31501 material by anyone who conveys the material (or modified versions of
+\par \hich\af31501\dbch\af31505\loch\f31501 it) with cont\hich\af31501\dbch\af31505\loch\f31501 ractual assumptions of liability to the recipient, for
+\par \hich\af31501\dbch\af31505\loch\f31501 any liability that these contractual assumptions directly impose on
+\par \hich\af31501\dbch\af31505\loch\f31501 those licensors and authors.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 All other non-permissive additional terms are considered "further
+\par \hich\af31501\dbch\af31505\loch\f31501 restrictions" within the meaning of s\hich\af31501\dbch\af31505\loch\f31501 ection 10. If the Program as you
+\par \hich\af31501\dbch\af31505\loch\f31501 received it, or any part of it, contains a notice stating that it is
+\par \hich\af31501\dbch\af31505\loch\f31501 governed by this License along with a term that is a further
+\par \hich\af31501\dbch\af31505\loch\f31501 restriction, you may remove that term. If a license document contains
+\par \hich\af31501\dbch\af31505\loch\f31501 a further restriction\hich\af31501\dbch\af31505\loch\f31501 but permits relicensing or conveying under this
+\par \hich\af31501\dbch\af31505\loch\f31501 License, you may add to a covered work material governed by the terms
+\par \hich\af31501\dbch\af31505\loch\f31501 of that license document, provided that the further restriction does
+\par \hich\af31501\dbch\af31505\loch\f31501 not survive such relicensing or conveying.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 If you add terms to a co\hich\af31501\dbch\af31505\loch\f31501 vered work in accord with this section, you
+\par \hich\af31501\dbch\af31505\loch\f31501 must place, in the relevant source files, a statement of the
+\par \hich\af31501\dbch\af31505\loch\f31501 additional terms that apply to those files, or a notice indicating
+\par \hich\af31501\dbch\af31505\loch\f31501 where to find the applicable terms.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 Additional terms, permissive or non-permissive, may be stated in the
+\par \hich\af31501\dbch\af31505\loch\f31501 form of a separately written license, or stated as exceptions;
+\par \hich\af31501\dbch\af31505\loch\f31501 the above requirements apply either way.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 8. Termination.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 You may not propagate or modify a covered work except as expressl\hich\af31501\dbch\af31505\loch\f31501 y
+\par \hich\af31501\dbch\af31505\loch\f31501 provided under this License. Any attempt otherwise to propagate or
+\par \hich\af31501\dbch\af31505\loch\f31501 modify it is void, and will automatically terminate your rights under
+\par \hich\af31501\dbch\af31505\loch\f31501 this License (including any patent licenses granted under the third
+\par \hich\af31501\dbch\af31505\loch\f31501 paragraph of section 11).
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 However, if you cease\hich\af31501\dbch\af31505\loch\f31501 all violation of this License, then your
+\par \hich\af31501\dbch\af31505\loch\f31501 license from a particular copyright holder is reinstated (a)
+\par \hich\af31501\dbch\af31505\loch\f31501 provisionally, unless and until the copyright holder explicitly and
+\par \hich\af31501\dbch\af31505\loch\f31501 finally terminates your license, and (b) permanently, if the copyright
+\par \hich\af31501\dbch\af31505\loch\f31501 holder fails t\hich\af31501\dbch\af31505\loch\f31501 o notify you of the violation by some reasonable means
+\par \hich\af31501\dbch\af31505\loch\f31501 prior to 60 days after the cessation.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 Moreover, your license from a particular copyright holder is
+\par \hich\af31501\dbch\af31505\loch\f31501 reinstated permanently if the copyright holder notifies you of the
+\par \hich\af31501\dbch\af31505\loch\f31501 violation by some reasonable means\hich\af31501\dbch\af31505\loch\f31501 , this is the first time you have
+\par \hich\af31501\dbch\af31505\loch\f31501 received notice of violation of this License (for any work) from that
+\par \hich\af31501\dbch\af31505\loch\f31501 copyright holder, and you cure the violation prior to 30 days after
+\par \hich\af31501\dbch\af31505\loch\f31501 your receipt of the notice.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 Termination of your rights under this section does not terminate the
+\par \hich\af31501\dbch\af31505\loch\f31501 licenses of parties who have received copies or rights from you under
+\par \hich\af31501\dbch\af31505\loch\f31501 this License. If your rights have been terminated and not permanently
+\par \hich\af31501\dbch\af31505\loch\f31501 reinstated, you do not qualify to receive new \hich\af31501\dbch\af31505\loch\f31501 licenses for the same
+\par \hich\af31501\dbch\af31505\loch\f31501 material under section 10.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 9. Acceptance Not Required for Having Copies.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 You are not required to accept this License in order to receive or
+\par \hich\af31501\dbch\af31505\loch\f31501 run a copy of the Program. Ancillary propagation of a covered work
+\par \hich\af31501\dbch\af31505\loch\f31501 occurring solely as a co\hich\af31501\dbch\af31505\loch\f31501 nsequence of using peer-to-peer transmission
+\par \hich\af31501\dbch\af31505\loch\f31501 to receive a copy likewise does not require acceptance. However,
+\par \hich\af31501\dbch\af31505\loch\f31501 nothing other than this License grants you permission to propagate or
+\par \hich\af31501\dbch\af31505\loch\f31501 modify any covered work. These actions infringe copyright if you do
+\par \hich\af31501\dbch\af31505\loch\f31501 not ac\hich\af31501\dbch\af31505\loch\f31501 cept this License. Therefore, by modifying or propagating a
+\par \hich\af31501\dbch\af31505\loch\f31501 covered work, you indicate your acceptance of this License to do so.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 10. Automatic Licensing of Downstream Recipients.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 Each time you convey a covered work, the recipient automatically
+\par \hich\af31501\dbch\af31505\loch\f31501 receives \hich\af31501\dbch\af31505\loch\f31501 a license from the original licensors, to run, modify and
+\par \hich\af31501\dbch\af31505\loch\f31501 propagate that work, subject to this License. You are not responsible
+\par \hich\af31501\dbch\af31505\loch\f31501 for enforcing compliance by third parties with this License.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 An "entity transaction" is a transaction transferring control of an
+\par \hich\af31501\dbch\af31505\loch\f31501 organization, or substantially all assets of one, or subdividing an
+\par \hich\af31501\dbch\af31505\loch\f31501 organization, or merging organizations. If propagation of a covered
+\par \hich\af31501\dbch\af31505\loch\f31501 work results from an entity transaction, each party\hich\af31501\dbch\af31505\loch\f31501 to that
+\par \hich\af31501\dbch\af31505\loch\f31501 transaction who receives a copy of the work also receives whatever
+\par \hich\af31501\dbch\af31505\loch\f31501 licenses to the work the party's predecessor in interest had or could
+\par \hich\af31501\dbch\af31505\loch\f31501 give under the previous paragraph, plus a right to possession of the
+\par \hich\af31501\dbch\af31505\loch\f31501 Corresponding Source of the work from the\hich\af31501\dbch\af31505\loch\f31501 predecessor in interest, if
+\par \hich\af31501\dbch\af31505\loch\f31501 the predecessor has it or can get it with reasonable efforts.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 You may not impose any further restrictions on the exercise of the
+\par \hich\af31501\dbch\af31505\loch\f31501 rights granted or affirmed under this License. For example, you may
+\par \hich\af31501\dbch\af31505\loch\f31501 not impose a license fee, ro\hich\af31501\dbch\af31505\loch\f31501 yalty, or other charge for exercise of
+\par \hich\af31501\dbch\af31505\loch\f31501 rights granted under this License, and you may not initiate litigation
+\par \hich\af31501\dbch\af31505\loch\f31501 (including a cross-claim or counterclaim in a lawsuit) alleging that
+\par \hich\af31501\dbch\af31505\loch\f31501 any patent claim is infringed by making, using, selling, offering for
+\par \hich\af31501\dbch\af31505\loch\f31501 sale, o\hich\af31501\dbch\af31505\loch\f31501 r importing the Program or any portion of it.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 11. Patents.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 A "contributor" is a copyright holder who authorizes use under this
+\par \hich\af31501\dbch\af31505\loch\f31501 License of the Program or a work on which the Program is based. The
+\par \hich\af31501\dbch\af31505\loch\f31501 work thus licensed is called the contributor's "contributo\hich\af31501\dbch\af31505\loch\f31501 r version".
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 A contributor's "essential patent claims" are all patent claims
+\par \hich\af31501\dbch\af31505\loch\f31501 owned or controlled by the contributor, whether already acquired or
+\par \hich\af31501\dbch\af31505\loch\f31501 hereafter acquired, that would be infringed by some manner, permitted
+\par \hich\af31501\dbch\af31505\loch\f31501 by this License, of making, using, or selling its contributor version,
+\par \hich\af31501\dbch\af31505\loch\f31501 but do not include claims that would be infringed only as a
+\par \hich\af31501\dbch\af31505\loch\f31501 consequence of further modification of the contributor \hich\af31501\dbch\af31505\loch\f31501 version. For
+\par \hich\af31501\dbch\af31505\loch\f31501 purposes of this definition, "control" includes the right to grant
+\par \hich\af31501\dbch\af31505\loch\f31501 patent sublicenses in a manner consistent with the requirements of
+\par \hich\af31501\dbch\af31505\loch\f31501 this License.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 Each contributor grants you a non-exclusive, worldwide, royalty-free
+\par \hich\af31501\dbch\af31505\loch\f31501 patent license under the\hich\af31501\dbch\af31505\loch\f31501 contributor's essential patent claims, to
+\par \hich\af31501\dbch\af31505\loch\f31501 make, use, sell, offer for sale, import and otherwise run, modify and
+\par \hich\af31501\dbch\af31505\loch\f31501 propagate the contents of its contributor version.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 In the following three paragraphs, a "patent license" is any express
+\par \hich\af31501\dbch\af31505\loch\f31501 agreement or commitmen\hich\af31501\dbch\af31505\loch\f31501 t, however denominated, not to enforce a patent
+\par \hich\af31501\dbch\af31505\loch\f31501 (such as an express permission to practice a patent or covenant not to
+\par \hich\af31501\dbch\af31505\loch\f31501 sue for patent infringement). To "grant" such a patent license to a
+\par \hich\af31501\dbch\af31505\loch\f31501 party means to make such an agreement or commitment not to enforce a
+\par \hich\af31501\dbch\af31505\loch\f31501 patent against the party.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 If you convey a covered work, knowingly relying on a patent license,
+\par \hich\af31501\dbch\af31505\loch\f31501 and the Corresponding Source of the work is not available for anyone
+\par \hich\af31501\dbch\af31505\loch\f31501 to copy, free of charge and under the terms of this License, through a
+\par \hich\af31501\dbch\af31505\loch\f31501 publicly available network server or other readily accessible means,
+\par \hich\af31501\dbch\af31505\loch\f31501 then you must either (1) cause the Corresponding Source to be so
+\par \hich\af31501\dbch\af31505\loch\f31501 available, or (2) arrange to deprive yourself of the benefit of the
+\par \hich\af31501\dbch\af31505\loch\f31501 patent license for this particular work, or (3) arrang\hich\af31501\dbch\af31505\loch\f31501 e, in a manner
+\par \hich\af31501\dbch\af31505\loch\f31501 consistent with the requirements of this License, to extend the patent
+\par \hich\af31501\dbch\af31505\loch\f31501 license to downstream recipients. "Knowingly relying" means you have
+\par \hich\af31501\dbch\af31505\loch\f31501 actual knowledge that, but for the patent license, your conveying the
+\par \hich\af31501\dbch\af31505\loch\f31501 covered work in a country, or \hich\af31501\dbch\af31505\loch\f31501 your recipient's use of the covered work
+\par \hich\af31501\dbch\af31505\loch\f31501 in a country, would infringe one or more identifiable patents in that
+\par \hich\af31501\dbch\af31505\loch\f31501 country that you have reason to believe are valid.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 If, pursuant to or in connection with a single transaction or
+\par \hich\af31501\dbch\af31505\loch\f31501 arrangement, you convey, or pro\hich\af31501\dbch\af31505\loch\f31501 pagate by procuring conveyance of, a
+\par \hich\af31501\dbch\af31505\loch\f31501 covered work, and grant a patent license to some of the parties
+\par \hich\af31501\dbch\af31505\loch\f31501 receiving the covered work authorizing them to use, propagate, modify
+\par \hich\af31501\dbch\af31505\loch\f31501 or convey a specific copy of the covered work, then the patent license
+\par \hich\af31501\dbch\af31505\loch\f31501 you grant is a\hich\af31501\dbch\af31505\loch\f31501 utomatically extended to all recipients of the covered
+\par \hich\af31501\dbch\af31505\loch\f31501 work and works based on it.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 A patent license is "discriminatory" if it does not include within
+\par \hich\af31501\dbch\af31505\loch\f31501 the scope of its coverage, prohibits the exercise of, or is
+\par \hich\af31501\dbch\af31505\loch\f31501 conditioned on the non-exercise of one or mor\hich\af31501\dbch\af31505\loch\f31501 e of the rights that are
+\par \hich\af31501\dbch\af31505\loch\f31501 specifically granted under this License. You may not convey a covered
+\par \hich\af31501\dbch\af31505\loch\f31501 work if you are a party to an arrangement with a third party that is
+\par \hich\af31501\dbch\af31505\loch\f31501 in the business of distributing software, under which you make payment
+\par \hich\af31501\dbch\af31505\loch\f31501 to the third party based on the extent of your activity of conveying
+\par \hich\af31501\dbch\af31505\loch\f31501 the work, and under which the third party grants, to any of the
+\par \hich\af31501\dbch\af31505\loch\f31501 parties who would receive the covered work from you, a discriminatory
+\par \hich\af31501\dbch\af31505\loch\f31501 patent license (a) in connection with copies of the c\hich\af31501\dbch\af31505\loch\f31501 overed work
+\par \hich\af31501\dbch\af31505\loch\f31501 conveyed by you (or copies made from those copies), or (b) primarily
+\par \hich\af31501\dbch\af31505\loch\f31501 for and in connection with specific products or compilations that
+\par \hich\af31501\dbch\af31505\loch\f31501 contain the covered work, unless you entered into that arrangement,
+\par \hich\af31501\dbch\af31505\loch\f31501 or that patent license was granted, prior\hich\af31501\dbch\af31505\loch\f31501 to 28 March 2007.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 Nothing in this License shall be construed as excluding or limiting
+\par \hich\af31501\dbch\af31505\loch\f31501 any implied license or other defenses to infringement that may
+\par \hich\af31501\dbch\af31505\loch\f31501 otherwise be available to you under applicable patent law.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 12. No Surrender of Others' Freedom.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 If cond\hich\af31501\dbch\af31505\loch\f31501 itions are imposed on you (whether by court order, agreement or
+\par \hich\af31501\dbch\af31505\loch\f31501 otherwise) that contradict the conditions of this License, they do not
+\par \hich\af31501\dbch\af31505\loch\f31501 excuse you from the conditions of this License. If you cannot convey a
+\par \hich\af31501\dbch\af31505\loch\f31501 covered work so as to satisfy simultaneously your\hich\af31501\dbch\af31505\loch\f31501 obligations under this
+\par \hich\af31501\dbch\af31505\loch\f31501 License and any other pertinent obligations, then as a consequence you may
+\par \hich\af31501\dbch\af31505\loch\f31501 not convey it at all. For example, if you agree to terms that obligate you
+\par \hich\af31501\dbch\af31505\loch\f31501 to collect a royalty for further conveying from those to whom you convey
+\par \hich\af31501\dbch\af31505\loch\f31501 the Prog\hich\af31501\dbch\af31505\loch\f31501 ram, the only way you could satisfy both those terms and this
+\par \hich\af31501\dbch\af31505\loch\f31501 License would be to refrain entirely from conveying the Program.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 13. Use with the GNU Affero General Public License.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 Notwithst\hich\af31501\dbch\af31505\loch\f31501 anding any other provision of this License, you have
+\par \hich\af31501\dbch\af31505\loch\f31501 permission to link or combine any covered work with a work licensed
+\par \hich\af31501\dbch\af31505\loch\f31501 under version 3 of the GNU Affero General Public License into a single
+\par \hich\af31501\dbch\af31505\loch\f31501 combined work, and to convey the resulting work. The terms of t\hich\af31501\dbch\af31505\loch\f31501 his
+\par \hich\af31501\dbch\af31505\loch\f31501 License will continue to apply to the part which is the covered work,
+\par \hich\af31501\dbch\af31505\loch\f31501 but the special requirements of the GNU Affero General Public License,
+\par \hich\af31501\dbch\af31505\loch\f31501 section 13, concerning interaction through a network will apply to the
+\par \hich\af31501\dbch\af31505\loch\f31501 combination as such.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 14. Revised Versio\hich\af31501\dbch\af31505\loch\f31501 ns of this License.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 The Free Software Foundation may publish revised and/or new versions of
+\par \hich\af31501\dbch\af31505\loch\f31501 the GNU General Public License from time to time. Such new versions will
+\par \hich\af31501\dbch\af31505\loch\f31501 be similar in spirit to the present version, but may differ in detail to
+\par \hich\af31501\dbch\af31505\loch\f31501 address new prob\hich\af31501\dbch\af31505\loch\f31501 lems or concerns.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 Each version is given a distinguishing version number. If the
+\par \hich\af31501\dbch\af31505\loch\f31501 Program specifies that a certain numbered version of the GNU General
+\par \hich\af31501\dbch\af31505\loch\f31501 Public License "or any later version" applies to it, you have the
+\par \hich\af31501\dbch\af31505\loch\f31501 option of following the terms and condi\hich\af31501\dbch\af31505\loch\f31501 tions either of that numbered
+\par \hich\af31501\dbch\af31505\loch\f31501 version or of any later version published by the Free Software
+\par \hich\af31501\dbch\af31505\loch\f31501 Foundation. If the Program does not specify a version number of the
+\par \hich\af31501\dbch\af31505\loch\f31501 GNU General Public License, you may choose any version ever published
+\par \hich\af31501\dbch\af31505\loch\f31501 by the Free Software Foundation.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 If the Program specifies that a proxy can decide which future
+\par \hich\af31501\dbch\af31505\loch\f31501 versions of the GNU General Public License can be used, that proxy's
+\par \hich\af31501\dbch\af31505\loch\f31501 public statement of acceptance of a version permanently authorizes you
+\par \hich\af31501\dbch\af31505\loch\f31501 to choose that versi\hich\af31501\dbch\af31505\loch\f31501 on for the Program.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 Later license versions may give you additional or different
+\par \hich\af31501\dbch\af31505\loch\f31501 permissions. However, no additional obligations are imposed on any
+\par \hich\af31501\dbch\af31505\loch\f31501 author or copyright holder as a result of your choosing to follow a
+\par \hich\af31501\dbch\af31505\loch\f31501 later version.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 15. Disclaimer of Warra\hich\af31501\dbch\af31505\loch\f31501 nty.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+\par \hich\af31501\dbch\af31505\loch\f31501 APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+\par \hich\af31501\dbch\af31505\loch\f31501 HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+\par \hich\af31501\dbch\af31505\loch\f31501 OF ANY KIND, EITHER EXPRESSED OR IMPLIED\hich\af31501\dbch\af31505\loch\f31501 , INCLUDING, BUT NOT LIMITED TO,
+\par \hich\af31501\dbch\af31505\loch\f31501 THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+\par \hich\af31501\dbch\af31505\loch\f31501 PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+\par \hich\af31501\dbch\af31505\loch\f31501 IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+\par \hich\af31501\dbch\af31505\loch\f31501 ALL \hich\af31501\dbch\af31505\loch\f31501 NECESSARY SERVICING, REPAIR OR CORRECTION.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 16. Limitation of Liability.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+\par \hich\af31501\dbch\af31505\loch\f31501 WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+\par \hich\af31501\dbch\af31505\loch\f31501 THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+\par \hich\af31501\dbch\af31505\loch\f31501 GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+\par \hich\af31501\dbch\af31505\loch\f31501 USE OR INABILITY TO USE THE PROGR\hich\af31501\dbch\af31505\loch\f31501 AM (INCLUDING BUT NOT LIMITED TO LOSS OF
+\par \hich\af31501\dbch\af31505\loch\f31501 DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+\par \hich\af31501\dbch\af31505\loch\f31501 PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+\par \hich\af31501\dbch\af31505\loch\f31501 EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBIL\hich\af31501\dbch\af31505\loch\f31501 ITY OF
+\par \hich\af31501\dbch\af31505\loch\f31501 SUCH DAMAGES.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 17. Interpretation of Sections 15 and 16.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 If the disclaimer of warranty and limitation of liability provided
+\par \hich\af31501\dbch\af31505\loch\f31501 above cannot be given local legal effect according to their terms,
+\par \hich\af31501\dbch\af31505\loch\f31501 reviewing courts shall apply local law that most closely \hich\af31501\dbch\af31505\loch\f31501 approximates
+\par \hich\af31501\dbch\af31505\loch\f31501 an absolute waiver of all civil liability in connection with the
+\par \hich\af31501\dbch\af31505\loch\f31501 Program, unless a warranty or assumption of liability accompanies a
+\par \hich\af31501\dbch\af31505\loch\f31501 copy of the Program in return for a fee.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 END OF TERMS AND CONDITIONS
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 How to Apply These Terms to Your New Pr\hich\af31501\dbch\af31505\loch\f31501 ograms
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 If you develop a new program, and you want it to be of the greatest
+\par \hich\af31501\dbch\af31505\loch\f31501 possible use to the public, the best way to achieve this is to make it
+\par \hich\af31501\dbch\af31505\loch\f31501 free software which everyone can redistribute and change under these terms.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 To do so, attach the following notices to the program. It is safest
+\par \hich\af31501\dbch\af31505\loch\f31501 to attach them to the start of each source file to most effectively
+\par \hich\af31501\dbch\af31505\loch\f31501 state the exclusion of warranty; and each \hich\af31501\dbch\af31505\loch\f31501 file should have at least
+\par \hich\af31501\dbch\af31505\loch\f31501 the "copyright" line and a pointer to where the full notice is found.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 <one line to give the program's name and a brief idea of what it does.>
+\par \hich\af31501\dbch\af31505\loch\f31501 Copyright (C) <year> <name of author>
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 This program is free software: you can redistri\hich\af31501\dbch\af31505\loch\f31501 bute it and/or modify
+\par \hich\af31501\dbch\af31505\loch\f31501 it under the terms of the GNU General Public License as published by
+\par \hich\af31501\dbch\af31505\loch\f31501 the Free Software Foundation, either version 3 of the License, or
+\par \hich\af31501\dbch\af31505\loch\f31501 (at your option) any later version.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 This program is distributed in the hope that it will be useful,
+\par \hich\af31501\dbch\af31505\loch\f31501 but WITHOUT ANY WARRANTY; without even the implied warranty of
+\par \hich\af31501\dbch\af31505\loch\f31501 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+\par \hich\af31501\dbch\af31505\loch\f31501 GNU General Public License for more details.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 You should have received a copy of the GNU General Public License
+\par \hich\af31501\dbch\af31505\loch\f31501 along with this p\hich\af31501\dbch\af31505\loch\f31501 rogram. If not, see <http://www.gnu.org/licenses/>.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 Also add information on how to contact you by electronic and paper mail.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 If the program does terminal interaction, make it output a short
+\par \hich\af31501\dbch\af31505\loch\f31501 notice like this when it starts in an interactive mode:
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 <program> Copyright (C) <year> <name of author>
+\par \hich\af31501\dbch\af31505\loch\f31501 This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+\par \hich\af31501\dbch\af31505\loch\f31501 This is free software, and you are welcome to redistribute it
+\par \hich\af31501\dbch\af31505\loch\f31501 under certai\hich\af31501\dbch\af31505\loch\f31501 n conditions; type `show c' for details.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 The hypothetical commands `show w' and `show c' should show the appropriate
+\par \hich\af31501\dbch\af31505\loch\f31501 parts of the General Public License. Of course, your program's commands
+\par \hich\af31501\dbch\af31505\loch\f31501 might be different; for a GUI interface, you would use an "about \hich\af31501\dbch\af31505\loch\f31501 box".
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 You should also get your employer (if you work as a programmer) or school,
+\par \hich\af31501\dbch\af31505\loch\f31501 if any, to sign a "copyright disclaimer" for the program, if necessary.
+\par \hich\af31501\dbch\af31505\loch\f31501 For more information on this, and how to apply and follow the GNU GPL, see
+\par \hich\af31501\dbch\af31505\loch\f31501 <http://www.gnu.org/license\hich\af31501\dbch\af31505\loch\f31501 s/>.
+\par
+\par \hich\af31501\dbch\af31505\loch\f31501 The GNU General Public License does not permit incorporating your program
+\par \hich\af31501\dbch\af31505\loch\f31501 into proprietary programs. If your program is a subroutine library, you
+\par \hich\af31501\dbch\af31505\loch\f31501 may consider it more useful to permit linking proprietary applications with
+\par \hich\af31501\dbch\af31505\loch\f31501 the library. If this is wh\hich\af31501\dbch\af31505\loch\f31501 at you want to do, use the GNU Lesser General
+\par \hich\af31501\dbch\af31505\loch\f31501 Public License instead of this License. But first, please read
+\par \hich\af31501\dbch\af31505\loch\f31501 <http://www.gnu.org/philosophy/why-not-lgpl.html>.
+\par
+\par }{\*\themedata 504b030414000600080000002100e9de0fbfff0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb4ec3301045f748fc83e52d4a
+9cb2400825e982c78ec7a27cc0c8992416c9d8b2a755fbf74cd25442a820166c2cd933f79e3be372bd1f07b5c3989ca74aaff2422b24eb1b475da5df374fd9ad
+5689811a183c61a50f98f4babebc2837878049899a52a57be670674cb23d8e90721f90a4d2fa3802cb35762680fd800ecd7551dc18eb899138e3c943d7e503b6
+b01d583deee5f99824e290b4ba3f364eac4a430883b3c092d4eca8f946c916422ecab927f52ea42b89a1cd59c254f919b0e85e6535d135a8de20f20b8c12c3b0
+0c895fcf6720192de6bf3b9e89ecdbd6596cbcdd8eb28e7c365ecc4ec1ff1460f53fe813d3cc7f5b7f020000ffff0300504b030414000600080000002100a5d6
+a7e7c0000000360100000b0000005f72656c732f2e72656c73848fcf6ac3300c87ef85bd83d17d51d2c31825762fa590432fa37d00e1287f68221bdb1bebdb4f
+c7060abb0884a4eff7a93dfeae8bf9e194e720169aaa06c3e2433fcb68e1763dbf7f82c985a4a725085b787086a37bdbb55fbc50d1a33ccd311ba548b6309512
+0f88d94fbc52ae4264d1c910d24a45db3462247fa791715fd71f989e19e0364cd3f51652d73760ae8fa8c9ffb3c330cc9e4fc17faf2ce545046e37944c69e462
+a1a82fe353bd90a865aad41ed0b5b8f9d6fd010000ffff0300504b0304140006000800000021006b799616830000008a0000001c0000007468656d652f746865
+6d652f7468656d654d616e616765722e786d6c0ccc4d0ac3201040e17da17790d93763bb284562b2cbaebbf600439c1a41c7a0d29fdbd7e5e38337cedf14d59b
+4b0d592c9c070d8a65cd2e88b7f07c2ca71ba8da481cc52c6ce1c715e6e97818c9b48d13df49c873517d23d59085adb5dd20d6b52bd521ef2cdd5eb9246a3d8b
+4757e8d3f729e245eb2b260a0238fd010000ffff0300504b030414000600080000002100b6f4679893070000c9200000160000007468656d652f7468656d652f
+7468656d65312e786d6cec59cd8b1bc915bf07f23f347d97f5d5ad8fc1f2a24fcfda33b6b164873dd648a5eef2547789aad28cc56208de532e81c026e49085bd
+ed21842cecc22eb9e48f31d8249b3f22afaa5bdd5552c99e191c3061463074977eefd5afde7bf5de53d5ddcf5e26d4bbc05c1096f6fcfa9d9aefe174ce16248d
+7afeb3d9a4d2f13d2151ba4094a5b8e76fb0f03fbbf7eb5fdd454732c609f6403e1547a8e7c752ae8eaa5531876124eeb0154ee1bb25e30992f0caa3ea82a34b
+d09bd06aa3566b55134452df4b51026a1f2f97648ebd9952e9dfdb2a1f53784da5500373caa74a35b6243476715e5708b11143cabd0b447b3eccb3609733fc52
+fa1e4542c2173dbfa6fffceabdbb5574940b517940d6909be8bf5c2e17589c37f49c3c3a2b260d823068f50bfd1a40e53e6edc1eb7c6ad429f06a0f91c569a71
+b175b61bc320c71aa0ecd1a17bd41e35eb16ded0dfdce3dc0fd5c7c26b50a63fd8c34f2643b0a285d7a00c1feee1c3417730b2f56b50866fede1dbb5fe28685b
+fa3528a6243ddf43d7c25673b85d6d0159327aec8477c360d26ee4ca4b144443115d6a8a254be5a1584bd00bc6270050408a24493db959e1259a43140f112567
+9c7827248a21f056286502866b8ddaa4d684ffea13e827ed5174849121ad780113b137a4f87862cec94af6fc07a0d537206f7ffef9cdeb1fdfbcfee9cd575fbd
+79fdf77c6eadca923b466964cafdf2dd1ffef3cd6fbd7ffff0ed2f5fff319b7a172f4cfcbbbffdeedd3ffef93ef5b0e2d2146ffff4fdbb1fbf7ffbe7dfffebaf
+5f3bb4f7393a33e1339260e13dc297de5396c0021dfcf119bf9ec42c46c494e8a791402952b338f48f656ca11f6d10450edc00db767cce21d5b880f7d72f2cc2
+d398af2571687c182716f094313a60dc6985876a2ec3ccb3751ab927e76b13f714a10bd7dc43945a5e1eaf579063894be530c616cd2714a5124538c5d253dfb1
+738c1dabfb8210cbaea764ce99604be97d41bc01224e93ccc899154da5d03149c02f1b1741f0b7659bd3e7de8051d7aa47f8c246c2de40d4417e86a965c6fb68
+2d51e252394309350d7e8264ec2239ddf0b9891b0b099e8e3065de78818570c93ce6b05ec3e90f21cdb8dd7e4a37898de4929cbb749e20c64ce4889d0f6394ac
+5cd829496313fbb938871045de13265df05366ef10f50e7e40e941773f27d872f787b3c133c8b026a53240d4376beef0e57dccacf89d6ee8126157aae9f3c44a
+b17d4e9cd131584756689f604cd1255a60ec3dfbdcc160c05696cd4bd20f62c82ac7d815580f901dabea3dc5027a25d5dcece7c91322ac909de2881de073bad9
+493c1b9426881fd2fc08bc6eda7c0ca52e7105c0633a3f37818f08f480102f4ea33c16a0c308ee835a9fc4c82a60ea5db8e375c32dff5d658fc1be7c61d1b8c2
+be04197c6d1948eca6cc7b6d3343d49aa00c9819822ec3956e41c4727f29a28aab165b3be596f6a62ddd00dd91d5f42424fd6007b4d3fb84ffbbde073a8cb77f
+f9c6b10f3e4ebfe3566c25ab6b763a8792c9f14e7f7308b7dbd50c195f904fbfa919a175fa04431dd9cf58b73dcd6d4fe3ffdff73487f6f36d2773a8dfb8ed64
+7ce8306e3b99fc70e5e3743265f3027d8d3af0c80e7af4b14f72f0d46749289dca0dc527421ffc08f83db398c0a092d3279eb838055cc5f0a8ca1c4c60e1228e
+b48cc799fc0d91f134462b381daafb4a492472d591f0564cc0a1911e76ea5678ba4e4ed9223becacd7d5c16656590592e5782d2cc6e1a04a66e856bb3cc02bd4
+6bb6913e68dd1250b2d721614c6693683a48b4b783ca48fa58178ce620a157f65158741d2c3a4afdd6557b2c805ae115f8c1edc1cff49e1f06200242701e07cd
+f942f92973f5d6bbda991fd3d3878c69450034d8db08283ddd555c0f2e4fad2e0bb52b78da2261849b4d425b46377822869fc17974aad1abd0b8aeafbba54b2d
+7aca147a3e08ad9246bbf33e1637f535c8ede6069a9a9982a6de65cf6f35430899395af5fc251c1ac363b282d811ea3717a211dcbccc25cf36fc4d32cb8a0b39
+4222ce0cae934e960d122231f728497abe5a7ee1069aea1ca2b9d51b90103e59725d482b9f1a3970baed64bc5ce2b934dd6e8c284b67af90e1b35ce1fc568bdf
+1cac24d91adc3d8d1797de195df3a708422c6cd795011744c0dd413db3e682c0655891c8caf8db294c79da356fa3740c65e388ae62945714339967709dca0b3a
+faadb081f196af190c6a98242f8467912ab0a651ad6a5a548d8cc3c1aafb6121653923699635d3ca2aaa6abab39835c3b60cecd8f26645de60b53531e434b3c2
+67a97b37e576b7b96ea74f28aa0418bcb09fa3ea5ea12018d4cac92c6a8af17e1a56393b1fb56bc776811fa07695226164fdd656ed8edd8a1ae19c0e066f54f9
+416e376a6168b9ed2bb5a5f5adb979b1cdce5e40f2184197bba6526857c2c92e47d0104d754f92a50dd8222f65be35e0c95b73d2f3bfac85fd60d80887955a27
+1c57826650ab74c27eb3d20fc3667d1cd66ba341e31514161927f530bbb19fc00506dde4f7f67a7cefee3ed9ded1dc99b3a4caf4dd7c5513d777f7f5c6e1bb7b
+8f40d2f9b2d598749bdd41abd26df627956034e854bac3d6a0326a0ddba3c9681876ba9357be77a1c141bf390c5ae34ea5551f0e2b41aba6e877ba9576d068f4
+8376bf330efaaff23606569ea58fdc16605ecdebde7f010000ffff0300504b0304140006000800000021000dd1909fb60000001b010000270000007468656d65
+2f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73848f4d0ac2301484f78277086f6fd3ba109126dd88d0add40384e4350d36
+3f2451eced0dae2c082e8761be9969bb979dc9136332de3168aa1a083ae995719ac16db8ec8e4052164e89d93b64b060828e6f37ed1567914b284d262452282e
+3198720e274a939cd08a54f980ae38a38f56e422a3a641c8bbd048f7757da0f19b017cc524bd62107bd5001996509affb3fd381a89672f1f165dfe514173d985
+0528a2c6cce0239baa4c04ca5bbabac4df000000ffff0300504b01022d0014000600080000002100e9de0fbfff0000001c020000130000000000000000000000
+0000000000005b436f6e74656e745f54797065735d2e786d6c504b01022d0014000600080000002100a5d6a7e7c0000000360100000b00000000000000000000
+000000300100005f72656c732f2e72656c73504b01022d00140006000800000021006b799616830000008a0000001c0000000000000000000000000019020000
+7468656d652f7468656d652f7468656d654d616e616765722e786d6c504b01022d0014000600080000002100b6f4679893070000c92000001600000000000000
+000000000000d60200007468656d652f7468656d652f7468656d65312e786d6c504b01022d00140006000800000021000dd1909fb60000001b01000027000000
+000000000000000000009d0a00007468656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73504b050600000000050005005d010000980b00000000}
+{\*\colorschememapping 3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d22796573223f3e0d0a3c613a636c724d
+617020786d6c6e733a613d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f64726177696e676d6c2f323030362f6d6169
+6e22206267313d226c743122207478313d22646b3122206267323d226c743222207478323d22646b322220616363656e74313d22616363656e74312220616363
+656e74323d22616363656e74322220616363656e74333d22616363656e74332220616363656e74343d22616363656e74342220616363656e74353d22616363656e74352220616363656e74363d22616363656e74362220686c696e6b3d22686c696e6b2220666f6c486c696e6b3d22666f6c486c696e6b222f3e}
+{\*\latentstyles\lsdstimax376\lsdlockeddef0\lsdsemihiddendef0\lsdunhideuseddef0\lsdqformatdef0\lsdprioritydef99{\lsdlockedexcept \lsdqformat1 \lsdpriority0 \lsdlocked0 Normal;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 1;
+\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 2;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 3;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 4;
+\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 5;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 6;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 7;
+\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 8;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 9;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 1;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 5;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 6;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 7;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 8;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 9;
+\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 1;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 2;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 3;
+\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 4;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 5;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 6;
+\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 7;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 8;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 9;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal Indent;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footnote text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 header;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footer;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index heading;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority35 \lsdlocked0 caption;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 table of figures;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 envelope address;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 envelope return;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footnote reference;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation reference;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 line number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 page number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 endnote reference;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 endnote text;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 table of authorities;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 macro;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 toa heading;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 3;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 3;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 3;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 5;\lsdqformat1 \lsdpriority10 \lsdlocked0 Title;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Closing;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Signature;\lsdsemihidden1 \lsdunhideused1 \lsdpriority1 \lsdlocked0 Default Paragraph Font;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 4;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Message Header;\lsdqformat1 \lsdpriority11 \lsdlocked0 Subtitle;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Salutation;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Date;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text First Indent;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text First Indent 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Note Heading;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent 3;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Block Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Hyperlink;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 FollowedHyperlink;\lsdqformat1 \lsdpriority22 \lsdlocked0 Strong;
+\lsdqformat1 \lsdpriority20 \lsdlocked0 Emphasis;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Document Map;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Plain Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 E-mail Signature;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Top of Form;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Bottom of Form;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal (Web);\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Acronym;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Address;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Cite;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Code;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Definition;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Keyboard;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Preformatted;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Sample;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Typewriter;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Variable;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation subject;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 No List;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 1;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Balloon Text;\lsdpriority39 \lsdlocked0 Table Grid;
+\lsdsemihidden1 \lsdlocked0 Placeholder Text;\lsdqformat1 \lsdpriority1 \lsdlocked0 No Spacing;\lsdpriority60 \lsdlocked0 Light Shading;\lsdpriority61 \lsdlocked0 Light List;\lsdpriority62 \lsdlocked0 Light Grid;
+\lsdpriority63 \lsdlocked0 Medium Shading 1;\lsdpriority64 \lsdlocked0 Medium Shading 2;\lsdpriority65 \lsdlocked0 Medium List 1;\lsdpriority66 \lsdlocked0 Medium List 2;\lsdpriority67 \lsdlocked0 Medium Grid 1;\lsdpriority68 \lsdlocked0 Medium Grid 2;
+\lsdpriority69 \lsdlocked0 Medium Grid 3;\lsdpriority70 \lsdlocked0 Dark List;\lsdpriority71 \lsdlocked0 Colorful Shading;\lsdpriority72 \lsdlocked0 Colorful List;\lsdpriority73 \lsdlocked0 Colorful Grid;\lsdpriority60 \lsdlocked0 Light Shading Accent 1;
+\lsdpriority61 \lsdlocked0 Light List Accent 1;\lsdpriority62 \lsdlocked0 Light Grid Accent 1;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 1;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 1;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 1;
+\lsdsemihidden1 \lsdlocked0 Revision;\lsdqformat1 \lsdpriority34 \lsdlocked0 List Paragraph;\lsdqformat1 \lsdpriority29 \lsdlocked0 Quote;\lsdqformat1 \lsdpriority30 \lsdlocked0 Intense Quote;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 1;
+\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 1;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 1;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 1;\lsdpriority70 \lsdlocked0 Dark List Accent 1;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 1;
+\lsdpriority72 \lsdlocked0 Colorful List Accent 1;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 1;\lsdpriority60 \lsdlocked0 Light Shading Accent 2;\lsdpriority61 \lsdlocked0 Light List Accent 2;\lsdpriority62 \lsdlocked0 Light Grid Accent 2;
+\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 2;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 2;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 2;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 2;
+\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 2;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 2;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 2;\lsdpriority70 \lsdlocked0 Dark List Accent 2;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 2;
+\lsdpriority72 \lsdlocked0 Colorful List Accent 2;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 2;\lsdpriority60 \lsdlocked0 Light Shading Accent 3;\lsdpriority61 \lsdlocked0 Light List Accent 3;\lsdpriority62 \lsdlocked0 Light Grid Accent 3;
+\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 3;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 3;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 3;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 3;
+\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 3;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 3;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 3;\lsdpriority70 \lsdlocked0 Dark List Accent 3;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 3;
+\lsdpriority72 \lsdlocked0 Colorful List Accent 3;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 3;\lsdpriority60 \lsdlocked0 Light Shading Accent 4;\lsdpriority61 \lsdlocked0 Light List Accent 4;\lsdpriority62 \lsdlocked0 Light Grid Accent 4;
+\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 4;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 4;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 4;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 4;
+\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 4;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 4;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 4;\lsdpriority70 \lsdlocked0 Dark List Accent 4;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 4;
+\lsdpriority72 \lsdlocked0 Colorful List Accent 4;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 4;\lsdpriority60 \lsdlocked0 Light Shading Accent 5;\lsdpriority61 \lsdlocked0 Light List Accent 5;\lsdpriority62 \lsdlocked0 Light Grid Accent 5;
+\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 5;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 5;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 5;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 5;
+\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 5;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 5;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 5;\lsdpriority70 \lsdlocked0 Dark List Accent 5;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 5;
+\lsdpriority72 \lsdlocked0 Colorful List Accent 5;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 5;\lsdpriority60 \lsdlocked0 Light Shading Accent 6;\lsdpriority61 \lsdlocked0 Light List Accent 6;\lsdpriority62 \lsdlocked0 Light Grid Accent 6;
+\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 6;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 6;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 6;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 6;
+\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 6;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 6;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 6;\lsdpriority70 \lsdlocked0 Dark List Accent 6;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 6;
+\lsdpriority72 \lsdlocked0 Colorful List Accent 6;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 6;\lsdqformat1 \lsdpriority19 \lsdlocked0 Subtle Emphasis;\lsdqformat1 \lsdpriority21 \lsdlocked0 Intense Emphasis;
+\lsdqformat1 \lsdpriority31 \lsdlocked0 Subtle Reference;\lsdqformat1 \lsdpriority32 \lsdlocked0 Intense Reference;\lsdqformat1 \lsdpriority33 \lsdlocked0 Book Title;\lsdsemihidden1 \lsdunhideused1 \lsdpriority37 \lsdlocked0 Bibliography;
+\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority39 \lsdlocked0 TOC Heading;\lsdpriority41 \lsdlocked0 Plain Table 1;\lsdpriority42 \lsdlocked0 Plain Table 2;\lsdpriority43 \lsdlocked0 Plain Table 3;\lsdpriority44 \lsdlocked0 Plain Table 4;
+\lsdpriority45 \lsdlocked0 Plain Table 5;\lsdpriority40 \lsdlocked0 Grid Table Light;\lsdpriority46 \lsdlocked0 Grid Table 1 Light;\lsdpriority47 \lsdlocked0 Grid Table 2;\lsdpriority48 \lsdlocked0 Grid Table 3;\lsdpriority49 \lsdlocked0 Grid Table 4;
+\lsdpriority50 \lsdlocked0 Grid Table 5 Dark;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 1;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 1;
+\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 1;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 1;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 1;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 1;
+\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 1;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 2;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 2;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 2;
+\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 2;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 2;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 2;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 2;
+\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 3;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 3;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 3;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 3;
+\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 3;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 3;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 3;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 4;
+\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 4;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 4;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 4;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 4;
+\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 4;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 4;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 5;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 5;
+\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 5;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 5;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 5;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 5;
+\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 5;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 6;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 6;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 6;
+\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 6;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 6;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 6;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 6;
+\lsdpriority46 \lsdlocked0 List Table 1 Light;\lsdpriority47 \lsdlocked0 List Table 2;\lsdpriority48 \lsdlocked0 List Table 3;\lsdpriority49 \lsdlocked0 List Table 4;\lsdpriority50 \lsdlocked0 List Table 5 Dark;
+\lsdpriority51 \lsdlocked0 List Table 6 Colorful;\lsdpriority52 \lsdlocked0 List Table 7 Colorful;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 1;\lsdpriority47 \lsdlocked0 List Table 2 Accent 1;\lsdpriority48 \lsdlocked0 List Table 3 Accent 1;
+\lsdpriority49 \lsdlocked0 List Table 4 Accent 1;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 1;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 1;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 1;
+\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 2;\lsdpriority47 \lsdlocked0 List Table 2 Accent 2;\lsdpriority48 \lsdlocked0 List Table 3 Accent 2;\lsdpriority49 \lsdlocked0 List Table 4 Accent 2;
+\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 2;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 2;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 2;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 3;
+\lsdpriority47 \lsdlocked0 List Table 2 Accent 3;\lsdpriority48 \lsdlocked0 List Table 3 Accent 3;\lsdpriority49 \lsdlocked0 List Table 4 Accent 3;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 3;
+\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 3;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 3;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 4;\lsdpriority47 \lsdlocked0 List Table 2 Accent 4;
+\lsdpriority48 \lsdlocked0 List Table 3 Accent 4;\lsdpriority49 \lsdlocked0 List Table 4 Accent 4;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 4;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 4;
+\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 4;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 5;\lsdpriority47 \lsdlocked0 List Table 2 Accent 5;\lsdpriority48 \lsdlocked0 List Table 3 Accent 5;
+\lsdpriority49 \lsdlocked0 List Table 4 Accent 5;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 5;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 5;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 5;
+\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 6;\lsdpriority47 \lsdlocked0 List Table 2 Accent 6;\lsdpriority48 \lsdlocked0 List Table 3 Accent 6;\lsdpriority49 \lsdlocked0 List Table 4 Accent 6;
+\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 6;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 6;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 6;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Mention;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Smart Hyperlink;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Hashtag;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Unresolved Mention;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Smart Link;}}{\*\datastore 01050000
+02000000180000004d73786d6c322e534158584d4c5265616465722e362e3000000000000000000000060000
+d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff090006000000000000000000000001000000010000000000000000100000feffffff00000000feffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffdfffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffff0c6ad98892f1d411a65f0040963251e500000000000000000000000000bf
+4070e7f9d401feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000105000000000000}}
\ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..ef73523
--- /dev/null
+++ b/README.md
@@ -0,0 +1,194 @@
+# Jami-qt
+
+`jami-qt` is the cross platform client for Jami. For now, it's mainly used for the Windows platform and is not tested on other platforms.
+
+![jami-logo](images/logo-jami-standard-coul.png)
+
+
+For more information about the jami project, see the following:
+
+- Main website: https://jami.net/
+- Bug tracker: https://git.jami.net/
+- Repositories: https://gerrit-ring.savoirfairelinux.com
+
+## Building On Native Windows
+---
+
+Only 64-bit MSVC build can be compiled.
+
+> Note: command ```./make-ring.py --init``` is not required on the Windows build <br>
+
+**Setup Before Building:**
+- Download [Qt (Open Source)](https://www.qt.io/download-open-source?hsCtaTracking=9f6a2170-a938-42df-a8e2-a9f0b1d6cdce%7C6cb0de4f-9bb5-4778-ab02-bfb62735f3e5)<br>
+
+ | | Prebuild | Module |
+ |---|---|---|
+ | Components: | msvc2017_64 | Qt WebEngine |
+
+- Download [Visual Studio](https://visualstudio.microsoft.com/) (version >= 2015) <br>
+- Install Qt Vs Tools under extensions, and configure msvc2017_64 path under Qt Options <br>
+
+ | | Qt Version | SDK | Toolset |
+ |---|---|---|---|
+ | Minimum requirement: | 5.9.4 | 10.0.16299.0 | V141 |
+
+- Install [Python3](https://www.python.org/downloads/) for Windows
+
+**Start Building**
+- Using Command Prompt
+```sh
+ git clone https://review.jami.net/ring-project
+ cd ring-project/
+ git submodule update --init daemon lrc client-windows
+ git submodule update --recursive --remote daemon lrc client-windows
+```
+- Using **Elevated Command Prompt**
+```sh
+ python make-ring.py --dependencies
+```
+
+> Note:
+> 1. This command will install **chocolatey** which may require you to restart the Command Prompt to be able to use it.
+> 2. This command will install **msys2 (64 bit)** by using chocolatey command which may cause issues below: <br>
+> a. Choco may require you to restart the Command Prompt after finishing installing msys2. <br>
+> b. Only if you have already installed msys2 (64 bit) under the default installation folder, we will use the existing one.
+> 3. This command will install **strawberry perl** by using chocolatey command which may fail if you have already installed it.
+> 4. This command will install **cmake** by using chocolatey command which will not add cmake into PATH (environment variable). <br>
+>
+> The issue 1, 2(a), 3 can be solved by restarting the Command Prompt under Administrator right and re-run the command. <br>
+> The issue 3 can be solved by uninstalling your current strawberry perl and re-run the command. <br>
+> The issue 4 can be solved by adding the location of the cmake.exe into PATH. <br>
+
+- Using a new **Non-Elevated Command Prompt**
+```sh
+ python make-ring.py --install
+```
+- Then you should be able to use the Visual Studio Solution file in client-windows folder **(Configuration = Release, Platform = x64)**
+
+> Note: <br>
+> To control the toolset and the sdk version that are used by msbuild, you can use ```--toolset``` and ```--sdk``` options <br>
+> To control which Qt version should be used (qmake, windeployqt), uou can use ```--qtver``` option <br>
+> By default: ```toolset=v141```, ```sdk=10.0.16299.0```, ```qtver=5.9.4``` <br>
+> For example:
+```sh
+ python make-ring.py --install --toolset v142 --sdk 10.0.18362.0 --qtver 5.12.0
+```
+
+### Build Module individually
+---
+
+- Jami-qt also support building each module (daemon, lrc, jami-qt) seperately
+
+**Daemon**
+
+- Make sure that dependencies is built by make-ring.py
+- On MSVC folder (ring-project\daemon\MSVC):
+```sh
+ cmake -DCMAKE_CONFIGURATION_TYPES="ReleaseLib_win32" -DCMAKE_VS_PLATFORM_NAME="x64" -G "Visual Studio 16 2019" -A x64 -T '$(DefaultPlatformToolset)' ..
+ python winmake.py -b daemon
+```
+- This will generate a ```.lib``` file in the path of ring-project\daemon\MSVC\x64\ReleaseLib_win32\bin
+
+> Note: each dependencies contrib for daemon can also be updated individually <br>
+> For example:
+```bash
+ python winmake.py -b opendht
+```
+
+**Lrc**
+
+- Make sure that daemon is built first
+
+```bash
+ cd lrc
+ python make-lrc.py -gb
+```
+
+**Jami-qt**
+
+- Make sure that daemon, lrc are built first
+
+```bash
+ cd client-windows
+ pandoc -f markdown -t html5 -o changelog.html changelog.md
+ python make-client.py -d
+ python make-client.py -b
+ powershell -ExecutionPolicy Unrestricted -File copy-runtime-files.ps1
+```
+
+**Note**
+- For all python scripts, both ```--toolset``` and ```--sdk``` options are available.
+- For more available options, run scripts with ```-h``` option.
+- ```--qtver``` option is available on ```make-lrc.py``` and ```make-client.py```.
+
+## Packaging On Native Windows
+---
+
+- To be able to generate a msi package, first download and install [Wixtoolset](https://wixtoolset.org/releases/).
+- In Visual Studio, download WiX Toolset Visual Studio Extension.
+- Build client-windows project first, then the JamiInstaller project, msi package should be stored in ring-project\client-windows\JamiInstaller\bin\Release
+
+## Linux
+---
+
+> For now, this process is experimental.
+
+- LibRing and LibRingClient
+must be installed first. If you have not already done so, go to the
+[\#How to Build LibRing (or
+Daemon)](#How_to_Build_LibRing_(or_Daemon) "wikilink") and [\#How to
+Build LibRingClient (or
+LRC)](#How_to_Build_LibRingClient_(or_LRC) "wikilink") sections.
+- Building the whole ring-project is recommended, however, lrc might need to be rebuilt with cmake option ```-DCMAKE_INSTALL_PREFIX=/usr```
+
+#### Other Requirements
+
+- Qt 5.9.4 (qt open source)
+- libqt5svg*, qtwebengine5-dev, qtmultimedia5-dev, qtdeclarative5-dev, pandoc
+
+#### Getting the Source Code
+
+```bash
+ git clone https://review.jami.net/ring-client-windows
+```
+
+#### Build Instructions
+
+**Windows Client dependencies**
+
+- For Debian based:
+```bash
+ sudo apt install qtmultimedia5-dev libqt5svg5* qtwebengine5-dev qtdeclarative5-dev qtquickcontrols2-5-dev qml-module-qtquick* pandoc
+```
+- For Fedora:
+```bash
+ sudo dnf install qt5-qtsvg-devel qt5-qtwebengine-devel qt5-qtmultimedia-devel qt5-qtdeclarative-devel qt5-qtquickcontrols2-devel pandoc
+```
+
+**Build Windows Client**
+
+```bash
+ cd ring-client-windows
+ pandoc -f markdown -t html5 -o changelog.html changelog.md
+ mkdir build
+ cd build
+ qmake -qt=qt5 ../jami-qt.pro
+ make -j9
+```
+- Then, you are finally ready to launch jami-qt in your build directory.
+
+#### Debugging
+
+Compile the client with `BUILD=Debug` and compile LibRingClient with
+`-DCMAKE_BUILD_TYPE=Debug`
+
+#### Known issues
+
+1. The build system is not straight forward
+2. Video doesn't work
+3. Can't maximize/minimize window
+4. Crash if the daemon is not started and installed.
+
+## Mac OS
+---
+TBD
diff --git a/changelog.md b/changelog.md
new file mode 100644
index 0000000..63ae7d9
--- /dev/null
+++ b/changelog.md
@@ -0,0 +1,203 @@
+# 2020-03-16
+
+## Bug Fixes
+
++ Fixed the bug that the system notification cannot be disabled
++ Fixed video device enumeration for higher framerates
++ More reliable high dpi adaption
++ Prevent crash when video device events happen with no account
+
+## New Features
+
++ Add type indicator
++ Movable splitter in main view
++ Connectivity improvement for calls and messages
+
+# 2019-12-13
+
+## Bug Fixes
+
++ Fixed the bug that caused lag on call overlay
++ Fixed a typo on about dialog
+
+## New Features
+
++ Add various useful shortcuts
+
+# 2019-11-20
+
+## Bug Fixes
+
++ Fixed bug that prevented pasting multiline text into chat
+
+## New Features
+
++ Calls now automatically un-hold when the conversation is selected
++ SIP dialpad now has A,B,C,D dtmf options
+
+# 2019-11-19
+
+## Bug Fixes
+
++ Fixed notifications popping up for outgoing calls
++ Removing conference participant selects a remaining participant conversation
+
+# 2019-11-15
+
+## Notes
+
+Change version name to 'Free as in Freedom'
+Linux: ffmpeg now embedded in official package for auto bitrate + hardware acceleration
+
+## Features
+
++ callview: rework conference ui ([#1052](https://git.jami.net/savoirfairelinux/ring-client-gnome/issues/1052))
++ JAMS: support login to an account manager
++ wizard: re-work account creation
++ chatview: add video recorder
++ chatview: add audio recorder
++ conversation: automatically accepts < 20Mb files
++ video: auto adapt bitrate
++ Beta version
++ Change logs
++ Save draft text messages
+
+## Bugfixes
+
++ Fix multiple crash with SIP accounts
++ Fix DTMF for SIP
++ chatview: show generated avatar into the chatview ([#947](https://git.jami.net/savoirfairelinux/ring-client-gnome/issues/947))
++ Fix account migration
++ Fix alignment in settings view
++ call: handle PEER_BUSY state
++ lrc: fix clearAllHistory
++ avmodel: sort framerates
++ sip: fix temporary item removal
++ avmodel: getCurrentRenderedDevice support conferences
++ upnp: now async
++ some deadlocks are fixed
++ some segfault are fixed
++ sip_transport: avoid PJ_ENOTSUITABLE when ipv4<->ipv6
++ sipcall: fix rotation
++ ffmpeg: handle ebusy when opening devices
++ file transfer: fix cancel
++ conference: fix color inversion during conferences
++ lan: improve pjsip behavior in a LAN
++ [trustrequests: handle removed contacts](https://git.jami.net/savoirfairelinux/ring-daemon/issues/129)
++ dbus: only authorize one daemon per DBUS_SESSION_BUS_ADDRESS
++ Fixed crash when user has no account
++ Fixed display name changes not saving
++ Fixed not being able to change back to camera from screen share
++ Fixed utf-8 handling on display names
+
+## Internal changes
+
++ chatview code is now in LRC and shared with the desktop clients
++ database: migrate to per account database
++ avmodel: optionally switchInput using a callId
++ video sender: send only 1 keyframe at start
++ contrib: various bump (opendht, upnp, ffmpeg, etc)
++ p2p: use one IceTransport by sub transfer
++ decoder: set fpsprobesize, use default probesize
++ ice: enable aggressive nomination to avoid latencies
++ accel: remove libdrm code
++ sipvoiplink: remove wait for completed transactions in dtor
++ Remove some thread creations
++ replace restbed by restinio
++ namedirectory: don't create temporary items during lookup
++ file transfer: use different ice for each transfer
++ manager: allow switchInput on conference
+
+
+# 2019-08-24
+
+## Features
+
++ [Erase data securely before removing account](https://git.jami.net/savoirfairelinux/ring-daemon/issues/60)
++ [Negotiate calls in TCP and UDP and prefer TCP if necessary](https://git.jami.net/savoirfairelinux/ring-daemon/issues/103)
++ Improve negotiation for p2p file transfer
++ Auto change the video quality
++ Add hardware acceleration support for NVidia
++ SIP fix SMS issues
+
+## Bugfixes
+
++ Improve connectivityChange detection and account switching.
++ Translate strings from daemon.
++ Sort resolutions by width
++ [Sort conversations when clearing history](https://git.jami.net/savoirfairelinux/ring-lrc/issues/411)
++ Fix subscriptions for new contacts
++ Hangup if contact is deleted
++ [Various deadlocks](https://git.jami.net/savoirfairelinux/ring-daemon/issues/120)
+
+## Internal changes
+
++ LRC remove unused code
++ Change from enableAccount() to setAccountEnabled()
++ Update msgpack, gnutls, opendht
++ Rewrite code for UPnP support
+
+# 2019-06-20
+
+## Bugfixes
+
++ Improve name registration errors detection
++ Improve SIP text/plain detection
++ Fix temporary item when copy/paste a full ring id
++ SIP: Fix online status
++ [Fix audio recorder](https://git.jami.net/savoirfairelinux/ring-daemon/issues/95)
++ Fix some deadlocks
++ [Fix calls via TURN](https://git.jami.net/savoirfairelinux/ring-daemon/issues/105)
++ [Fix multi devices support for calls](https://git.jami.net/savoirfairelinux/ring-daemon/issues/120)
+
+
+## Internal changes
+
++ Cleanup daemon side
++ Update restbed
++ Update opendht to 1.9.5
++ [Improve UPnP implementation](https://git.jami.net/savoirfairelinux/ring-daemon/issues/96)
++ Increase default video bitrate
+
+# 2019-05-16
+
+## Features
+
++ [Add peer to peer file transfer support](https://git.jami.net/savoirfairelinux/ring-project/issues/486)
++ Advanced settings: add DHT peer discovery support
++ Media Settings: add hardware acceleration support
++ [UPnP add TCP mapping support](https://git.jami.net/savoirfairelinux/ring-daemon/issues/86)
+
+## Bugfixes
+
++ Name registration: better handling for wrong archive password
++ tls_session: close transport after cleanup
++ sip: check message utf8 validity before emitting signal
+
+## Internal changes
+
++ Bump OpenDHT to 1.9.4
++ Bump GNUTls to 3.6.7
++ Bump Pjsip to (6b9212dcb4b3f781c1e922ae544b063880bc46ac + patches)
++ Internal renaming from Ring to Jami
++ Use new methods from LRC
++ Fix some data races
++ dring/dbus: unregister signals on exit
+
+# 2019-04-12
+
+## Features
+
++ (Not linked to the UI for now) Hardware encoding support
+
+## Bugfixes
+
++ Sets up video streams upon receiving the first video frame.
++ Pulseaudio: start streams when ready
+
+## Internal changes
+
++ Continue name migration, change data locations, binary names and methods names.
++ Nettle 3.4.1 is now required
++ Support video rotation when recording
++ Some code clean
\ No newline at end of file
diff --git a/copy-runtime-files.ps1 b/copy-runtime-files.ps1
new file mode 100644
index 0000000..4db5853
--- /dev/null
+++ b/copy-runtime-files.ps1
@@ -0,0 +1,99 @@
+[cmdletbinding()]
+param (
+ [string]$mode,
+ [string]$qtver,
+ [string]$daemonDir,
+ [string]$lrcDir
+);
+
+write-host "Copying runtime files..." -ForegroundColor Green
+
+# default values
+$qtver = If ($qtver) {$qtver} Else {"5.9.4"}
+$mode = If ($mode) {$mode} Else {"Release"}
+
+$qtverSplit1, $qtverSplit2 ,$qtverSplit3 = $qtver.Split('.')
+$qtMsvcDir = If((([int]$qtverSplit1) -ge 6) -OR ( (([int]$qtverSplit1) -eq 5) -AND (([int]$qtverSplit2) -ge 15))){"msvc2019_64"} Else{"msvc2017_64"}
+
+$QtDir = "C:\Qt\$qtver\$qtMsvcDir"
+
+$ClientDir = split-path -parent $MyInvocation.MyCommand.Definition
+
+$OutDir = $ClientDir + "\x64\" + $mode
+If(!(test-path $OutDir)) { New-Item -ItemType directory -Path $OutDir -Force }
+
+if (!$daemonDir) { $daemonDir = $ClientDir + '\..\daemon' }
+if (!$lrcDir) { $lrcDir = $ClientDir + '\..\lrc' }
+
+write-host "********************************************************************************" -ForegroundColor Magenta
+write-host "using daemonDir: " $daemonDir -ForegroundColor Magenta
+write-host "using lrcDir: " $lrcDir -ForegroundColor Magenta
+write-host "using QtDir: " $QtDir -ForegroundColor Magenta
+write-host "********************************************************************************" -ForegroundColor Magenta
+
+# dependency bin files and misc
+$FilesToCopy = @(
+ "$daemonDir\contrib\build\ffmpeg\Build\win32\x64\bin\avcodec-58.dll",
+ "$daemonDir\contrib\build\ffmpeg\Build\win32\x64\bin\avutil-56.dll",
+ "$daemonDir\contrib\build\ffmpeg\Build\win32\x64\bin\avformat-58.dll",
+ "$daemonDir\contrib\build\ffmpeg\Build\win32\x64\bin\avdevice-58.dll",
+ "$daemonDir\contrib\build\ffmpeg\Build\win32\x64\bin\swresample-3.dll",
+ "$daemonDir\contrib\build\ffmpeg\Build\win32\x64\bin\swscale-5.dll",
+ "$daemonDir\contrib\build\ffmpeg\Build\win32\x64\bin\avfilter-7.dll",
+ "$daemonDir\contrib\build\openssl\out32dll\libeay32.dll",
+ "$daemonDir\contrib\build\openssl\out32dll\ssleay32.dll",
+ "$ClientDir\qt.conf",
+ "$ClientDir\images\jami.ico",
+ "$ClientDir\License.rtf"
+ )
+foreach ($i in $FilesToCopy) {
+ write-host "copying: " $i " => " $OutDir -ForegroundColor Cyan
+ Copy-Item -Path $i -Recurse -Destination $OutDir -Force -Container
+}
+
+############
+# qt
+############
+$windeployqt = "$QtDir\bin\windeployqt.exe --qmldir $ClientDir\src --release $OutDir\Jami.exe"
+iex $windeployqt
+
+# ringtones
+$CopyDir = $OutDir + "\ringtones"
+If(!(test-path $CopyDir)) { New-Item -ItemType directory -Path $CopyDir -Force }
+$RingtonePath = "$ClientDir\..\daemon\ringtones"
+write-host "copying ringtones..."
+Get-ChildItem -Path $RingtonePath -Include *.ul, *.ogg, *.wav, *.opus -Recurse | ForEach-Object {
+ write-host "copying ringtone: " $_.FullName " => " $CopyDir -ForegroundColor Cyan
+ Copy-Item -Path $_.FullName -Destination $CopyDir -Force –Recurse
+}
+
+# qt translations
+$lrelease = "$QtDir\bin\lrelease.exe"
+
+# lrc translations
+$lrcTSPath = "$lrcDir\translations"
+Get-ChildItem -Path $lrcTSPath -Include *.ts -Recurse | ForEach-Object {
+ & $lrelease $_.FullName
+}
+$CopyDir = $OutDir + "\share\libringclient\translations"
+If(!(test-path $CopyDir)) { New-Item -ItemType directory -Path $CopyDir -Force }
+write-host "copying lrc translations..."
+Get-ChildItem -Path $lrcTSPath -Include *.qm -Recurse | ForEach-Object {
+ write-host "copying translation file: " $_.FullName " => " $CopyDir -ForegroundColor Cyan
+ Copy-Item -Path $_.FullName -Destination $CopyDir -Force –Recurse
+}
+
+# client translations
+$clientTSPath = "$ClientDir\translations"
+Get-ChildItem -Path $clientTSPath -Include *.ts -Recurse | ForEach-Object {
+ & $lrelease $_.FullName
+}
+$CopyDir = $OutDir + "\share\ring\translations"
+If(!(test-path $CopyDir)) { New-Item -ItemType directory -Path $CopyDir -Force }
+write-host "copying client translations..."
+Get-ChildItem -Path $clientTSPath -Include *.qm -Recurse | ForEach-Object {
+ write-host "copying translation file: " $_.FullName " => " $CopyDir -ForegroundColor Cyan
+ Copy-Item -Path $_.FullName -Destination $CopyDir -Force –Recurse
+}
+
+write-host "copy completed" -NoNewline -ForegroundColor Green
\ No newline at end of file
diff --git a/ico.rc b/ico.rc
new file mode 100644
index 0000000..ad48aa5
--- /dev/null
+++ b/ico.rc
@@ -0,0 +1 @@
+IDI_ICON1 ICON DISCARDABLE "images/jami.ico"
diff --git a/images/FontAwesome.otf b/images/FontAwesome.otf
new file mode 100644
index 0000000..401ec0f
--- /dev/null
+++ b/images/FontAwesome.otf
Binary files differ
diff --git a/images/ajax-loader.gif b/images/ajax-loader.gif
new file mode 100644
index 0000000..f2a1bc0
--- /dev/null
+++ b/images/ajax-loader.gif
Binary files differ
diff --git a/images/default_avatar_overlay.svg b/images/default_avatar_overlay.svg
new file mode 100644
index 0000000..43cf56b
--- /dev/null
+++ b/images/default_avatar_overlay.svg
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="256"
+ height="256"
+ viewBox="0 0 67.733332 67.733335"
+ version="1.1"
+ id="svg8"
+ inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
+ sodipodi:docname="default-avatar-overlay.svg">
+ <defs
+ id="defs2">
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath4585">
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g4581"
+ id="use4587"
+ width="100%"
+ height="100%" />
+ </clipPath>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.35355339"
+ inkscape:cx="-26.542885"
+ inkscape:cy="616.24668"
+ inkscape:document-units="mm"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ showguides="false"
+ inkscape:window-width="766"
+ inkscape:window-height="802"
+ inkscape:window-x="761"
+ inkscape:window-y="1080"
+ inkscape:window-maximized="1"
+ objecttolerance="10000"
+ gridtolerance="10000"
+ guidetolerance="10000"
+ inkscape:snap-perpendicular="true"
+ inkscape:snap-path-clip="true"
+ inkscape:snap-path-mask="true"
+ inkscape:snap-tangential="true"
+ units="px">
+ <inkscape:grid
+ type="xygrid"
+ id="grid49"
+ dotted="false" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata5">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-229.26664)">
+ <g
+ id="g4583"
+ clip-path="url(#clipPath4585)"
+ transform="translate(0,1.361667)"
+ style="fill:#ffffff;fill-opacity:1">
+ <g
+ inkscape:label="Clip"
+ id="g4581"
+ style="fill:#ffffff;fill-opacity:1">
+ <circle
+ r="11.287793"
+ style="fill:#ffffff;fill-opacity:1;stroke-width:0.907561"
+ cy="247.00398"
+ cx="33.866665"
+ id="path47" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path47-4"
+ d="m 33.866661,265.24997 a 21.903016,11.287794 0 0 0 -21.89152,11.16564 28.448986,31.582552 0 0 0 21.279011,11.39488 21.903016,11.287794 0 0 0 0.612509,0.0166 21.903016,11.287794 0 0 0 0.763088,-0.0133 28.448986,31.582552 0 0 0 21.128443,-11.42739 21.903016,11.287794 0 0 0 -21.891531,-11.13482 z"
+ style="fill:#ffffff;fill-opacity:1;stroke-width:1.26422167" />
+ </g>
+ </g>
+ </g>
+</svg>
diff --git a/images/icons/av_icons/delete-24px.svg b/images/icons/av_icons/delete-24px.svg
new file mode 100644
index 0000000..47e4e30
--- /dev/null
+++ b/images/icons/av_icons/delete-24px.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z" fill="white"/><path d="M0 0h24v24H0z" fill="none"/></svg>
\ No newline at end of file
diff --git a/images/icons/av_icons/fiber_manual_record-24px.svg b/images/icons/av_icons/fiber_manual_record-24px.svg
new file mode 100644
index 0000000..7ba3488
--- /dev/null
+++ b/images/icons/av_icons/fiber_manual_record-24px.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="none" d="M24 24H0V0h24v24z"/><circle fill="#ff0000" cx="12" cy="12" r="8"/></svg>
\ No newline at end of file
diff --git a/images/icons/av_icons/mic-24px.svg b/images/icons/av_icons/mic-24px.svg
new file mode 100644
index 0000000..033bdee
--- /dev/null
+++ b/images/icons/av_icons/mic-24px.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M12 14c1.66 0 2.99-1.34 2.99-3L15 5c0-1.66-1.34-3-3-3S9 3.34 9 5v6c0 1.66 1.34 3 3 3zm5.3-3c0 3-2.54 5.1-5.3 5.1S6.7 14 6.7 11H5c0 3.41 2.72 6.23 6 6.72V21h2v-3.28c3.28-.48 6-3.3 6-6.72h-1.7z" fill="white"/><path d="M0 0h24v24H0z" fill="none"/></svg>
\ No newline at end of file
diff --git a/images/icons/av_icons/pause-24px.svg b/images/icons/av_icons/pause-24px.svg
new file mode 100644
index 0000000..a82cdb6
--- /dev/null
+++ b/images/icons/av_icons/pause-24px.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M6 19h4V5H6v14zm8-14v14h4V5h-4z" fill="white"/><path d="M0 0h24v24H0z" fill="none"/></svg>
\ No newline at end of file
diff --git a/images/icons/av_icons/play_circle_outline-24px.svg b/images/icons/av_icons/play_circle_outline-24px.svg
new file mode 100644
index 0000000..bfba42d
--- /dev/null
+++ b/images/icons/av_icons/play_circle_outline-24px.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M0 0h24v24H0z" fill="none"/><path d="M10 16.5l6-4.5-6-4.5v9zM12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z" fill="white"/></svg>
\ No newline at end of file
diff --git a/images/icons/av_icons/re-record-24px.svg b/images/icons/av_icons/re-record-24px.svg
new file mode 100644
index 0000000..db13333
--- /dev/null
+++ b/images/icons/av_icons/re-record-24px.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M0 0h24v24H0z" fill="none"/><path d="M12 5V1L7 6l5 5V7c3.31 0 6 2.69 6 6s-2.69 6-6 6-6-2.69-6-6H4c0 4.42 3.58 8 8 8s8-3.58 8-8-3.58-8-8-8z" fill="white"/></svg>
\ No newline at end of file
diff --git a/images/icons/av_icons/send-24px.svg b/images/icons/av_icons/send-24px.svg
new file mode 100644
index 0000000..a90777f
--- /dev/null
+++ b/images/icons/av_icons/send-24px.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M2.01 21L23 12 2.01 3 2 10l15 2-15 2z" fill="white"/><path d="M0 0h24v24H0z" fill="none"/></svg>
\ No newline at end of file
diff --git a/images/icons/av_icons/stop-24px-red.svg b/images/icons/av_icons/stop-24px-red.svg
new file mode 100644
index 0000000..1ec9ca9
--- /dev/null
+++ b/images/icons/av_icons/stop-24px-red.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M0 0h24v24H0z" fill="none"/><path d="M6 6h12v12H6z" fill="#ff0000"/></svg>
\ No newline at end of file
diff --git a/images/icons/av_icons/stop-24px.svg b/images/icons/av_icons/stop-24px.svg
new file mode 100644
index 0000000..7d18eed
--- /dev/null
+++ b/images/icons/av_icons/stop-24px.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M0 0h24v24H0z" fill="none"/><path d="M6 6h12v12H6z" fill="#ffffff"/></svg>
\ No newline at end of file
diff --git a/images/icons/baseline-camera_alt-24px.svg b/images/icons/baseline-camera_alt-24px.svg
new file mode 100644
index 0000000..8347964
--- /dev/null
+++ b/images/icons/baseline-camera_alt-24px.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><circle cx="12" cy="12" r="3.2"/><path d="M9 2L7.17 4H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2h-3.17L15 2H9zm3 15c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5z"/><path d="M0 0h24v24H0z" fill="none"/></svg>
\ No newline at end of file
diff --git a/images/icons/baseline-close-24px.svg b/images/icons/baseline-close-24px.svg
new file mode 100644
index 0000000..dea8678
--- /dev/null
+++ b/images/icons/baseline-close-24px.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/><path d="M0 0h24v24H0z" fill="none"/></svg>
\ No newline at end of file
diff --git a/images/icons/baseline-desktop_windows-24px.svg b/images/icons/baseline-desktop_windows-24px.svg
new file mode 100644
index 0000000..f56c475
--- /dev/null
+++ b/images/icons/baseline-desktop_windows-24px.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M0 0h24v24H0z" fill="none"/><path d="M21 2H3c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h7v2H8v2h8v-2h-2v-2h7c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H3V4h18v12z"/></svg>
\ No newline at end of file
diff --git a/images/icons/baseline-done-24px.svg b/images/icons/baseline-done-24px.svg
new file mode 100644
index 0000000..8790bcc
--- /dev/null
+++ b/images/icons/baseline-done-24px.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M9 16.2L4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4L9 16.2z"/></svg>
\ No newline at end of file
diff --git a/images/icons/baseline-error_outline-24px.svg b/images/icons/baseline-error_outline-24px.svg
new file mode 100644
index 0000000..39062fa
--- /dev/null
+++ b/images/icons/baseline-error_outline-24px.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0V0z"/><path d="M11 15h2v2h-2zm0-8h2v6h-2zm.99-5C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"/></svg>
\ No newline at end of file
diff --git a/images/icons/baseline-people-24px.svg b/images/icons/baseline-people-24px.svg
new file mode 100644
index 0000000..6bcb859
--- /dev/null
+++ b/images/icons/baseline-people-24px.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M0 0h24v24H0z" fill="none"/><path d="M16 11c1.66 0 2.99-1.34 2.99-3S17.66 5 16 5c-1.66 0-3 1.34-3 3s1.34 3 3 3zm-8 0c1.66 0 2.99-1.34 2.99-3S9.66 5 8 5C6.34 5 5 6.34 5 8s1.34 3 3 3zm0 2c-2.33 0-7 1.17-7 3.5V19h14v-2.5c0-2.33-4.67-3.5-7-3.5zm8 0c-.29 0-.62.02-.97.05 1.16.84 1.97 1.97 1.97 3.45V19h6v-2.5c0-2.33-4.67-3.5-7-3.5z"/></svg>
\ No newline at end of file
diff --git a/images/icons/baseline-refresh-24px.svg b/images/icons/baseline-refresh-24px.svg
new file mode 100644
index 0000000..f1ad30d
--- /dev/null
+++ b/images/icons/baseline-refresh-24px.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M17.65 6.35C16.2 4.9 14.21 4 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08c-.82 2.33-3.04 4-5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z"/><path d="M0 0h24v24H0z" fill="none"/></svg>
\ No newline at end of file
diff --git a/images/icons/extension_24dp.svg b/images/icons/extension_24dp.svg
new file mode 100644
index 0000000..057bf7f
--- /dev/null
+++ b/images/icons/extension_24dp.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24px" height="24px">
+ <path d="M20.5 11H19V7c0-1.1-.9-2-2-2h-4V3.5C13 2.12 11.88 1 10.5 1S8 2.12 8 3.5V5H4c-1.1 0-1.99.9-1.99 2v3.8H3.5c1.49 0 2.7 1.21 2.7 2.7s-1.21 2.7-2.7 2.7H2V20c0 1.1.9 2 2 2h3.8v-1.5c0-1.49 1.21-2.7 2.7-2.7s2.7 1.21 2.7 2.7V22H17c1.1 0 2-.9 2-2v-4h1.5c1.38 0 2.5-1.12 2.5-2.5S21.88 11 20.5 11z"/>
+ <path d="M0 0h24v24H0V0z" fill="none"/>
+</svg>
\ No newline at end of file
diff --git a/images/icons/ic_add_black_18dp_2x.png b/images/icons/ic_add_black_18dp_2x.png
new file mode 100644
index 0000000..6f33be6
--- /dev/null
+++ b/images/icons/ic_add_black_18dp_2x.png
Binary files differ
diff --git a/images/icons/ic_arrow_back_24px.svg b/images/icons/ic_arrow_back_24px.svg
new file mode 100644
index 0000000..3a735d8
--- /dev/null
+++ b/images/icons/ic_arrow_back_24px.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M0 0h24v24H0z" fill="none"/><path d="M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z"/></svg>
\ No newline at end of file
diff --git a/images/icons/ic_arrow_back_white_24dp.png b/images/icons/ic_arrow_back_white_24dp.png
new file mode 100644
index 0000000..ce5b878
--- /dev/null
+++ b/images/icons/ic_arrow_back_white_24dp.png
Binary files differ
diff --git a/images/icons/ic_arrow_drop_down_black_18dp_2x.png b/images/icons/ic_arrow_drop_down_black_18dp_2x.png
new file mode 100644
index 0000000..ec71509
--- /dev/null
+++ b/images/icons/ic_arrow_drop_down_black_18dp_2x.png
Binary files differ
diff --git a/images/icons/ic_arrow_drop_down_black_9dp_2x.png b/images/icons/ic_arrow_drop_down_black_9dp_2x.png
new file mode 100644
index 0000000..9ccea13
--- /dev/null
+++ b/images/icons/ic_arrow_drop_down_black_9dp_2x.png
Binary files differ
diff --git a/images/icons/ic_arrow_drop_up_black_18dp_2x.png b/images/icons/ic_arrow_drop_up_black_18dp_2x.png
new file mode 100644
index 0000000..65b14e0
--- /dev/null
+++ b/images/icons/ic_arrow_drop_up_black_18dp_2x.png
Binary files differ
diff --git a/images/icons/ic_arrow_drop_up_black_9dp_2x.png b/images/icons/ic_arrow_drop_up_black_9dp_2x.png
new file mode 100644
index 0000000..7c31976
--- /dev/null
+++ b/images/icons/ic_arrow_drop_up_black_9dp_2x.png
Binary files differ
diff --git a/images/icons/ic_arrow_forward_white_48dp_2x.png b/images/icons/ic_arrow_forward_white_48dp_2x.png
new file mode 100644
index 0000000..5e93f88
--- /dev/null
+++ b/images/icons/ic_arrow_forward_white_48dp_2x.png
Binary files differ
diff --git a/images/icons/ic_arrow_tab_next_black_9dp_2x.png b/images/icons/ic_arrow_tab_next_black_9dp_2x.png
new file mode 100644
index 0000000..62e6238
--- /dev/null
+++ b/images/icons/ic_arrow_tab_next_black_9dp_2x.png
Binary files differ
diff --git a/images/icons/ic_arrow_tab_previous_black_9dp_2x.png b/images/icons/ic_arrow_tab_previous_black_9dp_2x.png
new file mode 100644
index 0000000..25769da
--- /dev/null
+++ b/images/icons/ic_arrow_tab_previous_black_9dp_2x.png
Binary files differ
diff --git a/images/icons/ic_baseline-search-24px.svg b/images/icons/ic_baseline-search-24px.svg
new file mode 100644
index 0000000..19c9df7
--- /dev/null
+++ b/images/icons/ic_baseline-search-24px.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"/><path d="M0 0h24v24H0z" fill="none"/></svg>
\ No newline at end of file
diff --git a/images/icons/ic_block_24px.svg b/images/icons/ic_block_24px.svg
new file mode 100644
index 0000000..8032acf
--- /dev/null
+++ b/images/icons/ic_block_24px.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M0 0h24v24H0z" fill="none"/><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zM4 12c0-4.42 3.58-8 8-8 1.85 0 3.55.63 4.9 1.69L5.69 16.9C4.63 15.55 4 13.85 4 12zm8 8c-1.85 0-3.55-.63-4.9-1.69L18.31 7.1C19.37 8.45 20 10.15 20 12c0 4.42-3.58 8-8 8z"/></svg>
\ No newline at end of file
diff --git a/images/icons/ic_call_transfer_white_24px.png b/images/icons/ic_call_transfer_white_24px.png
new file mode 100644
index 0000000..a43dbb4
--- /dev/null
+++ b/images/icons/ic_call_transfer_white_24px.png
Binary files differ
diff --git a/images/icons/ic_chat_black_24dp_2x.png b/images/icons/ic_chat_black_24dp_2x.png
new file mode 100644
index 0000000..e9e92e5
--- /dev/null
+++ b/images/icons/ic_chat_black_24dp_2x.png
Binary files differ
diff --git a/images/icons/ic_chat_white_24dp.png b/images/icons/ic_chat_white_24dp.png
new file mode 100644
index 0000000..ace0bef
--- /dev/null
+++ b/images/icons/ic_chat_white_24dp.png
Binary files differ
diff --git a/images/icons/ic_check_white_18dp_2x.png b/images/icons/ic_check_white_18dp_2x.png
new file mode 100644
index 0000000..729f290
--- /dev/null
+++ b/images/icons/ic_check_white_18dp_2x.png
Binary files differ
diff --git a/images/icons/ic_clear_24px.svg b/images/icons/ic_clear_24px.svg
new file mode 100644
index 0000000..dea8678
--- /dev/null
+++ b/images/icons/ic_clear_24px.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/><path d="M0 0h24v24H0z" fill="none"/></svg>
\ No newline at end of file
diff --git a/images/icons/ic_close_black_24dp.png b/images/icons/ic_close_black_24dp.png
new file mode 100644
index 0000000..3f5c070
--- /dev/null
+++ b/images/icons/ic_close_black_24dp.png
Binary files differ
diff --git a/images/icons/ic_close_white_24dp.png b/images/icons/ic_close_white_24dp.png
new file mode 100644
index 0000000..b7c7ffd
--- /dev/null
+++ b/images/icons/ic_close_white_24dp.png
Binary files differ
diff --git a/images/icons/ic_content_copy.svg b/images/icons/ic_content_copy.svg
new file mode 100644
index 0000000..f23e8f2
--- /dev/null
+++ b/images/icons/ic_content_copy.svg
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 64 64" enable-background="new 0 0 64 64" xml:space="preserve">
+<g id="Text-files">
+ <path d="M53.9791489,9.1429005H50.010849c-0.0826988,0-0.1562004,0.0283995-0.2331009,0.0469999V5.0228
+ C49.7777481,2.253,47.4731483,0,44.6398468,0h-34.422596C7.3839517,0,5.0793519,2.253,5.0793519,5.0228v46.8432999
+ c0,2.7697983,2.3045998,5.0228004,5.1378999,5.0228004h6.0367002v2.2678986C16.253952,61.8274002,18.4702511,64,21.1954517,64
+ h32.783699c2.7252007,0,4.9414978-2.1725998,4.9414978-4.8432007V13.9861002
+ C58.9206467,11.3155003,56.7043495,9.1429005,53.9791489,9.1429005z M7.1110516,51.8661003V5.0228
+ c0-1.6487999,1.3938999-2.9909999,3.1062002-2.9909999h34.422596c1.7123032,0,3.1062012,1.3422,3.1062012,2.9909999v46.8432999
+ c0,1.6487999-1.393898,2.9911003-3.1062012,2.9911003h-34.422596C8.5049515,54.8572006,7.1110516,53.5149002,7.1110516,51.8661003z
+ M56.8888474,59.1567993c0,1.550602-1.3055,2.8115005-2.9096985,2.8115005h-32.783699
+ c-1.6042004,0-2.9097996-1.2608986-2.9097996-2.8115005v-2.2678986h26.3541946
+ c2.8333015,0,5.1379013-2.2530022,5.1379013-5.0228004V11.1275997c0.0769005,0.0186005,0.1504021,0.0469999,0.2331009,0.0469999
+ h3.9682999c1.6041985,0,2.9096985,1.2609005,2.9096985,2.8115005V59.1567993z"/>
+ <path d="M38.6031494,13.2063999H16.253952c-0.5615005,0-1.0159006,0.4542999-1.0159006,1.0158005
+ c0,0.5615997,0.4544001,1.0158997,1.0159006,1.0158997h22.3491974c0.5615005,0,1.0158997-0.4542999,1.0158997-1.0158997
+ C39.6190491,13.6606998,39.16465,13.2063999,38.6031494,13.2063999z"/>
+ <path d="M38.6031494,21.3334007H16.253952c-0.5615005,0-1.0159006,0.4542999-1.0159006,1.0157986
+ c0,0.5615005,0.4544001,1.0159016,1.0159006,1.0159016h22.3491974c0.5615005,0,1.0158997-0.454401,1.0158997-1.0159016
+ C39.6190491,21.7877007,39.16465,21.3334007,38.6031494,21.3334007z"/>
+ <path d="M38.6031494,29.4603004H16.253952c-0.5615005,0-1.0159006,0.4543991-1.0159006,1.0158997
+ s0.4544001,1.0158997,1.0159006,1.0158997h22.3491974c0.5615005,0,1.0158997-0.4543991,1.0158997-1.0158997
+ S39.16465,29.4603004,38.6031494,29.4603004z"/>
+ <path d="M28.4444485,37.5872993H16.253952c-0.5615005,0-1.0159006,0.4543991-1.0159006,1.0158997
+ s0.4544001,1.0158997,1.0159006,1.0158997h12.1904964c0.5615025,0,1.0158005-0.4543991,1.0158005-1.0158997
+ S29.0059509,37.5872993,28.4444485,37.5872993z"/>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/images/icons/ic_delete_black_18dp_2x.png b/images/icons/ic_delete_black_18dp_2x.png
new file mode 100644
index 0000000..2acd001
--- /dev/null
+++ b/images/icons/ic_delete_black_18dp_2x.png
Binary files differ
diff --git a/images/icons/ic_done_white_24dp.png b/images/icons/ic_done_white_24dp.png
new file mode 100644
index 0000000..3b2b65d
--- /dev/null
+++ b/images/icons/ic_done_white_24dp.png
Binary files differ
diff --git a/images/icons/ic_exit_full_screen_black.png b/images/icons/ic_exit_full_screen_black.png
new file mode 100644
index 0000000..964dd00
--- /dev/null
+++ b/images/icons/ic_exit_full_screen_black.png
Binary files differ
diff --git a/images/icons/ic_folder_black_18dp_2x.png b/images/icons/ic_folder_black_18dp_2x.png
new file mode 100644
index 0000000..fceeb67
--- /dev/null
+++ b/images/icons/ic_folder_black_18dp_2x.png
Binary files differ
diff --git a/images/icons/ic_full_screen_black.png b/images/icons/ic_full_screen_black.png
new file mode 100644
index 0000000..906ca1e
--- /dev/null
+++ b/images/icons/ic_full_screen_black.png
Binary files differ
diff --git a/images/icons/ic_group_add_white_24dp.png b/images/icons/ic_group_add_white_24dp.png
new file mode 100644
index 0000000..a769931
--- /dev/null
+++ b/images/icons/ic_group_add_white_24dp.png
Binary files differ
diff --git a/images/icons/ic_hide_password.png b/images/icons/ic_hide_password.png
new file mode 100644
index 0000000..ccad190
--- /dev/null
+++ b/images/icons/ic_hide_password.png
Binary files differ
diff --git a/images/icons/ic_high_quality_white_24dp.png b/images/icons/ic_high_quality_white_24dp.png
new file mode 100644
index 0000000..6d2d87d
--- /dev/null
+++ b/images/icons/ic_high_quality_white_24dp.png
Binary files differ
diff --git a/images/icons/ic_mic_off_white_24dp.png b/images/icons/ic_mic_off_white_24dp.png
new file mode 100644
index 0000000..bb7915f
--- /dev/null
+++ b/images/icons/ic_mic_off_white_24dp.png
Binary files differ
diff --git a/images/icons/ic_mic_white_24dp.png b/images/icons/ic_mic_white_24dp.png
new file mode 100644
index 0000000..5917157
--- /dev/null
+++ b/images/icons/ic_mic_white_24dp.png
Binary files differ
diff --git a/images/icons/ic_pause_white_100px.png b/images/icons/ic_pause_white_100px.png
new file mode 100644
index 0000000..fcf2188
--- /dev/null
+++ b/images/icons/ic_pause_white_100px.png
Binary files differ
diff --git a/images/icons/ic_pause_white_24dp.png b/images/icons/ic_pause_white_24dp.png
new file mode 100644
index 0000000..f49aed7
--- /dev/null
+++ b/images/icons/ic_pause_white_24dp.png
Binary files differ
diff --git a/images/icons/ic_person_add_black_24dp_2x.png b/images/icons/ic_person_add_black_24dp_2x.png
new file mode 100644
index 0000000..f3e8931
--- /dev/null
+++ b/images/icons/ic_person_add_black_24dp_2x.png
Binary files differ
diff --git a/images/icons/ic_person_add_white_24dp.png b/images/icons/ic_person_add_white_24dp.png
new file mode 100644
index 0000000..7e7c289
--- /dev/null
+++ b/images/icons/ic_person_add_white_24dp.png
Binary files differ
diff --git a/images/icons/ic_phone_24px.svg b/images/icons/ic_phone_24px.svg
new file mode 100644
index 0000000..9385a7b
--- /dev/null
+++ b/images/icons/ic_phone_24px.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M0 0h24v24H0z" fill="none"/><path d="M6.62 10.79c1.44 2.83 3.76 5.14 6.59 6.59l2.2-2.2c.27-.27.67-.36 1.02-.24 1.12.37 2.33.57 3.57.57.55 0 1 .45 1 1V20c0 .55-.45 1-1 1-9.39 0-17-7.61-17-17 0-.55.45-1 1-1h3.5c.55 0 1 .45 1 1 0 1.25.2 2.45.57 3.57.11.35.03.74-.25 1.02l-2.2 2.2z"/></svg>
\ No newline at end of file
diff --git a/images/icons/ic_photo_camera_white_24dp_2x.png b/images/icons/ic_photo_camera_white_24dp_2x.png
new file mode 100644
index 0000000..be9fb22
--- /dev/null
+++ b/images/icons/ic_photo_camera_white_24dp_2x.png
Binary files differ
diff --git a/images/icons/ic_play_white_24dp.png b/images/icons/ic_play_white_24dp.png
new file mode 100644
index 0000000..d776870
--- /dev/null
+++ b/images/icons/ic_play_white_24dp.png
Binary files differ
diff --git a/images/icons/ic_send_24px.svg b/images/icons/ic_send_24px.svg
new file mode 100644
index 0000000..4b8cef6
--- /dev/null
+++ b/images/icons/ic_send_24px.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M2.01 21L23 12 2.01 3 2 10l15 2-15 2z"/><path d="M0 0h24v24H0z" fill="none"/></svg>
\ No newline at end of file
diff --git a/images/icons/ic_send_white_24dp.png b/images/icons/ic_send_white_24dp.png
new file mode 100644
index 0000000..ef59e77
--- /dev/null
+++ b/images/icons/ic_send_white_24dp.png
Binary files differ
diff --git a/images/icons/ic_settings_white_48dp_2x.png b/images/icons/ic_settings_white_48dp_2x.png
new file mode 100644
index 0000000..507c5ed
--- /dev/null
+++ b/images/icons/ic_settings_white_48dp_2x.png
Binary files differ
diff --git a/images/icons/ic_share_black_48dp_2x.png b/images/icons/ic_share_black_48dp_2x.png
new file mode 100644
index 0000000..5a8544c
--- /dev/null
+++ b/images/icons/ic_share_black_48dp_2x.png
Binary files differ
diff --git a/images/icons/ic_show_password.png b/images/icons/ic_show_password.png
new file mode 100644
index 0000000..2a66557
--- /dev/null
+++ b/images/icons/ic_show_password.png
Binary files differ
diff --git a/images/icons/ic_video_call_24px.svg b/images/icons/ic_video_call_24px.svg
new file mode 100644
index 0000000..e062c7f
--- /dev/null
+++ b/images/icons/ic_video_call_24px.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0V0z"/><path d="M17 10.5V7c0-.55-.45-1-1-1H4c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h12c.55 0 1-.45 1-1v-3.5l4 4v-11l-4 4zM14 13h-3v3H9v-3H6v-2h3V8h2v3h3v2z"/></svg>
\ No newline at end of file
diff --git a/images/icons/ic_videocam_off_white_24dp.png b/images/icons/ic_videocam_off_white_24dp.png
new file mode 100644
index 0000000..5d54058
--- /dev/null
+++ b/images/icons/ic_videocam_off_white_24dp.png
Binary files differ
diff --git a/images/icons/ic_videocam_white.png b/images/icons/ic_videocam_white.png
new file mode 100644
index 0000000..44c28e2
--- /dev/null
+++ b/images/icons/ic_videocam_white.png
Binary files differ
diff --git a/images/icons/ic_voicemail_black_24dp_2x_.png b/images/icons/ic_voicemail_black_24dp_2x_.png
new file mode 100644
index 0000000..dfd0ea0
--- /dev/null
+++ b/images/icons/ic_voicemail_black_24dp_2x_.png
Binary files differ
diff --git a/images/icons/ic_voicemail_white_24dp_2x.png b/images/icons/ic_voicemail_white_24dp_2x.png
new file mode 100644
index 0000000..59126d7
--- /dev/null
+++ b/images/icons/ic_voicemail_white_24dp_2x.png
Binary files differ
diff --git a/images/icons/icon-keypad-24-2x.png b/images/icons/icon-keypad-24-2x.png
new file mode 100644
index 0000000..2b84863
--- /dev/null
+++ b/images/icons/icon-keypad-24-2x.png
Binary files differ
diff --git a/images/icons/icon-keypad-24.png b/images/icons/icon-keypad-24.png
new file mode 100644
index 0000000..2abc9be
--- /dev/null
+++ b/images/icons/icon-keypad-24.png
Binary files differ
diff --git a/images/icons/info-24px.svg b/images/icons/info-24px.svg
new file mode 100644
index 0000000..f8aba4c
--- /dev/null
+++ b/images/icons/info-24px.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M0 0h24v24H0z" fill="none"/><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z"/></svg>
\ No newline at end of file
diff --git a/images/icons/outline-info-24px.svg b/images/icons/outline-info-24px.svg
new file mode 100644
index 0000000..ab9cff7
--- /dev/null
+++ b/images/icons/outline-info-24px.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0V0z"/><path d="M11 7h2v2h-2zm0 4h2v6h-2zm1-9C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z"/></svg>
\ No newline at end of file
diff --git a/images/icons/round-add-24px.svg b/images/icons/round-add-24px.svg
new file mode 100644
index 0000000..a2fcb8e
--- /dev/null
+++ b/images/icons/round-add-24px.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0V0z"/><path d="M18 13h-5v5c0 .55-.45 1-1 1s-1-.45-1-1v-5H6c-.55 0-1-.45-1-1s.45-1 1-1h5V6c0-.55.45-1 1-1s1 .45 1 1v5h5c.55 0 1 .45 1 1s-.45 1-1 1z"/></svg>
\ No newline at end of file
diff --git a/images/icons/round-add_a_photo-24px.svg b/images/icons/round-add_a_photo-24px.svg
new file mode 100644
index 0000000..522c335
--- /dev/null
+++ b/images/icons/round-add_a_photo-24px.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M3 8c0 .55.45 1 1 1s1-.45 1-1V6h2c.55 0 1-.45 1-1s-.45-1-1-1H5V2c0-.55-.45-1-1-1s-1 .45-1 1v2H1c-.55 0-1 .45-1 1s.45 1 1 1h2v2z"/><circle cx="13" cy="14" r="3"/><path d="M21 6h-3.17l-1.24-1.35c-.37-.41-.91-.65-1.47-.65h-6.4c.17.3.28.63.28 1 0 1.1-.9 2-2 2H6v1c0 1.1-.9 2-2 2-.37 0-.7-.11-1-.28V20c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zm-8 13c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5z"/></svg>
\ No newline at end of file
diff --git a/images/icons/round-arrow_drop_down-24px.svg b/images/icons/round-arrow_drop_down-24px.svg
new file mode 100644
index 0000000..49addb2
--- /dev/null
+++ b/images/icons/round-arrow_drop_down-24px.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0V0z"/><path d="M8.71 11.71l2.59 2.59c.39.39 1.02.39 1.41 0l2.59-2.59c.63-.63.18-1.71-.71-1.71H9.41c-.89 0-1.33 1.08-.7 1.71z"/></svg>
\ No newline at end of file
diff --git a/images/icons/round-arrow_drop_up-24px.svg b/images/icons/round-arrow_drop_up-24px.svg
new file mode 100644
index 0000000..f5477ae
--- /dev/null
+++ b/images/icons/round-arrow_drop_up-24px.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0V0z"/><path d="M8.71 12.29L11.3 9.7c.39-.39 1.02-.39 1.41 0l2.59 2.59c.63.63.18 1.71-.71 1.71H9.41c-.89 0-1.33-1.08-.7-1.71z"/></svg>
\ No newline at end of file
diff --git a/images/icons/round-arrow_right-24px.svg b/images/icons/round-arrow_right-24px.svg
new file mode 100644
index 0000000..81124fa
--- /dev/null
+++ b/images/icons/round-arrow_right-24px.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0V0z"/><path d="M11.71 15.29l2.59-2.59c.39-.39.39-1.02 0-1.41L11.71 8.7c-.63-.62-1.71-.18-1.71.71v5.17c0 .9 1.08 1.34 1.71.71z"/></svg>
\ No newline at end of file
diff --git a/images/icons/round-check_circle-24px.svg b/images/icons/round-check_circle-24px.svg
new file mode 100644
index 0000000..7466a89
--- /dev/null
+++ b/images/icons/round-check_circle-24px.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0V0z"/><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zM9.29 16.29L5.7 12.7c-.39-.39-.39-1.02 0-1.41.39-.39 1.02-.39 1.41 0L10 14.17l6.88-6.88c.39-.39 1.02-.39 1.41 0 .39.39.39 1.02 0 1.41l-7.59 7.59c-.38.39-1.02.39-1.41 0z"/></svg>
\ No newline at end of file
diff --git a/images/icons/round-close-24px.svg b/images/icons/round-close-24px.svg
new file mode 100644
index 0000000..e7261bc
--- /dev/null
+++ b/images/icons/round-close-24px.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0V0z"/><path d="M18.3 5.71c-.39-.39-1.02-.39-1.41 0L12 10.59 7.11 5.7c-.39-.39-1.02-.39-1.41 0-.39.39-.39 1.02 0 1.41L10.59 12 5.7 16.89c-.39.39-.39 1.02 0 1.41.39.39 1.02.39 1.41 0L12 13.41l4.89 4.89c.39.39 1.02.39 1.41 0 .39-.39.39-1.02 0-1.41L13.41 12l4.89-4.89c.38-.38.38-1.02 0-1.4z"/></svg>
\ No newline at end of file
diff --git a/images/icons/round-edit-24px.svg b/images/icons/round-edit-24px.svg
new file mode 100644
index 0000000..8d6bc17
--- /dev/null
+++ b/images/icons/round-edit-24px.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0V0z"/><path d="M3 17.46v3.04c0 .28.22.5.5.5h3.04c.13 0 .26-.05.35-.15L17.81 9.94l-3.75-3.75L3.15 17.1c-.1.1-.15.22-.15.36zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.39-.39-1.02-.39-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z"/></svg>
\ No newline at end of file
diff --git a/images/icons/round-error-24px.svg b/images/icons/round-error-24px.svg
new file mode 100644
index 0000000..3daa478
--- /dev/null
+++ b/images/icons/round-error-24px.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 11c-.55 0-1-.45-1-1V8c0-.55.45-1 1-1s1 .45 1 1v4c0 .55-.45 1-1 1zm1 4h-2v-2h2v2z"/></svg>
\ No newline at end of file
diff --git a/images/icons/round-folder-24px.svg b/images/icons/round-folder-24px.svg
new file mode 100644
index 0000000..4f02e22
--- /dev/null
+++ b/images/icons/round-folder-24px.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0V0z"/><path d="M10.59 4.59C10.21 4.21 9.7 4 9.17 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2h-8l-1.41-1.41z"/></svg>
\ No newline at end of file
diff --git a/images/icons/round-remove_circle-24px.svg b/images/icons/round-remove_circle-24px.svg
new file mode 100644
index 0000000..9413863
--- /dev/null
+++ b/images/icons/round-remove_circle-24px.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0V0z"/><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm4 11H8c-.55 0-1-.45-1-1s.45-1 1-1h8c.55 0 1 .45 1 1s-.45 1-1 1z"/></svg>
\ No newline at end of file
diff --git a/images/icons/round-save_alt-24px.svg b/images/icons/round-save_alt-24px.svg
new file mode 100644
index 0000000..07b2cb5
--- /dev/null
+++ b/images/icons/round-save_alt-24px.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0V0z"/><path d="M19 13v5c0 .55-.45 1-1 1H6c-.55 0-1-.45-1-1v-5c0-.55-.45-1-1-1s-1 .45-1 1v6c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-6c0-.55-.45-1-1-1s-1 .45-1 1zm-6-.33l1.88-1.88c.39-.39 1.02-.39 1.41 0 .39.39.39 1.02 0 1.41l-3.59 3.59c-.39.39-1.02.39-1.41 0L7.7 12.2c-.39-.39-.39-1.02 0-1.41.39-.39 1.02-.39 1.41 0L11 12.67V4c0-.55.45-1 1-1s1 .45 1 1v8.67z"/></svg>
\ No newline at end of file
diff --git a/images/icons/round-settings-24px.svg b/images/icons/round-settings-24px.svg
new file mode 100644
index 0000000..fd34fc4
--- /dev/null
+++ b/images/icons/round-settings-24px.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0V0z"/><path d="M19.43 12.98c.04-.32.07-.64.07-.98s-.03-.66-.07-.98l2.11-1.65c.19-.15.24-.42.12-.64l-2-3.46c-.12-.22-.39-.3-.61-.22l-2.49 1c-.52-.4-1.08-.73-1.69-.98l-.38-2.65C14.46 2.18 14.25 2 14 2h-4c-.25 0-.46.18-.49.42l-.38 2.65c-.61.25-1.17.59-1.69.98l-2.49-1c-.23-.09-.49 0-.61.22l-2 3.46c-.13.22-.07.49.12.64l2.11 1.65c-.04.32-.07.65-.07.98s.03.66.07.98l-2.11 1.65c-.19.15-.24.42-.12.64l2 3.46c.12.22.39.3.61.22l2.49-1c.52.4 1.08.73 1.69.98l.38 2.65c.03.24.24.42.49.42h4c.25 0 .46-.18.49-.42l.38-2.65c.61-.25 1.17-.59 1.69-.98l2.49 1c.23.09.49 0 .61-.22l2-3.46c.12-.22.07-.49-.12-.64l-2.11-1.65zM12 15.5c-1.93 0-3.5-1.57-3.5-3.5s1.57-3.5 3.5-3.5 3.5 1.57 3.5 3.5-1.57 3.5-3.5 3.5z"/></svg>
\ No newline at end of file
diff --git a/images/icons/round-undo-24px.svg b/images/icons/round-undo-24px.svg
new file mode 100644
index 0000000..c0e9241
--- /dev/null
+++ b/images/icons/round-undo-24px.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0V0z"/><path d="M12.5 8c-2.65 0-5.05.99-6.9 2.6L3.71 8.71C3.08 8.08 2 8.52 2 9.41V15c0 .55.45 1 1 1h5.59c.89 0 1.34-1.08.71-1.71l-1.91-1.91c1.39-1.16 3.16-1.88 5.12-1.88 3.16 0 5.89 1.84 7.19 4.5.27.56.91.84 1.5.64.71-.23 1.07-1.04.75-1.72C20.23 10.42 16.65 8 12.5 8z"/></svg>
\ No newline at end of file
diff --git a/images/icons/settings_backup_restore-black-18dp.svg b/images/icons/settings_backup_restore-black-18dp.svg
new file mode 100644
index 0000000..f61d274
--- /dev/null
+++ b/images/icons/settings_backup_restore-black-18dp.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="black" width="18px" height="18px"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M14 12c0-1.1-.9-2-2-2s-2 .9-2 2 .9 2 2 2 2-.9 2-2zm-1.74-9C7.17 2.86 3 6.95 3 12H1.21c-.45 0-.67.54-.35.85l2.79 2.79c.2.2.51.2.71 0l2.79-2.79c.31-.31.09-.85-.36-.85H5c0-3.9 3.18-7.05 7.1-7 3.72.05 6.85 3.18 6.9 6.9.05 3.91-3.1 7.1-7 7.1-1.25 0-2.42-.34-3.44-.91-.39-.22-.87-.14-1.18.18-.46.46-.37 1.25.2 1.57C8.89 20.57 10.39 21 12 21c5.05 0 9.14-4.17 9-9.26-.13-4.69-4.05-8.61-8.74-8.74z"/></svg>
\ No newline at end of file
diff --git a/images/jami.ico b/images/jami.ico
new file mode 100644
index 0000000..468e452
--- /dev/null
+++ b/images/jami.ico
Binary files differ
diff --git a/images/jami.png b/images/jami.png
new file mode 100644
index 0000000..aef46d2
--- /dev/null
+++ b/images/jami.png
Binary files differ
diff --git a/images/jami_eclipse_spinner.gif b/images/jami_eclipse_spinner.gif
new file mode 100644
index 0000000..7c66d3f
--- /dev/null
+++ b/images/jami_eclipse_spinner.gif
Binary files differ
diff --git a/images/jami_rolling_spinner.gif b/images/jami_rolling_spinner.gif
new file mode 100644
index 0000000..63ff54a
--- /dev/null
+++ b/images/jami_rolling_spinner.gif
Binary files differ
diff --git a/images/logo-jami-standard-coul.png b/images/logo-jami-standard-coul.png
new file mode 100644
index 0000000..0352b55
--- /dev/null
+++ b/images/logo-jami-standard-coul.png
Binary files differ
diff --git a/images/qrcode.png b/images/qrcode.png
new file mode 100644
index 0000000..89d72e1
--- /dev/null
+++ b/images/qrcode.png
Binary files differ
diff --git a/images/spike.png b/images/spike.png
new file mode 100644
index 0000000..1f03927
--- /dev/null
+++ b/images/spike.png
Binary files differ
diff --git a/images/waiting.gif b/images/waiting.gif
new file mode 100644
index 0000000..ba2fbbc
--- /dev/null
+++ b/images/waiting.gif
Binary files differ
diff --git a/jami-qt.pro b/jami-qt.pro
new file mode 100644
index 0000000..13a1756
--- /dev/null
+++ b/jami-qt.pro
@@ -0,0 +1,186 @@
+win32-msvc {
+ TARGET = Jami
+ TEMPLATE = vcapp
+
+ QT += core winextras qml quickcontrols2 quick xml multimedia network webengine svg sql
+
+ CONFIG += suppress_vcproj_warnings c++17 qtquickcompiler
+
+ QTQUICK_COMPILER_SKIPPED_RESOURCES += ./ressources.qrc
+
+ # compiler options
+ QMAKE_CXXFLAGS += /wd"4068" /wd"4099" /wd"4189" /wd"4267" /wd"4577" /wd"4467" /wd"4715" /wd"4828"
+ QMAKE_CXXFLAGS += /MP /GS /W3 /Gy /Zc:wchar_t /Zi /Gm- /O2 /Zc:inline /fp:precise /errorReport:prompt
+ QMAKE_CXXFLAGS += /Gd /Oi /MD /std:c++17 /FC /EHsc /nologo /sdl
+
+ # linker options
+ QMAKE_LFLAGS+= /ignore:4006,4049,4078,4098 /FORCE:MULTIPLE /INCREMENTAL:NO /Debug /LTCG /NODEFAULTLIB:LIBCMT
+
+ # preprocessor defines
+ DEFINES += UNICODE QT_NO_DEBUG NDEBUG
+
+ # dependencies
+ LRC= ../lrc
+ DRING= ../daemon
+ QRENCODE= qrencode-win32/qrencode-win32
+
+ # client deps
+ INCLUDEPATH += $${QRENCODE}
+ LIBS += $${QRENCODE}/vc8/qrcodelib/x64/Release-Lib/qrcodelib.lib
+
+ # lrc
+ INCLUDEPATH += $${LRC}/src/
+ LIBS += $${LRC}/msvc/release/ringclient_static.lib
+ LIBS += $${LRC}/msvc/src/qtwrapper/Release/qtwrapper.lib
+
+ # daemon
+ INCLUDEPATH += ../daemon/contrib/msvc/include/
+ LIBS += $${DRING}/build-local/x64/ReleaseLib_win32/bin/dring.lib
+ LIBS += $${DRING}/contrib/msvc/lib/x64/libgnutls.lib
+
+ # windows system libs
+ LIBS += Shell32.lib Ole32.lib Advapi32.lib Shlwapi.lib User32.lib Gdi32.lib Crypt32.lib Strmiids.lib
+
+ # output paths
+ OBJECTS_DIR = obj/.obj
+ MOC_DIR = obj/.moc
+ RCC_DIR = obj/.rcc
+ UI_DIR = obj/.ui
+
+ # ReleaseCompile config
+ contains(CONFIG, ReleaseCompile) {
+ CONFIG(ReleaseCompile) {
+ message(ReleaseCompile config enabled)
+ Release: DEFINES += COMPILE_ONLY
+ }
+ }
+
+ # beta config
+ contains(CONFIG, Beta) {
+ CONFIG(Beta) {
+ message(Beta config enabled)
+ Release: DESTDIR = x64/Beta
+ Release: DEFINES += BETA
+ }
+ } else {
+ Release: DESTDIR = x64/Release
+ }
+ Debug: DESTDIR = x64/Debug
+
+ # qt dir
+ QMAKE_INCDIR_QT=$(QTDIR)\include
+ QMAKE_LIBDIR=$(QTDIR)\lib
+ QMAKE_MOC=$(QTDIR)\bin\moc.exe
+ QMAKE_QMAKE=$(QTDIR)\bin\qmake.exe
+
+ # exe icons
+ Release: RC_FILE = ico.rc
+}
+
+unix {
+ TARGET = jami-qt
+ TEMPLATE = app
+
+ QT += quick quickwidgets widgets xml multimedia multimediawidgets network webenginewidgets svg quickcontrols2 webengine webenginecore sql dbus
+
+ #check Qt version
+ QT_VERSION = $$[QT_VERSION]
+ QT_VERSION = $$split(QT_VERSION, ".")
+ QT_VER_MAJ = $$member(QT_VERSION, 0)
+ QT_VER_MIN = $$member(QT_VERSION, 1)
+
+ lessThan(QT_VER_MIN, 12) {
+ QMAKE_CXXFLAGS += -std=c++17
+ }
+ greaterThan(QT_VER_MIN, 12) | equals(QT_VER_MIN, 12) {
+ CONFIG += c++17
+ }
+
+ isEmpty(LRC) { LRC=../../install/lrc/ }
+
+ INCLUDEPATH += $${LRC}/include/libringclient
+ INCLUDEPATH += $${LRC}/include
+ INCLUDEPATH += ../src
+
+ LIBS += -L$${LRC}/lib -lringclient
+ LIBS += -lqrencode
+}
+
+# Input
+HEADERS += ./src/smartlistmodel.h \
+ ./src/utils.h \
+ ./src/bannedlistmodel.h \
+ ./src/version.h \
+ ./src/accountlistmodel.h \
+ ./src/runguard.h \
+ ./src/lrcinstance.h \
+ ./src/globalsystemtray.h \
+ ./src/settingskey.h \
+ ./src/webchathelpers.h \
+ ./src/pixbufmanipulator.h \
+ ./src/rendermanager.h \
+ ./src/connectivitymonitor.h \
+ ./src/jamiavatartheme.h \
+ ./src/mainapplication.h \
+ ./src/qrimageprovider.h \
+ ./src/messagesadapter.h \
+ ./src/accountadapter.h \
+ ./src/tintedbuttonimageprovider.h \
+ ./src/calladapter.h \
+ ./src/conversationsadapter.h \
+ ./src/distantrenderer.h \
+ ./src/previewrenderer.h \
+ ./src/qmladapterbase.h \
+ ./src/avadapter.h \
+ ./src/contactadapter.h \
+ ./src/settingsadaptor.h \
+ ./src/deviceitemlistmodel.h \
+ ./src/pluginitemlistmodel.h \
+ ./src/preferenceitemlistmodel.h \
+ ./src/audiocodeclistmodel.h \
+ ./src/videocodeclistmodel.h \
+ ./src/accountstomigratelistmodel.h \
+ ./src/clientwrapper.h \
+ ./src/audioinputdevicemodel.h \
+ ./src/videoinputdevicemodel.h \
+ ./src/audiooutputdevicemodel.h \
+ ./src/videoformatfpsmodel.h \
+ ./src/videoformatresolutionmodel.h \
+ ./src/audiomanagerlistmodel.h
+SOURCES += ./src/bannedlistmodel.cpp \
+ ./src/accountlistmodel.cpp \
+ ./src/runguard.cpp \
+ ./src/webchathelpers.cpp \
+ ./src/main.cpp \
+ ./src/globalsystemtray.cpp \
+ ./src/smartlistmodel.cpp \
+ ./src/utils.cpp \
+ ./src/pixbufmanipulator.cpp \
+ ./src/rendermanager.cpp \
+ ./src/connectivitymonitor.cpp \
+ ./src/mainapplication.cpp \
+ ./src/messagesadapter.cpp \
+ ./src/accountadapter.cpp \
+ ./src/calladapter.cpp \
+ ./src/conversationsadapter.cpp \
+ ./src/distantrenderer.cpp \
+ ./src/previewrenderer.cpp \
+ ./src/qmladapterbase.cpp \
+ ./src/avadapter.cpp \
+ ./src/contactadapter.cpp \
+ ./src/settingsadaptor.cpp \
+ ./src/deviceitemlistmodel.cpp \
+ ./src/pluginitemlistmodel.cpp \
+ ./src/preferenceitemlistmodel.cpp \
+ ./src/audiocodeclistmodel.cpp \
+ ./src/videocodeclistmodel.cpp \
+ ./src/accountstomigratelistmodel.cpp \
+ ./src/clientwrapper.cpp \
+ ./src/audioinputdevicemodel.cpp \
+ ./src/videoinputdevicemodel.cpp \
+ ./src/audiooutputdevicemodel.cpp \
+ ./src/videoformatfpsmodel.cpp \
+ ./src/videoformatresolutionmodel.cpp \
+ ./src/audiomanagerlistmodel.cpp
+RESOURCES += ./ressources.qrc \
+ ./qml.qrc
diff --git a/jami-qt.sln b/jami-qt.sln
new file mode 100644
index 0000000..1ae2b96
--- /dev/null
+++ b/jami-qt.sln
@@ -0,0 +1,636 @@
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.29613.14
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ring-daemon", "..\daemon\build-local\ring-daemon.vcxproj", "{1CA4822C-F599-3879-A78F-332D823E4871}"
+ ProjectSection(ProjectDependencies) = postProject
+ {2BB84911-C1B4-4747-B93D-36AA82CC5031} = {2BB84911-C1B4-4747-B93D-36AA82CC5031}
+ {A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4} = {A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4}
+ {B82CDD25-6903-430E-BD38-D8129A2015C1} = {B82CDD25-6903-430E-BD38-D8129A2015C1}
+ {FE07F272-AE7F-4549-9E9F-EF9B80CB1693} = {FE07F272-AE7F-4549-9E9F-EF9B80CB1693}
+ {7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65} = {7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65}
+ {855DC8C0-D3E9-4A2E-AE47-116605A7BC9B} = {855DC8C0-D3E9-4A2E-AE47-116605A7BC9B}
+ {4B5945CD-0CB3-49AA-A7FF-7612D93F82C0} = {4B5945CD-0CB3-49AA-A7FF-7612D93F82C0}
+ {711397CE-E5D5-467D-9457-8716C047E50C} = {711397CE-E5D5-467D-9457-8716C047E50C}
+ {B8719FD5-E8A6-4A36-943C-891D07F5DD21} = {B8719FD5-E8A6-4A36-943C-891D07F5DD21}
+ {DA0E03ED-53A7-4050-8A85-90541C5509F8} = {DA0E03ED-53A7-4050-8A85-90541C5509F8}
+ {9CA0FDFB-2172-41FC-B7F1-5CE915EDCB37} = {9CA0FDFB-2172-41FC-B7F1-5CE915EDCB37}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ringclient_static", "..\lrc\msvc\ringclient_static.vcxproj", "{774F1C61-6659-36E6-9519-17A753890576}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "qtwrapper", "..\lrc\msvc\src\qtwrapper\qtwrapper.vcxproj", "{2CFF20AA-9341-3564-A044-C38E70D5372A}"
+ ProjectSection(ProjectDependencies) = postProject
+ {1CA4822C-F599-3879-A78F-332D823E4871} = {1CA4822C-F599-3879-A78F-332D823E4871}
+ EndProjectSection
+EndProject
+Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "JamiInstaller", "JamiInstaller\JamiInstaller.wixproj", "{DBBFBC55-1C20-4D21-AE3B-6E8B14C4FE48}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "daemon", "daemon", "{B6752729-7398-46FA-9CF0-DC854C6AB8CA}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pjnath", "..\daemon\contrib\build\pjproject\pjnath\build\pjnath.vcxproj", "{A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "pjproject", "pjproject", "{14A77BA7-0E23-4D8F-A74F-5D5D5583035D}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pjmedia", "..\daemon\contrib\build\pjproject\pjmedia\build\pjmedia.vcxproj", "{7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pjmedia_codec", "..\daemon\contrib\build\pjproject\pjmedia\build\pjmedia_codec.vcxproj", "{855DC8C0-D3E9-4A2E-AE47-116605A7BC9B}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pjlib_util", "..\daemon\contrib\build\pjproject\pjlib-util\build\pjlib_util.vcxproj", "{FE07F272-AE7F-4549-9E9F-EF9B80CB1693}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pjlib", "..\daemon\contrib\build\pjproject\pjlib\build\pjlib.vcxproj", "{DA0E03ED-53A7-4050-8A85-90541C5509F8}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pjsip_core", "..\daemon\contrib\build\pjproject\pjsip\build\pjsip_core.vcxproj", "{2BB84911-C1B4-4747-B93D-36AA82CC5031}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pjsua2_lib", "..\daemon\contrib\build\pjproject\pjsip\build\pjsua2_lib.vcxproj", "{B82CDD25-6903-430E-BD38-D8129A2015C1}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pjsua_lib", "..\daemon\contrib\build\pjproject\pjsip\build\pjsua_lib.vcxproj", "{9CA0FDFB-2172-41FC-B7F1-5CE915EDCB37}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pjsip_simple", "..\daemon\contrib\build\pjproject\pjsip\build\pjsip_simple.vcxproj", "{4B5945CD-0CB3-49AA-A7FF-7612D93F82C0}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pjsip_ua", "..\daemon\contrib\build\pjproject\pjsip\build\pjsip_ua.vcxproj", "{B8719FD5-E8A6-4A36-943C-891D07F5DD21}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "lrc", "lrc", "{31F92F98-3580-445D-A3DA-D081B427A562}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "client", "client", "{1ECB5BD6-B3A0-4135-BA3F-48FC367B61C9}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "contrib", "contrib", "{B4FD804C-ABD9-4F54-858B-911F0119580C}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "opendht", "..\daemon\contrib\build\opendht\MSVC\opendht.vcxproj", "{711397CE-E5D5-467D-9457-8716C047E50C}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "jami-qt", "jami-qt.vcxproj", "{A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}"
+ ProjectSection(ProjectDependencies) = postProject
+ {774F1C61-6659-36E6-9519-17A753890576} = {774F1C61-6659-36E6-9519-17A753890576}
+ EndProjectSection
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Beta|Any CPU = Beta|Any CPU
+ Beta|x64 = Beta|x64
+ Beta|x86 = Beta|x86
+ Debug|Any CPU = Debug|Any CPU
+ Debug|x64 = Debug|x64
+ Debug|x86 = Debug|x86
+ Release|Any CPU = Release|Any CPU
+ Release|x64 = Release|x64
+ Release|x86 = Release|x86
+ ReleaseCompile|Any CPU = ReleaseCompile|Any CPU
+ ReleaseCompile|x64 = ReleaseCompile|x64
+ ReleaseCompile|x86 = ReleaseCompile|x86
+ ReleaseLib_win32|Any CPU = ReleaseLib_win32|Any CPU
+ ReleaseLib_win32|x64 = ReleaseLib_win32|x64
+ ReleaseLib_win32|x86 = ReleaseLib_win32|x86
+ ReleaseLib|Any CPU = ReleaseLib|Any CPU
+ ReleaseLib|x64 = ReleaseLib|x64
+ ReleaseLib|x86 = ReleaseLib|x86
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {1CA4822C-F599-3879-A78F-332D823E4871}.Beta|Any CPU.ActiveCfg = ReleaseLib_win32|x64
+ {1CA4822C-F599-3879-A78F-332D823E4871}.Beta|Any CPU.Build.0 = ReleaseLib_win32|x64
+ {1CA4822C-F599-3879-A78F-332D823E4871}.Beta|x64.ActiveCfg = ReleaseLib_win32|x64
+ {1CA4822C-F599-3879-A78F-332D823E4871}.Beta|x64.Build.0 = ReleaseLib_win32|x64
+ {1CA4822C-F599-3879-A78F-332D823E4871}.Beta|x86.ActiveCfg = ReleaseLib_win32|x64
+ {1CA4822C-F599-3879-A78F-332D823E4871}.Beta|x86.Build.0 = ReleaseLib_win32|x64
+ {1CA4822C-F599-3879-A78F-332D823E4871}.Debug|Any CPU.ActiveCfg = ReleaseLib_win32|x64
+ {1CA4822C-F599-3879-A78F-332D823E4871}.Debug|Any CPU.Build.0 = ReleaseLib_win32|x64
+ {1CA4822C-F599-3879-A78F-332D823E4871}.Debug|x64.ActiveCfg = ReleaseLib_win32|x64
+ {1CA4822C-F599-3879-A78F-332D823E4871}.Debug|x64.Build.0 = ReleaseLib_win32|x64
+ {1CA4822C-F599-3879-A78F-332D823E4871}.Debug|x86.ActiveCfg = ReleaseLib_win32|x64
+ {1CA4822C-F599-3879-A78F-332D823E4871}.Debug|x86.Build.0 = ReleaseLib_win32|x64
+ {1CA4822C-F599-3879-A78F-332D823E4871}.Release|Any CPU.ActiveCfg = ReleaseLib_win32|x64
+ {1CA4822C-F599-3879-A78F-332D823E4871}.Release|Any CPU.Build.0 = ReleaseLib_win32|x64
+ {1CA4822C-F599-3879-A78F-332D823E4871}.Release|x64.ActiveCfg = ReleaseLib_win32|x64
+ {1CA4822C-F599-3879-A78F-332D823E4871}.Release|x64.Build.0 = ReleaseLib_win32|x64
+ {1CA4822C-F599-3879-A78F-332D823E4871}.Release|x86.ActiveCfg = ReleaseLib_win32|x64
+ {1CA4822C-F599-3879-A78F-332D823E4871}.Release|x86.Build.0 = ReleaseLib_win32|x64
+ {1CA4822C-F599-3879-A78F-332D823E4871}.ReleaseCompile|Any CPU.ActiveCfg = ReleaseLib_win32|x64
+ {1CA4822C-F599-3879-A78F-332D823E4871}.ReleaseCompile|Any CPU.Build.0 = ReleaseLib_win32|x64
+ {1CA4822C-F599-3879-A78F-332D823E4871}.ReleaseCompile|x64.ActiveCfg = ReleaseLib_win32|x64
+ {1CA4822C-F599-3879-A78F-332D823E4871}.ReleaseCompile|x64.Build.0 = ReleaseLib_win32|x64
+ {1CA4822C-F599-3879-A78F-332D823E4871}.ReleaseCompile|x86.ActiveCfg = ReleaseLib_win32|x64
+ {1CA4822C-F599-3879-A78F-332D823E4871}.ReleaseCompile|x86.Build.0 = ReleaseLib_win32|x64
+ {1CA4822C-F599-3879-A78F-332D823E4871}.ReleaseLib_win32|Any CPU.ActiveCfg = ReleaseLib_win32|x64
+ {1CA4822C-F599-3879-A78F-332D823E4871}.ReleaseLib_win32|x64.ActiveCfg = ReleaseLib_win32|x64
+ {1CA4822C-F599-3879-A78F-332D823E4871}.ReleaseLib_win32|x64.Build.0 = ReleaseLib_win32|x64
+ {1CA4822C-F599-3879-A78F-332D823E4871}.ReleaseLib_win32|x86.ActiveCfg = ReleaseLib_win32|x64
+ {1CA4822C-F599-3879-A78F-332D823E4871}.ReleaseLib|Any CPU.ActiveCfg = ReleaseLib_win32|x64
+ {1CA4822C-F599-3879-A78F-332D823E4871}.ReleaseLib|Any CPU.Build.0 = ReleaseLib_win32|x64
+ {1CA4822C-F599-3879-A78F-332D823E4871}.ReleaseLib|x64.ActiveCfg = ReleaseLib_win32|x64
+ {1CA4822C-F599-3879-A78F-332D823E4871}.ReleaseLib|x64.Build.0 = ReleaseLib_win32|x64
+ {1CA4822C-F599-3879-A78F-332D823E4871}.ReleaseLib|x86.ActiveCfg = ReleaseLib_win32|x64
+ {1CA4822C-F599-3879-A78F-332D823E4871}.ReleaseLib|x86.Build.0 = ReleaseLib_win32|x64
+ {774F1C61-6659-36E6-9519-17A753890576}.Beta|Any CPU.ActiveCfg = Release|x64
+ {774F1C61-6659-36E6-9519-17A753890576}.Beta|x64.ActiveCfg = Release|x64
+ {774F1C61-6659-36E6-9519-17A753890576}.Beta|x64.Build.0 = Release|x64
+ {774F1C61-6659-36E6-9519-17A753890576}.Beta|x86.ActiveCfg = Release|x64
+ {774F1C61-6659-36E6-9519-17A753890576}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {774F1C61-6659-36E6-9519-17A753890576}.Debug|x64.ActiveCfg = Debug|x64
+ {774F1C61-6659-36E6-9519-17A753890576}.Debug|x64.Build.0 = Debug|x64
+ {774F1C61-6659-36E6-9519-17A753890576}.Debug|x86.ActiveCfg = Debug|x64
+ {774F1C61-6659-36E6-9519-17A753890576}.Release|Any CPU.ActiveCfg = Release|x64
+ {774F1C61-6659-36E6-9519-17A753890576}.Release|x64.ActiveCfg = Release|x64
+ {774F1C61-6659-36E6-9519-17A753890576}.Release|x64.Build.0 = Release|x64
+ {774F1C61-6659-36E6-9519-17A753890576}.Release|x86.ActiveCfg = Release|x64
+ {774F1C61-6659-36E6-9519-17A753890576}.ReleaseCompile|Any CPU.ActiveCfg = Release|x64
+ {774F1C61-6659-36E6-9519-17A753890576}.ReleaseCompile|Any CPU.Build.0 = Release|x64
+ {774F1C61-6659-36E6-9519-17A753890576}.ReleaseCompile|x64.ActiveCfg = Release|x64
+ {774F1C61-6659-36E6-9519-17A753890576}.ReleaseCompile|x64.Build.0 = Release|x64
+ {774F1C61-6659-36E6-9519-17A753890576}.ReleaseCompile|x86.ActiveCfg = Release|x64
+ {774F1C61-6659-36E6-9519-17A753890576}.ReleaseCompile|x86.Build.0 = Release|x64
+ {774F1C61-6659-36E6-9519-17A753890576}.ReleaseLib_win32|Any CPU.ActiveCfg = RelWithDebInfo|x64
+ {774F1C61-6659-36E6-9519-17A753890576}.ReleaseLib_win32|Any CPU.Build.0 = RelWithDebInfo|x64
+ {774F1C61-6659-36E6-9519-17A753890576}.ReleaseLib_win32|x64.ActiveCfg = Release|x64
+ {774F1C61-6659-36E6-9519-17A753890576}.ReleaseLib_win32|x64.Build.0 = Release|x64
+ {774F1C61-6659-36E6-9519-17A753890576}.ReleaseLib_win32|x86.ActiveCfg = RelWithDebInfo|x64
+ {774F1C61-6659-36E6-9519-17A753890576}.ReleaseLib_win32|x86.Build.0 = RelWithDebInfo|x64
+ {774F1C61-6659-36E6-9519-17A753890576}.ReleaseLib|Any CPU.ActiveCfg = RelWithDebInfo|x64
+ {774F1C61-6659-36E6-9519-17A753890576}.ReleaseLib|Any CPU.Build.0 = RelWithDebInfo|x64
+ {774F1C61-6659-36E6-9519-17A753890576}.ReleaseLib|x64.ActiveCfg = Release|x64
+ {774F1C61-6659-36E6-9519-17A753890576}.ReleaseLib|x64.Build.0 = Release|x64
+ {774F1C61-6659-36E6-9519-17A753890576}.ReleaseLib|x86.ActiveCfg = MinSizeRel|x64
+ {774F1C61-6659-36E6-9519-17A753890576}.ReleaseLib|x86.Build.0 = MinSizeRel|x64
+ {2CFF20AA-9341-3564-A044-C38E70D5372A}.Beta|Any CPU.ActiveCfg = Release|x64
+ {2CFF20AA-9341-3564-A044-C38E70D5372A}.Beta|x64.ActiveCfg = Release|x64
+ {2CFF20AA-9341-3564-A044-C38E70D5372A}.Beta|x64.Build.0 = Release|x64
+ {2CFF20AA-9341-3564-A044-C38E70D5372A}.Beta|x86.ActiveCfg = Release|x64
+ {2CFF20AA-9341-3564-A044-C38E70D5372A}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {2CFF20AA-9341-3564-A044-C38E70D5372A}.Debug|x64.ActiveCfg = Debug|x64
+ {2CFF20AA-9341-3564-A044-C38E70D5372A}.Debug|x64.Build.0 = Debug|x64
+ {2CFF20AA-9341-3564-A044-C38E70D5372A}.Debug|x86.ActiveCfg = Debug|x64
+ {2CFF20AA-9341-3564-A044-C38E70D5372A}.Release|Any CPU.ActiveCfg = Release|x64
+ {2CFF20AA-9341-3564-A044-C38E70D5372A}.Release|x64.ActiveCfg = Release|x64
+ {2CFF20AA-9341-3564-A044-C38E70D5372A}.Release|x64.Build.0 = Release|x64
+ {2CFF20AA-9341-3564-A044-C38E70D5372A}.Release|x86.ActiveCfg = Release|x64
+ {2CFF20AA-9341-3564-A044-C38E70D5372A}.ReleaseCompile|Any CPU.ActiveCfg = Release|x64
+ {2CFF20AA-9341-3564-A044-C38E70D5372A}.ReleaseCompile|Any CPU.Build.0 = Release|x64
+ {2CFF20AA-9341-3564-A044-C38E70D5372A}.ReleaseCompile|x64.ActiveCfg = Release|x64
+ {2CFF20AA-9341-3564-A044-C38E70D5372A}.ReleaseCompile|x64.Build.0 = Release|x64
+ {2CFF20AA-9341-3564-A044-C38E70D5372A}.ReleaseCompile|x86.ActiveCfg = Release|x64
+ {2CFF20AA-9341-3564-A044-C38E70D5372A}.ReleaseCompile|x86.Build.0 = Release|x64
+ {2CFF20AA-9341-3564-A044-C38E70D5372A}.ReleaseLib_win32|Any CPU.ActiveCfg = RelWithDebInfo|x64
+ {2CFF20AA-9341-3564-A044-C38E70D5372A}.ReleaseLib_win32|Any CPU.Build.0 = RelWithDebInfo|x64
+ {2CFF20AA-9341-3564-A044-C38E70D5372A}.ReleaseLib_win32|x64.ActiveCfg = Release|x64
+ {2CFF20AA-9341-3564-A044-C38E70D5372A}.ReleaseLib_win32|x64.Build.0 = Release|x64
+ {2CFF20AA-9341-3564-A044-C38E70D5372A}.ReleaseLib_win32|x86.ActiveCfg = RelWithDebInfo|x64
+ {2CFF20AA-9341-3564-A044-C38E70D5372A}.ReleaseLib_win32|x86.Build.0 = RelWithDebInfo|x64
+ {2CFF20AA-9341-3564-A044-C38E70D5372A}.ReleaseLib|Any CPU.ActiveCfg = RelWithDebInfo|x64
+ {2CFF20AA-9341-3564-A044-C38E70D5372A}.ReleaseLib|Any CPU.Build.0 = RelWithDebInfo|x64
+ {2CFF20AA-9341-3564-A044-C38E70D5372A}.ReleaseLib|x64.ActiveCfg = Release|x64
+ {2CFF20AA-9341-3564-A044-C38E70D5372A}.ReleaseLib|x64.Build.0 = Release|x64
+ {2CFF20AA-9341-3564-A044-C38E70D5372A}.ReleaseLib|x86.ActiveCfg = MinSizeRel|x64
+ {2CFF20AA-9341-3564-A044-C38E70D5372A}.ReleaseLib|x86.Build.0 = MinSizeRel|x64
+ {DBBFBC55-1C20-4D21-AE3B-6E8B14C4FE48}.Beta|Any CPU.ActiveCfg = Release|x64
+ {DBBFBC55-1C20-4D21-AE3B-6E8B14C4FE48}.Beta|x64.ActiveCfg = Beta|x64
+ {DBBFBC55-1C20-4D21-AE3B-6E8B14C4FE48}.Beta|x64.Build.0 = Beta|x64
+ {DBBFBC55-1C20-4D21-AE3B-6E8B14C4FE48}.Beta|x86.ActiveCfg = Release|x64
+ {DBBFBC55-1C20-4D21-AE3B-6E8B14C4FE48}.Debug|Any CPU.ActiveCfg = Beta|x64
+ {DBBFBC55-1C20-4D21-AE3B-6E8B14C4FE48}.Debug|Any CPU.Build.0 = Beta|x64
+ {DBBFBC55-1C20-4D21-AE3B-6E8B14C4FE48}.Debug|x64.ActiveCfg = Beta|x64
+ {DBBFBC55-1C20-4D21-AE3B-6E8B14C4FE48}.Debug|x64.Build.0 = Beta|x64
+ {DBBFBC55-1C20-4D21-AE3B-6E8B14C4FE48}.Debug|x86.ActiveCfg = Beta|x64
+ {DBBFBC55-1C20-4D21-AE3B-6E8B14C4FE48}.Debug|x86.Build.0 = Beta|x64
+ {DBBFBC55-1C20-4D21-AE3B-6E8B14C4FE48}.Release|Any CPU.ActiveCfg = Release|x64
+ {DBBFBC55-1C20-4D21-AE3B-6E8B14C4FE48}.Release|x64.ActiveCfg = Release|x64
+ {DBBFBC55-1C20-4D21-AE3B-6E8B14C4FE48}.Release|x64.Build.0 = Release|x64
+ {DBBFBC55-1C20-4D21-AE3B-6E8B14C4FE48}.Release|x86.ActiveCfg = Release|x64
+ {DBBFBC55-1C20-4D21-AE3B-6E8B14C4FE48}.ReleaseCompile|Any CPU.ActiveCfg = Release|x64
+ {DBBFBC55-1C20-4D21-AE3B-6E8B14C4FE48}.ReleaseCompile|Any CPU.Build.0 = Release|x64
+ {DBBFBC55-1C20-4D21-AE3B-6E8B14C4FE48}.ReleaseCompile|x64.ActiveCfg = Release|x64
+ {DBBFBC55-1C20-4D21-AE3B-6E8B14C4FE48}.ReleaseCompile|x64.Build.0 = Release|x64
+ {DBBFBC55-1C20-4D21-AE3B-6E8B14C4FE48}.ReleaseCompile|x86.ActiveCfg = Release|x64
+ {DBBFBC55-1C20-4D21-AE3B-6E8B14C4FE48}.ReleaseCompile|x86.Build.0 = Release|x64
+ {DBBFBC55-1C20-4D21-AE3B-6E8B14C4FE48}.ReleaseLib_win32|Any CPU.ActiveCfg = Release|x64
+ {DBBFBC55-1C20-4D21-AE3B-6E8B14C4FE48}.ReleaseLib_win32|Any CPU.Build.0 = Release|x64
+ {DBBFBC55-1C20-4D21-AE3B-6E8B14C4FE48}.ReleaseLib_win32|x64.ActiveCfg = Release|x64
+ {DBBFBC55-1C20-4D21-AE3B-6E8B14C4FE48}.ReleaseLib_win32|x64.Build.0 = Release|x64
+ {DBBFBC55-1C20-4D21-AE3B-6E8B14C4FE48}.ReleaseLib_win32|x86.ActiveCfg = Release|x64
+ {DBBFBC55-1C20-4D21-AE3B-6E8B14C4FE48}.ReleaseLib_win32|x86.Build.0 = Release|x64
+ {DBBFBC55-1C20-4D21-AE3B-6E8B14C4FE48}.ReleaseLib|Any CPU.ActiveCfg = Release|x64
+ {DBBFBC55-1C20-4D21-AE3B-6E8B14C4FE48}.ReleaseLib|Any CPU.Build.0 = Release|x64
+ {DBBFBC55-1C20-4D21-AE3B-6E8B14C4FE48}.ReleaseLib|x64.ActiveCfg = Release|x64
+ {DBBFBC55-1C20-4D21-AE3B-6E8B14C4FE48}.ReleaseLib|x64.Build.0 = Release|x64
+ {DBBFBC55-1C20-4D21-AE3B-6E8B14C4FE48}.ReleaseLib|x86.ActiveCfg = Release|x64
+ {DBBFBC55-1C20-4D21-AE3B-6E8B14C4FE48}.ReleaseLib|x86.Build.0 = Release|x64
+ {A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4}.Beta|Any CPU.ActiveCfg = Release|Win32
+ {A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4}.Beta|x64.ActiveCfg = Release|x64
+ {A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4}.Beta|x64.Build.0 = Release|x64
+ {A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4}.Beta|x86.ActiveCfg = Release|Win32
+ {A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4}.Beta|x86.Build.0 = Release|Win32
+ {A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4}.Debug|Any CPU.ActiveCfg = Debug|Win32
+ {A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4}.Debug|x64.ActiveCfg = Debug|x64
+ {A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4}.Debug|x64.Build.0 = Debug|x64
+ {A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4}.Debug|x86.ActiveCfg = Debug|Win32
+ {A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4}.Debug|x86.Build.0 = Debug|Win32
+ {A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4}.Release|Any CPU.ActiveCfg = Release|Win32
+ {A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4}.Release|x64.ActiveCfg = Release|x64
+ {A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4}.Release|x64.Build.0 = Release|x64
+ {A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4}.Release|x86.ActiveCfg = Release|Win32
+ {A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4}.Release|x86.Build.0 = Release|Win32
+ {A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4}.ReleaseCompile|Any CPU.ActiveCfg = Release|ARM
+ {A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4}.ReleaseCompile|Any CPU.Build.0 = Release|ARM
+ {A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4}.ReleaseCompile|x64.ActiveCfg = Release|x64
+ {A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4}.ReleaseCompile|x64.Build.0 = Release|x64
+ {A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4}.ReleaseCompile|x86.ActiveCfg = Release-Static|Win32
+ {A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4}.ReleaseCompile|x86.Build.0 = Release-Static|Win32
+ {A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4}.ReleaseLib_win32|Any CPU.ActiveCfg = Release|ARM
+ {A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4}.ReleaseLib_win32|Any CPU.Build.0 = Release|ARM
+ {A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4}.ReleaseLib_win32|x64.ActiveCfg = Release|x64
+ {A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4}.ReleaseLib_win32|x64.Build.0 = Release|x64
+ {A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4}.ReleaseLib_win32|x86.ActiveCfg = Release-Static|Win32
+ {A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4}.ReleaseLib_win32|x86.Build.0 = Release-Static|Win32
+ {A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4}.ReleaseLib|Any CPU.ActiveCfg = Release|ARM
+ {A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4}.ReleaseLib|Any CPU.Build.0 = Release|ARM
+ {A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4}.ReleaseLib|x64.ActiveCfg = Release|x64
+ {A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4}.ReleaseLib|x64.Build.0 = Release|x64
+ {A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4}.ReleaseLib|x86.ActiveCfg = Release-Static|Win32
+ {A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4}.ReleaseLib|x86.Build.0 = Release-Static|Win32
+ {7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65}.Beta|Any CPU.ActiveCfg = Release|Win32
+ {7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65}.Beta|x64.ActiveCfg = Release|x64
+ {7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65}.Beta|x64.Build.0 = Release|x64
+ {7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65}.Beta|x86.ActiveCfg = Release|Win32
+ {7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65}.Beta|x86.Build.0 = Release|Win32
+ {7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65}.Debug|Any CPU.ActiveCfg = Debug|Win32
+ {7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65}.Debug|x64.ActiveCfg = Debug|x64
+ {7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65}.Debug|x64.Build.0 = Debug|x64
+ {7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65}.Debug|x86.ActiveCfg = Debug|Win32
+ {7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65}.Debug|x86.Build.0 = Debug|Win32
+ {7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65}.Release|Any CPU.ActiveCfg = Release|Win32
+ {7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65}.Release|x64.ActiveCfg = Release|x64
+ {7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65}.Release|x64.Build.0 = Release|x64
+ {7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65}.Release|x86.ActiveCfg = Release|Win32
+ {7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65}.Release|x86.Build.0 = Release|Win32
+ {7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65}.ReleaseCompile|Any CPU.ActiveCfg = Release|ARM
+ {7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65}.ReleaseCompile|Any CPU.Build.0 = Release|ARM
+ {7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65}.ReleaseCompile|x64.ActiveCfg = Release|x64
+ {7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65}.ReleaseCompile|x64.Build.0 = Release|x64
+ {7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65}.ReleaseCompile|x86.ActiveCfg = Release-Static|Win32
+ {7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65}.ReleaseCompile|x86.Build.0 = Release-Static|Win32
+ {7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65}.ReleaseLib_win32|Any CPU.ActiveCfg = Release|ARM
+ {7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65}.ReleaseLib_win32|Any CPU.Build.0 = Release|ARM
+ {7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65}.ReleaseLib_win32|x64.ActiveCfg = Release|x64
+ {7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65}.ReleaseLib_win32|x64.Build.0 = Release|x64
+ {7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65}.ReleaseLib_win32|x86.ActiveCfg = Release-Static|Win32
+ {7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65}.ReleaseLib_win32|x86.Build.0 = Release-Static|Win32
+ {7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65}.ReleaseLib|Any CPU.ActiveCfg = Release|ARM
+ {7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65}.ReleaseLib|Any CPU.Build.0 = Release|ARM
+ {7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65}.ReleaseLib|x64.ActiveCfg = Release|x64
+ {7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65}.ReleaseLib|x64.Build.0 = Release|x64
+ {7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65}.ReleaseLib|x86.ActiveCfg = Release-Static|Win32
+ {7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65}.ReleaseLib|x86.Build.0 = Release-Static|Win32
+ {855DC8C0-D3E9-4A2E-AE47-116605A7BC9B}.Beta|Any CPU.ActiveCfg = Release|Win32
+ {855DC8C0-D3E9-4A2E-AE47-116605A7BC9B}.Beta|x64.ActiveCfg = Release|x64
+ {855DC8C0-D3E9-4A2E-AE47-116605A7BC9B}.Beta|x64.Build.0 = Release|x64
+ {855DC8C0-D3E9-4A2E-AE47-116605A7BC9B}.Beta|x86.ActiveCfg = Release|Win32
+ {855DC8C0-D3E9-4A2E-AE47-116605A7BC9B}.Beta|x86.Build.0 = Release|Win32
+ {855DC8C0-D3E9-4A2E-AE47-116605A7BC9B}.Debug|Any CPU.ActiveCfg = Debug|Win32
+ {855DC8C0-D3E9-4A2E-AE47-116605A7BC9B}.Debug|x64.ActiveCfg = Debug|x64
+ {855DC8C0-D3E9-4A2E-AE47-116605A7BC9B}.Debug|x64.Build.0 = Debug|x64
+ {855DC8C0-D3E9-4A2E-AE47-116605A7BC9B}.Debug|x86.ActiveCfg = Debug|Win32
+ {855DC8C0-D3E9-4A2E-AE47-116605A7BC9B}.Debug|x86.Build.0 = Debug|Win32
+ {855DC8C0-D3E9-4A2E-AE47-116605A7BC9B}.Release|Any CPU.ActiveCfg = Release|Win32
+ {855DC8C0-D3E9-4A2E-AE47-116605A7BC9B}.Release|x64.ActiveCfg = Release|x64
+ {855DC8C0-D3E9-4A2E-AE47-116605A7BC9B}.Release|x64.Build.0 = Release|x64
+ {855DC8C0-D3E9-4A2E-AE47-116605A7BC9B}.Release|x86.ActiveCfg = Release|Win32
+ {855DC8C0-D3E9-4A2E-AE47-116605A7BC9B}.Release|x86.Build.0 = Release|Win32
+ {855DC8C0-D3E9-4A2E-AE47-116605A7BC9B}.ReleaseCompile|Any CPU.ActiveCfg = Release|ARM
+ {855DC8C0-D3E9-4A2E-AE47-116605A7BC9B}.ReleaseCompile|Any CPU.Build.0 = Release|ARM
+ {855DC8C0-D3E9-4A2E-AE47-116605A7BC9B}.ReleaseCompile|x64.ActiveCfg = Release|x64
+ {855DC8C0-D3E9-4A2E-AE47-116605A7BC9B}.ReleaseCompile|x64.Build.0 = Release|x64
+ {855DC8C0-D3E9-4A2E-AE47-116605A7BC9B}.ReleaseCompile|x86.ActiveCfg = Release-Static|Win32
+ {855DC8C0-D3E9-4A2E-AE47-116605A7BC9B}.ReleaseCompile|x86.Build.0 = Release-Static|Win32
+ {855DC8C0-D3E9-4A2E-AE47-116605A7BC9B}.ReleaseLib_win32|Any CPU.ActiveCfg = Release|ARM
+ {855DC8C0-D3E9-4A2E-AE47-116605A7BC9B}.ReleaseLib_win32|Any CPU.Build.0 = Release|ARM
+ {855DC8C0-D3E9-4A2E-AE47-116605A7BC9B}.ReleaseLib_win32|x64.ActiveCfg = Release|x64
+ {855DC8C0-D3E9-4A2E-AE47-116605A7BC9B}.ReleaseLib_win32|x64.Build.0 = Release|x64
+ {855DC8C0-D3E9-4A2E-AE47-116605A7BC9B}.ReleaseLib_win32|x86.ActiveCfg = Release-Static|Win32
+ {855DC8C0-D3E9-4A2E-AE47-116605A7BC9B}.ReleaseLib_win32|x86.Build.0 = Release-Static|Win32
+ {855DC8C0-D3E9-4A2E-AE47-116605A7BC9B}.ReleaseLib|Any CPU.ActiveCfg = Release|ARM
+ {855DC8C0-D3E9-4A2E-AE47-116605A7BC9B}.ReleaseLib|Any CPU.Build.0 = Release|ARM
+ {855DC8C0-D3E9-4A2E-AE47-116605A7BC9B}.ReleaseLib|x64.ActiveCfg = Release|x64
+ {855DC8C0-D3E9-4A2E-AE47-116605A7BC9B}.ReleaseLib|x64.Build.0 = Release|x64
+ {855DC8C0-D3E9-4A2E-AE47-116605A7BC9B}.ReleaseLib|x86.ActiveCfg = Release-Static|Win32
+ {855DC8C0-D3E9-4A2E-AE47-116605A7BC9B}.ReleaseLib|x86.Build.0 = Release-Static|Win32
+ {FE07F272-AE7F-4549-9E9F-EF9B80CB1693}.Beta|Any CPU.ActiveCfg = Release|Win32
+ {FE07F272-AE7F-4549-9E9F-EF9B80CB1693}.Beta|x64.ActiveCfg = Release|x64
+ {FE07F272-AE7F-4549-9E9F-EF9B80CB1693}.Beta|x64.Build.0 = Release|x64
+ {FE07F272-AE7F-4549-9E9F-EF9B80CB1693}.Beta|x86.ActiveCfg = Release|Win32
+ {FE07F272-AE7F-4549-9E9F-EF9B80CB1693}.Beta|x86.Build.0 = Release|Win32
+ {FE07F272-AE7F-4549-9E9F-EF9B80CB1693}.Debug|Any CPU.ActiveCfg = Debug|Win32
+ {FE07F272-AE7F-4549-9E9F-EF9B80CB1693}.Debug|x64.ActiveCfg = Debug|x64
+ {FE07F272-AE7F-4549-9E9F-EF9B80CB1693}.Debug|x64.Build.0 = Debug|x64
+ {FE07F272-AE7F-4549-9E9F-EF9B80CB1693}.Debug|x86.ActiveCfg = Debug|Win32
+ {FE07F272-AE7F-4549-9E9F-EF9B80CB1693}.Debug|x86.Build.0 = Debug|Win32
+ {FE07F272-AE7F-4549-9E9F-EF9B80CB1693}.Release|Any CPU.ActiveCfg = Release|Win32
+ {FE07F272-AE7F-4549-9E9F-EF9B80CB1693}.Release|x64.ActiveCfg = Release|x64
+ {FE07F272-AE7F-4549-9E9F-EF9B80CB1693}.Release|x64.Build.0 = Release|x64
+ {FE07F272-AE7F-4549-9E9F-EF9B80CB1693}.Release|x86.ActiveCfg = Release|Win32
+ {FE07F272-AE7F-4549-9E9F-EF9B80CB1693}.Release|x86.Build.0 = Release|Win32
+ {FE07F272-AE7F-4549-9E9F-EF9B80CB1693}.ReleaseCompile|Any CPU.ActiveCfg = Release|ARM
+ {FE07F272-AE7F-4549-9E9F-EF9B80CB1693}.ReleaseCompile|Any CPU.Build.0 = Release|ARM
+ {FE07F272-AE7F-4549-9E9F-EF9B80CB1693}.ReleaseCompile|x64.ActiveCfg = Release|x64
+ {FE07F272-AE7F-4549-9E9F-EF9B80CB1693}.ReleaseCompile|x64.Build.0 = Release|x64
+ {FE07F272-AE7F-4549-9E9F-EF9B80CB1693}.ReleaseCompile|x86.ActiveCfg = Release-Static|Win32
+ {FE07F272-AE7F-4549-9E9F-EF9B80CB1693}.ReleaseCompile|x86.Build.0 = Release-Static|Win32
+ {FE07F272-AE7F-4549-9E9F-EF9B80CB1693}.ReleaseLib_win32|Any CPU.ActiveCfg = Release|ARM
+ {FE07F272-AE7F-4549-9E9F-EF9B80CB1693}.ReleaseLib_win32|Any CPU.Build.0 = Release|ARM
+ {FE07F272-AE7F-4549-9E9F-EF9B80CB1693}.ReleaseLib_win32|x64.ActiveCfg = Release|x64
+ {FE07F272-AE7F-4549-9E9F-EF9B80CB1693}.ReleaseLib_win32|x64.Build.0 = Release|x64
+ {FE07F272-AE7F-4549-9E9F-EF9B80CB1693}.ReleaseLib_win32|x86.ActiveCfg = Release-Static|Win32
+ {FE07F272-AE7F-4549-9E9F-EF9B80CB1693}.ReleaseLib_win32|x86.Build.0 = Release-Static|Win32
+ {FE07F272-AE7F-4549-9E9F-EF9B80CB1693}.ReleaseLib|Any CPU.ActiveCfg = Release|ARM
+ {FE07F272-AE7F-4549-9E9F-EF9B80CB1693}.ReleaseLib|Any CPU.Build.0 = Release|ARM
+ {FE07F272-AE7F-4549-9E9F-EF9B80CB1693}.ReleaseLib|x64.ActiveCfg = Release|x64
+ {FE07F272-AE7F-4549-9E9F-EF9B80CB1693}.ReleaseLib|x64.Build.0 = Release|x64
+ {FE07F272-AE7F-4549-9E9F-EF9B80CB1693}.ReleaseLib|x86.ActiveCfg = Release-Static|Win32
+ {FE07F272-AE7F-4549-9E9F-EF9B80CB1693}.ReleaseLib|x86.Build.0 = Release-Static|Win32
+ {DA0E03ED-53A7-4050-8A85-90541C5509F8}.Beta|Any CPU.ActiveCfg = Release|Win32
+ {DA0E03ED-53A7-4050-8A85-90541C5509F8}.Beta|x64.ActiveCfg = Release|x64
+ {DA0E03ED-53A7-4050-8A85-90541C5509F8}.Beta|x64.Build.0 = Release|x64
+ {DA0E03ED-53A7-4050-8A85-90541C5509F8}.Beta|x86.ActiveCfg = Release|Win32
+ {DA0E03ED-53A7-4050-8A85-90541C5509F8}.Beta|x86.Build.0 = Release|Win32
+ {DA0E03ED-53A7-4050-8A85-90541C5509F8}.Debug|Any CPU.ActiveCfg = Debug|Win32
+ {DA0E03ED-53A7-4050-8A85-90541C5509F8}.Debug|x64.ActiveCfg = Debug|x64
+ {DA0E03ED-53A7-4050-8A85-90541C5509F8}.Debug|x64.Build.0 = Debug|x64
+ {DA0E03ED-53A7-4050-8A85-90541C5509F8}.Debug|x86.ActiveCfg = Debug|Win32
+ {DA0E03ED-53A7-4050-8A85-90541C5509F8}.Debug|x86.Build.0 = Debug|Win32
+ {DA0E03ED-53A7-4050-8A85-90541C5509F8}.Release|Any CPU.ActiveCfg = Release|Win32
+ {DA0E03ED-53A7-4050-8A85-90541C5509F8}.Release|x64.ActiveCfg = Release|x64
+ {DA0E03ED-53A7-4050-8A85-90541C5509F8}.Release|x64.Build.0 = Release|x64
+ {DA0E03ED-53A7-4050-8A85-90541C5509F8}.Release|x86.ActiveCfg = Release|Win32
+ {DA0E03ED-53A7-4050-8A85-90541C5509F8}.Release|x86.Build.0 = Release|Win32
+ {DA0E03ED-53A7-4050-8A85-90541C5509F8}.ReleaseCompile|Any CPU.ActiveCfg = Release|ARM
+ {DA0E03ED-53A7-4050-8A85-90541C5509F8}.ReleaseCompile|Any CPU.Build.0 = Release|ARM
+ {DA0E03ED-53A7-4050-8A85-90541C5509F8}.ReleaseCompile|x64.ActiveCfg = Release|x64
+ {DA0E03ED-53A7-4050-8A85-90541C5509F8}.ReleaseCompile|x64.Build.0 = Release|x64
+ {DA0E03ED-53A7-4050-8A85-90541C5509F8}.ReleaseCompile|x86.ActiveCfg = Release-Static|Win32
+ {DA0E03ED-53A7-4050-8A85-90541C5509F8}.ReleaseCompile|x86.Build.0 = Release-Static|Win32
+ {DA0E03ED-53A7-4050-8A85-90541C5509F8}.ReleaseLib_win32|Any CPU.ActiveCfg = Release|ARM
+ {DA0E03ED-53A7-4050-8A85-90541C5509F8}.ReleaseLib_win32|Any CPU.Build.0 = Release|ARM
+ {DA0E03ED-53A7-4050-8A85-90541C5509F8}.ReleaseLib_win32|x64.ActiveCfg = Release|x64
+ {DA0E03ED-53A7-4050-8A85-90541C5509F8}.ReleaseLib_win32|x64.Build.0 = Release|x64
+ {DA0E03ED-53A7-4050-8A85-90541C5509F8}.ReleaseLib_win32|x86.ActiveCfg = Release-Static|Win32
+ {DA0E03ED-53A7-4050-8A85-90541C5509F8}.ReleaseLib_win32|x86.Build.0 = Release-Static|Win32
+ {DA0E03ED-53A7-4050-8A85-90541C5509F8}.ReleaseLib|Any CPU.ActiveCfg = Release|ARM
+ {DA0E03ED-53A7-4050-8A85-90541C5509F8}.ReleaseLib|Any CPU.Build.0 = Release|ARM
+ {DA0E03ED-53A7-4050-8A85-90541C5509F8}.ReleaseLib|x64.ActiveCfg = Release|x64
+ {DA0E03ED-53A7-4050-8A85-90541C5509F8}.ReleaseLib|x64.Build.0 = Release|x64
+ {DA0E03ED-53A7-4050-8A85-90541C5509F8}.ReleaseLib|x86.ActiveCfg = Release-Static|Win32
+ {DA0E03ED-53A7-4050-8A85-90541C5509F8}.ReleaseLib|x86.Build.0 = Release-Static|Win32
+ {2BB84911-C1B4-4747-B93D-36AA82CC5031}.Beta|Any CPU.ActiveCfg = Release|Win32
+ {2BB84911-C1B4-4747-B93D-36AA82CC5031}.Beta|x64.ActiveCfg = Release|x64
+ {2BB84911-C1B4-4747-B93D-36AA82CC5031}.Beta|x64.Build.0 = Release|x64
+ {2BB84911-C1B4-4747-B93D-36AA82CC5031}.Beta|x86.ActiveCfg = Release|Win32
+ {2BB84911-C1B4-4747-B93D-36AA82CC5031}.Beta|x86.Build.0 = Release|Win32
+ {2BB84911-C1B4-4747-B93D-36AA82CC5031}.Debug|Any CPU.ActiveCfg = Debug|Win32
+ {2BB84911-C1B4-4747-B93D-36AA82CC5031}.Debug|x64.ActiveCfg = Debug|x64
+ {2BB84911-C1B4-4747-B93D-36AA82CC5031}.Debug|x64.Build.0 = Debug|x64
+ {2BB84911-C1B4-4747-B93D-36AA82CC5031}.Debug|x86.ActiveCfg = Debug|Win32
+ {2BB84911-C1B4-4747-B93D-36AA82CC5031}.Debug|x86.Build.0 = Debug|Win32
+ {2BB84911-C1B4-4747-B93D-36AA82CC5031}.Release|Any CPU.ActiveCfg = Release|Win32
+ {2BB84911-C1B4-4747-B93D-36AA82CC5031}.Release|x64.ActiveCfg = Release|x64
+ {2BB84911-C1B4-4747-B93D-36AA82CC5031}.Release|x64.Build.0 = Release|x64
+ {2BB84911-C1B4-4747-B93D-36AA82CC5031}.Release|x86.ActiveCfg = Release|Win32
+ {2BB84911-C1B4-4747-B93D-36AA82CC5031}.Release|x86.Build.0 = Release|Win32
+ {2BB84911-C1B4-4747-B93D-36AA82CC5031}.ReleaseCompile|Any CPU.ActiveCfg = Release|ARM
+ {2BB84911-C1B4-4747-B93D-36AA82CC5031}.ReleaseCompile|Any CPU.Build.0 = Release|ARM
+ {2BB84911-C1B4-4747-B93D-36AA82CC5031}.ReleaseCompile|x64.ActiveCfg = Release|x64
+ {2BB84911-C1B4-4747-B93D-36AA82CC5031}.ReleaseCompile|x64.Build.0 = Release|x64
+ {2BB84911-C1B4-4747-B93D-36AA82CC5031}.ReleaseCompile|x86.ActiveCfg = Release-Static|Win32
+ {2BB84911-C1B4-4747-B93D-36AA82CC5031}.ReleaseCompile|x86.Build.0 = Release-Static|Win32
+ {2BB84911-C1B4-4747-B93D-36AA82CC5031}.ReleaseLib_win32|Any CPU.ActiveCfg = Release|ARM
+ {2BB84911-C1B4-4747-B93D-36AA82CC5031}.ReleaseLib_win32|Any CPU.Build.0 = Release|ARM
+ {2BB84911-C1B4-4747-B93D-36AA82CC5031}.ReleaseLib_win32|x64.ActiveCfg = Release|x64
+ {2BB84911-C1B4-4747-B93D-36AA82CC5031}.ReleaseLib_win32|x64.Build.0 = Release|x64
+ {2BB84911-C1B4-4747-B93D-36AA82CC5031}.ReleaseLib_win32|x86.ActiveCfg = Release-Static|Win32
+ {2BB84911-C1B4-4747-B93D-36AA82CC5031}.ReleaseLib_win32|x86.Build.0 = Release-Static|Win32
+ {2BB84911-C1B4-4747-B93D-36AA82CC5031}.ReleaseLib|Any CPU.ActiveCfg = Release|ARM
+ {2BB84911-C1B4-4747-B93D-36AA82CC5031}.ReleaseLib|Any CPU.Build.0 = Release|ARM
+ {2BB84911-C1B4-4747-B93D-36AA82CC5031}.ReleaseLib|x64.ActiveCfg = Release|x64
+ {2BB84911-C1B4-4747-B93D-36AA82CC5031}.ReleaseLib|x64.Build.0 = Release|x64
+ {2BB84911-C1B4-4747-B93D-36AA82CC5031}.ReleaseLib|x86.ActiveCfg = Release-Static|Win32
+ {2BB84911-C1B4-4747-B93D-36AA82CC5031}.ReleaseLib|x86.Build.0 = Release-Static|Win32
+ {B82CDD25-6903-430E-BD38-D8129A2015C1}.Beta|Any CPU.ActiveCfg = Release|Win32
+ {B82CDD25-6903-430E-BD38-D8129A2015C1}.Beta|x64.ActiveCfg = Release|x64
+ {B82CDD25-6903-430E-BD38-D8129A2015C1}.Beta|x64.Build.0 = Release|x64
+ {B82CDD25-6903-430E-BD38-D8129A2015C1}.Beta|x86.ActiveCfg = Release|Win32
+ {B82CDD25-6903-430E-BD38-D8129A2015C1}.Beta|x86.Build.0 = Release|Win32
+ {B82CDD25-6903-430E-BD38-D8129A2015C1}.Debug|Any CPU.ActiveCfg = Debug|Win32
+ {B82CDD25-6903-430E-BD38-D8129A2015C1}.Debug|x64.ActiveCfg = Debug|x64
+ {B82CDD25-6903-430E-BD38-D8129A2015C1}.Debug|x64.Build.0 = Debug|x64
+ {B82CDD25-6903-430E-BD38-D8129A2015C1}.Debug|x86.ActiveCfg = Debug|Win32
+ {B82CDD25-6903-430E-BD38-D8129A2015C1}.Debug|x86.Build.0 = Debug|Win32
+ {B82CDD25-6903-430E-BD38-D8129A2015C1}.Release|Any CPU.ActiveCfg = Release|Win32
+ {B82CDD25-6903-430E-BD38-D8129A2015C1}.Release|x64.ActiveCfg = Release|x64
+ {B82CDD25-6903-430E-BD38-D8129A2015C1}.Release|x64.Build.0 = Release|x64
+ {B82CDD25-6903-430E-BD38-D8129A2015C1}.Release|x86.ActiveCfg = Release|Win32
+ {B82CDD25-6903-430E-BD38-D8129A2015C1}.Release|x86.Build.0 = Release|Win32
+ {B82CDD25-6903-430E-BD38-D8129A2015C1}.ReleaseCompile|Any CPU.ActiveCfg = Release|ARM
+ {B82CDD25-6903-430E-BD38-D8129A2015C1}.ReleaseCompile|Any CPU.Build.0 = Release|ARM
+ {B82CDD25-6903-430E-BD38-D8129A2015C1}.ReleaseCompile|x64.ActiveCfg = Release|x64
+ {B82CDD25-6903-430E-BD38-D8129A2015C1}.ReleaseCompile|x64.Build.0 = Release|x64
+ {B82CDD25-6903-430E-BD38-D8129A2015C1}.ReleaseCompile|x86.ActiveCfg = Release-Static|Win32
+ {B82CDD25-6903-430E-BD38-D8129A2015C1}.ReleaseCompile|x86.Build.0 = Release-Static|Win32
+ {B82CDD25-6903-430E-BD38-D8129A2015C1}.ReleaseLib_win32|Any CPU.ActiveCfg = Release|ARM
+ {B82CDD25-6903-430E-BD38-D8129A2015C1}.ReleaseLib_win32|Any CPU.Build.0 = Release|ARM
+ {B82CDD25-6903-430E-BD38-D8129A2015C1}.ReleaseLib_win32|x64.ActiveCfg = Release|x64
+ {B82CDD25-6903-430E-BD38-D8129A2015C1}.ReleaseLib_win32|x64.Build.0 = Release|x64
+ {B82CDD25-6903-430E-BD38-D8129A2015C1}.ReleaseLib_win32|x86.ActiveCfg = Release-Static|Win32
+ {B82CDD25-6903-430E-BD38-D8129A2015C1}.ReleaseLib_win32|x86.Build.0 = Release-Static|Win32
+ {B82CDD25-6903-430E-BD38-D8129A2015C1}.ReleaseLib|Any CPU.ActiveCfg = Release|ARM
+ {B82CDD25-6903-430E-BD38-D8129A2015C1}.ReleaseLib|Any CPU.Build.0 = Release|ARM
+ {B82CDD25-6903-430E-BD38-D8129A2015C1}.ReleaseLib|x64.ActiveCfg = Release|x64
+ {B82CDD25-6903-430E-BD38-D8129A2015C1}.ReleaseLib|x64.Build.0 = Release|x64
+ {B82CDD25-6903-430E-BD38-D8129A2015C1}.ReleaseLib|x86.ActiveCfg = Release-Static|Win32
+ {B82CDD25-6903-430E-BD38-D8129A2015C1}.ReleaseLib|x86.Build.0 = Release-Static|Win32
+ {9CA0FDFB-2172-41FC-B7F1-5CE915EDCB37}.Beta|Any CPU.ActiveCfg = Release|Win32
+ {9CA0FDFB-2172-41FC-B7F1-5CE915EDCB37}.Beta|x64.ActiveCfg = Release|x64
+ {9CA0FDFB-2172-41FC-B7F1-5CE915EDCB37}.Beta|x64.Build.0 = Release|x64
+ {9CA0FDFB-2172-41FC-B7F1-5CE915EDCB37}.Beta|x86.ActiveCfg = Release|Win32
+ {9CA0FDFB-2172-41FC-B7F1-5CE915EDCB37}.Beta|x86.Build.0 = Release|Win32
+ {9CA0FDFB-2172-41FC-B7F1-5CE915EDCB37}.Debug|Any CPU.ActiveCfg = Debug|Win32
+ {9CA0FDFB-2172-41FC-B7F1-5CE915EDCB37}.Debug|x64.ActiveCfg = Debug|x64
+ {9CA0FDFB-2172-41FC-B7F1-5CE915EDCB37}.Debug|x64.Build.0 = Debug|x64
+ {9CA0FDFB-2172-41FC-B7F1-5CE915EDCB37}.Debug|x86.ActiveCfg = Debug|Win32
+ {9CA0FDFB-2172-41FC-B7F1-5CE915EDCB37}.Debug|x86.Build.0 = Debug|Win32
+ {9CA0FDFB-2172-41FC-B7F1-5CE915EDCB37}.Release|Any CPU.ActiveCfg = Release|Win32
+ {9CA0FDFB-2172-41FC-B7F1-5CE915EDCB37}.Release|x64.ActiveCfg = Release|x64
+ {9CA0FDFB-2172-41FC-B7F1-5CE915EDCB37}.Release|x64.Build.0 = Release|x64
+ {9CA0FDFB-2172-41FC-B7F1-5CE915EDCB37}.Release|x86.ActiveCfg = Release|Win32
+ {9CA0FDFB-2172-41FC-B7F1-5CE915EDCB37}.Release|x86.Build.0 = Release|Win32
+ {9CA0FDFB-2172-41FC-B7F1-5CE915EDCB37}.ReleaseCompile|Any CPU.ActiveCfg = Release|ARM
+ {9CA0FDFB-2172-41FC-B7F1-5CE915EDCB37}.ReleaseCompile|Any CPU.Build.0 = Release|ARM
+ {9CA0FDFB-2172-41FC-B7F1-5CE915EDCB37}.ReleaseCompile|x64.ActiveCfg = Release|x64
+ {9CA0FDFB-2172-41FC-B7F1-5CE915EDCB37}.ReleaseCompile|x64.Build.0 = Release|x64
+ {9CA0FDFB-2172-41FC-B7F1-5CE915EDCB37}.ReleaseCompile|x86.ActiveCfg = Release-Static|Win32
+ {9CA0FDFB-2172-41FC-B7F1-5CE915EDCB37}.ReleaseCompile|x86.Build.0 = Release-Static|Win32
+ {9CA0FDFB-2172-41FC-B7F1-5CE915EDCB37}.ReleaseLib_win32|Any CPU.ActiveCfg = Release|ARM
+ {9CA0FDFB-2172-41FC-B7F1-5CE915EDCB37}.ReleaseLib_win32|Any CPU.Build.0 = Release|ARM
+ {9CA0FDFB-2172-41FC-B7F1-5CE915EDCB37}.ReleaseLib_win32|x64.ActiveCfg = Release|x64
+ {9CA0FDFB-2172-41FC-B7F1-5CE915EDCB37}.ReleaseLib_win32|x64.Build.0 = Release|x64
+ {9CA0FDFB-2172-41FC-B7F1-5CE915EDCB37}.ReleaseLib_win32|x86.ActiveCfg = Release-Static|Win32
+ {9CA0FDFB-2172-41FC-B7F1-5CE915EDCB37}.ReleaseLib_win32|x86.Build.0 = Release-Static|Win32
+ {9CA0FDFB-2172-41FC-B7F1-5CE915EDCB37}.ReleaseLib|Any CPU.ActiveCfg = Release|ARM
+ {9CA0FDFB-2172-41FC-B7F1-5CE915EDCB37}.ReleaseLib|Any CPU.Build.0 = Release|ARM
+ {9CA0FDFB-2172-41FC-B7F1-5CE915EDCB37}.ReleaseLib|x64.ActiveCfg = Release|x64
+ {9CA0FDFB-2172-41FC-B7F1-5CE915EDCB37}.ReleaseLib|x64.Build.0 = Release|x64
+ {9CA0FDFB-2172-41FC-B7F1-5CE915EDCB37}.ReleaseLib|x86.ActiveCfg = Release-Static|Win32
+ {9CA0FDFB-2172-41FC-B7F1-5CE915EDCB37}.ReleaseLib|x86.Build.0 = Release-Static|Win32
+ {4B5945CD-0CB3-49AA-A7FF-7612D93F82C0}.Beta|Any CPU.ActiveCfg = Release|Win32
+ {4B5945CD-0CB3-49AA-A7FF-7612D93F82C0}.Beta|x64.ActiveCfg = Release|x64
+ {4B5945CD-0CB3-49AA-A7FF-7612D93F82C0}.Beta|x64.Build.0 = Release|x64
+ {4B5945CD-0CB3-49AA-A7FF-7612D93F82C0}.Beta|x86.ActiveCfg = Release|Win32
+ {4B5945CD-0CB3-49AA-A7FF-7612D93F82C0}.Beta|x86.Build.0 = Release|Win32
+ {4B5945CD-0CB3-49AA-A7FF-7612D93F82C0}.Debug|Any CPU.ActiveCfg = Debug|Win32
+ {4B5945CD-0CB3-49AA-A7FF-7612D93F82C0}.Debug|x64.ActiveCfg = Debug|x64
+ {4B5945CD-0CB3-49AA-A7FF-7612D93F82C0}.Debug|x64.Build.0 = Debug|x64
+ {4B5945CD-0CB3-49AA-A7FF-7612D93F82C0}.Debug|x86.ActiveCfg = Debug|Win32
+ {4B5945CD-0CB3-49AA-A7FF-7612D93F82C0}.Debug|x86.Build.0 = Debug|Win32
+ {4B5945CD-0CB3-49AA-A7FF-7612D93F82C0}.Release|Any CPU.ActiveCfg = Release|Win32
+ {4B5945CD-0CB3-49AA-A7FF-7612D93F82C0}.Release|x64.ActiveCfg = Release|x64
+ {4B5945CD-0CB3-49AA-A7FF-7612D93F82C0}.Release|x64.Build.0 = Release|x64
+ {4B5945CD-0CB3-49AA-A7FF-7612D93F82C0}.Release|x86.ActiveCfg = Release|Win32
+ {4B5945CD-0CB3-49AA-A7FF-7612D93F82C0}.Release|x86.Build.0 = Release|Win32
+ {4B5945CD-0CB3-49AA-A7FF-7612D93F82C0}.ReleaseCompile|Any CPU.ActiveCfg = Release|ARM
+ {4B5945CD-0CB3-49AA-A7FF-7612D93F82C0}.ReleaseCompile|Any CPU.Build.0 = Release|ARM
+ {4B5945CD-0CB3-49AA-A7FF-7612D93F82C0}.ReleaseCompile|x64.ActiveCfg = Release|x64
+ {4B5945CD-0CB3-49AA-A7FF-7612D93F82C0}.ReleaseCompile|x64.Build.0 = Release|x64
+ {4B5945CD-0CB3-49AA-A7FF-7612D93F82C0}.ReleaseCompile|x86.ActiveCfg = Release-Static|Win32
+ {4B5945CD-0CB3-49AA-A7FF-7612D93F82C0}.ReleaseCompile|x86.Build.0 = Release-Static|Win32
+ {4B5945CD-0CB3-49AA-A7FF-7612D93F82C0}.ReleaseLib_win32|Any CPU.ActiveCfg = Release|ARM
+ {4B5945CD-0CB3-49AA-A7FF-7612D93F82C0}.ReleaseLib_win32|Any CPU.Build.0 = Release|ARM
+ {4B5945CD-0CB3-49AA-A7FF-7612D93F82C0}.ReleaseLib_win32|x64.ActiveCfg = Release|x64
+ {4B5945CD-0CB3-49AA-A7FF-7612D93F82C0}.ReleaseLib_win32|x64.Build.0 = Release|x64
+ {4B5945CD-0CB3-49AA-A7FF-7612D93F82C0}.ReleaseLib_win32|x86.ActiveCfg = Release-Static|Win32
+ {4B5945CD-0CB3-49AA-A7FF-7612D93F82C0}.ReleaseLib_win32|x86.Build.0 = Release-Static|Win32
+ {4B5945CD-0CB3-49AA-A7FF-7612D93F82C0}.ReleaseLib|Any CPU.ActiveCfg = Release|ARM
+ {4B5945CD-0CB3-49AA-A7FF-7612D93F82C0}.ReleaseLib|Any CPU.Build.0 = Release|ARM
+ {4B5945CD-0CB3-49AA-A7FF-7612D93F82C0}.ReleaseLib|x64.ActiveCfg = Release|x64
+ {4B5945CD-0CB3-49AA-A7FF-7612D93F82C0}.ReleaseLib|x64.Build.0 = Release|x64
+ {4B5945CD-0CB3-49AA-A7FF-7612D93F82C0}.ReleaseLib|x86.ActiveCfg = Release-Static|Win32
+ {4B5945CD-0CB3-49AA-A7FF-7612D93F82C0}.ReleaseLib|x86.Build.0 = Release-Static|Win32
+ {B8719FD5-E8A6-4A36-943C-891D07F5DD21}.Beta|Any CPU.ActiveCfg = Release|Win32
+ {B8719FD5-E8A6-4A36-943C-891D07F5DD21}.Beta|x64.ActiveCfg = Release|x64
+ {B8719FD5-E8A6-4A36-943C-891D07F5DD21}.Beta|x64.Build.0 = Release|x64
+ {B8719FD5-E8A6-4A36-943C-891D07F5DD21}.Beta|x86.ActiveCfg = Release|Win32
+ {B8719FD5-E8A6-4A36-943C-891D07F5DD21}.Beta|x86.Build.0 = Release|Win32
+ {B8719FD5-E8A6-4A36-943C-891D07F5DD21}.Debug|Any CPU.ActiveCfg = Debug|Win32
+ {B8719FD5-E8A6-4A36-943C-891D07F5DD21}.Debug|x64.ActiveCfg = Debug|x64
+ {B8719FD5-E8A6-4A36-943C-891D07F5DD21}.Debug|x64.Build.0 = Debug|x64
+ {B8719FD5-E8A6-4A36-943C-891D07F5DD21}.Debug|x86.ActiveCfg = Debug|Win32
+ {B8719FD5-E8A6-4A36-943C-891D07F5DD21}.Debug|x86.Build.0 = Debug|Win32
+ {B8719FD5-E8A6-4A36-943C-891D07F5DD21}.Release|Any CPU.ActiveCfg = Release|Win32
+ {B8719FD5-E8A6-4A36-943C-891D07F5DD21}.Release|x64.ActiveCfg = Release|x64
+ {B8719FD5-E8A6-4A36-943C-891D07F5DD21}.Release|x64.Build.0 = Release|x64
+ {B8719FD5-E8A6-4A36-943C-891D07F5DD21}.Release|x86.ActiveCfg = Release|Win32
+ {B8719FD5-E8A6-4A36-943C-891D07F5DD21}.Release|x86.Build.0 = Release|Win32
+ {B8719FD5-E8A6-4A36-943C-891D07F5DD21}.ReleaseCompile|Any CPU.ActiveCfg = Release|ARM
+ {B8719FD5-E8A6-4A36-943C-891D07F5DD21}.ReleaseCompile|Any CPU.Build.0 = Release|ARM
+ {B8719FD5-E8A6-4A36-943C-891D07F5DD21}.ReleaseCompile|x64.ActiveCfg = Release|x64
+ {B8719FD5-E8A6-4A36-943C-891D07F5DD21}.ReleaseCompile|x64.Build.0 = Release|x64
+ {B8719FD5-E8A6-4A36-943C-891D07F5DD21}.ReleaseCompile|x86.ActiveCfg = Release-Static|Win32
+ {B8719FD5-E8A6-4A36-943C-891D07F5DD21}.ReleaseCompile|x86.Build.0 = Release-Static|Win32
+ {B8719FD5-E8A6-4A36-943C-891D07F5DD21}.ReleaseLib_win32|Any CPU.ActiveCfg = Release|ARM
+ {B8719FD5-E8A6-4A36-943C-891D07F5DD21}.ReleaseLib_win32|Any CPU.Build.0 = Release|ARM
+ {B8719FD5-E8A6-4A36-943C-891D07F5DD21}.ReleaseLib_win32|x64.ActiveCfg = Release|x64
+ {B8719FD5-E8A6-4A36-943C-891D07F5DD21}.ReleaseLib_win32|x64.Build.0 = Release|x64
+ {B8719FD5-E8A6-4A36-943C-891D07F5DD21}.ReleaseLib_win32|x86.ActiveCfg = Release-Static|Win32
+ {B8719FD5-E8A6-4A36-943C-891D07F5DD21}.ReleaseLib_win32|x86.Build.0 = Release-Static|Win32
+ {B8719FD5-E8A6-4A36-943C-891D07F5DD21}.ReleaseLib|Any CPU.ActiveCfg = Release|ARM
+ {B8719FD5-E8A6-4A36-943C-891D07F5DD21}.ReleaseLib|Any CPU.Build.0 = Release|ARM
+ {B8719FD5-E8A6-4A36-943C-891D07F5DD21}.ReleaseLib|x64.ActiveCfg = Release|x64
+ {B8719FD5-E8A6-4A36-943C-891D07F5DD21}.ReleaseLib|x64.Build.0 = Release|x64
+ {B8719FD5-E8A6-4A36-943C-891D07F5DD21}.ReleaseLib|x86.ActiveCfg = Release-Static|Win32
+ {B8719FD5-E8A6-4A36-943C-891D07F5DD21}.ReleaseLib|x86.Build.0 = Release-Static|Win32
+ {711397CE-E5D5-467D-9457-8716C047E50C}.Beta|Any CPU.ActiveCfg = Release|Win32
+ {711397CE-E5D5-467D-9457-8716C047E50C}.Beta|x64.ActiveCfg = Release|x64
+ {711397CE-E5D5-467D-9457-8716C047E50C}.Beta|x64.Build.0 = Release|x64
+ {711397CE-E5D5-467D-9457-8716C047E50C}.Beta|x86.ActiveCfg = Release|Win32
+ {711397CE-E5D5-467D-9457-8716C047E50C}.Beta|x86.Build.0 = Release|Win32
+ {711397CE-E5D5-467D-9457-8716C047E50C}.Debug|Any CPU.ActiveCfg = Debug|Win32
+ {711397CE-E5D5-467D-9457-8716C047E50C}.Debug|x64.ActiveCfg = Debug|x64
+ {711397CE-E5D5-467D-9457-8716C047E50C}.Debug|x64.Build.0 = Debug|x64
+ {711397CE-E5D5-467D-9457-8716C047E50C}.Debug|x86.ActiveCfg = Debug|Win32
+ {711397CE-E5D5-467D-9457-8716C047E50C}.Debug|x86.Build.0 = Debug|Win32
+ {711397CE-E5D5-467D-9457-8716C047E50C}.Release|Any CPU.ActiveCfg = Release|Win32
+ {711397CE-E5D5-467D-9457-8716C047E50C}.Release|x64.ActiveCfg = Release|x64
+ {711397CE-E5D5-467D-9457-8716C047E50C}.Release|x64.Build.0 = Release|x64
+ {711397CE-E5D5-467D-9457-8716C047E50C}.Release|x86.ActiveCfg = Release|Win32
+ {711397CE-E5D5-467D-9457-8716C047E50C}.Release|x86.Build.0 = Release|Win32
+ {711397CE-E5D5-467D-9457-8716C047E50C}.ReleaseCompile|Any CPU.ActiveCfg = Release|x64
+ {711397CE-E5D5-467D-9457-8716C047E50C}.ReleaseCompile|Any CPU.Build.0 = Release|x64
+ {711397CE-E5D5-467D-9457-8716C047E50C}.ReleaseCompile|x64.ActiveCfg = Release|x64
+ {711397CE-E5D5-467D-9457-8716C047E50C}.ReleaseCompile|x64.Build.0 = Release|x64
+ {711397CE-E5D5-467D-9457-8716C047E50C}.ReleaseCompile|x86.ActiveCfg = Release|Win32
+ {711397CE-E5D5-467D-9457-8716C047E50C}.ReleaseCompile|x86.Build.0 = Release|Win32
+ {711397CE-E5D5-467D-9457-8716C047E50C}.ReleaseLib_win32|Any CPU.ActiveCfg = Release|x64
+ {711397CE-E5D5-467D-9457-8716C047E50C}.ReleaseLib_win32|Any CPU.Build.0 = Release|x64
+ {711397CE-E5D5-467D-9457-8716C047E50C}.ReleaseLib_win32|x64.ActiveCfg = Release|x64
+ {711397CE-E5D5-467D-9457-8716C047E50C}.ReleaseLib_win32|x64.Build.0 = Release|x64
+ {711397CE-E5D5-467D-9457-8716C047E50C}.ReleaseLib_win32|x86.ActiveCfg = Release|Win32
+ {711397CE-E5D5-467D-9457-8716C047E50C}.ReleaseLib_win32|x86.Build.0 = Release|Win32
+ {711397CE-E5D5-467D-9457-8716C047E50C}.ReleaseLib|Any CPU.ActiveCfg = Release|x64
+ {711397CE-E5D5-467D-9457-8716C047E50C}.ReleaseLib|Any CPU.Build.0 = Release|x64
+ {711397CE-E5D5-467D-9457-8716C047E50C}.ReleaseLib|x64.ActiveCfg = Release|x64
+ {711397CE-E5D5-467D-9457-8716C047E50C}.ReleaseLib|x64.Build.0 = Release|x64
+ {711397CE-E5D5-467D-9457-8716C047E50C}.ReleaseLib|x86.ActiveCfg = Release|Win32
+ {711397CE-E5D5-467D-9457-8716C047E50C}.ReleaseLib|x86.Build.0 = Release|Win32
+ {A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}.Beta|Any CPU.ActiveCfg = Release|x64
+ {A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}.Beta|Any CPU.Build.0 = Release|x64
+ {A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}.Beta|x64.ActiveCfg = Release|x64
+ {A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}.Beta|x64.Build.0 = Release|x64
+ {A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}.Beta|x86.ActiveCfg = Release|x64
+ {A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}.Beta|x86.Build.0 = Release|x64
+ {A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}.Debug|x64.ActiveCfg = Debug|x64
+ {A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}.Debug|x64.Build.0 = Debug|x64
+ {A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}.Debug|x86.ActiveCfg = Debug|x64
+ {A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}.Release|Any CPU.ActiveCfg = Release|x64
+ {A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}.Release|x64.ActiveCfg = Release|x64
+ {A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}.Release|x64.Build.0 = Release|x64
+ {A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}.Release|x86.ActiveCfg = Release|x64
+ {A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}.ReleaseCompile|Any CPU.ActiveCfg = Release|x64
+ {A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}.ReleaseCompile|Any CPU.Build.0 = Release|x64
+ {A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}.ReleaseCompile|x64.ActiveCfg = Release|x64
+ {A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}.ReleaseCompile|x64.Build.0 = Release|x64
+ {A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}.ReleaseCompile|x86.ActiveCfg = Release|x64
+ {A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}.ReleaseCompile|x86.Build.0 = Release|x64
+ {A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}.ReleaseLib_win32|Any CPU.ActiveCfg = Release|x64
+ {A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}.ReleaseLib_win32|Any CPU.Build.0 = Release|x64
+ {A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}.ReleaseLib_win32|x64.ActiveCfg = Release|x64
+ {A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}.ReleaseLib_win32|x64.Build.0 = Release|x64
+ {A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}.ReleaseLib_win32|x86.ActiveCfg = Release|x64
+ {A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}.ReleaseLib_win32|x86.Build.0 = Release|x64
+ {A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}.ReleaseLib|Any CPU.ActiveCfg = Release|x64
+ {A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}.ReleaseLib|Any CPU.Build.0 = Release|x64
+ {A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}.ReleaseLib|x64.ActiveCfg = Release|x64
+ {A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}.ReleaseLib|x64.Build.0 = Release|x64
+ {A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}.ReleaseLib|x86.ActiveCfg = Release|x64
+ {A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}.ReleaseLib|x86.Build.0 = Release|x64
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(NestedProjects) = preSolution
+ {1CA4822C-F599-3879-A78F-332D823E4871} = {B6752729-7398-46FA-9CF0-DC854C6AB8CA}
+ {774F1C61-6659-36E6-9519-17A753890576} = {31F92F98-3580-445D-A3DA-D081B427A562}
+ {2CFF20AA-9341-3564-A044-C38E70D5372A} = {31F92F98-3580-445D-A3DA-D081B427A562}
+ {DBBFBC55-1C20-4D21-AE3B-6E8B14C4FE48} = {1ECB5BD6-B3A0-4135-BA3F-48FC367B61C9}
+ {A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4} = {14A77BA7-0E23-4D8F-A74F-5D5D5583035D}
+ {14A77BA7-0E23-4D8F-A74F-5D5D5583035D} = {B4FD804C-ABD9-4F54-858B-911F0119580C}
+ {7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65} = {14A77BA7-0E23-4D8F-A74F-5D5D5583035D}
+ {855DC8C0-D3E9-4A2E-AE47-116605A7BC9B} = {14A77BA7-0E23-4D8F-A74F-5D5D5583035D}
+ {FE07F272-AE7F-4549-9E9F-EF9B80CB1693} = {14A77BA7-0E23-4D8F-A74F-5D5D5583035D}
+ {DA0E03ED-53A7-4050-8A85-90541C5509F8} = {14A77BA7-0E23-4D8F-A74F-5D5D5583035D}
+ {2BB84911-C1B4-4747-B93D-36AA82CC5031} = {14A77BA7-0E23-4D8F-A74F-5D5D5583035D}
+ {B82CDD25-6903-430E-BD38-D8129A2015C1} = {14A77BA7-0E23-4D8F-A74F-5D5D5583035D}
+ {9CA0FDFB-2172-41FC-B7F1-5CE915EDCB37} = {14A77BA7-0E23-4D8F-A74F-5D5D5583035D}
+ {4B5945CD-0CB3-49AA-A7FF-7612D93F82C0} = {14A77BA7-0E23-4D8F-A74F-5D5D5583035D}
+ {B8719FD5-E8A6-4A36-943C-891D07F5DD21} = {14A77BA7-0E23-4D8F-A74F-5D5D5583035D}
+ {B4FD804C-ABD9-4F54-858B-911F0119580C} = {B6752729-7398-46FA-9CF0-DC854C6AB8CA}
+ {711397CE-E5D5-467D-9457-8716C047E50C} = {B4FD804C-ABD9-4F54-858B-911F0119580C}
+ {A1BDC12C-5DF6-3E77-9793-AB9AB5C82027} = {1ECB5BD6-B3A0-4135-BA3F-48FC367B61C9}
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {5C2901E8-26FE-444A-A80E-02AF8147CD34}
+ EndGlobalSection
+EndGlobal
diff --git a/make-client.py b/make-client.py
new file mode 100644
index 0000000..a496e2e
--- /dev/null
+++ b/make-client.py
@@ -0,0 +1,249 @@
+import tempfile
+import re
+import sys
+import os
+import subprocess
+import platform
+import argparse
+import multiprocessing
+import fileinput
+import re
+
+# vs help
+win_sdk_default = '10.0.16299.0'
+win_toolset_default = 'v141'
+
+vs_where_path = os.path.join(
+ os.environ['ProgramFiles(x86)'], 'Microsoft Visual Studio', 'Installer', 'vswhere.exe'
+)
+
+host_is_64bit = (False, True)[platform.machine().endswith('64')]
+
+def execute_cmd(cmd, with_shell=False, env_vars={}):
+ if(bool(env_vars)):
+ p = subprocess.Popen(cmd, shell=with_shell,
+ stdout=sys.stdout,
+ env=env_vars)
+ else:
+ p = subprocess.Popen(cmd, shell=with_shell)
+ _, _ = p.communicate()
+ return p.returncode
+
+def getLatestVSVersion():
+ args = [
+ '-latest',
+ '-products *',
+ '-requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64',
+ '-property installationVersion'
+ ]
+ cmd = [vs_where_path] + args
+ output = subprocess.check_output(' '.join(cmd)).decode('utf-8')
+ if output:
+ return output.splitlines()[0].split('.')[0]
+ else:
+ return
+
+
+def findVSLatestDir():
+ args = [
+ '-latest',
+ '-products *',
+ '-requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64',
+ '-property installationPath'
+ ]
+ cmd = [vs_where_path] + args
+ output = subprocess.check_output(' '.join(cmd)).decode('utf-8', errors='ignore')
+ if output:
+ return output.splitlines()[0]
+ else:
+ return
+
+
+def findMSBuild():
+ filename = 'MSBuild.exe'
+ for root, _, files in os.walk(findVSLatestDir() + r'\\MSBuild'):
+ if filename in files:
+ return os.path.join(root, filename)
+
+
+def getVSEnv(arch='x64', platform='', version=''):
+ env_cmd = 'set path=%path:"=% && ' + \
+ getVSEnvCmd(arch, platform, version) + ' && set'
+ p = subprocess.Popen(env_cmd,
+ shell=True,
+ stdout=subprocess.PIPE)
+ stdout, _ = p.communicate()
+ out = stdout.decode('utf-8', errors='ignore').split("\r\n")[5:-1]
+ return dict(s.split('=', 1) for s in out)
+
+def getVSEnvCmd(arch='x64', platform='', version=''):
+ vcEnvInit = [findVSLatestDir() + r'\VC\Auxiliary\Build\"vcvarsall.bat']
+ if platform != '':
+ args = [arch, platform, version]
+ else:
+ args = [arch, version]
+ if args:
+ vcEnvInit.extend(args)
+ vcEnvInit = 'call \"' + ' '.join(vcEnvInit)
+ return vcEnvInit
+
+def build_project(msbuild, msbuild_args, proj, env_vars):
+ args = []
+ args.extend(msbuild_args)
+ args.append(proj)
+ cmd = [msbuild]
+ cmd.extend(args)
+ if (execute_cmd(cmd, True, env_vars)):
+ print("Build failed when building ", proj)
+ sys.exit(1)
+
+def replace_vs_prop(filename, prop, val):
+ p = re.compile(r'(?s)<' + prop + r'\s?.*?>(.*?)<\/' + prop + r'>')
+ val = r'<' + prop + r'>' + val + r'</' + prop + r'>'
+ with fileinput.FileInput(filename, inplace=True) as file:
+ for line in file:
+ print(re.sub(p, val, line), end='')
+
+def deps(arch, toolset, qtver):
+ print('Deps Qt Client Release|' + arch)
+
+ # Fetch QRencode
+ print('Generate QRencode')
+ apply_cmd = "git apply --reject --ignore-whitespace --whitespace=fix"
+ qrencode_path = 'qrencode-win32'
+ if (os.path.isdir(qrencode_path)):
+ os.system('rmdir qrencode-win32 /s /q')
+ if (execute_cmd("git clone https://github.com/BlueDragon747/qrencode-win32.git", True)):
+ print("Git clone failed when cloning from https://github.com/BlueDragon747/qrencode-win32.git")
+ sys.exit(1)
+ if(execute_cmd("cd qrencode-win32 && git checkout d6495a2aa74d058d54ae0f1b9e9e545698de66ce && " + apply_cmd + ' ..\\qrencode-win32.patch', True)):
+ print("Qrencode-win32 set up error")
+ sys.exit(1)
+
+ print('Building qrcodelib')
+ build(arch, '', '', 'Release-Lib', '\\qrencode-win32\\qrencode-win32\\vc8\\qrcodelib\\qrcodelib.vcxproj', qtver, False)
+
+def build(arch, toolset, sdk_version, config_str, project_path_under_current_path, qtver, force_option=True):
+ configuration_type = 'StaticLibrary'
+
+ qtFolderDir = "msvc2017_64"
+ qtverSplit = qtver.split('.')
+
+ if((int(qtverSplit[0]) >= 6) or((int(qtverSplit[0]) == 5) and (int(qtverSplit[1]) >= 15))):
+ qtFolderDir = "msvc2019_64"
+
+ if (config_str == 'Release'):
+ print('Generating project using qmake ' + config_str + '|' + arch)
+ if(execute_cmd("C:\\Qt\\" + qtver + "\\" + qtFolderDir + "\\bin\\qmake.exe " + "-tp vc jami-qt.pro -o jami-qt.vcxproj")):
+ print("Qmake vcxproj file generate error")
+ sys.exit(1)
+ configuration_type = 'Application'
+ elif (config_str == 'Beta'):
+ print('Generating project using qmake ' + config_str + '|' + arch)
+ if(execute_cmd("C:\\Qt\\" + qtver + "\\" + qtFolderDir + "\\bin\\qmake.exe " + "-tp vc jami-qt.pro -o jami-qt.vcxproj CONFIG+=Beta")):
+ print("Beat: Qmake vcxproj file generate error")
+ sys.exit(1)
+ config_str = 'Release'
+ configuration_type = 'Application'
+ elif (config_str == 'ReleaseCompile'):
+ print('Generating project using qmake ' + config_str + '|' + arch)
+ if(execute_cmd("C:\\Qt\\" + qtver + "\\" + qtFolderDir + "\\bin\\qmake.exe " + "-tp vc jami-qt.pro -o jami-qt.vcxproj CONFIG+=ReleaseCompile")):
+ print("ReleaseCompile: Qmake vcxproj file generate error")
+ sys.exit(1)
+ config_str = 'Release'
+
+ # Note: If project is configured to Beta or ReleaseCompile, the configuration name is still release,
+ # but will be outputted into x64/Beta folder (for Beta Only)
+
+ print('Building projects in ' + config_str + '|' + arch)
+ vs_env_vars = {}
+ vs_env_vars.update(getVSEnv())
+ this_dir = os.path.dirname(os.path.realpath(__file__))
+ qt_client_proj_path = this_dir + project_path_under_current_path
+
+ msbuild = findMSBuild()
+ if not os.path.isfile(msbuild):
+ raise IOError('msbuild.exe not found. path=' + msbuild)
+ msbuild_args = [
+ '/nologo',
+ '/verbosity:minimal',
+ '/maxcpucount:' + str(multiprocessing.cpu_count()),
+ '/p:Platform=' + arch,
+ '/p:Configuration=' + config_str,
+ '/p:ConfigurationType=' + configuration_type,
+ '/p:useenv=true']
+ if (toolset != ''):
+ msbuild_args.append('/p:PlatformToolset=' + toolset)
+ if (force_option):
+ # force toolset
+ replace_vs_prop(qt_client_proj_path,
+ 'PlatformToolset',
+ toolset)
+ # force unicode
+ replace_vs_prop(qt_client_proj_path,
+ 'CharacterSet',
+ 'Unicode')
+ # force sdk_version
+ replace_vs_prop(qt_client_proj_path,
+ 'WindowsTargetPlatformVersion',
+ sdk_version)
+
+ build_project(msbuild, msbuild_args, qt_client_proj_path, vs_env_vars)
+
+def parse_args():
+ ap = argparse.ArgumentParser(description="Windows Jami-lrc build tool")
+ ap.add_argument(
+ '-b', '--build', action='store_true',
+ help='Build Qt Client')
+ ap.add_argument(
+ '-a', '--arch', default='x64',
+ help='Sets the build architecture')
+ ap.add_argument(
+ '-d', '--deps', action='store_true',
+ help='Build Deps for Qt Client')
+ ap.add_argument(
+ '-bt', '--beta', action='store_true',
+ help='Build Qt Client in Beta Config')
+ ap.add_argument(
+ '-c', '--releasecompile', action='store_true',
+ help='Build Qt Client in ReleaseCompile Config')
+ ap.add_argument(
+ '-s', '--sdk', default=win_sdk_default, type=str,
+ help='Use specified windows sdk version')
+ ap.add_argument(
+ '-t', '--toolset', default=win_toolset_default, type=str,
+ help='Use specified platform toolset version')
+ ap.add_argument(
+ '-q', '--qtver', default='5.9.4',
+ help='Sets the version of Qmake')
+
+ parsed_args = ap.parse_args()
+
+ return parsed_args
+
+
+def main():
+ if not host_is_64bit:
+ print('These scripts will only run on a 64-bit Windows system for now!')
+ sys.exit(1)
+
+ if int(getLatestVSVersion()) < 15:
+ print('These scripts require at least Visual Studio v15 2017!')
+ sys.exit(1)
+
+ parsed_args = parse_args()
+
+ if parsed_args.deps:
+ deps(parsed_args.arch, parsed_args.toolset, parsed_args.qtver)
+
+ if parsed_args.build:
+ build(parsed_args.arch, parsed_args.toolset, parsed_args.sdk, 'Release', '\\jami-qt.vcxproj', parsed_args.qtver)
+
+ if parsed_args.beta:
+ build(parsed_args.arch, parsed_args.toolset, parsed_args.sdk, 'Beta', '\\jami-qt.vcxproj', parsed_args.qtver)
+
+ if parsed_args.releasecompile:
+ build(parsed_args.arch, parsed_args.toolset, parsed_args.sdk, 'ReleaseCompile', '\\jami-qt.vcxproj', parsed_args.qtver)
+
+if __name__ == '__main__':
+ main()
diff --git a/projectcredits.html b/projectcredits.html
new file mode 100644
index 0000000..e5f7b6b
--- /dev/null
+++ b/projectcredits.html
@@ -0,0 +1,40 @@
+<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Alexandre Lision</p>
+<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Alexandr Sergheev</p>
+<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Adrien Béraud</p>
+<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Alexandre Viau</p>
+<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Aline Bonnet</p>
+<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Andreas Traczyk</p>
+<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Anthony Léonard</p>
+<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Cyrille Béraud</p>
+<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Dorina Mosku</p>
+<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Eden Abitbol</p>
+<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Édric Milaret</p>
+<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Éloi Bail</p>
+<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Emmanuel Lepage-Vallée</p>
+<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Frédéric Guimont</p>
+<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Guillaume Roguez</p>
+<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Hadrien De Sousa</p>
+<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Julien Grossholtz</p>
+<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Kateryna Kostiuk</p>
+<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Loïc Siret</p>
+<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Mingrui Zhang</p>
+<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Mohamed Amine Younes Bouacida</p>
+<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Nicolas Jäger</p>
+<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Nicolas Reynaud</p>
+<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Olivier Gregoire</p>
+<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Olivier Soldano</p>
+<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Patrick Keroulas</p>
+<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Philippe Gorley</p>
+<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Pierre Lespagnol</p>
+<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Rayan Osseiran</p>
+<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Romain Bertozzi</p>
+<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Sébastien Blin</p>
+<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Silbino Gonçalves Matado</p>
+<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Simon Désaulniers</p>
+<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Stepan Salenikovich</p>
+<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Simon Zeni</p>
+<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Thibault Wittemberg</p>
+<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Vsevolod Ivanov</p>
+<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Yang Wang</p>
+<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Marianne Forget</p>
+<p align=\"center\" style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><br /></p>
\ No newline at end of file
diff --git a/qml.qrc b/qml.qrc
new file mode 100644
index 0000000..d939b56
--- /dev/null
+++ b/qml.qrc
@@ -0,0 +1,96 @@
+<RCC>
+ <qresource prefix="/">
+ <file>src/settingsview/SettingsView.qml</file>
+ <file>src/settingsview/components/IconButton.qml</file>
+ <file>src/settingsview/components/LeftPanelView.qml</file>
+ <file>src/settingsview/components/AvSettingPage.qml</file>
+ <file>src/settingsview/components/GeneralSettingsPage.qml</file>
+ <file>src/settingsview/components/PluginSettingsPage.qml</file>
+ <file>src/settingsview/components/PluginListSettingsView.qml</file>
+ <file>src/settingsview/components/PluginListPreferencesView.qml</file>
+ <file>src/settingsview/components/CurrentAccountSettingsScrollPage.qml</file>
+ <file>src/settingsview/components/CurrentSIPAccountSettingScrollPage.qml</file>
+ <file>src/settingsview/components/ToggleSwitch.qml</file>
+ <file>src/settingsview/components/AdvancedSettingsView.qml</file>
+ <file>src/settingsview/components/AdvancedSIPSettingsView.qml</file>
+ <file>src/settingsview/components/LevelMeter.qml</file>
+ <file>src/settingsview/components/SettingParaCombobox.qml</file>
+ <file>src/settingsview/components/DeviceItemDelegate.qml</file>
+ <file>src/settingsview/components/PluginItemDelegate.qml</file>
+ <file>src/settingsview/components/PreferenceItemDelegate.qml</file>
+ <file>src/settingsview/components/BannedItemDelegate.qml</file>
+ <file>src/settingsview/components/VideoCodecDelegate.qml</file>
+ <file>src/settingsview/components/AudioCodecDelegate.qml</file>
+ <file>src/settingsview/components/NameRegistrationDialog.qml</file>
+ <file>src/settingsview/components/LinkDeviceDialog.qml</file>
+ <file>src/settingsview/components/RevokeDevicePasswordDialog.qml</file>
+ <file>src/commoncomponents/HoverableButtonTextItem.qml</file>
+ <file>src/commoncomponents/HoverableRadiusButton.qml</file>
+ <file>src/commoncomponents/PasswordDialog.qml</file>
+ <file>src/commoncomponents/InfoLineEdit.qml</file>
+ <file>src/commoncomponents/PhotoboothView.qml</file>
+ <file>src/commoncomponents/LookupStatusLabel.qml</file>
+ <file>src/commoncomponents/ListViewJami.qml</file>
+ <file>src/commoncomponents/DeleteAccountDialog.qml</file>
+ <file>src/commoncomponents/MessageBox.qml</file>
+ <file>src/wizardview/WizardView.qml</file>
+ <file>src/wizardview/components/WelcomePageLayout.qml</file>
+ <file>src/wizardview/components/CreateAccountPage.qml</file>
+ <file>src/wizardview/components/CreateSIPAccountPage.qml</file>
+ <file>src/wizardview/components/ImportFromBackupPage.qml</file>
+ <file>src/wizardview/components/BackupKeyPage.qml</file>
+ <file>src/wizardview/components/ImportFromDevicePage.qml</file>
+ <file>src/wizardview/components/ConnectToAccountManagerPage.qml</file>
+ <file>src/wizardview/components/SpinnerPage.qml</file>
+ <file>src/wizardview/components/CollapsiblePasswordWidget.qml</file>
+ <file>src/MainApplicationWindow.qml</file>
+ <file>src/mainview/MainView.qml</file>
+ <file>src/commoncomponents/CustomBorder.qml</file>
+ <file>src/constant/JamiTheme.qml</file>
+ <file>src/mainview/components/AboutPopUp.qml</file>
+ <file>src/mainview/components/SidePanel.qml</file>
+ <file>src/mainview/components/WelcomePage.qml</file>
+ <file>src/mainview/components/MessageWebView.qml</file>
+ <file>src/mainview/components/MessageWebViewHeader.qml</file>
+ <file>src/commoncomponents/HoverableButton.qml</file>
+ <file>src/mainview/components/AccountComboBox.qml</file>
+ <file>src/mainview/components/ConversationSmartListView.qml</file>
+ <file>src/commoncomponents/JamiFileDialog.qml</file>
+ <file>src/mainview/components/CallStackView.qml</file>
+ <file>src/mainview/components/IncomingCallPage.qml</file>
+ <file>src/mainview/components/OutgoingCallPage.qml</file>
+ <file>src/mainview/components/AudioCallPage.qml</file>
+ <file>src/mainview/components/CallOverlay.qml</file>
+ <file>src/commoncomponents/TintedButton.qml</file>
+ <file>src/mainview/components/CallOverlayButtonGroup.qml</file>
+ <file>src/mainview/js/incomingcallpagecreation.js</file>
+ <file>src/mainview/components/ContactSearchBar.qml</file>
+ <file>src/mainview/components/VideoCallPage.qml</file>
+ <file>src/mainview/components/ChangeLogScrollView.qml</file>
+ <file>src/mainview/components/ProjectCreditsScrollView.qml</file>
+ <file>src/mainview/components/AccountComboBoxPopup.qml</file>
+ <file>src/mainview/components/ConversationSmartListViewItemDelegate.qml</file>
+ <file>src/mainview/components/ConversationSmartListUserImage.qml</file>
+ <file>src/mainview/components/SidePanelTabBar.qml</file>
+ <file>src/mainview/components/WelcomePageQrDialog.qml</file>
+ <file>src/commoncomponents/GeneralMenuItem.qml</file>
+ <file>src/mainview/components/ConversationSmartListContextMenu.qml</file>
+ <file>src/commoncomponents/GeneralMenuSeparator.qml</file>
+ <file>src/mainview/components/UserProfile.qml</file>
+ <file>src/mainview/components/VideoCallPageContextMenu.qml</file>
+ <file>src/mainview/js/videodevicecontextmenuitemcreation.js</file>
+ <file>src/mainview/components/VideoCallPageContextMenuDeviceItem.qml</file>
+ <file>src/mainview/components/SelectScreen.qml</file>
+ <file>src/mainview/js/selectscreenwindowcreation.js</file>
+ <file>src/mainview/components/ScreenRubberBand.qml</file>
+ <file>src/mainview/js/screenrubberbandcreation.js</file>
+ <file>src/mainview/js/videocallfullscreenwindowcontainercreation.js</file>
+ <file>src/mainview/components/VideoCallFullScreenWindowContainer.qml</file>
+ <file>src/mainview/components/ContactPicker.qml</file>
+ <file>src/mainview/js/contactpickercreation.js</file>
+ <file>src/mainview/components/ContactPickerItemDelegate.qml</file>
+ <file>src/wizardview/components/HoverableGradientButton.qml</file>
+ <file>src/commoncomponents/AccountMigrationDialog.qml</file>
+ <file>src/mainview/components/RecordBox.qml</file>
+ </qresource>
+</RCC>
diff --git a/qrencode-win32.patch b/qrencode-win32.patch
new file mode 100644
index 0000000..efeb296
--- /dev/null
+++ b/qrencode-win32.patch
@@ -0,0 +1,243 @@
+From 261d830b9b4126d76519db0e6b6b51b5a730eb40 Mon Sep 17 00:00:00 2001
+From: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
+Date: Tue, 4 Dec 2018 17:42:43 -0500
+Subject: [PATCH] b
+
+---
+ .../vc8/qrcodelib/qrcodelib.vcxproj | 129 +++++++++++++++++-
+ 1 file changed, 125 insertions(+), 4 deletions(-)
+
+diff --git a/qrencode-win32/vc8/qrcodelib/qrcodelib.vcxproj b/qrencode-win32/vc8/qrcodelib/qrcodelib.vcxproj
+index aabc6b6..8d8293b 100644
+--- a/qrencode-win32/vc8/qrcodelib/qrcodelib.vcxproj
++++ b/qrencode-win32/vc8/qrcodelib/qrcodelib.vcxproj
+@@ -5,45 +5,84 @@
+ <Configuration>Debug-Dll</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
++ <ProjectConfiguration Include="Debug-Dll|x64">
++ <Configuration>Debug-Dll</Configuration>
++ <Platform>x64</Platform>
++ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug-Lib|Win32">
+ <Configuration>Debug-Lib</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
++ <ProjectConfiguration Include="Debug-Lib|x64">
++ <Configuration>Debug-Lib</Configuration>
++ <Platform>x64</Platform>
++ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release-Dll|Win32">
+ <Configuration>Release-Dll</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
++ <ProjectConfiguration Include="Release-Dll|x64">
++ <Configuration>Release-Dll</Configuration>
++ <Platform>x64</Platform>
++ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release-Lib|Win32">
+ <Configuration>Release-Lib</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
++ <ProjectConfiguration Include="Release-Lib|x64">
++ <Configuration>Release-Lib</Configuration>
++ <Platform>x64</Platform>
++ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{9A90BF5C-84B0-41F6-B83C-C20EADC1F46C}</ProjectGuid>
+ <RootNamespace>qrcodelib</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
++ <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-Lib|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+- <PlatformToolset>v110_xp</PlatformToolset>
++ <PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
++ <CharacterSet>MultiByte</CharacterSet>
++ <WholeProgramOptimization>true</WholeProgramOptimization>
++ </PropertyGroup>
++ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-Lib|x64'" Label="Configuration">
++ <ConfigurationType>StaticLibrary</ConfigurationType>
++ <PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Lib|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+- <PlatformToolset>v110_xp</PlatformToolset>
++ <PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
++ <CharacterSet>MultiByte</CharacterSet>
++ </PropertyGroup>
++ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Lib|x64'" Label="Configuration">
++ <ConfigurationType>StaticLibrary</ConfigurationType>
++ <PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-Dll|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+- <PlatformToolset>v110_xp</PlatformToolset>
++ <PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
++ <CharacterSet>MultiByte</CharacterSet>
++ <WholeProgramOptimization>true</WholeProgramOptimization>
++ </PropertyGroup>
++ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-Dll|x64'" Label="Configuration">
++ <ConfigurationType>DynamicLibrary</ConfigurationType>
++ <PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Dll|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+- <PlatformToolset>v110_xp</PlatformToolset>
++ <PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
++ <CharacterSet>MultiByte</CharacterSet>
++ </PropertyGroup>
++ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Dll|x64'" Label="Configuration">
++ <ConfigurationType>DynamicLibrary</ConfigurationType>
++ <PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+@@ -52,15 +91,27 @@
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release-Lib|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
++ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release-Lib|x64'" Label="PropertySheets">
++ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
++ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Lib|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
++ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Lib|x64'" Label="PropertySheets">
++ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
++ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release-Dll|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
++ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release-Dll|x64'" Label="PropertySheets">
++ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
++ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Dll|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
++ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Dll|x64'" Label="PropertySheets">
++ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
++ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>11.0.50727.1</_ProjectFileVersion>
+@@ -70,11 +121,17 @@
+ <IntDir>../.build/$(ProjectName)/$(Configuration)\</IntDir>
+ <LinkIncremental>true</LinkIncremental>
+ </PropertyGroup>
++ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Dll|x64'">
++ <LinkIncremental>true</LinkIncremental>
++ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-Dll|Win32'">
+ <OutDir>../.build/$(Configuration)\</OutDir>
+ <IntDir>../.build/$(ProjectName)/$(Configuration)\</IntDir>
+ <LinkIncremental>false</LinkIncremental>
+ </PropertyGroup>
++ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-Dll|x64'">
++ <LinkIncremental>false</LinkIncremental>
++ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Lib|Win32'">
+ <OutDir>../.build/$(Configuration)\</OutDir>
+ <IntDir>../.build/$(ProjectName)/$(Configuration)\</IntDir>
+@@ -104,6 +161,26 @@
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
++ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Dll|x64'">
++ <ClCompile>
++ <Optimization>Disabled</Optimization>
++ <AdditionalIncludeDirectories>.\;..\qrcode;..\qrcode\png;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
++ <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;QRCODELIB_EXPORTS;HAVE_CONFIG_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
++ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
++ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
++ <PrecompiledHeader>
++ </PrecompiledHeader>
++ <WarningLevel>Level3</WarningLevel>
++ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
++ </ClCompile>
++ <Link>
++ <AdditionalDependencies>libpng15d.lib;%(AdditionalDependencies)</AdditionalDependencies>
++ <AdditionalLibraryDirectories>..\qrcode\png;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
++ <ModuleDefinitionFile>qrcodelib.def</ModuleDefinitionFile>
++ <GenerateDebugInformation>true</GenerateDebugInformation>
++ <SubSystem>Windows</SubSystem>
++ </Link>
++ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-Dll|Win32'">
+ <ClCompile>
+ <AdditionalIncludeDirectories>.\;..\qrcode;..\qrcode\png;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+@@ -124,6 +201,26 @@
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
++ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-Dll|x64'">
++ <ClCompile>
++ <AdditionalIncludeDirectories>.\;..\qrcode;..\qrcode\png;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
++ <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;QRCODELIB_EXPORTS;HAVE_CONFIG_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
++ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
++ <PrecompiledHeader>
++ </PrecompiledHeader>
++ <WarningLevel>Level3</WarningLevel>
++ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
++ </ClCompile>
++ <Link>
++ <AdditionalDependencies>libpng15.lib;%(AdditionalDependencies)</AdditionalDependencies>
++ <AdditionalLibraryDirectories>..\qrcode\png;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
++ <ModuleDefinitionFile>qrcodelib.def</ModuleDefinitionFile>
++ <GenerateDebugInformation>true</GenerateDebugInformation>
++ <SubSystem>Windows</SubSystem>
++ <OptimizeReferences>true</OptimizeReferences>
++ <EnableCOMDATFolding>true</EnableCOMDATFolding>
++ </Link>
++ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Lib|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+@@ -137,6 +234,19 @@
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ </ItemDefinitionGroup>
++ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Lib|x64'">
++ <ClCompile>
++ <Optimization>Disabled</Optimization>
++ <AdditionalIncludeDirectories>.\;..\qrcode;..\qrcode\png;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
++ <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;QRCODELIB_EXPORTS;HAVE_CONFIG_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
++ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
++ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
++ <PrecompiledHeader>
++ </PrecompiledHeader>
++ <WarningLevel>Level3</WarningLevel>
++ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
++ </ClCompile>
++ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-Lib|Win32'">
+ <ClCompile>
+ <AdditionalIncludeDirectories>.\;..\qrcode;..\qrcode\png;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+@@ -147,6 +257,17 @@
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ </ItemDefinitionGroup>
++ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-Lib|x64'">
++ <ClCompile>
++ <AdditionalIncludeDirectories>.\;..\qrcode;..\qrcode\png;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
++ <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;QRCODELIB_EXPORTS;HAVE_CONFIG_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
++ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
++ <PrecompiledHeader>
++ </PrecompiledHeader>
++ <WarningLevel>Level3</WarningLevel>
++ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
++ </ClCompile>
++ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="qrcodelib.cpp" />
+ <ClCompile Include="..\..\bitstream.c" />
+--
+2.19.0.windows.1
+
diff --git a/qt.conf b/qt.conf
new file mode 100644
index 0000000..7bbb77f
--- /dev/null
+++ b/qt.conf
@@ -0,0 +1,4 @@
+[Paths]
+Prefix=./
+Resources=./resources
+Translations=./translations
\ No newline at end of file
diff --git a/ressources.qrc b/ressources.qrc
new file mode 100644
index 0000000..1093bde
--- /dev/null
+++ b/ressources.qrc
@@ -0,0 +1,111 @@
+<RCC>
+ <qresource prefix="/">
+ <file>images/icons/outline-info-24px.svg</file>
+ <file>images/icons/baseline-camera_alt-24px.svg</file>
+ <file>images/icons/baseline-refresh-24px.svg</file>
+ <file>images/jami_rolling_spinner.gif</file>
+ <file>images/icons/baseline-close-24px.svg</file>
+ <file>images/icons/baseline-done-24px.svg</file>
+ <file>images/icons/baseline-error_outline-24px.svg</file>
+ <file>stylesheet.css</file>
+ <file>stylesheet.linux.css</file>
+ <file>changelog.html</file>
+ <file>projectcredits.html</file>
+ <file>images/ajax-loader.gif</file>
+ <file>images/default_avatar_overlay.svg</file>
+ <file>images/FontAwesome.otf</file>
+ <file>images/logo-jami-standard-coul.png</file>
+ <file>images/qrcode.png</file>
+ <file>images/jami.ico</file>
+ <file>images/jami.png</file>
+ <file>images/spike.png</file>
+ <file>images/waiting.gif</file>
+ <file>images/icons/ic_add_black_18dp_2x.png</file>
+ <file>images/icons/info-24px.svg</file>
+ <file>images/icons/ic_arrow_back_24px.svg</file>
+ <file>images/icons/ic_arrow_back_white_24dp.png</file>
+ <file>images/icons/ic_arrow_drop_down_black_9dp_2x.png</file>
+ <file>images/icons/ic_arrow_drop_down_black_18dp_2x.png</file>
+ <file>images/icons/ic_arrow_drop_up_black_9dp_2x.png</file>
+ <file>images/icons/ic_arrow_drop_up_black_18dp_2x.png</file>
+ <file>images/icons/ic_arrow_forward_white_48dp_2x.png</file>
+ <file>images/icons/ic_arrow_tab_next_black_9dp_2x.png</file>
+ <file>images/icons/ic_arrow_tab_previous_black_9dp_2x.png</file>
+ <file>images/icons/ic_block_24px.svg</file>
+ <file>images/icons/ic_call_transfer_white_24px.png</file>
+ <file>images/icons/ic_chat_black_24dp_2x.png</file>
+ <file>images/icons/ic_chat_white_24dp.png</file>
+ <file>images/icons/ic_check_white_18dp_2x.png</file>
+ <file>images/icons/ic_clear_24px.svg</file>
+ <file>images/icons/ic_close_white_24dp.png</file>
+ <file>images/icons/ic_content_copy.svg</file>
+ <file>images/icons/ic_delete_black_18dp_2x.png</file>
+ <file>images/icons/ic_done_white_24dp.png</file>
+ <file>images/icons/ic_exit_full_screen_black.png</file>
+ <file>images/icons/ic_folder_black_18dp_2x.png</file>
+ <file>images/icons/ic_full_screen_black.png</file>
+ <file>images/icons/ic_group_add_white_24dp.png</file>
+ <file>images/icons/ic_high_quality_white_24dp.png</file>
+ <file>images/icons/ic_mic_off_white_24dp.png</file>
+ <file>images/icons/ic_pause_white_24dp.png</file>
+ <file>images/icons/ic_pause_white_100px.png</file>
+ <file>images/icons/ic_person_add_black_24dp_2x.png</file>
+ <file>images/icons/ic_person_add_white_24dp.png</file>
+ <file>images/icons/ic_phone_24px.svg</file>
+ <file>images/icons/ic_photo_camera_white_24dp_2x.png</file>
+ <file>images/icons/ic_baseline-search-24px.svg</file>
+ <file>images/icons/ic_send_24px.svg</file>
+ <file>images/icons/ic_send_white_24dp.png</file>
+ <file>images/icons/ic_settings_white_48dp_2x.png</file>
+ <file>images/icons/ic_share_black_48dp_2x.png</file>
+ <file>images/icons/ic_video_call_24px.svg</file>
+ <file>images/icons/ic_videocam_off_white_24dp.png</file>
+ <file>images/icons/ic_videocam_white.png</file>
+ <file>images/icons/ic_voicemail_white_24dp_2x.png</file>
+ <file>images/icons/round-add-24px.svg</file>
+ <file>images/icons/round-arrow_drop_down-24px.svg</file>
+ <file>images/icons/round-arrow_drop_up-24px.svg</file>
+ <file>images/icons/round-arrow_right-24px.svg</file>
+ <file>images/icons/round-close-24px.svg</file>
+ <file>images/icons/round-edit-24px.svg</file>
+ <file>images/icons/round-folder-24px.svg</file>
+ <file>images/icons/round-remove_circle-24px.svg</file>
+ <file>images/icons/round-settings-24px.svg</file>
+ <file>images/icons/round-undo-24px.svg</file>
+ <file alias="chatview.css">../lrc/src/web-chatview/chatview.css</file>
+ <file alias="chatview.html">../lrc/src/web-chatview/chatview.html</file>
+ <file alias="chatview.js">../lrc/src/web-chatview/chatview.js</file>
+ <file alias="jed.js">../lrc/src/web-chatview/jed.js</file>
+ <file alias="linkify.js">../lrc/src/web-chatview/linkify.js</file>
+ <file alias="linkify-html.js">../lrc/src/web-chatview/linkify-html.js</file>
+ <file alias="linkify-string.js">../lrc/src/web-chatview/linkify-string.js</file>
+ <file alias="qwebchannel.js">../lrc/src/web-chatview/qwebchannel.js</file>
+ <file alias="chatview-windows.css">../lrc/src/web-chatview/chatview-windows.css</file>
+ <file>images/icons/round-check_circle-24px.svg</file>
+ <file>images/icons/round-error-24px.svg</file>
+ <file>images/icons/round-save_alt-24px.svg</file>
+ <file>images/jami_eclipse_spinner.gif</file>
+ <file>images/icons/ic_hide_password.png</file>
+ <file>images/icons/ic_show_password.png</file>
+ <file>images/icons/baseline-desktop_windows-24px.svg</file>
+ <file>images/icons/baseline-people-24px.svg</file>
+ <file>images/icons/round-add_a_photo-24px.svg</file>
+ <file>images/icons/ic_mic_white_24dp.png</file>
+ <file>images/icons/icon-keypad-24.png</file>
+ <file>images/icons/ic_play_white_24dp.png</file>
+ <file>images/icons/icon-keypad-24-2x.png</file>
+ <file>images/icons/ic_voicemail_black_24dp_2x_.png</file>
+ <file>images/icons/av_icons/delete-24px.svg</file>
+ <file>images/icons/av_icons/fiber_manual_record-24px.svg</file>
+ <file>images/icons/av_icons/play_circle_outline-24px.svg</file>
+ <file>images/icons/av_icons/re-record-24px.svg</file>
+ <file>images/icons/av_icons/stop-24px-red.svg</file>
+ <file>images/icons/av_icons/pause-24px.svg</file>
+ <file>images/icons/av_icons/send-24px.svg</file>
+ <file>images/icons/av_icons/stop-24px.svg</file>
+ <file>images/icons/av_icons/mic-24px.svg</file>
+ <file>images/icons/ic_close_black_24dp.png</file>
+ <file>images/icons/extension_24dp.svg</file>
+ <file>images/icons/settings_backup_restore-black-18dp.svg</file>
+ </qresource>
+</RCC>
diff --git a/ringtones/Makefile.am b/ringtones/Makefile.am
new file mode 100644
index 0000000..64fab83
--- /dev/null
+++ b/ringtones/Makefile.am
@@ -0,0 +1,5 @@
+ringringtonesdir = $(datadir)/ring/ringtones
+dist_ringringtones_DATA = \
+ konga.ul\
+ default.wav \
+ default.opus
diff --git a/ringtones/default.opus b/ringtones/default.opus
new file mode 100644
index 0000000..c3c0a80
--- /dev/null
+++ b/ringtones/default.opus
Binary files differ
diff --git a/ringtones/default.opus.LICENSE b/ringtones/default.opus.LICENSE
new file mode 100644
index 0000000..98b99bf
--- /dev/null
+++ b/ringtones/default.opus.LICENSE
@@ -0,0 +1,4 @@
+Original file name: 171324__swidmark__ringtone.wav
+Download location: https://freesound.org/people/swidmark/sounds/171324
+Uploader: https://freesound.org/people/swidmark
+License: CC0 1.0 Universal (CC0 1.0) (https://creativecommons.org/publicdomain/zero/1.0/)
diff --git a/ringtones/default.wav b/ringtones/default.wav
new file mode 100644
index 0000000..f68346e
--- /dev/null
+++ b/ringtones/default.wav
Binary files differ
diff --git a/ringtones/default.wav.LICENSE b/ringtones/default.wav.LICENSE
new file mode 100644
index 0000000..98b99bf
--- /dev/null
+++ b/ringtones/default.wav.LICENSE
@@ -0,0 +1,4 @@
+Original file name: 171324__swidmark__ringtone.wav
+Download location: https://freesound.org/people/swidmark/sounds/171324
+Uploader: https://freesound.org/people/swidmark
+License: CC0 1.0 Universal (CC0 1.0) (https://creativecommons.org/publicdomain/zero/1.0/)
diff --git a/ringtones/konga.ul b/ringtones/konga.ul
new file mode 100644
index 0000000..2191150
--- /dev/null
+++ b/ringtones/konga.ul
Binary files differ
diff --git a/src/MainApplicationWindow.qml b/src/MainApplicationWindow.qml
new file mode 100644
index 0000000..a1f558e
--- /dev/null
+++ b/src/MainApplicationWindow.qml
@@ -0,0 +1,117 @@
+import QtQuick 2.14
+import QtQuick.Window 2.14
+import QtQuick.Controls 2.14
+import QtQuick.Layouts 1.14
+import QtQuick.Controls.Universal 2.12
+import QtGraphicalEffects 1.14
+import net.jami.Models 1.0
+
+import "mainview"
+import "wizardview"
+import "commoncomponents"
+
+ApplicationWindow {
+ id: mainApplicationWindow
+
+ AccountMigrationDialog{
+ id: accountMigrationDialog
+
+ visible: false
+
+ onAccountMigrationFinished:{
+ startClientByMainview()
+ }
+ }
+
+ function slotNewAccountAdded() {
+ if(mainViewLoader.newAddedAccountIndex !== -1)
+ mainViewLoader.item.newAccountAdded(mainViewLoader.newAddedAccountIndex)
+ }
+
+ function startAccountMigration(){
+ return accountMigrationDialog.startAccountMigrationOfTopStack()
+ }
+
+ function startClientByMainview(){
+ setX(Screen.width / 2 - width / 2)
+ setY(Screen.height / 2 - height / 2)
+
+ if (!ClientWrapper.utilsAdaptor.getAccountListSize()) {
+ wizardView.show()
+ } else {
+ mainViewLoader.setSource("qrc:/src/mainview/MainView.qml")
+ }
+ }
+
+ Universal.theme: Universal.Light
+
+ visible: false
+
+ Loader {
+ id: mainViewLoader
+
+ property int newAddedAccountIndex: -1
+
+ asynchronous: true
+ visible: status == Loader.Ready
+ source: ""
+
+ Connections {
+ target: mainViewLoader.item
+
+ function onNeedToAddNewAccount() {
+ wizardView.show()
+ }
+
+ function onCloseApp() {
+ Qt.quit()
+ }
+
+ function onNoAccountIsAvailable() {
+ mainViewLoader.setSource("")
+ wizardView.show()
+ }
+ }
+ }
+
+ WizardView {
+ id: wizardView
+
+ onNeedToShowMainViewWindow: {
+ mainViewLoader.newAddedAccountIndex = accountIndex
+ if (mainViewLoader.source.toString() !== "qrc:/src/mainview/MainView.qml") {
+ mainViewLoader.loaded.disconnect(slotNewAccountAdded)
+ mainViewLoader.loaded.connect(slotNewAccountAdded)
+ mainViewLoader.setSource("qrc:/src/mainview/MainView.qml")
+ } else {
+ slotNewAccountAdded()
+ }
+ }
+
+ onWizardViewIsClosed: {
+ if (mainViewLoader.source.toString() !== "qrc:/src/mainview/MainView.qml") {
+ Qt.quit()
+ }
+ }
+ }
+
+ Component.onCompleted: {
+ if(!startAccountMigration()){
+ startClientByMainview()
+ }
+ }
+
+ overlay.modal: ColorOverlay {
+ source: mainApplicationWindow.contentItem
+ color: "transparent"
+
+
+ /*
+ * Color animation for overlay when pop up is shown.
+ */
+ ColorAnimation on color {
+ to: Qt.rgba(0, 0, 0, 0.33)
+ duration: 500
+ }
+ }
+}
diff --git a/src/accountadapter.cpp b/src/accountadapter.cpp
new file mode 100644
index 0000000..af072ac
--- /dev/null
+++ b/src/accountadapter.cpp
@@ -0,0 +1,438 @@
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Edric Ladent Milaret <edric.ladent-milaret@savoirfairelinux.com>
+ * Author: Anthony L�onard <anthony.leonard@savoirfairelinux.com
+ * Author: Olivier Soldano <olivier.soldano@savoirfairelinux.com>
+ * Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
+ * Author: Isa Nanic <isa.nanic@savoirfairelinux.com>
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "accountadapter.h"
+
+#undef REGISTERED
+#include "../daemon/src/dring/account_const.h"
+
+AccountAdapter::AccountAdapter(QObject *parent)
+ : QmlAdapterBase(parent)
+{}
+
+AccountAdapter::~AccountAdapter() {}
+
+AccountAdapter &
+AccountAdapter::instance()
+{
+ static auto instance = new AccountAdapter;
+ return *instance;
+}
+
+void
+AccountAdapter::initQmlObject()
+{
+ connectAccount(LRCInstance::getCurrAccId());
+}
+
+void
+AccountAdapter::accountChanged(int index)
+{
+ auto accountList = LRCInstance::accountModel().getAccountList();
+ if (accountList.size() > index)
+ setSelectedAccount(accountList.at(index), index);
+}
+
+void
+AccountAdapter::connectFailure()
+{
+ Utils::oneShotConnect(&LRCInstance::accountModel(),
+ &lrc::api::NewAccountModel::accountRemoved,
+ [this](const QString &accountId) {
+ Q_UNUSED(accountId);
+
+ emit reportFailure();
+ });
+ Utils::oneShotConnect(&LRCInstance::accountModel(),
+ &lrc::api::NewAccountModel::invalidAccountDetected,
+ [this](const QString &accountId) {
+ Q_UNUSED(accountId);
+
+ emit reportFailure();
+ });
+}
+
+void
+AccountAdapter::createJamiAccount(QString registeredName,
+ const QVariantMap &settings,
+ QString photoBoothImgBase64,
+ bool isCreating)
+{
+ Utils::oneShotConnect(
+ &LRCInstance::accountModel(),
+ &lrc::api::NewAccountModel::accountAdded,
+ [this, registeredName, settings, isCreating, photoBoothImgBase64](const QString &accountId) {
+ QSettings qSettings("jami.net", "Jami");
+ if (not qSettings.contains(SettingsKey::neverShowMeAgain)) {
+ qSettings.setValue(SettingsKey::neverShowMeAgain, false);
+ }
+ auto showBackup = isCreating && !settings.value(SettingsKey::neverShowMeAgain).toBool();
+
+ if (!registeredName.isEmpty()) {
+ Utils::oneShotConnect(&LRCInstance::accountModel(),
+ &lrc::api::NewAccountModel::nameRegistrationEnded,
+ [this, showBackup](const QString &accountId) {
+ emit accountAdded(showBackup,
+ LRCInstance::accountModel()
+ .getAccountList()
+ .indexOf(accountId));
+ });
+ LRCInstance::accountModel().registerName(accountId,
+ settings["password"].toString(),
+ registeredName);
+ } else {
+ emit accountAdded(showBackup,
+ LRCInstance::accountModel().getAccountList().indexOf(accountId));
+ }
+ // set up avatar pixmap from photobooth
+ QImage avatarImg;
+ const bool ret = avatarImg.loadFromData(
+ QByteArray::fromBase64(photoBoothImgBase64.toLatin1()));
+ if (!ret) {
+ qDebug() << "JAMI account creation BASE64 image loading failed";
+ } else {
+ LRCInstance::setAvatarForAccount(QPixmap::fromImage(avatarImg), accountId);
+ }
+ });
+
+ connectFailure();
+
+ QtConcurrent::run([this, settings] {
+ QMap<QString, QString> additionalAccountConfig;
+ additionalAccountConfig.insert(DRing::Account::ConfProperties::Ringtone::PATH,
+ Utils::GetRingtonePath());
+
+ LRCInstance::accountModel().createNewAccount(lrc::api::profile::Type::RING,
+ settings["alias"].toString(),
+ settings["archivePath"].toString(),
+ settings["password"].toString(),
+ settings["archivePin"].toString(),
+ "",
+ additionalAccountConfig);
+ });
+}
+
+void
+AccountAdapter::createSIPAccount(const QVariantMap &settings, QString photoBoothImgBase64)
+{
+ Utils::oneShotConnect(&LRCInstance::accountModel(),
+ &lrc::api::NewAccountModel::accountAdded,
+ [this, settings, photoBoothImgBase64](const QString &accountId) {
+ auto confProps = LRCInstance::accountModel().getAccountConfig(
+ accountId);
+ // set SIP details
+ confProps.hostname = settings["hostname"].toString();
+ confProps.username = settings["username"].toString();
+ confProps.password = settings["password"].toString();
+ confProps.proxyServer = settings["proxy"].toString();
+ LRCInstance::accountModel().setAccountConfig(accountId, confProps);
+
+ // set up photobooth avatar to SIP avatar
+ QImage avatarImg;
+ const bool ret = avatarImg.loadFromData(
+ QByteArray::fromBase64(photoBoothImgBase64.toLatin1()));
+ if (!ret) {
+ qDebug() << "SIP account creation BASE64 image loading failed";
+ } else {
+ LRCInstance::setAvatarForAccount(QPixmap::fromImage(avatarImg),
+ accountId);
+ }
+
+ emit accountAdded(false,
+ LRCInstance::accountModel().getAccountList().indexOf(
+ accountId));
+ });
+
+ connectFailure();
+
+ QtConcurrent::run([this, settings] {
+ QMap<QString, QString> additionalAccountConfig;
+ additionalAccountConfig.insert(DRing::Account::ConfProperties::Ringtone::PATH,
+ Utils::GetRingtonePath());
+
+ LRCInstance::accountModel().createNewAccount(lrc::api::profile::Type::SIP,
+ settings["alias"].toString(),
+ settings["archivePath"].toString(),
+ "",
+ "",
+ settings["username"].toString(),
+ additionalAccountConfig);
+ QThread::sleep(2);
+ emit LRCInstance::instance().accountListChanged();
+ });
+}
+
+void
+AccountAdapter::createJAMSAccount(const QVariantMap &settings)
+{
+ Utils::oneShotConnect(&LRCInstance::accountModel(),
+ &lrc::api::NewAccountModel::accountAdded,
+ [this](const QString &accountId) {
+ Q_UNUSED(accountId)
+ if (!LRCInstance::accountModel().getAccountList().size())
+ return;
+ emit accountAdded(false,
+ LRCInstance::accountModel().getAccountList().indexOf(
+ accountId));
+ emit LRCInstance::instance().accountListChanged();
+ });
+
+ connectFailure();
+
+ QtConcurrent::run([this, settings] {
+ QMap<QString, QString> additionalAccountConfig;
+ additionalAccountConfig.insert(DRing::Account::ConfProperties::Ringtone::PATH,
+ Utils::GetRingtonePath());
+
+ LRCInstance::accountModel().connectToAccountManager(settings["username"].toString(),
+ settings["password"].toString(),
+ settings["manager"].toString(),
+ additionalAccountConfig);
+ });
+}
+
+void
+AccountAdapter::deleteCurrentAccount()
+{
+ LRCInstance::accountModel().removeAccount(LRCInstance::getCurrAccId());
+}
+
+bool
+AccountAdapter::savePassword(const QString accountId,
+ const QString oldPassword,
+ const QString newPassword)
+{
+ return LRCInstance::accountModel().changeAccountPassword(accountId, oldPassword, newPassword);
+}
+
+void
+AccountAdapter::startAudioMeter(bool async)
+{
+ LRCInstance::startAudioMeter(async);
+}
+
+void
+AccountAdapter::stopAudioMeter(bool async)
+{
+ LRCInstance::stopAudioMeter(async);
+}
+
+void
+AccountAdapter::startPreviewing(bool force)
+{
+ LRCInstance::renderer()->startPreviewing(force);
+}
+
+void
+AccountAdapter::stopPreviewing()
+{
+ if (!LRCInstance::hasVideoCall() && LRCInstance::renderer()->isPreviewing()) {
+ LRCInstance::renderer()->stopPreviewing();
+ }
+}
+
+bool
+AccountAdapter::hasVideoCall()
+{
+ return LRCInstance::hasVideoCall();
+}
+
+bool
+AccountAdapter::isPreviewing()
+{
+ return LRCInstance::renderer()->isPreviewing();
+}
+
+RenderManager *
+AccountAdapter::getRenderManager()
+{
+ return LRCInstance::renderer();
+}
+
+void
+AccountAdapter::setCurrAccDisplayName(QString text)
+{
+ LRCInstance::setCurrAccDisplayName(text);
+}
+
+void
+AccountAdapter::setSelectedAccountId(QString accountId)
+{
+ LRCInstance::setSelectedAccountId(accountId);
+}
+
+void
+AccountAdapter::setSelectedConvId(QString accountId)
+{
+ LRCInstance::setSelectedConvId(accountId);
+}
+
+bool
+AccountAdapter::hasPassword()
+{
+ auto confProps = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId());
+ return confProps.archiveHasPassword;
+}
+
+void
+AccountAdapter::setArchiveHasPassword(bool isHavePassword)
+{
+ auto confProps = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId());
+ confProps.archiveHasPassword = isHavePassword;
+ LRCInstance::accountModel().setAccountConfig(LRCInstance::getCurrAccId(), confProps);
+}
+bool
+AccountAdapter::exportToFile(const QString &accountId,
+ const QString &path,
+ const QString &password) const
+{
+ return LRCInstance::accountModel().exportToFile(accountId, path, password);
+}
+
+void
+AccountAdapter::setArchivePasswordAsync(const QString &accountID, const QString &password)
+{
+ QtConcurrent::run([this, accountID, password] {
+ auto config = LRCInstance::accountModel().getAccountConfig(accountID);
+ config.archivePassword = password;
+ LRCInstance::accountModel().setAccountConfig(accountID, config);
+ });
+}
+
+lrc::api::NewAccountModel *
+AccountAdapter::accoundModel()
+{
+ return &(LRCInstance::accountModel());
+}
+
+lrc::api::AVModel *
+AccountAdapter::avModel()
+{
+ return &(LRCInstance::avModel());
+}
+
+lrc::api::DataTransferModel *
+AccountAdapter::dataTransferModel()
+{
+ return &(LRCInstance::dataTransferModel());
+}
+
+void
+AccountAdapter::settingsNeverShowAgain(bool checked)
+{
+ QSettings settings("jami.net", "Jami");
+ settings.setValue(SettingsKey::neverShowMeAgain, checked);
+}
+
+void
+AccountAdapter::passwordSetStatusMessageBox(bool success, QString title, QString infoToDisplay)
+{
+ if (success) {
+ QMessageBox::information(0, title, infoToDisplay);
+ } else {
+ QMessageBox::critical(0, title, infoToDisplay);
+ }
+}
+
+void
+AccountAdapter::setSelectedAccount(const QString &accountId, int index)
+{
+ LRCInstance::setSelectedAccountId(accountId);
+
+ backToWelcomePage(index);
+
+ QMetaObject::invokeMethod(qmlObj_, "updateSmartList", Q_ARG(QVariant, accountId));
+ connectAccount(accountId);
+ emit accountSignalsReconnect(accountId);
+}
+
+void
+AccountAdapter::backToWelcomePage(int index)
+{
+ deselectConversation();
+ QMetaObject::invokeMethod(qmlObj_, "backToWelcomePage", Q_ARG(QVariant, index));
+}
+
+void
+AccountAdapter::deselectConversation()
+{
+ if (LRCInstance::getCurrentConvUid().isEmpty()) {
+ return;
+ }
+
+ auto currentConversationModel = LRCInstance::getCurrentConversationModel();
+
+ if (currentConversationModel == nullptr) {
+ return;
+ }
+
+ currentConversationModel->selectConversation("");
+ LRCInstance::setSelectedConvId();
+}
+
+void
+AccountAdapter::connectAccount(const QString &accountId)
+{
+ try {
+ auto &accInfo = LRCInstance::accountModel().getAccountInfo(accountId);
+
+ QObject::disconnect(accountStatusChangedConnection_);
+ QObject::disconnect(contactAddedConnection_);
+
+ accountStatusChangedConnection_
+ = QObject::connect(accInfo.accountModel,
+ &lrc::api::NewAccountModel::accountStatusChanged,
+ [this] { emit accountStatusChanged(); });
+
+ contactAddedConnection_
+ = QObject::connect(accInfo.contactModel.get(),
+ &lrc::api::ContactModel::contactAdded,
+ [this, accountId](const QString &contactUri) {
+ auto &accInfo = LRCInstance::accountModel().getAccountInfo(
+ accountId);
+ auto conversation = LRCInstance::getCurrentConversation();
+ if (conversation.uid.isEmpty()) {
+ return;
+ }
+ if (contactUri
+ == accInfo.contactModel
+ ->getContact(conversation.participants.at(0))
+ .profileInfo.uri) {
+ /*
+ * Update conversation.
+ */
+ emit updateConversationForAddedContact();
+ }
+ });
+ QObject::disconnect(addedToConferenceConnection_);
+ addedToConferenceConnection_
+ = QObject::connect(accInfo.callModel.get(),
+ &NewCallModel::callAddedToConference,
+ [this](const QString &callId, const QString &confId) {
+ Q_UNUSED(callId);
+ LRCInstance::renderer()->addDistantRenderer(confId);
+ });
+ } catch (...) {
+ qWarning() << "Couldn't get account: " << accountId;
+ }
+}
diff --git a/src/accountadapter.h b/src/accountadapter.h
new file mode 100644
index 0000000..7ebc19a
--- /dev/null
+++ b/src/accountadapter.h
@@ -0,0 +1,128 @@
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "qmladapterbase.h"
+
+#include <QObject>
+#include <QSettings>
+#include <QString>
+
+#include "lrcinstance.h"
+#include "utils.h"
+
+class AccountAdapter : public QmlAdapterBase
+{
+ Q_OBJECT
+
+public:
+ explicit AccountAdapter(QObject *parent = 0);
+ ~AccountAdapter();
+ //Singleton
+ static AccountAdapter &instance();
+
+ /*
+ * Change to account corresponding to combox box index.
+ */
+ Q_INVOKABLE void accountChanged(int index);
+ /*
+ * Create normal Jami account, SIP account and JAMS accounts.
+ */
+ Q_INVOKABLE void createJamiAccount(QString registeredName,
+ const QVariantMap &settings,
+ QString photoBoothImgBase64,
+ bool isCreating);
+ Q_INVOKABLE void createSIPAccount(const QVariantMap &settings, QString photoBoothImgBase64);
+ Q_INVOKABLE void createJAMSAccount(const QVariantMap &settings);
+ /*
+ * Delete current account
+ */
+ Q_INVOKABLE void deleteCurrentAccount();
+ /*
+ * Setting related
+ */
+ Q_INVOKABLE void settingsNeverShowAgain(bool checked);
+ Q_INVOKABLE void passwordSetStatusMessageBox(bool success, QString title, QString infoToDisplay);
+ /*
+ * conf property
+ */
+ Q_INVOKABLE bool hasPassword();
+ Q_INVOKABLE void setArchiveHasPassword(bool isHavePassword);
+ Q_INVOKABLE bool exportToFile(const QString &accountId,
+ const QString &path,
+ const QString &password = {}) const;
+ Q_INVOKABLE void setArchivePasswordAsync(const QString &accountID, const QString &password);
+ /*
+ * lrc instances functions wrappers
+ */
+ Q_INVOKABLE bool savePassword(QString accountId, QString oldPassword, QString newPassword);
+ Q_INVOKABLE void startAudioMeter(bool async);
+ Q_INVOKABLE void stopAudioMeter(bool async);
+ Q_INVOKABLE void startPreviewing(bool force);
+ Q_INVOKABLE void stopPreviewing();
+ Q_INVOKABLE bool hasVideoCall();
+ Q_INVOKABLE bool isPreviewing();
+ Q_INVOKABLE void setCurrAccDisplayName(QString text);
+ Q_INVOKABLE void setSelectedAccountId(QString accountId = {});
+ Q_INVOKABLE void setSelectedConvId(QString accountId = {});
+
+ /*
+ * lrc model instances getter
+ */
+ Q_INVOKABLE lrc::api::NewAccountModel *accoundModel();
+ Q_INVOKABLE lrc::api::AVModel *avModel();
+ Q_INVOKABLE lrc::api::DataTransferModel *dataTransferModel();
+
+ Q_INVOKABLE RenderManager *getRenderManager();
+signals:
+
+ /*
+ * Trigger other components to reconnect account related signals.
+ */
+ void accountSignalsReconnect(const QString &accountId);
+ void accountStatusChanged();
+ void updateConversationForAddedContact();
+ /*
+ * send report failure to QML to make it show the right UI state .
+ */
+ void reportFailure();
+ void accountAdded(bool showBackUp, int index);
+
+private:
+ void initQmlObject() override final;
+ void setSelectedAccount(const QString &accountId, int index);
+ void backToWelcomePage(int index);
+ void deselectConversation();
+
+ /*
+ * Make account signal connections.
+ */
+ void connectAccount(const QString &accountId);
+ /*
+ * Implement what to do when creat accout fails.
+ */
+ void connectFailure();
+
+ QMetaObject::Connection accountStatusChangedConnection_;
+ QMetaObject::Connection contactAddedConnection_;
+ QMetaObject::Connection addedToConferenceConnection_;
+};
+#if QT_VERSION >= QT_VERSION_CHECK(5, 8, 0)
+Q_DECLARE_METATYPE(AccountAdapter *)
+#endif
diff --git a/src/accountlistmodel.cpp b/src/accountlistmodel.cpp
new file mode 100644
index 0000000..9b3eed4
--- /dev/null
+++ b/src/accountlistmodel.cpp
@@ -0,0 +1,139 @@
+/*
+ * Copyright (C) 2019-2020 by Savoir-faire Linux
+ * Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "accountlistmodel.h"
+
+#include <QDateTime>
+
+#include "globalinstances.h"
+
+#include "lrcinstance.h"
+#include "pixbufmanipulator.h"
+#include "utils.h"
+
+AccountListModel::AccountListModel(QObject *parent)
+ : QAbstractListModel(parent)
+{}
+
+AccountListModel::~AccountListModel() {}
+
+int
+AccountListModel::rowCount(const QModelIndex &parent) const
+{
+ if (!parent.isValid()) {
+ /*
+ * Count.
+ */
+ return LRCInstance::accountModel().getAccountList().size();
+ }
+ /*
+ * A valid QModelIndex returns 0 as no entry has sub-elements.
+ */
+ return 0;
+}
+
+int
+AccountListModel::columnCount(const QModelIndex &parent) const
+{
+ Q_UNUSED(parent);
+ /*
+ * Only need one column.
+ */
+ return 1;
+}
+
+QVariant
+AccountListModel::data(const QModelIndex &index, int role) const
+{
+ auto accountList = LRCInstance::accountModel().getAccountList();
+ if (!index.isValid() || accountList.size() <= index.row()) {
+ return QVariant();
+ }
+
+ auto &accountInfo = LRCInstance::accountModel().getAccountInfo(accountList.at(index.row()));
+
+ switch (role) {
+ case Role::Alias:
+ return QVariant(Utils::bestNameForAccount(accountInfo));
+ case Role::Username:
+ return QVariant(Utils::secondBestNameForAccount(accountInfo));
+ case Role::Type:
+ return QVariant(
+ Utils::toUnderlyingValue<lrc::api::profile::Type>(accountInfo.profileInfo.type));
+ case Role::Status:
+ return QVariant(Utils::toUnderlyingValue<lrc::api::account::Status>(accountInfo.status));
+ case Role::Picture:
+ return QString::fromLatin1(
+ Utils::QImageToByteArray(Utils::accountPhoto(accountInfo)).toBase64().data());
+ case Role::ID:
+ return QVariant(accountInfo.id);
+ }
+ return QVariant();
+}
+
+QHash<int, QByteArray>
+AccountListModel::roleNames() const
+{
+ QHash<int, QByteArray> roles;
+ roles[Alias] = "Alias";
+ roles[Username] = "Username";
+ roles[Picture] = "Picture";
+ roles[Type] = "Type";
+ roles[Status] = "Status";
+ roles[ID] = "ID";
+ return roles;
+}
+
+QModelIndex
+AccountListModel::index(int row, int column, const QModelIndex &parent) const
+{
+ Q_UNUSED(parent);
+ if (column != 0) {
+ return QModelIndex();
+ }
+
+ if (row >= 0 && row < rowCount()) {
+ return createIndex(row, column);
+ }
+ return QModelIndex();
+}
+
+QModelIndex
+AccountListModel::parent(const QModelIndex &child) const
+{
+ Q_UNUSED(child);
+ return QModelIndex();
+}
+
+Qt::ItemFlags
+AccountListModel::flags(const QModelIndex &index) const
+{
+ auto flags = QAbstractItemModel::flags(index) | Qt::ItemNeverHasChildren | Qt::ItemIsSelectable;
+ if (!index.isValid()) {
+ return QAbstractItemModel::flags(index);
+ }
+ return flags;
+}
+
+void
+AccountListModel::reset()
+{
+ beginResetModel();
+ endResetModel();
+}
diff --git a/src/accountlistmodel.h b/src/accountlistmodel.h
new file mode 100644
index 0000000..134a31e
--- /dev/null
+++ b/src/accountlistmodel.h
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2019-2020 by Savoir-faire Linux
+ * Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include <QAbstractItemModel>
+
+#include "api/account.h"
+#include "api/contact.h"
+#include "api/conversation.h"
+
+class AccountListModel : public QAbstractListModel
+{
+ Q_OBJECT
+
+public:
+ enum Role { Alias = Qt::UserRole + 1, Username, Picture, Type, Status, ID };
+
+ explicit AccountListModel(QObject *parent = 0);
+ ~AccountListModel();
+
+ /*
+ * QAbstractListModel override.
+ */
+ int rowCount(const QModelIndex &parent = QModelIndex()) const override;
+ int columnCount(const QModelIndex &parent) const override;
+ QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
+ /*
+ * Override role name as access point in qml.
+ */
+ QHash<int, QByteArray> roleNames() const override;
+ QModelIndex index(int row, int column = 0, const QModelIndex &parent = QModelIndex()) const;
+ QModelIndex parent(const QModelIndex &child) const;
+ Qt::ItemFlags flags(const QModelIndex &index) const;
+
+ /*
+ * This function is to reset the model when there's new account added.
+ */
+ Q_INVOKABLE void reset();
+};
diff --git a/src/accountstomigratelistmodel.cpp b/src/accountstomigratelistmodel.cpp
new file mode 100644
index 0000000..8123eec
--- /dev/null
+++ b/src/accountstomigratelistmodel.cpp
@@ -0,0 +1,151 @@
+/*
+ * Copyright (C) 2019-2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "accountstomigratelistmodel.h"
+
+AccountsToMigrateListModel::AccountsToMigrateListModel(QObject *parent)
+ : QAbstractListModel(parent)
+{}
+
+AccountsToMigrateListModel::~AccountsToMigrateListModel() {}
+
+int
+AccountsToMigrateListModel::rowCount(const QModelIndex &parent) const
+{
+ if (!parent.isValid()) {
+ /*
+ * Count.
+ */
+ auto accountList = LRCInstance::accountModel().getAccountList();
+
+ int countAccountToMigrate = 0;
+
+ for (const QString &i : accountList) {
+ auto accountStatus = LRCInstance::accountModel().getAccountInfo(i).status;
+ if (accountStatus == lrc::api::account::Status::ERROR_NEED_MIGRATION) {
+ countAccountToMigrate++;
+ }
+ }
+
+ return countAccountToMigrate;
+ }
+ /*
+ * A valid QModelIndex returns 0 as no entry has sub-elements.
+ */
+ return 0;
+}
+
+int
+AccountsToMigrateListModel::columnCount(const QModelIndex &parent) const
+{
+ Q_UNUSED(parent);
+ /*
+ * Only need one column.
+ */
+ return 1;
+}
+
+QVariant
+AccountsToMigrateListModel::data(const QModelIndex &index, int role) const
+{
+ auto accountList = LRCInstance::accountModel().getAccountList();
+ if (!index.isValid() || accountList.size() <= index.row()) {
+ return QVariant();
+ }
+
+ QList<QString> accountToMigrateList;
+
+ for (QString i : accountList) {
+ auto accountStatus = LRCInstance::accountModel().getAccountInfo(i).status;
+ if (accountStatus == lrc::api::account::Status::ERROR_NEED_MIGRATION) {
+ accountToMigrateList.append(i);
+ }
+ }
+
+ QString accountId = accountToMigrateList.at(index.row());
+
+ auto &avatarInfo = LRCInstance::accountModel().getAccountInfo(accountId);
+
+ switch (role) {
+ case Role::Account_ID:
+ return QVariant(accountId);
+ case Role::ManagerUsername:
+ return QVariant(avatarInfo.confProperties.managerUsername);
+ case Role::ManagerUri:
+ return QVariant(avatarInfo.confProperties.managerUri);
+ case Role::Username:
+ return QVariant(avatarInfo.confProperties.username);
+ case Role::Alias:
+ return QVariant(LRCInstance::accountModel().getAccountInfo(accountId).profileInfo.alias);
+ case Role::Picture:
+ return QString::fromLatin1(
+ Utils::QImageToByteArray(Utils::accountPhoto(avatarInfo)).toBase64().data());
+ }
+ return QVariant();
+}
+
+QHash<int, QByteArray>
+AccountsToMigrateListModel::roleNames() const
+{
+ QHash<int, QByteArray> roles;
+ roles[Account_ID] = "Account_ID";
+ roles[ManagerUsername] = "ManagerUsername";
+ roles[ManagerUri] = "ManagerUri";
+ roles[Username] = "Username";
+ roles[Alias] = "Alias";
+ roles[Picture] = "Picture";
+ return roles;
+}
+
+QModelIndex
+AccountsToMigrateListModel::index(int row, int column, const QModelIndex &parent) const
+{
+ Q_UNUSED(parent);
+ if (column != 0) {
+ return QModelIndex();
+ }
+
+ if (row >= 0 && row < rowCount()) {
+ return createIndex(row, column);
+ }
+ return QModelIndex();
+}
+
+QModelIndex
+AccountsToMigrateListModel::parent(const QModelIndex &child) const
+{
+ Q_UNUSED(child);
+ return QModelIndex();
+}
+
+Qt::ItemFlags
+AccountsToMigrateListModel::flags(const QModelIndex &index) const
+{
+ auto flags = QAbstractItemModel::flags(index) | Qt::ItemNeverHasChildren | Qt::ItemIsSelectable;
+ if (!index.isValid()) {
+ return QAbstractItemModel::flags(index);
+ }
+ return flags;
+}
+
+void
+AccountsToMigrateListModel::reset()
+{
+ beginResetModel();
+ endResetModel();
+}
diff --git a/src/accountstomigratelistmodel.h b/src/accountstomigratelistmodel.h
new file mode 100644
index 0000000..b865d00
--- /dev/null
+++ b/src/accountstomigratelistmodel.h
@@ -0,0 +1,65 @@
+/*
+ * Copyright (C) 2019-2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include <QAbstractItemModel>
+
+#include "api/account.h"
+#include "api/contact.h"
+#include "api/conversation.h"
+#include "api/newdevicemodel.h"
+
+#include "lrcinstance.h"
+
+class AccountsToMigrateListModel : public QAbstractListModel
+{
+ Q_OBJECT
+public:
+ enum Role {
+ Account_ID = Qt::UserRole + 1,
+ ManagerUsername,
+ ManagerUri,
+ Username,
+ Alias,
+ Picture
+ };
+ Q_ENUM(Role)
+
+ explicit AccountsToMigrateListModel(QObject *parent = 0);
+ ~AccountsToMigrateListModel();
+
+ /*
+ * QAbstractListModel override.
+ */
+ int rowCount(const QModelIndex &parent = QModelIndex()) const override;
+ int columnCount(const QModelIndex &parent) const override;
+ QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
+ /*
+ * Override role name as access point in qml.
+ */
+ QHash<int, QByteArray> roleNames() const override;
+ QModelIndex index(int row, int column = 0, const QModelIndex &parent = QModelIndex()) const;
+ QModelIndex parent(const QModelIndex &child) const;
+ Qt::ItemFlags flags(const QModelIndex &index) const;
+
+ /*
+ * This function is to reset the model when there's new account added.
+ */
+ Q_INVOKABLE void reset();
+};
diff --git a/src/audiocodeclistmodel.cpp b/src/audiocodeclistmodel.cpp
new file mode 100644
index 0000000..cf097ad
--- /dev/null
+++ b/src/audiocodeclistmodel.cpp
@@ -0,0 +1,108 @@
+/*
+ * Copyright (C) 2019-2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "audiocodeclistmodel.h"
+
+AudioCodecListModel::AudioCodecListModel(QObject *parent)
+ : QAbstractListModel(parent)
+{}
+
+AudioCodecListModel::~AudioCodecListModel() {}
+
+int
+AudioCodecListModel::rowCount(const QModelIndex &parent) const
+{
+ if (!parent.isValid()) {
+ return LRCInstance::getCurrentAccountInfo().codecModel->getAudioCodecs().size();
+ }
+ return 0;
+}
+
+int
+AudioCodecListModel::columnCount(const QModelIndex &parent) const
+{
+ Q_UNUSED(parent);
+ /*
+ * Only need one column.
+ */
+ return 1;
+}
+
+QVariant
+AudioCodecListModel::data(const QModelIndex &index, int role) const
+{
+ auto audioCodecList = LRCInstance::getCurrentAccountInfo().codecModel->getAudioCodecs();
+ if (!index.isValid() || audioCodecList.size() <= index.row()) {
+ return QVariant();
+ }
+
+ switch (role) {
+ case Role::AudioCodecName:
+ return QVariant(audioCodecList.at(index.row()).name);
+ case Role::IsEnabled:
+ return QVariant(audioCodecList.at(index.row()).enabled);
+ case Role::AudioCodecID:
+ return QVariant(audioCodecList.at(index.row()).id);
+ case Role::Samplerate:
+ return QVariant(audioCodecList.at(index.row()).samplerate);
+ }
+ return QVariant();
+}
+
+QHash<int, QByteArray>
+AudioCodecListModel::roleNames() const
+{
+ QHash<int, QByteArray> roles;
+ roles[AudioCodecName] = "AudioCodecName";
+ roles[IsEnabled] = "IsEnabled";
+ roles[AudioCodecID] = "AudioCodecID";
+ roles[Samplerate] = "Samplerate";
+ return roles;
+}
+
+QModelIndex
+AudioCodecListModel::index(int row, int column, const QModelIndex &parent) const
+{
+ Q_UNUSED(parent);
+ if (column != 0) {
+ return QModelIndex();
+ }
+
+ if (row >= 0 && row < rowCount()) {
+ return createIndex(row, column);
+ }
+ return QModelIndex();
+}
+
+QModelIndex
+AudioCodecListModel::parent(const QModelIndex &child) const
+{
+ Q_UNUSED(child);
+ return QModelIndex();
+}
+
+Qt::ItemFlags
+AudioCodecListModel::flags(const QModelIndex &index) const
+{
+ auto flags = QAbstractItemModel::flags(index) | Qt::ItemNeverHasChildren | Qt::ItemIsSelectable
+ | Qt::ItemIsUserCheckable | Qt::ItemIsEnabled;
+ if (!index.isValid()) {
+ return QAbstractItemModel::flags(index);
+ }
+ return flags;
+}
diff --git a/src/audiocodeclistmodel.h b/src/audiocodeclistmodel.h
new file mode 100644
index 0000000..fc58ee1
--- /dev/null
+++ b/src/audiocodeclistmodel.h
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2019-2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include <QAbstractItemModel>
+
+#include "api/account.h"
+#include "api/contact.h"
+#include "api/conversation.h"
+#include "api/newdevicemodel.h"
+
+#include "lrcinstance.h"
+
+class AudioCodecListModel : public QAbstractListModel
+{
+ Q_OBJECT
+public:
+ enum Role { AudioCodecName = Qt::UserRole + 1, IsEnabled, AudioCodecID, Samplerate };
+ Q_ENUM(Role)
+
+ explicit AudioCodecListModel(QObject *parent = 0);
+ ~AudioCodecListModel();
+
+ /*
+ * QAbstractListModel override.
+ */
+ int rowCount(const QModelIndex &parent = QModelIndex()) const override;
+ int columnCount(const QModelIndex &parent) const override;
+ QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
+ /*
+ * Override role name as access point in qml.
+ */
+ QHash<int, QByteArray> roleNames() const override;
+ QModelIndex index(int row, int column = 0, const QModelIndex &parent = QModelIndex()) const;
+ QModelIndex parent(const QModelIndex &child) const;
+ Qt::ItemFlags flags(const QModelIndex &index) const;
+};
diff --git a/src/audioinputdevicemodel.cpp b/src/audioinputdevicemodel.cpp
new file mode 100644
index 0000000..0687c4e
--- /dev/null
+++ b/src/audioinputdevicemodel.cpp
@@ -0,0 +1,128 @@
+/*
+ * Copyright (C) 2019-2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "audioinputdevicemodel.h"
+
+AudioInputDeviceModel::AudioInputDeviceModel(QObject *parent)
+ : QAbstractListModel(parent)
+{}
+
+AudioInputDeviceModel::~AudioInputDeviceModel() {}
+
+int
+AudioInputDeviceModel::rowCount(const QModelIndex &parent) const
+{
+ if (!parent.isValid()) {
+ /*
+ * Count.
+ */
+ return LRCInstance::avModel().getAudioInputDevices().size();
+ }
+ /*
+ * A valid QModelIndex returns 0 as no entry has sub-elements.
+ */
+ return 0;
+}
+
+int
+AudioInputDeviceModel::columnCount(const QModelIndex &parent) const
+{
+ Q_UNUSED(parent);
+ /*
+ * Only need one column.
+ */
+ return 1;
+}
+
+QVariant
+AudioInputDeviceModel::data(const QModelIndex &index, int role) const
+{
+ auto deviceList = LRCInstance::avModel().getAudioInputDevices();
+ if (!index.isValid() || deviceList.size() <= index.row()) {
+ return QVariant();
+ }
+
+ switch (role) {
+ case Role::Device_ID:
+ return QVariant(deviceList.at(index.row()));
+ case Role::ID_UTF8:
+ return QVariant(deviceList.at(index.row()).toUtf8());
+ }
+ return QVariant();
+}
+
+QHash<int, QByteArray>
+AudioInputDeviceModel::roleNames() const
+{
+ QHash<int, QByteArray> roles;
+ roles[Device_ID] = "Device_ID";
+ roles[ID_UTF8] = "ID_UTF8";
+ return roles;
+}
+
+QModelIndex
+AudioInputDeviceModel::index(int row, int column, const QModelIndex &parent) const
+{
+ Q_UNUSED(parent);
+ if (column != 0) {
+ return QModelIndex();
+ }
+
+ if (row >= 0 && row < rowCount()) {
+ return createIndex(row, column);
+ }
+ return QModelIndex();
+}
+
+QModelIndex
+AudioInputDeviceModel::parent(const QModelIndex &child) const
+{
+ Q_UNUSED(child);
+ return QModelIndex();
+}
+
+Qt::ItemFlags
+AudioInputDeviceModel::flags(const QModelIndex &index) const
+{
+ auto flags = QAbstractItemModel::flags(index) | Qt::ItemNeverHasChildren | Qt::ItemIsSelectable;
+ if (!index.isValid()) {
+ return QAbstractItemModel::flags(index);
+ }
+ return flags;
+}
+
+void
+AudioInputDeviceModel::reset()
+{
+ beginResetModel();
+ endResetModel();
+}
+
+int
+AudioInputDeviceModel::getCurrentSettingIndex()
+{
+ QString currentId = LRCInstance::avModel().getInputDevice();
+ auto resultList = match(index(0, 0), Device_ID, QVariant(currentId));
+
+ int resultRowIndex = 0;
+ if (resultList.size() > 0) {
+ resultRowIndex = resultList[0].row();
+ }
+
+ return resultRowIndex;
+}
diff --git a/src/audioinputdevicemodel.h b/src/audioinputdevicemodel.h
new file mode 100644
index 0000000..03836be
--- /dev/null
+++ b/src/audioinputdevicemodel.h
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2019-2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include <QAbstractItemModel>
+
+#include "api/account.h"
+#include "api/contact.h"
+#include "api/conversation.h"
+#include "api/newdevicemodel.h"
+
+#include "lrcinstance.h"
+
+class AudioInputDeviceModel : public QAbstractListModel
+{
+ Q_OBJECT
+public:
+ enum Role { Device_ID = Qt::UserRole + 1, ID_UTF8 };
+ Q_ENUM(Role)
+
+ explicit AudioInputDeviceModel(QObject *parent = 0);
+ ~AudioInputDeviceModel();
+
+ /*
+ * QAbstractListModel override.
+ */
+ int rowCount(const QModelIndex &parent = QModelIndex()) const override;
+ int columnCount(const QModelIndex &parent) const override;
+ QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
+ /*
+ * Override role name as access point in qml.
+ */
+ QHash<int, QByteArray> roleNames() const override;
+ QModelIndex index(int row, int column = 0, const QModelIndex &parent = QModelIndex()) const;
+ QModelIndex parent(const QModelIndex &child) const;
+ Qt::ItemFlags flags(const QModelIndex &index) const;
+
+ /*
+ * This function is to reset the model when there's new account added.
+ */
+ Q_INVOKABLE void reset();
+ /*
+ * This function is to get the current device id in the demon.
+ */
+ Q_INVOKABLE int getCurrentSettingIndex();
+};
diff --git a/src/audiomanagerlistmodel.cpp b/src/audiomanagerlistmodel.cpp
new file mode 100644
index 0000000..a28480b
--- /dev/null
+++ b/src/audiomanagerlistmodel.cpp
@@ -0,0 +1,128 @@
+/*
+ * Copyright (C) 2019-2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "audiomanagerlistmodel.h"
+
+AudioManagerListModel::AudioManagerListModel(QObject *parent)
+ : QAbstractListModel(parent)
+{}
+
+AudioManagerListModel::~AudioManagerListModel() {}
+
+int
+AudioManagerListModel::rowCount(const QModelIndex &parent) const
+{
+ if (!parent.isValid()) {
+ /*
+ * Count.
+ */
+ return LRCInstance::avModel().getSupportedAudioManagers().size();
+ }
+ /*
+ * A valid QModelIndex returns 0 as no entry has sub-elements.
+ */
+ return 0;
+}
+
+int
+AudioManagerListModel::columnCount(const QModelIndex &parent) const
+{
+ Q_UNUSED(parent);
+ /*
+ * Only need one column.
+ */
+ return 1;
+}
+
+QVariant
+AudioManagerListModel::data(const QModelIndex &index, int role) const
+{
+ auto managerList = LRCInstance::avModel().getSupportedAudioManagers();
+ if (!index.isValid() || managerList.size() <= index.row()) {
+ return QVariant();
+ }
+
+ switch (role) {
+ case Role::AudioManagerID:
+ return QVariant(managerList.at(index.row()));
+ case Role::ID_UTF8:
+ return QVariant(managerList.at(index.row()).toUtf8());
+ }
+ return QVariant();
+}
+
+QHash<int, QByteArray>
+AudioManagerListModel::roleNames() const
+{
+ QHash<int, QByteArray> roles;
+ roles[AudioManagerID] = "AudioManagerID";
+ roles[ID_UTF8] = "ID_UTF8";
+ return roles;
+}
+
+QModelIndex
+AudioManagerListModel::index(int row, int column, const QModelIndex &parent) const
+{
+ Q_UNUSED(parent);
+ if (column != 0) {
+ return QModelIndex();
+ }
+
+ if (row >= 0 && row < rowCount()) {
+ return createIndex(row, column);
+ }
+ return QModelIndex();
+}
+
+QModelIndex
+AudioManagerListModel::parent(const QModelIndex &child) const
+{
+ Q_UNUSED(child);
+ return QModelIndex();
+}
+
+Qt::ItemFlags
+AudioManagerListModel::flags(const QModelIndex &index) const
+{
+ auto flags = QAbstractItemModel::flags(index) | Qt::ItemNeverHasChildren | Qt::ItemIsSelectable;
+ if (!index.isValid()) {
+ return QAbstractItemModel::flags(index);
+ }
+ return flags;
+}
+
+void
+AudioManagerListModel::reset()
+{
+ beginResetModel();
+ endResetModel();
+}
+
+int
+AudioManagerListModel::getCurrentSettingIndex()
+{
+ QString currentId = LRCInstance::avModel().getAudioManager();
+ auto resultList = match(index(0, 0), AudioManagerID, QVariant(currentId));
+
+ int resultRowIndex = 0;
+ if (resultList.size() > 0) {
+ resultRowIndex = resultList[0].row();
+ }
+
+ return resultRowIndex;
+}
diff --git a/src/audiomanagerlistmodel.h b/src/audiomanagerlistmodel.h
new file mode 100644
index 0000000..56f0b3b
--- /dev/null
+++ b/src/audiomanagerlistmodel.h
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2019-2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include <QAbstractItemModel>
+
+#include "api/account.h"
+#include "api/contact.h"
+#include "api/conversation.h"
+#include "api/newdevicemodel.h"
+
+#include "lrcinstance.h"
+
+class AudioManagerListModel : public QAbstractListModel
+{
+ Q_OBJECT
+public:
+ enum Role { AudioManagerID = Qt::UserRole + 1, ID_UTF8 };
+ Q_ENUM(Role)
+
+ explicit AudioManagerListModel(QObject *parent = 0);
+ ~AudioManagerListModel();
+
+ /*
+ * QAbstractListModel override.
+ */
+ int rowCount(const QModelIndex &parent = QModelIndex()) const override;
+ int columnCount(const QModelIndex &parent) const override;
+ QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
+ /*
+ * Override role name as access point in qml.
+ */
+ QHash<int, QByteArray> roleNames() const override;
+ QModelIndex index(int row, int column = 0, const QModelIndex &parent = QModelIndex()) const;
+ QModelIndex parent(const QModelIndex &child) const;
+ Qt::ItemFlags flags(const QModelIndex &index) const;
+
+ /*
+ * This function is to reset the model when there's new account added.
+ */
+ Q_INVOKABLE void reset();
+ /*
+ * This function is to get the current device id in the demon.
+ */
+ Q_INVOKABLE int getCurrentSettingIndex();
+};
diff --git a/src/audiooutputdevicemodel.cpp b/src/audiooutputdevicemodel.cpp
new file mode 100644
index 0000000..733cc6d
--- /dev/null
+++ b/src/audiooutputdevicemodel.cpp
@@ -0,0 +1,142 @@
+/*
+ * Copyright (C) 2019-2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "audiooutputdevicemodel.h"
+
+AudioOutputDeviceModel::AudioOutputDeviceModel(QObject *parent)
+ : QAbstractListModel(parent)
+{}
+
+AudioOutputDeviceModel::~AudioOutputDeviceModel() {}
+
+int
+AudioOutputDeviceModel::rowCount(const QModelIndex &parent) const
+{
+ if (!parent.isValid()) {
+ /*
+ * Count.
+ */
+ return LRCInstance::avModel().getAudioOutputDevices().size();
+ }
+ /*
+ * A valid QModelIndex returns 0 as no entry has sub-elements.
+ */
+ return 0;
+}
+
+int
+AudioOutputDeviceModel::columnCount(const QModelIndex &parent) const
+{
+ Q_UNUSED(parent);
+ /*
+ * Only need one column.
+ */
+ return 1;
+}
+
+QVariant
+AudioOutputDeviceModel::data(const QModelIndex &index, int role) const
+{
+ auto deviceList = LRCInstance::avModel().getAudioOutputDevices();
+ if (!index.isValid() || deviceList.size() <= index.row()) {
+ return QVariant();
+ }
+
+ switch (role) {
+ case Role::Device_ID:
+ return QVariant(deviceList.at(index.row()));
+ case Role::ID_UTF8:
+ return QVariant(deviceList.at(index.row()).toUtf8());
+ }
+ return QVariant();
+}
+
+QHash<int, QByteArray>
+AudioOutputDeviceModel::roleNames() const
+{
+ QHash<int, QByteArray> roles;
+ roles[Device_ID] = "Device_ID";
+ roles[ID_UTF8] = "ID_UTF8";
+ return roles;
+}
+
+QModelIndex
+AudioOutputDeviceModel::index(int row, int column, const QModelIndex &parent) const
+{
+ Q_UNUSED(parent);
+ if (column != 0) {
+ return QModelIndex();
+ }
+
+ if (row >= 0 && row < rowCount()) {
+ return createIndex(row, column);
+ }
+ return QModelIndex();
+}
+
+QModelIndex
+AudioOutputDeviceModel::parent(const QModelIndex &child) const
+{
+ Q_UNUSED(child);
+ return QModelIndex();
+}
+
+Qt::ItemFlags
+AudioOutputDeviceModel::flags(const QModelIndex &index) const
+{
+ auto flags = QAbstractItemModel::flags(index) | Qt::ItemNeverHasChildren | Qt::ItemIsSelectable;
+ if (!index.isValid()) {
+ return QAbstractItemModel::flags(index);
+ }
+ return flags;
+}
+
+void
+AudioOutputDeviceModel::reset()
+{
+ beginResetModel();
+ endResetModel();
+}
+
+int
+AudioOutputDeviceModel::getCurrentSettingIndex()
+{
+ QString currentId = LRCInstance::avModel().getOutputDevice();
+ auto resultList = match(index(0, 0), Device_ID, QVariant(currentId));
+
+ int resultRowIndex = 0;
+ if (resultList.size() > 0) {
+ resultRowIndex = resultList[0].row();
+ }
+
+ return resultRowIndex;
+}
+
+int
+AudioOutputDeviceModel::getCurrentRingtoneDeviceIndex()
+{
+ QString currentId = LRCInstance::avModel().getRingtoneDevice();
+ auto resultList = match(index(0, 0), Device_ID, QVariant(currentId));
+
+ int resultRowIndex = 0;
+ if (resultList.size() > 0) {
+ resultRowIndex = resultList[0].row();
+ }
+
+ return resultRowIndex;
+}
diff --git a/src/audiooutputdevicemodel.h b/src/audiooutputdevicemodel.h
new file mode 100644
index 0000000..e0148a1
--- /dev/null
+++ b/src/audiooutputdevicemodel.h
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2019-2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include <QAbstractItemModel>
+
+#include "api/account.h"
+#include "api/contact.h"
+#include "api/conversation.h"
+#include "api/newdevicemodel.h"
+
+#include "lrcinstance.h"
+
+class AudioOutputDeviceModel : public QAbstractListModel
+{
+ Q_OBJECT
+public:
+public:
+ enum Role { Device_ID = Qt::UserRole + 1, ID_UTF8 };
+ Q_ENUM(Role)
+
+ explicit AudioOutputDeviceModel(QObject *parent = 0);
+ ~AudioOutputDeviceModel();
+
+ /*
+ * QAbstractListModel override.
+ */
+ int rowCount(const QModelIndex &parent = QModelIndex()) const override;
+ int columnCount(const QModelIndex &parent) const override;
+ QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
+ /*
+ * Override role name as access point in qml.
+ */
+ QHash<int, QByteArray> roleNames() const override;
+ QModelIndex index(int row, int column = 0, const QModelIndex &parent = QModelIndex()) const;
+ QModelIndex parent(const QModelIndex &child) const;
+ Qt::ItemFlags flags(const QModelIndex &index) const;
+
+ /*
+ * This function is to reset the model when there's new account added.
+ */
+ Q_INVOKABLE void reset();
+ /*
+ * This function is to get the current device id in the demon.
+ */
+ Q_INVOKABLE int getCurrentSettingIndex();
+ /*
+ * This function is to get the current ringtone device id in the demon.
+ */
+ Q_INVOKABLE int getCurrentRingtoneDeviceIndex();
+};
diff --git a/src/avadapter.cpp b/src/avadapter.cpp
new file mode 100644
index 0000000..406e208
--- /dev/null
+++ b/src/avadapter.cpp
@@ -0,0 +1,132 @@
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author : Edric Ladent Milaret<edric.ladent - milaret @savoirfairelinux.com>
+ * Author : Andreas Traczyk<andreas.traczyk @savoirfairelinux.com>
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "avadapter.h"
+
+#include "lrcinstance.h"
+
+#include <QScreen>
+
+AvAdapter::AvAdapter(QObject *parent)
+ : QmlAdapterBase(parent)
+{}
+
+AvAdapter::~AvAdapter() {}
+
+void
+AvAdapter::initQmlObject()
+{}
+
+QVariantMap
+AvAdapter::populateVideoDeviceContextMenuItem()
+{
+ auto conversation = LRCInstance::getCurrentConversation();
+ auto call = LRCInstance::getCallInfoForConversation(conversation);
+ if (!call) {
+ return QVariantMap();
+ }
+
+ auto activeDevice = LRCInstance::avModel().getCurrentRenderedDevice(call->id);
+
+ /*
+ * Create a list of video input devices.
+ */
+ QVariantMap deciveContextMenuNeededInfo;
+ auto devices = LRCInstance::avModel().getDevices();
+ for (int i = 0; i < devices.size(); i++) {
+ try {
+ auto settings = LRCInstance::avModel().getDeviceSettings(devices[i]);
+ deciveContextMenuNeededInfo[settings.name] = QVariant(devices[i] == activeDevice.name);
+ } catch (...) {
+ qDebug().noquote() << "Error in getting device settings";
+ }
+ }
+
+ /*
+ * Add size parameter into the map since in qml there is no way to get the size.
+ */
+ deciveContextMenuNeededInfo["size"] = QVariant(deciveContextMenuNeededInfo.size());
+
+ return deciveContextMenuNeededInfo;
+}
+
+void
+AvAdapter::onVideoContextMenuDeviceItemClicked(const QString &deviceName)
+{
+ auto deviceId = LRCInstance::avModel().getDeviceIdFromName(deviceName);
+ if (deviceId.isEmpty()) {
+ qWarning() << "Couldn't find device: " << deviceName;
+ return;
+ }
+ LRCInstance::avModel().switchInputTo(deviceId);
+ LRCInstance::avModel().setCurrentVideoCaptureDevice(deviceId);
+}
+
+void
+AvAdapter::shareEntireScreen(int screenNumber)
+{
+ QScreen *screen = qApp->screens().at(screenNumber);
+ if (!screen)
+ return;
+ QRect rect = screen ? screen->geometry() : qApp->primaryScreen()->geometry();
+ LRCInstance::avModel().setDisplay(screenNumber, rect.x(), rect.y(), rect.width(), rect.height());
+}
+
+const QString
+AvAdapter::captureScreen(int screenNumber)
+{
+ QScreen *screen = qApp->screens().at(screenNumber);
+ if (!screen)
+ return QString("");
+ /*
+ * The screen window id is always 0.
+ */
+ auto pixmap = screen->grabWindow(0);
+
+ QBuffer buffer;
+ buffer.open(QIODevice::WriteOnly);
+ pixmap.save(&buffer, "PNG");
+ return QString::fromLatin1(buffer.data().toBase64().data());
+}
+
+void
+AvAdapter::shareFile(const QString &filePath)
+{
+ LRCInstance::avModel().setInputFile(filePath);
+}
+
+void
+AvAdapter::shareScreenArea(int screenNumber, int x, int y, int width, int height)
+{
+ QScreen *screen = qApp->screens().at(screenNumber);
+ if (!screen)
+ return;
+ QRect rect = screen ? screen->geometry() : qApp->primaryScreen()->geometry();
+
+ /*
+ * Provide minimum width, height.
+ * Need to add screen x, y initial value to the setDisplay api call.
+ */
+ LRCInstance::avModel().setDisplay(screenNumber,
+ rect.x() + x,
+ rect.y() + y,
+ width < 128 ? 128 : width,
+ height < 128 ? 128 : height);
+}
\ No newline at end of file
diff --git a/src/avadapter.h b/src/avadapter.h
new file mode 100644
index 0000000..1c300e8
--- /dev/null
+++ b/src/avadapter.h
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "qmladapterbase.h"
+
+#include <QObject>
+#include <QVariant>
+#include <QString>
+
+class AvAdapter : public QmlAdapterBase
+{
+ Q_OBJECT
+
+public:
+ explicit AvAdapter(QObject *parent = nullptr);
+ ~AvAdapter();
+
+ /*
+ * Return needed info for populating video device context menu item.
+ */
+ Q_INVOKABLE QVariantMap populateVideoDeviceContextMenuItem();
+
+ /*
+ * Preview video input switching.
+ */
+ Q_INVOKABLE void onVideoContextMenuDeviceItemClicked(const QString &deviceName);
+
+ /*
+ * Share the screen specificed by screen number.
+ */
+ Q_INVOKABLE void shareEntireScreen(int screenNumber);
+
+ /*
+ * Take snap shot of the screen by returning base64 image string.
+ */
+ Q_INVOKABLE const QString captureScreen(int screenNumber);
+
+ /*
+ * Share a media file.
+ */
+ Q_INVOKABLE void shareFile(const QString &filePath);
+
+ /*
+ * Select screen area to display.
+ */
+ Q_INVOKABLE void shareScreenArea(int screenNumber, int x, int y, int width, int height);
+
+private:
+ void initQmlObject() override;
+};
diff --git a/src/bannedlistmodel.cpp b/src/bannedlistmodel.cpp
new file mode 100644
index 0000000..79fecd4
--- /dev/null
+++ b/src/bannedlistmodel.cpp
@@ -0,0 +1,120 @@
+/*
+ * Copyright (C) 2019-2020 by Savoir-faire Linux
+ * Author: Isa Nanic <isa.nanic@savoirfairelinux.com>
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "bannedlistmodel.h"
+#include "lrcinstance.h"
+
+BannedListModel::BannedListModel(QObject *parent)
+ : QAbstractListModel(parent)
+{}
+
+BannedListModel::~BannedListModel() {}
+
+int
+BannedListModel::rowCount(const QModelIndex &parent) const
+{
+ if (!parent.isValid()) {
+ return LRCInstance::getCurrentAccountInfo().contactModel->getBannedContacts().size();
+ }
+ return 0;
+}
+
+int
+BannedListModel::columnCount(const QModelIndex &parent) const
+{
+ Q_UNUSED(parent);
+ /*
+ * Only need one column.
+ */
+ return 1;
+}
+
+QVariant
+BannedListModel::data(const QModelIndex &index, int role) const
+{
+ auto contactList = LRCInstance::getCurrentAccountInfo().contactModel->getBannedContacts();
+ if (!index.isValid() || contactList.size() <= index.row()) {
+ return QVariant();
+ }
+
+ auto contactInfo = LRCInstance::getCurrentAccountInfo().contactModel->getContact(
+ contactList.at(index.row()));
+
+ switch (role) {
+ case Role::ContactName:
+ return QVariant(contactInfo.registeredName);
+ case Role::ContactID:
+ return QVariant(contactInfo.profileInfo.uri);
+ case Role::ContactPicture:
+ QImage avatarImage = Utils::fallbackAvatar(QSize(48, 48),
+ contactInfo.profileInfo.uri,
+ contactInfo.registeredName);
+
+ return QString::fromLatin1(Utils::QImageToByteArray(avatarImage).toBase64().data());
+ }
+ return QVariant();
+}
+
+QHash<int, QByteArray>
+BannedListModel::roleNames() const
+{
+ QHash<int, QByteArray> roles;
+ roles[ContactName] = "ContactName";
+ roles[ContactID] = "ContactID";
+ roles[ContactPicture] = "ContactPicture";
+ return roles;
+}
+
+QModelIndex
+BannedListModel::index(int row, int column, const QModelIndex &parent) const
+{
+ Q_UNUSED(parent);
+ if (column != 0) {
+ return QModelIndex();
+ }
+
+ if (row >= 0 && row < rowCount()) {
+ return createIndex(row, column);
+ }
+ return QModelIndex();
+}
+
+QModelIndex
+BannedListModel::parent(const QModelIndex &child) const
+{
+ Q_UNUSED(child);
+ return QModelIndex();
+}
+
+Qt::ItemFlags
+BannedListModel::flags(const QModelIndex &index) const
+{
+ auto flags = QAbstractItemModel::flags(index) | Qt::ItemNeverHasChildren | Qt::ItemIsSelectable;
+ if (!index.isValid()) {
+ return QAbstractItemModel::flags(index);
+ }
+ return flags;
+}
+
+void
+BannedListModel::reset()
+{
+ beginResetModel();
+ endResetModel();
+}
diff --git a/src/bannedlistmodel.h b/src/bannedlistmodel.h
new file mode 100644
index 0000000..8dbb7a0
--- /dev/null
+++ b/src/bannedlistmodel.h
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2019-2020 by Savoir-faire Linux
+ * Author: Isa Nanic <isa.nanic@savoirfairelinux.com>
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include <QAbstractListModel>
+
+class BannedListModel : public QAbstractListModel
+{
+ Q_OBJECT
+ BannedListModel(const BannedListModel &cpy);
+
+public:
+ enum Role { ContactName = Qt::UserRole + 1, ContactID, ContactPicture };
+ Q_ENUM(Role)
+
+ explicit BannedListModel(QObject *parent = nullptr);
+ ~BannedListModel();
+
+ /*
+ * QAbstractListModel override.
+ */
+ int rowCount(const QModelIndex &parent = QModelIndex()) const override;
+ int columnCount(const QModelIndex &parent) const override;
+ QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
+ /*
+ * Override role name as access point in qml.
+ */
+ QHash<int, QByteArray> roleNames() const override;
+ QModelIndex index(int row, int column = 0, const QModelIndex &parent = QModelIndex()) const;
+ QModelIndex parent(const QModelIndex &child) const;
+ Qt::ItemFlags flags(const QModelIndex &index) const;
+
+ /*
+ * This function is to reset the model when there's new account added.
+ */
+ Q_INVOKABLE void reset();
+};
diff --git a/src/calladapter.cpp b/src/calladapter.cpp
new file mode 100644
index 0000000..c1b3240
--- /dev/null
+++ b/src/calladapter.cpp
@@ -0,0 +1,444 @@
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Edric Ladent Milaret <edric.ladent-milaret@savoirfairelinux.com>
+ * Author: Anthony Léonard <anthony.leonard@savoirfairelinux.com>
+ * Author: Olivier Soldano <olivier.soldano@savoirfairelinux.com>
+ * Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
+ * Author: Isa Nanic <isa.nanic@savoirfairelinux.com>
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "calladapter.h"
+
+#include "globalsystemtray.h"
+#include "utils.h"
+
+CallAdapter::CallAdapter(QObject *parent)
+ : QmlAdapterBase(parent)
+ , oneSecondTimer_(new QTimer(this))
+{}
+
+CallAdapter::~CallAdapter() {}
+
+void
+CallAdapter::initQmlObject()
+{
+ connectCallStatusChanged(LRCInstance::getCurrAccId());
+
+ connect(&LRCInstance::behaviorController(),
+ &BehaviorController::showIncomingCallView,
+ this,
+ &CallAdapter::slotShowIncomingCallView);
+ connect(&LRCInstance::behaviorController(),
+ &BehaviorController::showCallView,
+ this,
+ &CallAdapter::slotShowCallView);
+}
+
+void
+CallAdapter::placeAudioOnlyCall()
+{
+ auto convInfo = LRCInstance::getCurrentConversation();
+ if (!convInfo.uid.isEmpty()) {
+ LRCInstance::getCurrentConversationModel()->placeAudioOnlyCall(convInfo.uid);
+ }
+}
+
+void
+CallAdapter::placeCall()
+{
+ auto convInfo = LRCInstance::getCurrentConversation();
+ if (!convInfo.uid.isEmpty()) {
+ LRCInstance::getCurrentConversationModel()->placeCall(convInfo.uid);
+ }
+}
+
+void
+CallAdapter::hangUpACall(const QString &accountId, const QString &convUid)
+{
+ auto convInfo = LRCInstance::getConversationFromConvUid(convUid, accountId);
+ if (!convInfo.uid.isEmpty()) {
+ LRCInstance::getAccountInfo(accountId).callModel->hangUp(convInfo.callId);
+ }
+}
+
+void
+CallAdapter::refuseACall(const QString &accountId, const QString &convUid)
+{
+ auto convInfo = LRCInstance::getConversationFromConvUid(convUid, accountId);
+ if (!convInfo.uid.isEmpty()) {
+ LRCInstance::getAccountInfo(accountId).callModel->refuse(convInfo.callId);
+ }
+}
+
+void
+CallAdapter::acceptACall(const QString &accountId, const QString &convUid)
+{
+ emit incomingCallNeedToSetupMainView(accountId, convUid);
+ auto convInfo = LRCInstance::getConversationFromConvUid(convUid, accountId);
+ if (!convInfo.uid.isEmpty()) {
+ LRCInstance::getAccountInfo(accountId).callModel->accept(convInfo.callId);
+ auto &accInfo = LRCInstance::getAccountInfo(convInfo.accountId);
+ accInfo.callModel->setCurrentCall(convInfo.callId);
+ }
+}
+
+void
+CallAdapter::slotShowIncomingCallView(const QString &accountId, const conversation::Info &convInfo)
+{
+ auto callModel = LRCInstance::getCurrentCallModel();
+
+ if (!callModel->hasCall(convInfo.callId)) {
+ /*
+ * Connection to close potential incoming call page when it is not current account.
+ */
+ auto &accInfo = LRCInstance::accountModel().getAccountInfo(accountId);
+
+ QObject::disconnect(closeIncomingCallPageConnection_);
+
+ closeIncomingCallPageConnection_
+ = QObject::connect(accInfo.callModel.get(),
+ &lrc::api::NewCallModel::callStatusChanged,
+ [this, accountId, uid = convInfo.uid](const QString &callId) {
+ auto &accInfo = LRCInstance::accountModel().getAccountInfo(
+ accountId);
+ auto &callModel = accInfo.callModel;
+ auto call = callModel->getCall(callId);
+
+ switch (call.status) {
+ case lrc::api::call::Status::INVALID:
+ case lrc::api::call::Status::INACTIVE:
+ case lrc::api::call::Status::ENDED:
+ case lrc::api::call::Status::PEER_BUSY:
+ case lrc::api::call::Status::TIMEOUT:
+ case lrc::api::call::Status::TERMINATING: {
+ if (!uid.isEmpty())
+ emit closePotentialIncomingCallPageWindow(accountId, uid);
+ break;
+ }
+ default:
+ break;
+ }
+
+ emit updateConversationSmartList();
+ QObject::disconnect(closeIncomingCallPageConnection_);
+ });
+ /*
+ * Show incoming call page only.
+ */
+ emit showIncomingCallPage(accountId, convInfo.uid);
+ return;
+ }
+
+ auto call = callModel->getCall(convInfo.callId);
+ auto isCallSelected = LRCInstance::getCurrentConvUid() == convInfo.uid;
+
+ if (call.isOutgoing) {
+ if (isCallSelected) {
+ emit showOutgoingCallPage(accountId, convInfo.uid);
+ emit showCallStack(accountId, convInfo.uid);
+ }
+ } else {
+ auto selectedAccountId = LRCInstance::getCurrentAccountInfo().id;
+ auto accountProperties = LRCInstance::accountModel().getAccountConfig(selectedAccountId);
+ if (accountProperties.autoAnswer) {
+ /*
+ * TODO: Auto answer
+ */
+ } else {
+ emit showIncomingCallPage(accountId, convInfo.uid);
+ }
+ }
+
+ emit callStatusChanged(lrc::api::call::to_string(call.status), accountId, convInfo.uid);
+
+ emit updateConversationSmartList();
+}
+
+void
+CallAdapter::slotShowCallView(const QString &accountId, const lrc::api::conversation::Info &convInfo)
+{
+ updateCall(convInfo.uid, accountId);
+}
+
+void
+CallAdapter::updateCall(const QString &convUid, const QString &accountId, bool forceCallOnly)
+{
+ accountId_ = accountId.isEmpty() ? accountId_ : accountId;
+ convUid_ = convUid.isEmpty() ? convUid_ : convUid;
+
+ auto convInfo = LRCInstance::getConversationFromConvUid(convUid_, accountId_);
+ if (convInfo.uid.isEmpty()) {
+ return;
+ }
+
+ auto call = LRCInstance::getCallInfoForConversation(convInfo, forceCallOnly);
+ if (!call) {
+ return;
+ }
+
+ if (call->isAudioOnly) {
+ emit showAudioCallPage(accountId_, convUid_);
+ } else {
+ emit showVideoCallPage(accountId_, convUid_, call->id);
+ }
+
+ updateCallOverlay(convInfo);
+
+ /*
+ * Preview.
+ */
+ emit previewVisibilityNeedToChange(shouldShowPreview(forceCallOnly));
+
+ emit showCallStack(accountId_, convUid_);
+}
+
+bool
+CallAdapter::shouldShowPreview(bool force)
+{
+ bool shouldShowPreview{false};
+ auto convInfo = LRCInstance::getConversationFromConvUid(convUid_, accountId_);
+ if (convInfo.uid.isEmpty()) {
+ return shouldShowPreview;
+ }
+ auto call = LRCInstance::getCallInfoForConversation(convInfo, force);
+ if (call) {
+ shouldShowPreview = !call->isAudioOnly && !(call->status == lrc::api::call::Status::PAUSED)
+ && !call->videoMuted && call->type != lrc::api::call::Type::CONFERENCE;
+ }
+ return shouldShowPreview;
+}
+
+void
+CallAdapter::connectCallStatusChanged(const QString &accountId)
+{
+ auto &accInfo = LRCInstance::accountModel().getAccountInfo(accountId);
+
+ QObject::disconnect(callStatusChangedConnection_);
+
+ callStatusChangedConnection_ = QObject::connect(
+ accInfo.callModel.get(),
+ &lrc::api::NewCallModel::callStatusChanged,
+ [this, accountId](const QString &callId) {
+ auto &accInfo = LRCInstance::accountModel().getAccountInfo(accountId);
+ auto &callModel = accInfo.callModel;
+ auto call = callModel->getCall(callId);
+
+ /*
+ * Change status label text.
+ */
+ auto convInfo = LRCInstance::getConversationFromCallId(callId);
+ if (!convInfo.uid.isEmpty()) {
+ emit callStatusChanged(lrc::api::call::to_string(call.status),
+ accountId,
+ convInfo.uid);
+ }
+
+ switch (call.status) {
+ case lrc::api::call::Status::INVALID:
+ case lrc::api::call::Status::INACTIVE:
+ case lrc::api::call::Status::ENDED:
+ case lrc::api::call::Status::PEER_BUSY:
+ case lrc::api::call::Status::TIMEOUT:
+ case lrc::api::call::Status::TERMINATING: {
+ LRCInstance::renderer()->removeDistantRenderer(callId);
+ if (convInfo.uid.isEmpty()) {
+ break;
+ }
+ /*
+ * If it's a conference, change the smartlist index
+ * to the next remaining participant.
+ */
+ bool forceCallOnly{false};
+ if (!convInfo.confId.isEmpty()) {
+ auto callList = LRCInstance::getAPI().getConferenceSubcalls(convInfo.confId);
+ if (callList.empty()) {
+ auto lastConferencee = LRCInstance::instance().popLastConferencee(
+ convInfo.confId);
+ callList.append(lastConferencee);
+ forceCallOnly = true;
+ }
+ for (const auto &callId : callList) {
+ if (!callModel->hasCall(callId)) {
+ continue;
+ }
+ auto otherConv = LRCInstance::getConversationFromCallId(callId);
+ if (!otherConv.uid.isEmpty() && otherConv.uid != convInfo.uid) {
+ /*
+ * Reset the call view corresponding accountId, uid.
+ */
+ LRCInstance::setSelectedConvId(otherConv.uid);
+ showCallStack(otherConv.accountId, otherConv.uid, true);
+ updateCall(otherConv.uid, otherConv.accountId, forceCallOnly);
+ }
+ }
+ } else {
+ emit closeCallStack(accountId, convInfo.uid);
+ emit closePotentialIncomingCallPageWindow(accountId, convInfo.uid);
+ }
+
+ break;
+ }
+ case lrc::api::call::Status::CONNECTED:
+ case lrc::api::call::Status::IN_PROGRESS: {
+ auto convInfo = LRCInstance::getConversationFromCallId(callId, accountId);
+ if (!convInfo.uid.isEmpty() && convInfo.uid == LRCInstance::getCurrentConvUid()) {
+ accInfo.conversationModel->selectConversation(convInfo.uid);
+ }
+ LRCInstance::renderer()->addDistantRenderer(callId);
+ updateCall();
+ LRCInstance::getAccountInfo(accountId).callModel->setCurrentCall(callId);
+ break;
+ }
+ case lrc::api::call::Status::PAUSED:
+ updateCall();
+ default:
+ break;
+ }
+
+ emit updateConversationSmartList();
+ });
+}
+
+/*
+ * For Call Overlay
+ */
+void
+CallAdapter::updateCallOverlay(const lrc::api::conversation::Info &convInfo)
+{
+ setTime(accountId_, convUid_);
+ QObject::disconnect(oneSecondTimer_);
+ QObject::connect(oneSecondTimer_, &QTimer::timeout, [this] { setTime(accountId_, convUid_); });
+ oneSecondTimer_->start(20);
+
+ auto &accInfo = LRCInstance::accountModel().getAccountInfo(accountId_);
+
+ auto call = LRCInstance::getCallInfoForConversation(convInfo);
+ if (!call) {
+ return;
+ }
+
+ bool isPaused = call->status == lrc::api::call::Status::PAUSED;
+ bool isAudioOnly = call->isAudioOnly && !isPaused;
+ bool isAudioMuted = call->audioMuted && (call->status != lrc::api::call::Status::PAUSED);
+ bool isVideoMuted = call->videoMuted && !isPaused && !call->isAudioOnly;
+ bool isRecording = accInfo.callModel->isRecording(convInfo.callId);
+
+ emit updateOverlay(isPaused,
+ isAudioOnly,
+ isAudioMuted,
+ isVideoMuted,
+ isRecording,
+ accInfo.profileInfo.type == lrc::api::profile::Type::SIP,
+ !convInfo.confId.isEmpty(),
+ Utils::bestNameForConversation(convInfo,
+ *LRCInstance::getCurrentConversationModel()));
+}
+
+void
+CallAdapter::hangUpThisCall()
+{
+ auto convInfo = LRCInstance::getConversationFromConvUid(convUid_, accountId_);
+ if (!convInfo.uid.isEmpty()) {
+ auto callModel = LRCInstance::getAccountInfo(accountId_).callModel.get();
+ if (callModel->hasCall(convInfo.callId)) {
+ /*
+ * Store the last remaining participant of the conference,
+ * so we can switch the smartlist index after termination.
+ */
+ if (!convInfo.confId.isEmpty()) {
+ auto callList = LRCInstance::getAPI().getConferenceSubcalls(convInfo.confId);
+ if (callList.size() == 2) {
+ for (const auto &cId : callList) {
+ if (cId != convInfo.callId) {
+ LRCInstance::instance().pushLastConferencee(convInfo.confId, cId);
+ }
+ }
+ }
+ }
+ callModel->hangUp(convInfo.callId);
+ }
+ }
+}
+
+void
+CallAdapter::holdThisCallToggle()
+{
+ auto callId = LRCInstance::getCallIdForConversationUid(convUid_, accountId_);
+ if (callId.isEmpty() || !LRCInstance::getCurrentCallModel()->hasCall(callId)) {
+ return;
+ }
+ auto callModel = LRCInstance::getCurrentCallModel();
+ if (callModel->hasCall(callId)) {
+ callModel->togglePause(callId);
+ }
+ emit showOnHoldLabel(true);
+}
+
+void
+CallAdapter::muteThisCallToggle()
+{
+ auto callId = LRCInstance::getCallIdForConversationUid(convUid_, accountId_);
+ if (callId.isEmpty() || !LRCInstance::getCurrentCallModel()->hasCall(callId)) {
+ return;
+ }
+ auto callModel = LRCInstance::getCurrentCallModel();
+ if (callModel->hasCall(callId)) {
+ callModel->toggleMedia(callId, lrc::api::NewCallModel::Media::AUDIO);
+ }
+}
+
+void
+CallAdapter::recordThisCallToggle()
+{
+ auto callId = LRCInstance::getCallIdForConversationUid(convUid_, accountId_);
+ if (callId.isEmpty() || !LRCInstance::getCurrentCallModel()->hasCall(callId)) {
+ return;
+ }
+ auto callModel = LRCInstance::getCurrentCallModel();
+ if (callModel->hasCall(callId)) {
+ callModel->toggleAudioRecord(callId);
+ }
+}
+
+void
+CallAdapter::videoPauseThisCallToggle()
+{
+ auto callId = LRCInstance::getCallIdForConversationUid(convUid_, accountId_);
+ if (callId.isEmpty() || !LRCInstance::getCurrentCallModel()->hasCall(callId)) {
+ return;
+ }
+ auto callModel = LRCInstance::getCurrentCallModel();
+ if (callModel->hasCall(callId)) {
+ callModel->toggleMedia(callId, lrc::api::NewCallModel::Media::VIDEO);
+ }
+ emit previewVisibilityNeedToChange(shouldShowPreview(false));
+}
+
+void
+CallAdapter::setTime(const QString &accountId, const QString &convUid)
+{
+ auto callId = LRCInstance::getCallIdForConversationUid(convUid, accountId);
+ if (callId.isEmpty() || !LRCInstance::getCurrentCallModel()->hasCall(callId)) {
+ return;
+ }
+ auto callInfo = LRCInstance::getCurrentCallModel()->getCall(callId);
+ if (callInfo.status == lrc::api::call::Status::IN_PROGRESS
+ || callInfo.status == lrc::api::call::Status::PAUSED) {
+ auto timeString = LRCInstance::getCurrentCallModel()->getFormattedCallDuration(callId);
+ emit updateTimeText(timeString);
+ }
+}
\ No newline at end of file
diff --git a/src/calladapter.h b/src/calladapter.h
new file mode 100644
index 0000000..25768e1
--- /dev/null
+++ b/src/calladapter.h
@@ -0,0 +1,112 @@
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "lrcinstance.h"
+#include "qmladapterbase.h"
+
+#include <QObject>
+#include <QString>
+
+class CallAdapter : public QmlAdapterBase
+{
+ Q_OBJECT
+
+public:
+ explicit CallAdapter(QObject *parent = nullptr);
+ ~CallAdapter();
+
+ /*
+ * This is needed to be public since it has to be recognized by qml.
+ */
+ Q_INVOKABLE void initQmlObject() override;
+
+ Q_INVOKABLE void placeAudioOnlyCall();
+ Q_INVOKABLE void placeCall();
+ Q_INVOKABLE void hangUpACall(const QString &accountId, const QString &convUid);
+ Q_INVOKABLE void refuseACall(const QString &accountId, const QString &convUid);
+ Q_INVOKABLE void acceptACall(const QString &accountId, const QString &convUid);
+
+ Q_INVOKABLE void connectCallStatusChanged(const QString &accountId);
+
+ /*
+ * For Call Overlay
+ */
+ Q_INVOKABLE void hangUpThisCall();
+ Q_INVOKABLE void holdThisCallToggle();
+ Q_INVOKABLE void muteThisCallToggle();
+ Q_INVOKABLE void recordThisCallToggle();
+ Q_INVOKABLE void videoPauseThisCallToggle();
+
+signals:
+ void showOutgoingCallPage(const QString &accountId, const QString &convUid);
+ void showIncomingCallPage(const QString &accountId, const QString &convUid);
+ void showAudioCallPage(const QString &accountId, const QString &convUid);
+ void showVideoCallPage(const QString &accountId, const QString &convUid, const QString &callId);
+ void showCallStack(const QString &accountId, const QString &convUid, bool forceReset = false);
+ void closeCallStack(const QString &accountId, const QString &convUid);
+ void closePotentialIncomingCallPageWindow(const QString &accountId, const QString &convUid);
+ void callStatusChanged(const QString &status, const QString &accountId, const QString &convUid);
+ void updateConversationSmartList();
+
+ void incomingCallNeedToSetupMainView(const QString &accountId, const QString &convUid);
+ void previewVisibilityNeedToChange(bool visible);
+
+ /*
+ * For Call Overlay
+ */
+ void updateTimeText(const QString &time);
+ void showOnHoldLabel(bool isPaused);
+ void updateOverlay(bool isPaused,
+ bool isAudioOnly,
+ bool isAudioMuted,
+ bool isVideoMuted,
+ bool isRecording,
+ bool isSIP,
+ bool isConferenceCall,
+ const QString &bestName);
+
+public slots:
+ void slotShowIncomingCallView(const QString &accountId,
+ const lrc::api::conversation::Info &convInfo);
+ void slotShowCallView(const QString &accountId, const lrc::api::conversation::Info &convInfo);
+
+private:
+ void updateCall(const QString &convUid = {},
+ const QString &accountId = {},
+ bool forceCallOnly = false);
+ bool shouldShowPreview(bool force);
+
+ /*
+ * Current conf/call info.
+ */
+ QString accountId_;
+ QString convUid_;
+
+ QMetaObject::Connection callStatusChangedConnection_;
+ QMetaObject::Connection closeIncomingCallPageConnection_;
+
+ /*
+ * For Call Overlay
+ */
+ void setTime(const QString &accountId, const QString &convUid);
+ void updateCallOverlay(const lrc::api::conversation::Info &convInfo);
+
+ QTimer *oneSecondTimer_;
+};
diff --git a/src/clientwrapper.cpp b/src/clientwrapper.cpp
new file mode 100644
index 0000000..f099de6
--- /dev/null
+++ b/src/clientwrapper.cpp
@@ -0,0 +1,103 @@
+/*
+ * Copyright (C) 2019-2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "clientwrapper.h"
+
+ClientWrapper::ClientWrapper(QObject *parent)
+ : QObject(parent)
+{
+ connect(getAccountAdapter(), &AccountAdapter::accountSignalsReconnect, [this]() {
+ emit accountModelChanged();
+ emit avmodelChanged();
+ emit dataTransferModelChanged();
+ emit contactModelChanged();
+ emit deviceModelChanged();
+ });
+}
+
+NameDirectory *
+ClientWrapper::getNameDirectory()
+{
+ return &(NameDirectory::instance());
+}
+
+UtilsAdapter *
+ClientWrapper::getUtilsAdapter()
+{
+ return &(UtilsAdapter::instance());
+}
+
+SettingsAdaptor *
+ClientWrapper::getSettingsAdaptor()
+{
+ return &(SettingsAdaptor::instance());
+}
+
+LRCInstance *
+ClientWrapper::getLRCInstance()
+{
+ return &(LRCInstance::instance());
+}
+
+AccountAdapter *
+ClientWrapper::getAccountAdapter()
+{
+ return &(AccountAdapter::instance());
+}
+
+RenderManager *
+ClientWrapper::getRenderManager()
+{
+ return LRCInstance::renderer();
+}
+
+lrc::api::NewAccountModel *
+ClientWrapper::getAccountModel()
+{
+ return &(LRCInstance::accountModel());
+}
+
+lrc::api::AVModel *
+ClientWrapper::getAvModel()
+{
+ return &(LRCInstance::avModel());
+}
+
+lrc::api::PluginModel *
+ClientWrapper::getPluginModel()
+{
+ return &(LRCInstance::pluginModel());
+}
+
+lrc::api::DataTransferModel *
+ClientWrapper::getDataTransferModel()
+{
+ return &(LRCInstance::dataTransferModel());
+}
+
+lrc::api::ContactModel *
+ClientWrapper::getContactModel()
+{
+ return getSettingsAdaptor()->getCurrentAccountInfo().contactModel.get();
+}
+
+lrc::api::NewDeviceModel *
+ClientWrapper::getDeviceModel()
+{
+ return getSettingsAdaptor()->getCurrentAccountInfo().deviceModel.get();
+}
diff --git a/src/clientwrapper.h b/src/clientwrapper.h
new file mode 100644
index 0000000..d6e321a
--- /dev/null
+++ b/src/clientwrapper.h
@@ -0,0 +1,96 @@
+/*
+ * Copyright (C) 2019-2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "accountadapter.h"
+#include "accountlistmodel.h"
+#include "audiocodeclistmodel.h"
+#include "avadapter.h"
+#include "bannedlistmodel.h"
+#include "calladapter.h"
+#include "contactadapter.h"
+#include "conversationsadapter.h"
+#include "deviceitemlistmodel.h"
+#include "pluginitemlistmodel.h"
+#include "preferenceitemlistmodel.h"
+#include "distantrenderer.h"
+#include "globalinstances.h"
+#include "globalsystemtray.h"
+#include "messagesadapter.h"
+#include "namedirectory.h"
+#include "pixbufmanipulator.h"
+#include "previewrenderer.h"
+#include "qrimageprovider.h"
+#include "settingsadaptor.h"
+#include "utils.h"
+#include "version.h"
+#include "videocodeclistmodel.h"
+
+#include <QObject>
+
+class ClientWrapper : public QObject
+{
+ Q_OBJECT
+
+ Q_PROPERTY(UtilsAdapter *utilsAdaptor READ getUtilsAdapter NOTIFY utilsAdaptorChanged)
+ Q_PROPERTY(SettingsAdaptor *settingsAdaptor READ getSettingsAdaptor NOTIFY settingsAdaptorChanged)
+ Q_PROPERTY(NameDirectory *nameDirectory READ getNameDirectory NOTIFY nameDirectoryChanged)
+ Q_PROPERTY(LRCInstance *lrcInstance READ getLRCInstance NOTIFY lrcInstanceChanged)
+ Q_PROPERTY(AccountAdapter *accountAdaptor READ getAccountAdapter NOTIFY accountAdaptorChanged)
+ Q_PROPERTY(RenderManager *renderManager READ getRenderManager NOTIFY renderManagerChanged)
+ Q_PROPERTY(lrc::api::NewAccountModel *accountModel READ getAccountModel NOTIFY accountModelChanged)
+ Q_PROPERTY(lrc::api::AVModel *avmodel READ getAvModel NOTIFY avmodelChanged)
+ Q_PROPERTY(lrc::api::DataTransferModel *dataTransferModel READ getDataTransferModel NOTIFY dataTransferModelChanged)
+ Q_PROPERTY(lrc::api::ContactModel *contactModel READ getContactModel NOTIFY contactModelChanged)
+ Q_PROPERTY(lrc::api::NewDeviceModel *deviceModel READ getDeviceModel NOTIFY deviceModelChanged)
+ Q_PROPERTY(lrc::api::PluginModel *pluginModel READ getPluginModel)
+public:
+ explicit ClientWrapper(QObject *parent = nullptr);
+
+ NameDirectory *getNameDirectory();
+ UtilsAdapter *getUtilsAdapter();
+ SettingsAdaptor *getSettingsAdaptor();
+ LRCInstance *getLRCInstance();
+ AccountAdapter *getAccountAdapter();
+
+ RenderManager *getRenderManager();
+ lrc::api::NewAccountModel *getAccountModel();
+ lrc::api::AVModel *getAvModel();
+ lrc::api::DataTransferModel *getDataTransferModel();
+
+ lrc::api::ContactModel *getContactModel();
+ lrc::api::NewDeviceModel *getDeviceModel();
+ lrc::api::PluginModel *getPluginModel();
+
+signals:
+ void utilsAdaptorChanged();
+ void settingsAdaptorChanged();
+ void nameDirectoryChanged();
+ void lrcInstanceChanged();
+ void accountAdaptorChanged();
+ void renderManagerChanged();
+ void accountModelChanged();
+ void avmodelChanged();
+ void dataTransferModelChanged();
+ void contactModelChanged();
+ void deviceModelChanged();
+};
+#if QT_VERSION >= QT_VERSION_CHECK(5, 8, 0)
+Q_DECLARE_METATYPE(ClientWrapper *)
+#endif
diff --git a/src/commoncomponents/AccountMigrationDialog.qml b/src/commoncomponents/AccountMigrationDialog.qml
new file mode 100644
index 0000000..af28900
--- /dev/null
+++ b/src/commoncomponents/AccountMigrationDialog.qml
@@ -0,0 +1,969 @@
+/*
+ * Copyright (C) 2019-2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+import QtQuick 2.15
+import QtQuick.Window 2.15
+import QtQuick.Controls 2.15
+import QtQuick.Controls.Universal 2.12
+import QtQuick.Layouts 1.3
+import QtGraphicalEffects 1.14
+import net.jami.Models 1.0
+
+import "../constant"
+import "../wizardview/components"
+/*
+ * Account Migration Dialog for migrating account
+ */
+
+Window{
+ id: accountMigrationDialog
+
+ AccountsToMigrateListModel{
+ id: accountsToMigrateListModel
+ }
+
+ property string accountID: ""
+ property string password: ""
+
+ property bool nonOperationClosing: true
+ property bool successState : true
+ property string imgBase64: ""
+
+ signal accountMigrationFinished
+
+ function startAccountMigrationOfTopStack(){
+ passwordInputLineEdit.clear()
+ accountsToMigrateListModel.reset()
+
+ if(accountsToMigrateListModel.rowCount() <= 0){
+ closeWithoutOperation()
+
+ return false
+ }
+
+ var managerUsername = accountsToMigrateListModel.data(accountsToMigrateListModel.index(
+ 0, 0), AccountsToMigrateListModel.ManagerUsername)
+ var managerUri = accountsToMigrateListModel.data(accountsToMigrateListModel.index(
+ 0, 0), AccountsToMigrateListModel.ManagerUri)
+ var username = accountsToMigrateListModel.data(accountsToMigrateListModel.index(
+ 0, 0), AccountsToMigrateListModel.Username)
+ var alias = accountsToMigrateListModel.data(accountsToMigrateListModel.index(
+ 0, 0), AccountsToMigrateListModel.Alias)
+
+ if(managerUri.length !== 0){
+ managerUriInputLabel.text = managerUri
+ } else {
+ managerUriInputLabel.text = "N/A"
+ }
+
+ if(username.length !== 0){
+ usernameInputLabel.text = username
+ } else if(managerUsername.length !== 0){
+ usernameInputLabel.text = managerUsername
+ } else {
+ usernameInputLabel.text = "N/A"
+ }
+
+ if(alias.length !== 0){
+ aliasInputLabel.text = alias
+ } else {
+ aliasInputLabel.text = "N/A"
+ }
+
+ accountID = accountsToMigrateListModel.data(accountsToMigrateListModel.index(
+ 0, 0), AccountsToMigrateListModel.Account_ID)
+
+ imgBase64 = accountsToMigrateListModel.data(accountsToMigrateListModel.index(
+ 0, 0), AccountsToMigrateListModel.Picture)
+
+ connectionMigrationEnded.enabled = false
+ migrationPushButton.enabled = false
+ stackedWidget.currentIndex = 0
+
+ successState = true
+ nonOperationClosing = true
+
+ accountMigrationDialog.show()
+ return true
+ }
+
+ function checkIfAccountMigrationFinishedAndClose(){
+ accountsToMigrateListModel.reset()
+ if(accountsToMigrateListModel.rowCount() > 0){
+ startAccountMigrationOfTopStack()
+ } else {
+ accountMigrationFinished()
+ if(!nonOperationClosing){
+ nonOperationClosing = true
+ accountMigrationDialog.close()
+ }
+ }
+ }
+
+ function acceptMigration(){
+ nonOperationClosing = false
+ accountsToMigrateListModel.dataChanged(accountsToMigrateListModel.index(0, 0),
+ accountsToMigrateListModel.index(
+ accountsToMigrateListModel.rowCount() - 1, 0))
+ checkIfAccountMigrationFinishedAndClose()
+ }
+
+ function refuseMigrationAndDeleteAccount(){
+ ClientWrapper.accountModel.removeAccount(accountID)
+ acceptMigration()
+ }
+
+ function closeWithoutOperation(){
+ nonOperationClosing = false
+ accountMigrationDialog.close()
+ }
+
+ Timer{
+ id: timerFailureReturn
+
+ interval: 1000
+ repeat: false
+
+ onTriggered: {
+ stackedWidget.currentIndex = 0
+ successState = true
+ }
+ }
+
+ Connections{
+ id: connectionMigrationEnded
+ enabled: false
+ target: ClientWrapper.accountModel
+
+ function onMigrationEnded(accountIdIn, ok){
+ nonOperationClosing = true
+ connectionMigrationEnded.enabled = false
+ if(accountID !== accountIdIn){
+ return
+ }
+ if(!ok){
+ successState = false
+ timerFailureReturn.restart()
+ } else {
+ acceptMigration()
+ }
+ }
+ }
+
+ function slotMigrationButtonClicked(){
+ successState = true
+ stackedWidget.currentIndex = 1
+
+ connectionMigrationEnded.enabled = true
+ ClientWrapper.accountAdaptor.setArchivePasswordAsync(accountID,password)
+ }
+
+ function slotDeleteButtonClicked(){
+ nonOperationClosing = false
+ refuseMigrationAndDeleteAccount()
+ }
+
+ onClosing: {
+ connectionMigrationEnded.enabled = false
+ stackedWidget.currentIndex = 0
+ accountID = ""
+ password = ""
+ passwordInputLineEdit.clear()
+ managerUriInputLabel.text = ""
+ usernameInputLabel.text = ""
+ aliasInputLabel.text = ""
+
+ if(nonOperationClosing){
+ checkIfAccountMigrationFinishedAndClose()
+ }
+ nonOperationClosing = true
+ }
+
+ visible: false
+
+ width: 455
+ height: 594
+
+ Component.onCompleted: {
+ setX(Screen.width / 2 - width / 2)
+ setY(Screen.height / 2 - height / 2)
+ }
+
+ ColumnLayout {
+ anchors.fill: parent
+ Layout.alignment: Qt.AlignHCenter
+
+ StackLayout{
+ id: stackedWidget
+
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ Layout.alignment: Qt.AlignHCenter
+
+ currentIndex: 0
+
+ Rectangle{
+ id: accountMigrationPage
+
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ Layout.alignment: Qt.AlignHCenter
+
+ Layout.leftMargin: 11
+ Layout.rightMargin: 11
+ Layout.topMargin: 11
+ Layout.bottomMargin: 11
+
+ x: (parent.width - width) /2
+ y: (parent.height - height) /2
+
+ ScrollView {
+ id: accountMigrationPageScroll
+ anchors.fill: parent
+
+ clip: true
+
+ ScrollBar.horizontal.policy: ScrollBar.AsNeeded
+ ScrollBar.vertical.policy: ScrollBar.AsNeeded
+
+ ColumnLayout{
+ spacing: 7
+
+ width: stackedWidget.width
+ height: stackedWidget.height
+ Layout.alignment: Qt.AlignHCenter
+
+ RowLayout{
+ Layout.fillWidth: true
+
+ Item{
+ Layout.fillWidth: true
+
+ Layout.minimumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.maximumHeight: 20
+ }
+
+ Label{
+ id: accountMigrationLabel
+
+ Layout.alignment: Qt.AlignHCenter
+ Layout.preferredHeight: 27
+
+ font.pointSize: 13
+ font.kerning: true
+ wrapMode:Text.Wrap
+
+ text: qsTr("Account Migration Required")
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ Item{
+ Layout.fillWidth: true
+
+ Layout.minimumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.maximumHeight: 20
+ }
+ }
+
+ RowLayout{
+ spacing: 7
+
+ Item{
+ Layout.fillWidth: true
+
+ Layout.minimumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.maximumHeight: 20
+ }
+
+ Label{
+ id: migrationReasonLabel
+
+ Layout.alignment: Qt.AlignHCenter
+ Layout.preferredHeight: 21
+
+ font.pointSize: 10
+ font.kerning: true
+ wrapMode:Text.Wrap
+
+ text: qsTr("This account is malformed. Please enter your password")
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ Item{
+ Layout.fillWidth: true
+
+ Layout.minimumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.maximumHeight: 20
+ }
+ }
+
+ Item{
+ Layout.minimumWidth: 20
+ Layout.preferredWidth: 20
+ Layout.maximumWidth: 20
+
+ Layout.minimumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.maximumHeight: 20
+ }
+
+ ColumnLayout{
+ spacing: 7
+
+ Layout.fillWidth: true
+
+ RowLayout{
+ Layout.fillWidth: true
+ Layout.alignment: Qt.AlignCenter
+
+ Item{
+ Layout.fillWidth: true
+
+ Layout.minimumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.maximumHeight: 20
+ }
+
+ Label{
+ id: avatarLabel
+
+ Layout.maximumWidth: 200
+ Layout.preferredWidth: 200
+ Layout.minimumWidth: 200
+
+ Layout.maximumHeight: 200
+ Layout.preferredHeight: 200
+ Layout.minimumHeight: 200
+
+ Layout.alignment: Qt.AlignHCenter
+
+ background: Rectangle {
+ id: avatarLabelBackground
+
+ anchors.fill: parent
+ color: "transparent"
+
+ Image{
+ id: avatarImg
+
+ anchors.fill: parent
+ source: {
+ if(imgBase64.length === 0){
+ return ""
+ } else {
+ return "data:image/png;base64," + imgBase64
+ }
+ }
+ fillMode: Image.PreserveAspectCrop
+ layer.enabled: true
+ layer.effect: OpacityMask {
+ maskSource: Rectangle{
+ width: avatarImg.width
+ height: avatarImg.height
+ radius: {
+ var size = ((avatarImg.width <= avatarImg.height)? avatarImg.width:avatarImg.height)
+ return size /2
+ }
+ }
+ }
+ }
+ }
+ }
+
+ Item{
+ Layout.fillWidth: true
+
+ Layout.minimumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.maximumHeight: 20
+ }
+ }
+ }
+
+ Item{
+ Layout.minimumWidth: 20
+ Layout.preferredWidth: 20
+ Layout.maximumWidth: 20
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+ }
+
+ GridLayout{
+ rows: 4
+ columns: 5
+ rowSpacing: 7
+ columnSpacing: 7
+
+ Layout.fillWidth: true
+
+ // 1st Row
+ Item{
+ Layout.row: 0
+ Layout.column: 0
+
+ Layout.fillWidth: true
+ Layout.preferredWidth:40
+
+ Layout.minimumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.maximumHeight: 20
+ }
+
+ Label{
+ id: aliasLabel
+
+ Layout.row: 0
+ Layout.column: 1
+
+ Layout.preferredWidth: 92
+ Layout.preferredHeight: 30
+
+ text: qsTr("Alias")
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ Item{
+ Layout.row: 0
+ Layout.column: 2
+
+ Layout.fillWidth: true
+ Layout.preferredWidth:40
+ Layout.maximumWidth: 40
+
+ Layout.minimumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.maximumHeight: 20
+ }
+
+ Label{
+ id: aliasInputLabel
+
+ Layout.row: 0
+ Layout.column: 3
+
+ Layout.preferredWidth: 142
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ Item{
+ Layout.row: 0
+ Layout.column: 4
+
+ Layout.fillWidth: true
+ Layout.preferredWidth:40
+
+ Layout.minimumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.maximumHeight: 20
+ }
+
+ // 2nd Row
+ Item{
+ Layout.row: 1
+ Layout.column: 0
+
+ Layout.fillWidth: true
+ Layout.preferredWidth:40
+
+ Layout.minimumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.maximumHeight: 20
+ }
+
+ Label{
+ id: usernameLabel
+
+ Layout.row: 1
+ Layout.column: 1
+
+ Layout.preferredWidth: 92
+ Layout.preferredHeight: 30
+
+ text: qsTr("Username")
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ Item{
+ Layout.row: 1
+ Layout.column: 2
+
+ Layout.fillWidth: true
+ Layout.preferredWidth:40
+ Layout.maximumWidth: 40
+
+ Layout.minimumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.maximumHeight: 20
+ }
+
+ Label{
+ id: usernameInputLabel
+
+ Layout.row: 1
+ Layout.column: 3
+
+ Layout.preferredWidth: 142
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ Item{
+ Layout.row: 1
+ Layout.column: 4
+
+ Layout.fillWidth: true
+ Layout.preferredWidth:40
+
+ Layout.minimumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.maximumHeight: 20
+ }
+
+ // 3rd Row
+ Item{
+ Layout.row: 2
+ Layout.column: 0
+
+ Layout.fillWidth: true
+ Layout.preferredWidth:40
+
+ Layout.minimumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.maximumHeight: 20
+ }
+
+ Label{
+ id: managerUriLabel
+
+ Layout.row: 2
+ Layout.column: 1
+
+ Layout.preferredWidth: 92
+ Layout.preferredHeight: 30
+
+ text: qsTr("Manager Uri")
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ Item{
+ Layout.row: 2
+ Layout.column: 2
+
+ Layout.fillWidth: true
+ Layout.preferredWidth:40
+ Layout.maximumWidth: 40
+
+ Layout.minimumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.maximumHeight: 20
+ }
+
+ Label{
+ id: managerUriInputLabel
+
+ Layout.row: 2
+ Layout.column: 3
+
+ Layout.preferredWidth: 142
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ Item{
+ Layout.row: 2
+ Layout.column: 4
+
+ Layout.fillWidth: true
+ Layout.preferredWidth:40
+
+ Layout.minimumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.maximumHeight: 20
+ }
+
+ // 4th Row
+ Item{
+ Layout.row: 3
+ Layout.column: 0
+
+ Layout.fillWidth: true
+ Layout.preferredWidth:40
+
+ Layout.minimumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.maximumHeight: 20
+ }
+
+ Label{
+ id: passwordLabel
+
+ Layout.row: 3
+ Layout.column: 1
+
+ Layout.preferredWidth: 92
+ Layout.preferredHeight: 30
+
+ text: qsTr("Password")
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ Item{
+ Layout.row: 3
+ Layout.column: 2
+
+ Layout.fillWidth: true
+ Layout.preferredWidth:40
+ Layout.maximumWidth: 40
+
+ Layout.minimumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.maximumHeight: 20
+ }
+
+ InfoLineEdit{
+ id: passwordInputLineEdit
+
+ Layout.row: 3
+ Layout.column: 3
+
+ Layout.preferredWidth: 142
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+
+ echoMode: TextInput.Password
+
+ placeholderText: qsTr("Password")
+
+ onTextChanged: {
+ if(text.length === 0){
+ migrationPushButton.enabled = false
+ } else {
+ migrationPushButton.enabled = true
+ }
+ password = text
+ }
+
+ onEditingFinished: {
+ password = text
+ }
+ }
+
+ Item{
+ Layout.row: 3
+ Layout.column: 4
+
+ Layout.fillWidth: true
+ Layout.preferredWidth:40
+
+ Layout.minimumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.maximumHeight: 20
+ }
+ }
+
+ Item{
+ Layout.minimumWidth: 20
+ Layout.preferredWidth: 20
+ Layout.maximumWidth: 20
+
+ Layout.minimumHeight: 40
+ Layout.preferredHeight: 40
+ Layout.maximumHeight: 40
+ }
+
+ RowLayout{
+ spacing: 0
+ Layout.fillWidth: true
+
+ Item {
+ Layout.minimumWidth: 20
+ Layout.preferredWidth: 20
+ Layout.maximumWidth: 20
+
+ Layout.minimumHeight: 40
+ Layout.preferredHeight: 40
+ Layout.maximumHeight: 40
+ }
+
+ HoverableGradientButton {
+ id: migrationPushButton
+
+ Layout.alignment: Qt.AlignLeft
+ Layout.maximumWidth: 100
+ Layout.preferredWidth: 100
+
+ Layout.maximumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.minimumHeight: 30
+
+ text: qsTr("Migrate")
+ font.pointSize: 10
+ font.kerning: true
+
+ radius: height / 2
+ backgroundColor: JamiTheme.releaseColor
+
+ onClicked: {
+ slotMigrationButtonClicked()
+ }
+ }
+
+ Item {
+ Layout.fillWidth: true
+
+ Layout.minimumHeight: 40
+ Layout.preferredHeight: 40
+ Layout.maximumHeight: 40
+ }
+
+ HoverableButtonTextItem {
+ id: deleteAccountPushButton
+
+ backgroundColor: "red"
+ onEnterColor: Qt.rgba(150 / 256, 0, 0, 0.7)
+ onDisabledBackgroundColor: Qt.rgba(
+ 255 / 256,
+ 0, 0, 0.8)
+ onPressColor: backgroundColor
+ textColor: "white"
+
+ Layout.alignment: Qt.AlignRight
+ Layout.maximumWidth: 100
+ Layout.preferredWidth: 100
+
+ Layout.maximumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.minimumHeight: 30
+
+ text: qsTr("Delete")
+ font.pointSize: 10
+ font.kerning: true
+
+ radius: height / 2
+
+ onClicked: {
+ slotDeleteButtonClicked()
+ }
+ }
+
+ Item {
+ Layout.minimumWidth: 20
+ Layout.preferredWidth: 20
+ Layout.maximumWidth: 20
+
+ Layout.minimumHeight: 40
+ Layout.preferredHeight: 40
+ Layout.maximumHeight: 40
+ }
+ }
+ }
+
+ }
+ }
+
+ Rectangle{
+ id: migrationWaitingPage
+
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ Layout.alignment: Qt.AlignHCenter
+
+ Layout.leftMargin: 11
+ Layout.rightMargin: 11
+ Layout.topMargin: 11
+ Layout.bottomMargin: 11
+
+ x: (parent.width - width) /2
+ y: (parent.height - height) /2
+
+ ScrollView {
+ id: migrationWaitingPageScroll
+ anchors.fill: parent
+
+ clip: true
+
+ ScrollBar.horizontal.policy: ScrollBar.AsNeeded
+ ScrollBar.vertical.policy: ScrollBar.AsNeeded
+
+ ColumnLayout{
+ spacing: 7
+
+ width: stackedWidget.width
+ height: stackedWidget.height
+ Layout.alignment: Qt.AlignHCenter
+
+ Item{
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+
+ Layout.preferredHeight: 211
+ }
+
+ RowLayout{
+ spacing: 7
+
+ Layout.alignment: Qt.AlignHCenter
+ Layout.fillWidth: true
+
+ Item{
+ Layout.alignment: Qt.AlignLeft
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+
+ Layout.minimumWidth: 20
+ }
+
+ Label{
+ id: spinnerLabel
+
+ Layout.alignment: Qt.AlignHCenter
+
+ Layout.maximumWidth: 200
+ Layout.preferredWidth: 200
+ Layout.minimumWidth: 200
+
+ Layout.maximumHeight: 200
+ Layout.preferredHeight: 200
+ Layout.minimumHeight: 200
+
+ property string spinnerDisplyState: successState ? "spinnerLabel_Regular" : "spinnerLabel_Failure"
+ onSpinnerDisplyStateChanged: {
+ switch (spinnerDisplyState) {
+ case "spinnerLabel_Regular":
+ background = Qt.createQmlObject("import QtQuick 2.14;
+ AnimatedImage {
+ source: \"qrc:/images/jami_eclipse_spinner.gif\"
+
+ playing: true
+ paused: false
+ fillMode: Image.PreserveAspectFit
+ mipmap: true
+ }", spinnerLabel)
+ break
+ case "spinnerLabel_Failure":
+ background = Qt.createQmlObject("import QtQuick 2.14;
+ import \"qrc:/src/constant/\";
+ Image {
+ anchors.fill: parent;
+ source:\"image://tintedPixmap/\" + (\"qrc:/images/icons/baseline-error_outline-24px.svg\").replace(\"qrc:/images/icons/\", \"\") + \"+\" + JamiTheme.urgentOrange_;
+ mipmap: true;}", spinnerLabel)
+ break
+ }
+ }
+ }
+
+ Item {
+ Layout.alignment: Qt.AlignRight
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+
+ Layout.minimumWidth: 20
+ }
+ }
+
+ Item{
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+
+ Layout.preferredHeight: 211
+ }
+
+ Label{
+ id: progressLabel
+
+ Layout.alignment: Qt.AlignHCenter
+ Layout.fillWidth: true
+
+ color: successState? "black" : "red"
+ text: successState? qsTr("Migrating your Jami account...") : qsTr("Migration Failed")
+ font.pointSize: 11
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ wrapMode: Label.WordWrap
+ }
+
+ Item{
+ Layout.fillWidth: true
+
+ Layout.minimumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.maximumHeight: 20
+ }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/src/commoncomponents/CustomBorder.qml b/src/commoncomponents/CustomBorder.qml
new file mode 100644
index 0000000..1a2843e
--- /dev/null
+++ b/src/commoncomponents/CustomBorder.qml
@@ -0,0 +1,54 @@
+
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+import QtQuick 2.14
+
+
+/*
+ * Inspired by
+ * https://stackoverflow.com/questions/16534489/qml-control-border-width-and-color-on-any-one-side-of-rectangle-element
+ */
+Rectangle {
+
+ property bool commonBorder: true
+
+ property int lBorderwidth: 1
+ property int rBorderwidth: 1
+ property int tBorderwidth: 1
+ property int bBorderwidth: 1
+
+ property int commonBorderWidth: 1
+
+ z: -1
+
+ property string borderColor: "white"
+
+ color: borderColor
+
+ anchors {
+ left: parent.left
+ right: parent.right
+ top: parent.top
+ bottom: parent.bottom
+
+ topMargin: commonBorder ? -commonBorderWidth : -tBorderwidth
+ bottomMargin: commonBorder ? -commonBorderWidth : -bBorderwidth
+ leftMargin: commonBorder ? -commonBorderWidth : -lBorderwidth
+ rightMargin: commonBorder ? -commonBorderWidth : -rBorderwidth
+ }
+}
diff --git a/src/commoncomponents/DeleteAccountDialog.qml b/src/commoncomponents/DeleteAccountDialog.qml
new file mode 100644
index 0000000..1db2813
--- /dev/null
+++ b/src/commoncomponents/DeleteAccountDialog.qml
@@ -0,0 +1,254 @@
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+import QtQuick 2.15
+import QtQuick.Controls 2.14
+import QtQuick.Layouts 1.14
+import QtQuick.Controls.Styles 1.4
+import net.jami.Models 1.0
+
+Dialog {
+ id: deleteAccountDialog
+
+ property int profileType: ClientWrapper.settingsAdaptor.getCurrentAccount_Profile_Info_Type()
+
+ property bool isSIP: {
+ switch (profileType) {
+ case Profile.Type.SIP:
+ return true;
+ default:
+ return false;
+ }
+ }
+
+ onOpened: {
+ profileType = ClientWrapper.settingsAdaptor.getCurrentAccount_Profile_Info_Type()
+ labelBestId.text = ClientWrapper.settingsAdaptor.getAccountBestName()
+ labelAccountHash.text = ClientWrapper.settingsAdaptor.getCurrentAccount_Profile_Info_Uri()
+ }
+
+ onVisibleChanged: {
+ if(!visible){
+ reject()
+ }
+ }
+
+ visible: false
+ title: qsTr("Account deletion")
+
+ contentItem: Rectangle{
+ implicitWidth: 400
+ implicitHeight: 300
+
+ ColumnLayout{
+ anchors.fill: parent
+ spacing: 7
+
+ Layout.alignment: Qt.AlignCenter
+
+ Label{
+ id: labelDeletion
+
+ Layout.topMargin: 11
+ Layout.leftMargin: 11
+ Layout.rightMargin: 11
+
+ Layout.alignment: Qt.AlignHCenter
+ font.pointSize: 8
+ font.kerning: true
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ wrapMode: Text.Wrap
+ text:qsTr("Do you really want to delete the following account?")
+ }
+
+ Label{
+ id: labelBestId
+
+ Layout.leftMargin: 11
+ Layout.rightMargin: 11
+
+ Layout.alignment: Qt.AlignHCenter
+ font.pointSize: 8
+ font.kerning: true
+ font.bold: true
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ wrapMode: Text.Wrap
+
+ text: ClientWrapper.settingsAdaptor.getAccountBestName()
+ }
+
+ Label{
+ id: labelAccountHash
+
+ Layout.leftMargin: 11
+ Layout.rightMargin: 11
+
+ Layout.alignment: Qt.AlignHCenter
+ font.pointSize: 8
+ font.kerning: true
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ wrapMode: Text.Wrap
+ text: ClientWrapper.settingsAdaptor.getCurrentAccount_Profile_Info_Uri()
+ }
+
+ Item{
+ Layout.fillWidth: true
+
+ Layout.leftMargin: 11
+ Layout.rightMargin: 11
+
+ Layout.maximumHeight: 5
+ Layout.preferredHeight: 5
+ Layout.minimumHeight: 5
+ }
+
+ Label{
+ id: labelWarning
+
+ Layout.leftMargin: 11
+ Layout.rightMargin: 11
+
+ Layout.preferredWidth: 300
+
+ visible: ! isSIP
+
+ Layout.alignment: Qt.AlignHCenter
+ wrapMode: Text.Wrap
+ text: qsTr("If this account hasn't been exported, or added to another device, it will be irrevocably lost.")
+ font.pointSize: 8
+ font.kerning: true
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ color: "red"
+ }
+
+ Item{
+ Layout.fillWidth: true
+
+ Layout.leftMargin: 11
+ Layout.rightMargin: 11
+
+ Layout.maximumHeight: 10
+ Layout.preferredHeight: 10
+ Layout.minimumHeight: 10
+ }
+
+ RowLayout{
+ spacing: 7
+
+ Layout.leftMargin: 11
+ Layout.rightMargin: 11
+
+ Item{
+ Layout.fillWidth: true
+ Layout.minimumWidth: 40
+
+ Layout.maximumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.minimumHeight: 20
+ }
+
+ HoverableRadiusButton{
+ id: btnDeleteAccept
+
+ Layout.maximumWidth: 130
+ Layout.preferredWidth: 130
+ Layout.minimumWidth: 130
+
+ Layout.maximumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.minimumHeight: 30
+
+ radius: height /2
+
+ text: qsTr("Delete")
+ font.pointSize: 10
+ font.kerning: true
+
+ onClicked: {
+ ClientWrapper.accountAdaptor.deleteCurrentAccount()
+ accept()
+ }
+ }
+
+ Item{
+ Layout.fillWidth: true
+ Layout.minimumWidth: 40
+
+ Layout.maximumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.minimumHeight: 20
+ }
+
+ HoverableButtonTextItem{
+ id: btnDeleteCancel
+
+ Layout.maximumWidth: 130
+ Layout.preferredWidth: 130
+ Layout.minimumWidth: 130
+
+ Layout.maximumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.minimumHeight: 30
+
+ backgroundColor: "red"
+ onEnterColor: Qt.rgba(150 / 256, 0, 0, 0.7)
+ onDisabledBackgroundColor: Qt.rgba(
+ 255 / 256,
+ 0, 0, 0.8)
+ onPressColor: backgroundColor
+ textColor: "white"
+
+ radius: height /2
+
+ text: qsTr("Cancel")
+ font.pointSize: 10
+ font.kerning: true
+
+ onClicked: {
+ reject()
+ }
+ }
+
+ Item{
+ Layout.fillWidth: true
+ Layout.minimumWidth: 40
+
+ Layout.maximumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.minimumHeight: 20
+ }
+ }
+
+ Item{
+ Layout.fillWidth: true
+
+ Layout.maximumHeight: 5
+ Layout.preferredHeight: 5
+ Layout.minimumHeight: 5
+
+ Layout.leftMargin: 11
+ Layout.rightMargin: 11
+ Layout.bottomMargin: 11
+ }
+ }
+ }
+}
diff --git a/src/commoncomponents/GeneralMenuItem.qml b/src/commoncomponents/GeneralMenuItem.qml
new file mode 100644
index 0000000..677c4b0
--- /dev/null
+++ b/src/commoncomponents/GeneralMenuItem.qml
@@ -0,0 +1,140 @@
+
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+import QtQuick 2.14
+import QtQuick.Controls 2.14
+import QtQuick.Layouts 1.14
+import net.jami.Models 1.0
+
+
+/*
+ * General menu item.
+ * Can control top, bottom, left, right border width.
+ * Use onClicked slot to simulate item click event.
+ * Can have image icon at the left of the text.
+ */
+MenuItem {
+ id: menuItem
+
+ property string itemName: ""
+ property string iconSource: ""
+ property int preferredWidth: 150
+ property int preferredHeight: 30
+ property int topBorderWidth: 0
+ property int bottomBorderWidth: 0
+ property int leftBorderWidth: 0
+ property int rightBorderWidth: 0
+
+ signal clicked
+
+ contentItem: Rectangle {
+ id: menuItemContentRect
+
+ anchors.fill: parent
+
+ Image {
+ id: contextMenuItemImage
+
+ anchors.left: menuItemContentRect.left
+ anchors.leftMargin: 5
+ anchors.verticalCenter: menuItemContentRect.verticalCenter
+
+ width: 25
+ height: 25
+
+ visible: false
+ fillMode: Image.PreserveAspectFit
+ mipmap: true
+ }
+
+ Text {
+ id: contextMenuItemText
+
+ anchors.left: contextMenuItemImage.right
+ anchors.leftMargin: 5
+ anchors.verticalCenter: menuItemContentRect.verticalCenter
+ width: textMetrics.boundingRect.width
+ height: 30
+
+ TextMetrics {
+ id: textMetrics
+ font: contextMenuItemText.font
+ elide: Text.ElideMiddle
+ elideWidth: contextMenuItemImage.visible ? (preferredWidth - contextMenuItemImage.width - 5) : preferredWidth
+ text: itemName
+ }
+
+ text: textMetrics.elidedText
+ font.pointSize: JamiTheme.textFontSize - 3
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ color: "transparent"
+ }
+
+ onIconSourceChanged: {
+ if (iconSource !== "") {
+ contextMenuItemImage.source = iconSource
+ contextMenuItemImage.visible = true
+ }
+ }
+
+ background: Rectangle {
+ id: contextMenuBackgroundRect
+
+ anchors.fill: parent
+ anchors.topMargin: topBorderWidth
+ anchors.bottomMargin: bottomBorderWidth
+ anchors.leftMargin: leftBorderWidth
+ anchors.rightMargin: rightBorderWidth
+
+ implicitWidth: preferredWidth
+ implicitHeight: preferredHeight
+
+ border.width: 0
+ color: menuItem.down ? JamiTheme.releaseColor : "white"
+
+ MouseArea {
+ anchors.fill: parent
+ hoverEnabled: true
+ onPressed: {
+ contextMenuBackgroundRect.color = JamiTheme.pressColor
+ }
+ onReleased: {
+ contextMenuBackgroundRect.color = JamiTheme.releaseColor
+ menuItem.clicked()
+ }
+ onEntered: {
+ contextMenuBackgroundRect.color = JamiTheme.hoverColor
+ }
+ onExited: {
+ contextMenuBackgroundRect.color = "white"
+ }
+ }
+
+ CustomBorder {
+ commonBorder: false
+ lBorderwidth: leftBorderWidth
+ rBorderwidth: rightBorderWidth
+ tBorderwidth: topBorderWidth
+ bBorderwidth: bottomBorderWidth
+ borderColor: JamiTheme.tabbarBorderColor
+ }
+ }
+}
diff --git a/src/commoncomponents/GeneralMenuSeparator.qml b/src/commoncomponents/GeneralMenuSeparator.qml
new file mode 100644
index 0000000..1a2e93d
--- /dev/null
+++ b/src/commoncomponents/GeneralMenuSeparator.qml
@@ -0,0 +1,38 @@
+
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+import QtQuick 2.14
+import QtQuick.Controls 2.14
+import net.jami.Models 1.0
+
+MenuSeparator {
+ id: menuSeparator
+
+ property int preferredWidth: 10
+ property int preferredHeight: 1
+ property string separatorColor: JamiTheme.tabbarBorderColor
+
+ padding: 0
+ topPadding: 1
+ bottomPadding: 1
+ contentItem: Rectangle {
+ implicitWidth: preferredWidth
+ implicitHeight: preferredHeight
+ color: separatorColor
+ }
+}
diff --git a/src/commoncomponents/HoverableButton.qml b/src/commoncomponents/HoverableButton.qml
new file mode 100644
index 0000000..a7a4aaf
--- /dev/null
+++ b/src/commoncomponents/HoverableButton.qml
@@ -0,0 +1,89 @@
+
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+import QtQuick 2.14
+import QtQuick.Controls 2.14
+import net.jami.Models 1.0
+
+
+/*
+ * HoverableButton contains the following configurable properties:
+ * 1. Color changes on different button state
+ * 2. Radius control (rounded)
+ * 3. Text content or image content
+ * 4. Can use OnClicked slot to implement some click logic
+ */
+Button {
+ id: hoverableButton
+
+ property int fontPointSize: 9
+ property int buttonImageHeight: hoverableButtonBackground.height - 10
+ property int buttonImageWidth: hoverableButtonBackground.width - 10
+
+ property string backgroundColor: JamiTheme.releaseColor
+ property string onPressColor: JamiTheme.pressColor
+ property string onReleaseColor: JamiTheme.releaseColor
+ property string onEnterColor: JamiTheme.hoverColor
+ property string onExitColor: JamiTheme.releaseColor
+
+ property alias radius: hoverableButtonBackground.radius
+ property alias source: hoverableButtonImage.source
+
+ font.pointSize: fontPointSize
+
+ hoverEnabled: true
+
+ background: Rectangle {
+ id: hoverableButtonBackground
+
+ color: backgroundColor
+
+ Image {
+ id: hoverableButtonImage
+
+ anchors.centerIn: hoverableButtonBackground
+
+ height: buttonImageHeight
+ width: buttonImageWidth
+
+ fillMode: Image.PreserveAspectFit
+ mipmap: true
+ asynchronous: true
+ }
+
+ MouseArea {
+ anchors.fill: parent
+
+ hoverEnabled: true
+
+ onPressed: {
+ hoverableButtonBackground.color = onPressColor
+ }
+ onReleased: {
+ hoverableButtonBackground.color = onReleaseColor
+ hoverableButton.clicked()
+ }
+ onEntered: {
+ hoverableButtonBackground.color = onEnterColor
+ }
+ onExited: {
+ hoverableButtonBackground.color = onExitColor
+ }
+ }
+ }
+}
diff --git a/src/commoncomponents/HoverableButtonTextItem.qml b/src/commoncomponents/HoverableButtonTextItem.qml
new file mode 100644
index 0000000..fc1d6bb
--- /dev/null
+++ b/src/commoncomponents/HoverableButtonTextItem.qml
@@ -0,0 +1,103 @@
+
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+import QtQuick 2.14
+import QtQuick.Controls 2.14
+import net.jami.Models 1.0
+
+
+/*
+ * HoverableButton containes functionalites:
+ * 1. Color changes on different button state
+ * 2. Radius control (rounded)
+ * 3. Text content or image content
+ * 4. Can use OnClicked slot to implement some click logic
+ */
+Button {
+ id: hoverableButton
+
+ property int fontPointSize: 9
+ property int buttonImageHeight: hoverableButtonBackground.height - 10
+ property int buttonImageWidth: hoverableButtonBackground.width - 10
+
+ property string backgroundColor: JamiTheme.releaseColor
+ property string onPressColor: JamiTheme.pressColor
+ property string onReleaseColor: backgroundColor
+ property string onEnterColor: JamiTheme.hoverColor
+ property string onExitColor: backgroundColor
+ property string onDisabledBackgroundColor: backgroundColor
+ property string textColor: "black"
+
+ property alias radius: hoverableButtonBackground.radius
+ property alias source: hoverableButtonImage.source
+
+ font.pointSize: fontPointSize
+ font.kerning: true
+
+ hoverEnabled: true
+
+ contentItem: Text {
+ text: hoverableButton.text
+ font: hoverableButton.font
+ opacity: enabled ? 1.0 : 0.3
+ color: textColor
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ elide: Text.ElideRight
+ }
+
+ background: Rectangle {
+ id: hoverableButtonBackground
+
+ color: hoverableButton.enabled ? backgroundColor:onDisabledBackgroundColor
+
+ Image {
+ id: hoverableButtonImage
+
+ anchors.centerIn: hoverableButtonBackground
+
+ height: buttonImageHeight
+ width: buttonImageWidth
+
+ fillMode: Image.PreserveAspectFit
+ mipmap: true
+ asynchronous: true
+ }
+
+ MouseArea {
+ enabled: hoverableButton.enabled
+ anchors.fill: parent
+
+ hoverEnabled: true
+
+ onPressed: {
+ hoverableButtonBackground.color = onPressColor
+ }
+ onReleased: {
+ hoverableButtonBackground.color = onReleaseColor
+ hoverableButton.clicked()
+ }
+ onEntered: {
+ hoverableButtonBackground.color = onEnterColor
+ }
+ onExited: {
+ hoverableButtonBackground.color = onExitColor
+ }
+ }
+ }
+}
diff --git a/src/commoncomponents/HoverableRadiusButton.qml b/src/commoncomponents/HoverableRadiusButton.qml
new file mode 100644
index 0000000..ef98e07
--- /dev/null
+++ b/src/commoncomponents/HoverableRadiusButton.qml
@@ -0,0 +1,93 @@
+
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+import QtQuick 2.15
+import QtQuick.Controls 2.14
+import net.jami.Models 1.0
+
+
+/*
+ * HoverableButton contains the following configurable properties:
+ * 1. Color changes on different button state
+ * 2. Radius control (rounded)
+ * 3. Text content or image content
+ * 4. Can use OnClicked slot to implement some click logic
+ */
+Button {
+ id: hoverableButton
+ property int fontPointSize: 9
+ property int buttonImageHeight: hoverableButtonBackground.height - 10
+ property int buttonImageWidth: hoverableButtonBackground.width - 10
+ property string backgroundColor: JamiTheme.releaseColor
+ property string onPressColor: JamiTheme.pressColor
+ property string onReleaseColor: backgroundColor
+ property string onEnterColor: JamiTheme.hoverColor
+ property string onExitColor: backgroundColor
+ property alias radius: hoverableButtonBackground.radius
+ property alias source: hoverableButtonImage.source
+ property bool isHovering: false
+ radius: height / 2
+ function enterBtn(){
+ btnMouseArea.entered()
+ }
+ function exitBtn(){
+ btnMouseArea.exited()
+ }
+ function pressBtn(){
+ btnMouseArea.pressed()
+ }
+ function releaseBtn(){
+ btnMouseArea.released()
+ }
+ font.pointSize: fontPointSize
+ font.kerning: true
+ hoverEnabled: true
+ background: Rectangle {
+ id: hoverableButtonBackground
+ color: backgroundColor
+ Image {
+ id: hoverableButtonImage
+ anchors.centerIn: hoverableButtonBackground
+ height: buttonImageHeight
+ width: buttonImageWidth
+ fillMode: Image.PreserveAspectFit
+ mipmap: true
+ asynchronous: true
+ }
+ MouseArea {
+ id: btnMouseArea
+ anchors.fill: parent
+ hoverEnabled: true
+ onPressed: {
+ hoverableButtonBackground.color = onPressColor
+ }
+ onReleased: {
+ hoverableButtonBackground.color = onReleaseColor
+ hoverableButton.clicked()
+ }
+ onEntered: {
+ hoverableButtonBackground.color = onEnterColor
+ isHovering = true
+ }
+ onExited: {
+ hoverableButtonBackground.color = onExitColor
+ isHovering = false
+ }
+ }
+ }
+}
diff --git a/src/commoncomponents/InfoLineEdit.qml b/src/commoncomponents/InfoLineEdit.qml
new file mode 100644
index 0000000..cc50cdc
--- /dev/null
+++ b/src/commoncomponents/InfoLineEdit.qml
@@ -0,0 +1,58 @@
+import QtQuick 2.14
+import QtQuick.Controls 2.14
+import QtQuick.Layouts 1.14
+import QtQuick.Controls.Styles 1.4
+
+import "../constant"
+
+TextField{
+ enum BorderColorMode{
+ NORMAL,
+ RIGHT,
+ ERROR
+ }
+
+ property int fieldLayoutWidth: 256
+ property int fieldLayoutHeight: 30
+ property bool layoutFillwidth: false
+
+ property int borderColorMode: InfoLineEdit.NORMAL
+ property var backgroundColor: JamiTheme.rgb256(240,240,240)
+ property var borderColor: {
+ switch(borderColorMode){
+ case InfoLineEdit.NORMAL:
+ return "transparent"
+ case InfoLineEdit.RIGHT:
+ return "green"
+ case InfoLineEdit.ERROR:
+ return "red"
+ }
+ }
+
+ Layout.minimumHeight: fieldLayoutHeight
+ Layout.preferredHeight: fieldLayoutHeight
+ Layout.maximumHeight: fieldLayoutHeight
+
+ Layout.minimumWidth: fieldLayoutWidth
+ Layout.maximumWidth: fieldLayoutWidth
+ Layout.preferredWidth: fieldLayoutWidth
+
+ Layout.fillWidth: layoutFillwidth
+ Layout.alignment: Qt.AlignHCenter
+
+ wrapMode: Text.Wrap
+ readOnly: false
+ selectByMouse: true
+ font.pointSize: 10
+ font.kerning: true
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+
+ background: Rectangle {
+ anchors.fill: parent
+ radius: readOnly? 0 : height / 2
+ border.color: readOnly? "transparent" : borderColor
+ border.width:readOnly? 0 : 2
+ color: readOnly? "transparent" : backgroundColor
+ }
+}
diff --git a/src/commoncomponents/JamiFileDialog.qml b/src/commoncomponents/JamiFileDialog.qml
new file mode 100644
index 0000000..2be3142
--- /dev/null
+++ b/src/commoncomponents/JamiFileDialog.qml
@@ -0,0 +1,51 @@
+
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+import QtQuick 2.14
+import Qt.labs.platform 1.1
+
+FileDialog {
+ id: fileDialog
+
+
+ /*
+ * Use enum to avoid importing Qt.labs.platform when using JamiFileDialog.
+ */
+ property int mode: JamiFileDialog.Mode.OpenFile
+
+ enum Mode {
+ OpenFile = 0,
+ OpenFiles,
+ SaveFile
+ }
+
+ title: "Please choose a file"
+
+ onModeChanged: {
+ switch(mode) {
+ case JamiFileDialog.Mode.OpenFile:
+ fileDialog.fileMode = FileDialog.OpenFile
+ break
+ case JamiFileDialog.Mode.OpenFiles:
+ fileDialog.fileMode = FileDialog.OpenFiles
+ break
+ default:
+ fileDialog.fileMode = FileDialog.SaveFile
+ }
+ }
+}
diff --git a/src/commoncomponents/ListViewJami.qml b/src/commoncomponents/ListViewJami.qml
new file mode 100644
index 0000000..c20cc8c
--- /dev/null
+++ b/src/commoncomponents/ListViewJami.qml
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2019-2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+import QtQuick 2.14
+import QtQuick.Window 2.14
+import QtQuick.Controls 2.14
+import QtQuick.Controls.Universal 2.12
+import QtQuick.Layouts 1.3
+import QtGraphicalEffects 1.14
+import QtQuick.Controls.Styles 1.4
+import net.jami.Models 1.0
+
+Rectangle{
+ id: listViewBackground
+
+ property alias model: listView.model
+ property alias delegate: listView.delegate
+ property alias currentIndex: listView.currentIndex
+
+ border.width: 1
+ border.color: JamiTheme.hoverColor
+
+ color: JamiTheme.releaseColor
+
+ ListView{
+ id: listView
+
+ anchors.fill: parent
+
+ visible: listViewBackground.visible
+ layer.mipmap: false
+ clip: true
+
+ ScrollIndicator.vertical: ScrollIndicator {}
+ }
+}
diff --git a/src/commoncomponents/LookupStatusLabel.qml b/src/commoncomponents/LookupStatusLabel.qml
new file mode 100644
index 0000000..1a9cf52
--- /dev/null
+++ b/src/commoncomponents/LookupStatusLabel.qml
@@ -0,0 +1,101 @@
+/*
+ * Copyright (C) 2019-2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+import QtQuick 2.14
+import QtQuick.Layouts 1.3
+import QtQuick.Controls 2.14
+
+Label {
+ id: lookupStatusLabel
+
+ property int labelWidth : 30
+ property int labelHeight : 30
+
+ Layout.maximumWidth: labelWidth
+ Layout.preferredWidth: labelWidth
+ Layout.minimumWidth: labelWidth
+
+ Layout.maximumHeight: labelHeight
+ Layout.preferredHeight: labelHeight
+ Layout.minimumHeight: labelHeight
+
+ property string lookupStatusState: "Blank"
+
+ // whenever look up status state change, the backgroud weill be set to a cooresponding choice
+ onLookupStatusStateChanged: {
+ switch (lookupStatusState) {
+ case "Blank":
+ background = Qt.createQmlObject(
+ "import QtQuick 2.14; Rectangle { anchors.fill: parent; color: \"transparent\"; }",
+ lookupStatusLabel)
+ break
+ case "Invalid":
+ background = Qt.createQmlObject("import QtQuick 2.14;
+import \"qrc:/src/constant/\";
+Rectangle {
+anchors.fill: parent;
+Image {
+anchors.fill: parent;
+source: \"image://tintedPixmap/\" + (\"qrc:/images/icons/baseline-error_outline-24px.svg\").replace(\"qrc:/images/icons/\",\"\") + \"+\" + JamiTheme.urgentOrange_;
+mipmap: true;
+}
+}", lookupStatusLabel)
+ break
+ case "Taken":
+ background = Qt.createQmlObject("import QtQuick 2.14;
+import \"qrc:/src/constant/\";
+Rectangle {
+anchors.fill: parent;
+Image{
+anchors.fill: parent;
+source: \"image://tintedPixmap/\" + (\"qrc:/images/icons/baseline-close-24px.svg\").replace(\"qrc:/images/icons/\",\"\") + \"+\" + JamiTheme.red_;
+mipmap: true;
+}
+}", lookupStatusLabel)
+ break
+ case "Free":
+ background = Qt.createQmlObject("import QtQuick 2.14;
+import \"qrc:/src/constant/\";
+Rectangle {
+anchors.fill: parent;
+Image {
+anchors.fill: parent;
+source: \"image://tintedPixmap/\"+ (\"qrc:/images/icons/baseline-done-24px.svg\").replace(\"qrc:/images/icons/\",\"\") + \"+\" + JamiTheme.presenceGreen_;
+mipmap: true;
+}
+}", lookupStatusLabel)
+ break
+ case "Searching":
+ background = Qt.createQmlObject("import QtQuick 2.14;
+import \"qrc:/src/constant/\";
+Rectangle {
+anchors.fill: parent;
+AnimatedImage {
+anchors.fill: parent
+source: \"qrc:/images/jami_rolling_spinner.gif\";
+
+playing: true
+paused: false
+fillMode: Image.PreserveAspectFit
+mipmap: true
+}
+}", lookupStatusLabel)
+ break
+ }
+ }
+}
diff --git a/src/commoncomponents/MessageBox.qml b/src/commoncomponents/MessageBox.qml
new file mode 100644
index 0000000..9e87c92
--- /dev/null
+++ b/src/commoncomponents/MessageBox.qml
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+import QtQuick 2.15
+import QtQuick.Controls 2.14
+import QtQuick.Layouts 1.14
+import QtQuick.Controls.Styles 1.4
+import QtQuick.Dialogs 1.3
+
+MessageDialog {
+ id: messageBox
+
+ visible: false
+ modality: Qt.NonModal
+ width: 300
+ height: 200
+
+ onRejected: {}
+
+ function openWithParameters(titleToDisplay, infoToDisplay, infoIconMode = StandardIcon.Information, buttons = StandardButton.Ok){
+ title = titleToDisplay
+ text = infoToDisplay
+ icon = infoIconMode
+ standardButtons = buttons
+ messageBox.open()
+ }
+}
diff --git a/src/commoncomponents/PasswordDialog.qml b/src/commoncomponents/PasswordDialog.qml
new file mode 100644
index 0000000..28eced6
--- /dev/null
+++ b/src/commoncomponents/PasswordDialog.qml
@@ -0,0 +1,372 @@
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+import QtQuick 2.15
+import QtQuick.Controls 2.14
+import QtQuick.Layouts 1.14
+import QtQuick.Controls.Styles 1.4
+import net.jami.Models 1.0
+
+import "../constant"
+/*
+ * PasswordDialog for changing password and exporting account
+ */
+Dialog {
+ id: passwordDialog
+
+ enum PasswordEnteringPurpose {
+ ChangePassword,
+ ExportAccount,
+ SetPassword
+ }
+ readonly property int successCode: 200
+ signal doneSignal(int code, int currentPurpose)
+
+ property string path: ""
+ property int purpose: PasswordDialog.ChangePassword
+
+ title: {
+ switch(purpose){
+ case PasswordDialog.ExportAccount:
+ return qsTr("Enter the password of this account")
+ case PasswordDialog.ChangePassword:
+ return qsTr("Changing password")
+ case PasswordDialog.SetPassword:
+ return qsTr("Set password")
+ }
+ }
+
+ function openDialog(purposeIn, exportPathIn = ""){
+ purpose = purposeIn
+ path = exportPathIn
+ currentPasswordEdit.clear()
+ passwordEdit.clear()
+ confirmPasswordEdit.clear()
+ passwordDialog.open()
+ }
+
+ function haveDone(code, currentPurpose) {
+ done(code)
+ doneSignal(code, currentPurpose)
+ }
+
+ function validatePassword() {
+ var acceptablePassword = (passwordEdit.text === confirmPasswordEdit.text)
+ btnChangePasswordConfirm.enabled = acceptablePassword
+
+ if (acceptablePassword) {
+ passwordEdit.borderColorMode = InfoLineEdit.RIGHT
+ confirmPasswordEdit.borderColorMode = InfoLineEdit.RIGHT
+ return
+ }
+
+ passwordEdit.borderColorMode = InfoLineEdit.ERROR
+ confirmPasswordEdit.borderColorMode = InfoLineEdit.ERROR
+ }
+
+ Timer{
+ id: timerToOperate
+
+ interval: 200
+ repeat: false
+
+ onTriggered: {
+ if ((purpose === PasswordDialog.ChangePassword) || (purpose === PasswordDialog.SetPassword)) {
+ savePasswordQML()
+ } else if(purpose === PasswordDialog.ExportAccount) {
+ exportAccountQML()
+ }
+ }
+ }
+
+ function exportAccountQML() {
+ var success = false
+ if(path.length > 0){
+ success = ClientWrapper.accountAdaptor.exportToFile(ClientWrapper.utilsAdaptor.getCurrAccId(),path,currentPasswordEdit.text)
+ }
+
+ spinnerMovie.playing = false
+ spinnerLabel.visible = false
+ if (success) {
+ haveDone(successCode, passwordDialog.purpose)
+ } else {
+ currentPasswordEdit.clear()
+ btnChangePasswordConfirm.enabled = false
+ wrongPasswordLabel.visible = true
+ }
+ }
+ function savePasswordQML() {
+ var success = false
+ success = ClientWrapper.accountAdaptor.savePassword(ClientWrapper.utilsAdaptor.getCurrAccId(),currentPasswordEdit.text, passwordEdit.text)
+
+ spinnerMovie.playing = false
+ spinnerLabel.visible = false
+ if (success) {
+ ClientWrapper.accountAdaptor.setArchiveHasPassword(passwordEdit.text.length !== 0)
+ haveDone(successCode, passwordDialog.purpose)
+ } else {
+ currentPasswordEdit.clear()
+ btnChangePasswordConfirm.enabled = false
+ wrongPasswordLabel.visible = true
+ }
+ }
+
+ visible: false
+
+ anchors.centerIn: parent.Center
+ x: (parent.width - width) / 2
+ y: (parent.height - height) / 2
+
+ contentItem: Rectangle{
+ implicitWidth: 440
+ implicitHeight: 270
+
+ ColumnLayout {
+ anchors.fill: parent
+ spacing: 7
+
+ ColumnLayout {
+ Layout.topMargin: 11
+ Layout.leftMargin: 40
+ Layout.rightMargin: 40
+ Layout.alignment: Qt.AlignHCenter
+ Layout.fillWidth: true
+
+ Layout.preferredWidth: 360
+ Layout.maximumWidth: 360
+ spacing: 7
+
+ ColumnLayout {
+ spacing: 0
+
+ Layout.alignment: Qt.AlignHCenter
+
+ Layout.preferredWidth: 356
+ Layout.maximumWidth: 356
+
+ InfoLineEdit {
+ id: currentPasswordEdit
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+ Layout.fillWidth: true
+
+ visible: purpose === PasswordDialog.ChangePassword
+ echoMode: TextInput.Password
+ font.pointSize: 10
+ font.kerning: true
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+
+ placeholderText: qsTr("Enter Current Password")
+
+ onTextChanged: {
+ if (purpose === PasswordDialog.ChangePassword) {
+ validatePassword()
+ }
+
+ if (currentPasswordEdit.text.length == 0) {
+ btnChangePasswordConfirm.enabled = false
+ } else {
+ wrongPasswordLabel.visible = false
+ btnChangePasswordConfirm.enabled = true
+ }
+ }
+ }
+
+ Label {
+ id: wrongPasswordLabel
+
+ Layout.alignment: Qt.AlignHCenter
+
+ Layout.minimumHeight: 12
+ Layout.preferredHeight: 12
+ Layout.maximumHeight: 12
+ Layout.fillWidth: true
+
+ font.pointSize: 8
+ font.kerning: true
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+
+ text: qsTr("Current Password Incorrect")
+ color: "red"
+
+ visible: false
+ }
+ }
+
+ Item {
+ Layout.fillWidth: true
+
+ Layout.minimumHeight: 8
+ Layout.preferredHeight: 8
+ Layout.maximumHeight: 8
+ }
+
+ InfoLineEdit {
+ id: passwordEdit
+
+ fieldLayoutHeight: 30
+ layoutFillwidth: true
+
+ visible: purpose === PasswordDialog.ChangePassword || purpose === PasswordDialog.SetPassword
+ echoMode: TextInput.Password
+ font.pointSize: 10
+ font.kerning: true
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+
+ placeholderText: qsTr("Enter New Password")
+
+ onTextChanged: {
+ validatePassword()
+ }
+ }
+
+ Item {
+ Layout.fillWidth: true
+
+ Layout.minimumHeight: 8
+ Layout.preferredHeight: 8
+ Layout.maximumHeight: 8
+ }
+
+ InfoLineEdit {
+ id: confirmPasswordEdit
+
+ fieldLayoutHeight: 30
+ layoutFillwidth: true
+
+ visible: purpose === PasswordDialog.ChangePassword || purpose === PasswordDialog.SetPassword
+ echoMode: TextInput.Password
+ font.pointSize: 10
+ font.kerning: true
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+
+ placeholderText: qsTr("Confirm New Password")
+
+ onTextChanged: {
+ validatePassword()
+ }
+ }
+ }
+
+ Label {
+ id: spinnerLabel
+
+ visible: false
+
+ Layout.fillWidth: true
+
+ Layout.minimumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.maximumHeight: 20
+
+ background: Rectangle {
+ anchors.fill: parent
+ AnimatedImage {
+ id: spinnerMovie
+
+ anchors.fill: parent
+
+ source: "qrc:/images/ajax-loader.gif"
+
+ playing: spinnerLabel.visible
+ paused: false
+ fillMode: Image.PreserveAspectFit
+ mipmap: true
+ }
+ }
+ }
+
+ RowLayout {
+ spacing: 7
+
+ Layout.bottomMargin: 11
+ Layout.fillWidth: true
+
+ Layout.leftMargin: 30
+ Layout.rightMargin: 30
+
+ HoverableRadiusButton {
+ id: btnChangePasswordConfirm
+
+ Layout.maximumWidth: 130
+ Layout.preferredWidth: 130
+ Layout.minimumWidth: 130
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ text: qsTr("Confirm")
+ font.pointSize: 10
+ font.kerning: true
+
+ radius: height / 2
+
+ enabled: false
+
+ onClicked: {
+ spinnerLabel.visible = true
+ spinnerMovie.playing = true
+ timerToOperate.restart()
+ }
+ }
+
+ Item {
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ }
+
+ HoverableButtonTextItem {
+ id: btnChangePasswordCancel
+
+ Layout.maximumWidth: 130
+ Layout.preferredWidth: 130
+ Layout.minimumWidth: 130
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ backgroundColor: "red"
+ onEnterColor: Qt.rgba(150 / 256, 0, 0, 0.7)
+ onDisabledBackgroundColor: Qt.rgba(
+ 255 / 256,
+ 0, 0, 0.8)
+ onPressColor: backgroundColor
+ textColor: "white"
+
+ text: qsTr("Cancel")
+ font.pointSize: 10
+ font.kerning: true
+
+ radius: height / 2
+
+ onClicked: {
+ passwordDialog.reject()
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/src/commoncomponents/PhotoboothView.qml b/src/commoncomponents/PhotoboothView.qml
new file mode 100644
index 0000000..4b006fa
--- /dev/null
+++ b/src/commoncomponents/PhotoboothView.qml
@@ -0,0 +1,280 @@
+import QtQuick 2.14
+import QtQuick.Controls 2.14
+import QtQuick.Layouts 1.14
+import QtQuick.Controls.Styles 1.4
+import Qt.labs.platform 1.1
+import QtGraphicalEffects 1.0
+import net.jami.Models 1.0
+
+ColumnLayout{
+ property bool takePhotoState: false
+ property bool hasAvatar: false
+ property bool isDefaultIcon: false
+ property string imgBase64: ""
+ property string fileName: ""
+
+ property int boothWidht: 224
+
+ signal imageAcquired
+ signal imageCleared
+
+ function startBooth(force = false){
+ hasAvatar = false
+ ClientWrapper.accountAdaptor.startPreviewing(force)
+ takePhotoState = true
+ }
+
+ function stopBooth(){
+ try{
+ if(!ClientWrapper.accountAdaptor.hasVideoCall()) {
+ ClientWrapper.accountAdaptor.stopPreviewing()
+ }
+ } catch(erro){console.log("Exception: " + erro.message)}
+
+ takePhotoState = false
+ }
+
+ function setAvatarPixmap(avatarPixmapBase64, defaultValue = false){
+ imgBase64 = avatarPixmapBase64
+ stopBooth()
+ if(defaultValue){
+ isDefaultIcon = defaultValue
+ }
+ }
+
+ onVisibleChanged: {
+ if(!visible){
+ stopBooth()
+ }
+ }
+
+ JamiFileDialog{
+ id: importFromFileToAvatar_Dialog
+
+ mode: JamiFileDialog.OpenFile
+ title: qsTr("Choose an image to be the avatar")
+ folder: StandardPaths.writableLocation(StandardPaths.PicturesLocation)
+
+ nameFilters: [ qsTr("Image Files") + " (*.png *.jpg *.jpeg)",qsTr(
+ "All files") + " (*)"]
+
+ onAccepted: {
+ fileName = file
+ if(fileName.length === 0) {
+ imageCleared()
+ return
+ }
+ imgBase64 = ClientWrapper.utilsAdaptor.getCroppedImageBase64FromFile(
+ ClientWrapper.utilsAdaptor.getAbsPath(fileName),boothWidht)
+ imageAcquired()
+ stopBooth()
+ }
+ }
+
+ spacing: 0
+
+ Layout.maximumWidth: boothWidht
+ Layout.preferredWidth: boothWidht
+ Layout.minimumWidth: boothWidht
+
+ Layout.maximumHeight: 0
+
+ Layout.alignment: Qt.AlignHCenter
+
+ Label{
+ id: avatarLabel
+
+ visible: !takePhotoState
+
+ Layout.maximumWidth: boothWidht
+ Layout.preferredWidth: boothWidht
+ Layout.minimumWidth: boothWidht
+
+ Layout.maximumHeight: boothWidht
+ Layout.preferredHeight: boothWidht
+ Layout.minimumHeight: boothWidht
+
+ Layout.alignment: Qt.AlignHCenter
+
+ background: Rectangle {
+ id: avatarLabelBackground
+
+ anchors.fill: parent
+ color: "transparent"
+
+ Image{
+ id: avatarImg
+
+ anchors.fill: parent
+ source: {
+ if(imgBase64.length === 0){
+ return ""
+ } else {
+ return "data:image/png;base64," + imgBase64
+ }
+ }
+ fillMode: Image.PreserveAspectCrop
+ layer.enabled: true
+ layer.effect: OpacityMask {
+ maskSource: Rectangle{
+ width: avatarImg.width
+ height: avatarImg.height
+ radius: {
+ var size = ((avatarImg.width <= avatarImg.height)? avatarImg.width:avatarImg.height)
+ return size /2
+ }
+ }
+ }
+ }
+ }
+ }
+
+ PhotoboothPreviewRender{
+ id:previewWidget
+
+ onHideBooth:{
+ stopBooth()
+ }
+ visible: takePhotoState
+ focus: visible
+
+ Layout.alignment: Qt.AlignHCenter
+ Layout.maximumWidth: boothWidht
+ Layout.preferredWidth: boothWidht
+ Layout.minimumWidth: boothWidht
+
+ Layout.maximumHeight: boothWidht
+ Layout.preferredHeight: boothWidht
+ Layout.minimumHeight: boothWidht
+
+ layer.enabled: true
+ layer.effect: OpacityMask {
+ maskSource: Rectangle{
+ width: previewWidget.width
+ height: previewWidget.height
+ radius: {
+ var size = ((previewWidget.width <= previewWidget.height)? previewWidget.width:previewWidget.height)
+ return size /2
+ }
+ }
+ }
+
+ Label{
+ id: flashOverlay
+
+ anchors.fill: previewWidget
+ visible: false
+ color: "#fff"
+
+ OpacityAnimator on opacity{
+ id: flashAnimation
+
+ from: 1
+ to: 0
+ duration: 600
+ }
+ }
+ }
+
+
+ RowLayout{
+ Layout.fillWidth: true
+ Layout.minimumHeight: 30
+ Layout.maximumHeight: 30
+
+ Item{
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ }
+
+ HoverableButton {
+ id: takePhotoButton
+
+ property string cameraAltIconUrl: "qrc:/images/icons/baseline-camera_alt-24px.svg"
+ property string addPhotoIconUrl: "qrc:/images/icons/round-add_a_photo-24px.svg"
+ property string refreshIconUrl: "qrc:/images/icons/baseline-refresh-24px.svg"
+
+ Layout.maximumWidth: 30
+ Layout.preferredWidth: 30
+ Layout.minimumWidth: 30
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ text: ""
+ font.pointSize: 10
+ font.kerning: true
+
+ radius: height / 6
+ source: {
+ if(isDefaultIcon){
+ return addPhotoIconUrl
+ }
+
+ if(takePhotoState) {
+ return cameraAltIconUrl
+ }
+
+ if(hasAvatar){
+ return refreshIconUrl
+ } else {
+ return addPhotoIconUrl
+ }
+ }
+ onClicked: {
+ if(!takePhotoState){
+ imageCleared()
+ startBooth()
+ return
+ } else {
+ // show flash overlay
+ flashOverlay.visible = true
+ flashAnimation.restart()
+
+ // run concurrent function call to take photo
+ imgBase64 = previewWidget.takeCroppedPhotoToBase64(boothWidht)
+ hasAvatar = true
+ imageAcquired()
+ stopBooth()
+ }
+ }
+ }
+
+ Item{
+ Layout.fillHeight: true
+
+ Layout.minimumWidth: 6
+ Layout.preferredWidth: 6
+ Layout.maximumWidth: 6
+ }
+
+ HoverableButton {
+ id: importButton
+
+ Layout.maximumWidth: 30
+ Layout.preferredWidth: 30
+ Layout.minimumWidth: 30
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ text: ""
+ font.pointSize: 10
+ font.kerning: true
+
+ radius: height / 6
+ source: "qrc:/images/icons/round-folder-24px.svg"
+
+ onClicked: {
+ importFromFileToAvatar_Dialog.open()
+ }
+ }
+
+ Item{
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ }
+ }
+}
diff --git a/src/commoncomponents/TintedButton.qml b/src/commoncomponents/TintedButton.qml
new file mode 100644
index 0000000..eaec994
--- /dev/null
+++ b/src/commoncomponents/TintedButton.qml
@@ -0,0 +1,125 @@
+
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+import QtQuick 2.14
+import QtQuick.Controls 2.14
+import net.jami.Models 1.0
+
+Button {
+ id: tintedButton
+
+
+ /*
+ * TintColor, color for the pixmap when button is hovered.
+ */
+ property string tintColor: "white"
+
+
+ /*
+ * NormalPixmapSource - icons in normal state (non-toggled).
+ * SelectedPixmapSource - icons once button is toggled.
+ */
+ property string normalPixmapSource: ""
+ property string selectedPixmapSource: ""
+
+
+ /*
+ * IsSelected property is to help set button current state manually.
+ */
+ property bool isSelected: false
+
+
+ /*
+ * ButtonEntered signal is to help call overlay change its opacity
+ */
+ signal buttonEntered
+
+ function setChecked(checked) {
+ isSelected = checked
+ if (isSelected) {
+ tintedButtonImage.source = selectedPixmapSource
+ } else {
+ tintedButtonImage.source = normalPixmapSource
+ }
+ }
+
+ hoverEnabled: true
+
+ background: Rectangle {
+ id: tintedButtonBackground
+
+ radius: 30
+ color: "transparent"
+
+ Image {
+ id: tintedButtonImage
+
+ anchors.centerIn: tintedButtonBackground
+
+ height: tintedButtonBackground.height - 10
+ width: tintedButtonBackground.width - 10
+
+ source: normalPixmapSource
+ fillMode: Image.PreserveAspectFit
+ mipmap: true
+ asynchronous: true
+ }
+
+ MouseArea {
+ anchors.fill: parent
+
+ hoverEnabled: true
+
+ onReleased: {
+ isSelected = !isSelected
+ if (isSelected) {
+ tintedButtonImage.source = "image://tintedPixmap/"
+ + selectedPixmapSource.replace(
+ "qrc:/images/icons/", "") + "+" + tintColor
+ } else {
+ tintedButtonImage.source = "image://tintedPixmap/" + normalPixmapSource.replace(
+ "qrc:/images/icons/", "") + "+" + tintColor
+ }
+ tintedButton.clicked()
+ }
+ onEntered: {
+
+
+ /*
+ * Tinted.
+ */
+ if (isSelected) {
+ tintedButtonImage.source = "image://tintedPixmap/"
+ + selectedPixmapSource.replace(
+ "qrc:/images/icons/", "") + "+" + tintColor
+ } else {
+ tintedButtonImage.source = "image://tintedPixmap/" + normalPixmapSource.replace(
+ "qrc:/images/icons/", "") + "+" + tintColor
+ }
+ tintedButton.buttonEntered()
+ }
+ onExited: {
+ if (isSelected) {
+ tintedButtonImage.source = selectedPixmapSource
+ } else {
+ tintedButtonImage.source = normalPixmapSource
+ }
+ }
+ }
+ }
+}
diff --git a/src/connectivitymonitor.cpp b/src/connectivitymonitor.cpp
new file mode 100644
index 0000000..0446223
--- /dev/null
+++ b/src/connectivitymonitor.cpp
@@ -0,0 +1,167 @@
+/*
+ * Copyright (C) 2019-2020 by Savoir-faire Linux
+ * Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "connectivitymonitor.h"
+
+#include <QDebug>
+
+#ifdef Q_OS_WIN
+#include <atlbase.h>
+#include <netlistmgr.h>
+
+class NetworkEventHandler : public INetworkListManagerEvents
+{
+public:
+ NetworkEventHandler()
+ : m_lRefCnt(1){};
+ virtual ~NetworkEventHandler(){};
+
+ HRESULT STDMETHODCALLTYPE
+ QueryInterface(REFIID riid, void **ppvObject)
+ {
+ HRESULT hr = S_OK;
+ if (IsEqualIID(riid, IID_IUnknown)) {
+ *ppvObject = (IUnknown *) this;
+ } else if (IsEqualIID(riid, IID_INetworkListManagerEvents)) {
+ *ppvObject = (INetworkListManagerEvents *) this;
+ } else {
+ hr = E_NOINTERFACE;
+ }
+
+ return hr;
+ };
+ ULONG STDMETHODCALLTYPE
+ AddRef()
+ {
+ return (ULONG) InterlockedIncrement(&m_lRefCnt);
+ };
+ ULONG STDMETHODCALLTYPE
+ Release()
+ {
+ LONG res = InterlockedDecrement(&m_lRefCnt);
+ if (res == 0) {
+ delete this;
+ }
+ return (ULONG) res;
+ };
+
+ virtual HRESULT STDMETHODCALLTYPE
+ ConnectivityChanged(NLM_CONNECTIVITY newConnectivity)
+ {
+ qDebug() << "connectivity changed: " << newConnectivity;
+ if (connectivityChangedCb_) {
+ connectivityChangedCb_();
+ }
+ return S_OK;
+ };
+
+ void
+ setOnConnectivityChangedCallBack(std::function<void()> &&cb)
+ {
+ connectivityChangedCb_ = cb;
+ };
+
+private:
+ LONG m_lRefCnt;
+
+ std::function<void()> connectivityChangedCb_;
+};
+
+ConnectivityMonitor::ConnectivityMonitor(QObject *parent)
+ : QObject(parent)
+{
+ CoInitialize(NULL);
+
+ IUnknown *pUnknown = NULL;
+
+ HRESULT hr = CoCreateInstance(CLSID_NetworkListManager,
+ NULL,
+ CLSCTX_ALL,
+ IID_IUnknown,
+ (void **) &pUnknown);
+ if (FAILED(hr)) {
+ return;
+ }
+
+ pNetworkListManager_ = NULL;
+ hr = pUnknown->QueryInterface(IID_INetworkListManager, (void **) &pNetworkListManager_);
+ if (FAILED(hr)) {
+ destroy();
+ pUnknown->Release();
+ return;
+ }
+
+ pCPContainer_ = NULL;
+ hr = pNetworkListManager_->QueryInterface(IID_IConnectionPointContainer,
+ (void **) &pCPContainer_);
+ if (FAILED(hr)) {
+ destroy();
+ pUnknown->Release();
+ return;
+ }
+
+ pConnectPoint_ = NULL;
+ hr = pCPContainer_->FindConnectionPoint(IID_INetworkListManagerEvents, &pConnectPoint_);
+ if (SUCCEEDED(hr)) {
+ cookie_ = NULL;
+ netEventHandler_ = new NetworkEventHandler;
+ netEventHandler_->setOnConnectivityChangedCallBack([this] { emit connectivityChanged(); });
+ hr = pConnectPoint_->Advise((IUnknown *) netEventHandler_, &cookie_);
+ } else {
+ destroy();
+ }
+
+ pUnknown->Release();
+}
+
+bool
+ConnectivityMonitor::isOnline()
+{
+ if (!pNetworkListManager_) {
+ return false;
+ }
+ VARIANT_BOOL IsConnect = VARIANT_FALSE;
+ HRESULT hr = pNetworkListManager_->get_IsConnectedToInternet(&IsConnect);
+ if (SUCCEEDED(hr)) {
+ return IsConnect == VARIANT_TRUE;
+ }
+ return false;
+}
+
+void
+ConnectivityMonitor::destroy()
+{
+ if (pConnectPoint_) {
+ pConnectPoint_->Unadvise(cookie_);
+ pConnectPoint_->Release();
+ }
+ if (pCPContainer_) {
+ pCPContainer_->Release();
+ }
+ if (pNetworkListManager_) {
+ pNetworkListManager_->Release();
+ pNetworkListManager_ = NULL;
+ }
+}
+
+ConnectivityMonitor::~ConnectivityMonitor()
+{
+ destroy();
+ CoUninitialize();
+}
+#endif // Q_OS_WIN
\ No newline at end of file
diff --git a/src/connectivitymonitor.h b/src/connectivitymonitor.h
new file mode 100644
index 0000000..62865dd
--- /dev/null
+++ b/src/connectivitymonitor.h
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2019-2020 by Savoir-faire Linux
+ * Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include <QObject>
+
+#ifdef Q_OS_WIN
+class ConnectivityMonitor : public QObject
+{
+ Q_OBJECT
+
+public:
+ explicit ConnectivityMonitor(QObject *parent = 0);
+ ~ConnectivityMonitor();
+
+ bool isOnline();
+
+signals:
+ void connectivityChanged();
+
+private:
+ void destroy();
+
+ struct INetworkListManager *pNetworkListManager_;
+ struct IConnectionPointContainer *pCPContainer_;
+ struct IConnectionPoint *pConnectPoint_;
+ class NetworkEventHandler *netEventHandler_;
+ unsigned long cookie_;
+};
+#endif // Q_OS_WIN
\ No newline at end of file
diff --git a/src/constant/JamiTheme.qml b/src/constant/JamiTheme.qml
new file mode 100644
index 0000000..983ae0d
--- /dev/null
+++ b/src/constant/JamiTheme.qml
@@ -0,0 +1,105 @@
+
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+
+/*
+ * JamiTheme as a singleton is to provide global property entry
+ * https://doc.qt.io/qt-5/qqmlengine.html#qmlRegisterSingletonType-3
+ */
+pragma Singleton
+
+import QtQuick 2.14
+
+Item {
+
+
+ /*
+ * Color strings.
+ */
+ property string hoverColor: "#c7c7c7"
+ property string pressColor: "#c0c0c0"
+ property string releaseColor: "#e0e0e0"
+ property string tabbarBorderColor: "#e3e3e3"
+ property string transparentColor: "transparent"
+ property string presenceGreen: "#4cd964"
+ property string notificationRed: "#ff3b30"
+
+ property string screenSelectionBorderGreen: "green"
+
+ property string acceptButtonGreen: "#4caf50"
+ property string acceptButtonHoverGreen: "#5db761"
+ property string acceptButtonPressedGreen: "#449d48"
+
+ property string declineButtonRed: "#f44336"
+ property string declineButtonHoverRed: "#f5554a"
+ property string declineButtonPressedRed: "#db3c30"
+
+ property string hangUpButtonTintedRed: "#ff0000"
+ property string buttonTintedBlue: "#00aaff"
+
+ property string selectionBlue: "#109ede"
+ property string selectionGreen: "#21be2b"
+ property string rubberBandSelectionBlue: "steelblue"
+
+ property string closeButtonLighterBlack: "#4c4c4c"
+
+ property string contactSearchBarPlaceHolderTextFontColor: "#767676"
+ property string contactSearchBarPlaceHolderGreyBackground: "#dddddd"
+
+ property string draftRed: "#cf5300"
+
+
+ /*
+ * Font.
+ */
+ property string faddedFontColor: "#c0c0c0"
+ property string faddedLastInteractionFontColor: "#505050"
+
+ property int splitViewHandlePreferedWidth: 4
+ property int textFontSize: 9
+
+
+ /*
+ * Place holder text.
+ */
+ property string contactSearchBarPlaceHolderConversationText: qsTr("Find or start a conversation")
+ property string contactSearchBarPlaceHolderInivitionText: qsTr("Search your received invitations")
+
+ // Jami theme colors
+ function rgb256(r, g, b) {
+ return Qt.rgba(r / 256, g / 256, b / 256, 1)
+ }
+
+ property color blue_: "#109ede"
+ property color lightBlue_: "#c1ebf0"
+ property color lightGrey_: rgb256(242, 242, 242)
+ property color imGrey_: "#dedee0"
+ property color imBlue_: "#cfebf5"
+ property color lightBlack_: rgb256(63, 63, 63)
+ property color grey_: rgb256(160, 160, 160)
+ property color red_: rgb256(251, 72, 71)
+ property color lightRed_: rgb256(252, 91, 90)
+ property color darkRed_: rgb256(219, 55, 54)
+ property color notificationRed_: rgb256(255, 59, 48)
+ property color urgentOrange_: rgb256(255, 165, 0)
+ property color green_: rgb256(127, 255, 0)
+ property color presenceGreen_: rgb256(76, 217, 100)
+ property color smartlistSelection_: rgb256(240, 240, 240)
+ property color smartlistHighlight_: rgb256(245, 245, 245)
+}
diff --git a/src/contactadapter.cpp b/src/contactadapter.cpp
new file mode 100644
index 0000000..fb837aa
--- /dev/null
+++ b/src/contactadapter.cpp
@@ -0,0 +1,180 @@
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Edric Ladent Milaret <edric.ladent-milaret@savoirfairelinux.com>
+ * Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "contactadapter.h"
+
+#include "lrcinstance.h"
+
+ContactAdapter::ContactAdapter(QObject *parent)
+ : QmlAdapterBase(parent)
+{
+ selectableProxyModel_.reset(new SelectableProxyModel(smartListModel_.get()));
+}
+
+ContactAdapter::~ContactAdapter() {}
+
+QVariant
+ContactAdapter::getContactSelectableModel(int type)
+{
+ /*
+ * Called from qml every time contact picker refreshes.
+ */
+ listModeltype_ = Utils::toEnum<SmartListModel::Type>(type);
+ smartListModel_.reset(new SmartListModel(LRCInstance::getCurrAccId(),
+ this,
+ listModeltype_,
+ LRCInstance::getCurrentConvUid()));
+ selectableProxyModel_->setSourceModel(smartListModel_.get());
+
+ /*
+ * Adjust filter.
+ */
+ switch (listModeltype_) {
+ case SmartListModel::Type::CONFERENCE:
+ selectableProxyModel_->setPredicate([this](const QModelIndex &index, const QRegExp &) {
+ return index.data(SmartListModel::Presence).toBool();
+ });
+ break;
+ case SmartListModel::Type::TRANSFER:
+ selectableProxyModel_->setPredicate([this](const QModelIndex &index, const QRegExp ®exp) {
+ /*
+ * Regex to remove current callee.
+ */
+ QRegExp matchExcept = QRegExp(QString("\\b(?!" + calleeDisplayName_ + "\\b)\\w+"));
+ bool match = false;
+ bool match_non_self = matchExcept.indexIn(
+ index.data(SmartListModel::Role::DisplayName).toString())
+ != -1;
+ if (match_non_self) {
+ match = regexp.indexIn(index.data(SmartListModel::Role::DisplayName).toString())
+ != -1;
+ }
+ return match && !index.parent().isValid();
+ });
+ break;
+ default:
+ break;
+ }
+ selectableProxyModel_->invalidate();
+
+ return QVariant::fromValue(selectableProxyModel_.get());
+}
+
+void
+ContactAdapter::setSearchFilter(const QString &filter)
+{
+ if (listModeltype_ == SmartListModel::Type::CONFERENCE) {
+ smartListModel_->setConferenceableFilter(filter);
+ }
+ selectableProxyModel_->setFilterRegExp(
+ QRegExp(filter, Qt::CaseInsensitive, QRegExp::FixedString));
+}
+
+void
+ContactAdapter::contactSelected(int index)
+{
+ auto contactIndex = selectableProxyModel_->index(index, 0);
+ auto callModel = LRCInstance::getCurrentCallModel();
+ auto conversation = LRCInstance::getCurrentConversation();
+
+ if (contactIndex.isValid()) {
+ switch (listModeltype_) {
+ case SmartListModel::Type::CONFERENCE: {
+ /*
+ * Conference.
+ */
+ auto sectionName = contactIndex.data(SmartListModel::Role::SectionName).value<QString>();
+ if (!sectionName.isEmpty()) {
+ smartListModel_->toggleSection(sectionName);
+ return;
+ }
+
+ auto convUid = contactIndex.data(SmartListModel::Role::UID).value<QString>();
+ auto accId = contactIndex.data(SmartListModel::Role::AccountId).value<QString>();
+ auto callId = LRCInstance::getCallIdForConversationUid(convUid, accId);
+
+ if (!callId.isEmpty()) {
+ if (conversation.uid.isEmpty()) {
+ return;
+ }
+ auto thisCallId = conversation.confId.isEmpty() ? conversation.callId
+ : conversation.confId;
+
+ callModel->joinCalls(thisCallId, callId);
+ } else {
+ auto contactUri = contactIndex.data(SmartListModel::Role::URI).value<QString>();
+ auto call = LRCInstance::getCallInfoForConversation(conversation);
+ if (!call) {
+ return;
+ }
+ callModel->callAndAddParticipant(contactUri, call->id, call->isAudioOnly);
+ }
+ } break;
+ case SmartListModel::Type::TRANSFER: {
+ /*
+ * SIP Transfer.
+ */
+ auto contactUri = contactIndex.data(SmartListModel::Role::URI).value<QString>();
+
+ if (conversation.uid.isEmpty()) {
+ return;
+ }
+ auto callId = conversation.confId.isEmpty() ? conversation.callId : conversation.confId;
+
+ QString destCallId;
+
+ try {
+ /*
+ * Check if the call exist - (check non-finished calls).
+ */
+ auto callInfo = callModel->getCallFromURI(contactUri, true);
+ destCallId = callInfo.id;
+ } catch (std::exception &e) {
+ qDebug().noquote() << e.what();
+ destCallId = "";
+ }
+ /*
+ * If no second call -> blind transfer.
+ * If there is a second call -> attended transfer.
+ */
+ if (destCallId.size() == 0) {
+ callModel->transfer(callId, "sip:" + contactUri);
+ callModel->hangUp(callId);
+ } else {
+ callModel->transferToCall(callId, destCallId);
+ callModel->hangUp(callId);
+ callModel->hangUp(destCallId);
+ }
+ } break;
+ default:
+ break;
+ }
+ }
+}
+
+void
+ContactAdapter::setCalleeDisplayName(const QString &name)
+{
+ calleeDisplayName_ = name;
+}
+
+void
+ContactAdapter::initQmlObject()
+{}
diff --git a/src/contactadapter.h b/src/contactadapter.h
new file mode 100644
index 0000000..4b69477
--- /dev/null
+++ b/src/contactadapter.h
@@ -0,0 +1,99 @@
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "qmladapterbase.h"
+#include "smartlistmodel.h"
+
+#include <QObject>
+#include <QSortFilterProxyModel>
+#include <QString>
+
+/*
+ * The SelectableProxyModel class
+ * provides support for sorting and filtering data passed between another model and a view.
+ *
+ * User can customize a function pointer to pass to FilterPredicate to ensure which row in
+ * the source model can be accepted.
+ *
+ * Additionally, user need to setFilterRegExp to be able to get input QRegExp from FilterPredicate.
+ */
+class SelectableProxyModel : public QSortFilterProxyModel
+{
+public:
+ using FilterPredicate = std::function<bool(const QModelIndex &, const QRegExp &)>;
+
+ explicit SelectableProxyModel(QAbstractItemModel *parent)
+ : QSortFilterProxyModel(parent)
+ {
+ setSourceModel(parent);
+ }
+ ~SelectableProxyModel() {}
+
+ void
+ setPredicate(FilterPredicate filterPredicate)
+ {
+ filterPredicate_ = filterPredicate;
+ }
+
+ virtual bool
+ filterAcceptsRow(int source_row, const QModelIndex &source_parent) const
+ {
+ /*
+ * Accept all contacts in conversation list filtered with account type, except those in a call.
+ */
+ auto index = sourceModel()->index(source_row, 0, source_parent);
+ if (filterPredicate_) {
+ return filterPredicate_(index, filterRegExp());
+ }
+ }
+
+private:
+ std::function<bool(const QModelIndex &, const QRegExp &)> filterPredicate_;
+};
+
+class ContactAdapter : public QmlAdapterBase
+{
+ Q_OBJECT
+
+public:
+ explicit ContactAdapter(QObject *parent = nullptr);
+ ~ContactAdapter();
+
+ Q_INVOKABLE QVariant getContactSelectableModel(int type);
+ Q_INVOKABLE void setSearchFilter(const QString &filter);
+ Q_INVOKABLE void contactSelected(int index);
+ Q_INVOKABLE void setCalleeDisplayName(const QString &name);
+
+private:
+ void initQmlObject() override;
+
+ SmartListModel::Type listModeltype_;
+
+ /*
+ * For sip call transfer, to exclude current sip callee.
+ */
+ QString calleeDisplayName_;
+
+ /*
+ * SmartListModel is the source model of SelectableProxyModel.
+ */
+ std::unique_ptr<SmartListModel> smartListModel_;
+ std::unique_ptr<SelectableProxyModel> selectableProxyModel_;
+};
diff --git a/src/conversationsadapter.cpp b/src/conversationsadapter.cpp
new file mode 100644
index 0000000..d5cd4b5
--- /dev/null
+++ b/src/conversationsadapter.cpp
@@ -0,0 +1,304 @@
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Edric Ladent Milaret <edric.ladent-milaret@savoirfairelinux.com>
+ * Author: Anthony Léonard <anthony.leonard@savoirfairelinux.com>
+ * Author: Olivier Soldano <olivier.soldano@savoirfairelinux.com>
+ * Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
+ * Author: Isa Nanic <isa.nanic@savoirfairelinux.com>
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "conversationsadapter.h"
+
+#include "utils.h"
+
+ConversationsAdapter::ConversationsAdapter(QObject *parent)
+ : QmlAdapterBase(parent)
+{}
+
+ConversationsAdapter::~ConversationsAdapter() {}
+
+void
+ConversationsAdapter::initQmlObject()
+{
+ conversationSmartListModel_ = new SmartListModel(LRCInstance::getCurrAccId(), this);
+
+ QMetaObject::invokeMethod(qmlObj_,
+ "setModel",
+ Q_ARG(QVariant, QVariant::fromValue(conversationSmartListModel_)));
+
+ connect(&LRCInstance::behaviorController(),
+ &BehaviorController::showChatView,
+ [this](const QString &accountId, lrc::api::conversation::Info convInfo) {
+ emit showChatView(accountId, convInfo.uid);
+ });
+
+ connectConversationModel();
+}
+
+void
+ConversationsAdapter::backToWelcomePage()
+{
+ deselectConversation();
+ QMetaObject::invokeMethod(qmlObj_, "backToWelcomePage");
+}
+
+void
+ConversationsAdapter::selectConversation(const QString &accountId,
+ const QString &convUid,
+ bool preventSendingSignal)
+{
+ selectConversation(LRCInstance::getConversationFromConvUid(convUid, accountId),
+ preventSendingSignal);
+}
+
+void
+ConversationsAdapter::selectConversation(int index)
+{
+ auto convModel = LRCInstance::getCurrentConversationModel();
+
+ if (convModel == nullptr) {
+ return;
+ }
+
+ const auto item = convModel->filteredConversation(index);
+
+ if (selectConversation(item, false)) {
+ auto convUid = conversationSmartListModel_
+ ->data(conversationSmartListModel_->index(index, 0),
+ static_cast<int>(SmartListModel::Role::UID))
+ .toString();
+ auto &conversation = LRCInstance::getConversationFromConvUid(convUid);
+ /*
+ * If it is calling, show callview (can use showChatView signal, since it will be determined on qml).
+ */
+ if (!conversation.uid.isEmpty()
+ && LRCInstance::getCurrentCallModel()->hasCall(conversation.callId)) {
+ emit showChatView(LRCInstance::getCurrAccId(), conversation.uid);
+ }
+ }
+}
+
+bool
+ConversationsAdapter::selectConversation(const lrc::api::conversation::Info &item,
+ bool preventSendingSignal)
+{
+ /*
+ * accInfo.conversationModel->selectConversation(item.uid) only emit ui
+ * behavior control signals, but sometimes we do not want that,
+ * preventSendingSignal boolean can help us to determine.
+ */
+ if (LRCInstance::getCurrentConvUid() == item.uid) {
+ return false;
+ } else if (item.participants.size() > 0) {
+ auto &accInfo = LRCInstance::getAccountInfo(item.accountId);
+ LRCInstance::setSelectedConvId(item.uid);
+ if (!preventSendingSignal)
+ accInfo.conversationModel->selectConversation(item.uid);
+ accInfo.conversationModel->clearUnreadInteractions(item.uid);
+ return true;
+ }
+}
+
+void
+ConversationsAdapter::deselectConversation()
+{
+ if (LRCInstance::getCurrentConvUid().isEmpty()) {
+ return;
+ }
+
+ auto currentConversationModel = LRCInstance::getCurrentConversationModel();
+
+ if (currentConversationModel == nullptr) {
+ return;
+ }
+
+ currentConversationModel->selectConversation("");
+ LRCInstance::setSelectedConvId();
+}
+
+void
+ConversationsAdapter::accountChangedSetUp(const QString &accountId)
+{
+ /*
+ * Should be called when current account is changed.
+ */
+ auto &accountInfo = LRCInstance::accountModel().getAccountInfo(accountId);
+ currentTypeFilter_ = accountInfo.profileInfo.type;
+ LRCInstance::getCurrentConversationModel()->setFilter(accountInfo.profileInfo.type);
+ updateConversationsFilterWidget();
+
+ connectConversationModel();
+}
+
+void
+ConversationsAdapter::updateConversationsFilterWidget()
+{
+ /*
+ * Update status of "Conversations" and "Invitations".
+ */
+ auto invites = LRCInstance::getCurrentAccountInfo().contactModel->pendingRequestCount();
+ if (invites == 0 && currentTypeFilter_ == lrc::api::profile::Type::PENDING) {
+ currentTypeFilter_ = lrc::api::profile::Type::RING;
+ LRCInstance::getCurrentConversationModel()->setFilter(currentTypeFilter_);
+ }
+ showConversationTabs(invites);
+}
+
+void
+ConversationsAdapter::setConversationFilter(const QString &type)
+{
+ /*
+ * Set conversation filter according to type,
+ * type needs to be recognizable by lrc::api::profile::to_type.
+ */
+ if (type.isEmpty()) {
+ if (LRCInstance::getCurrentAccountInfo().profileInfo.type == lrc::api::profile::Type::RING)
+ setConversationFilter(lrc::api::profile::Type::RING);
+ else
+ setConversationFilter(lrc::api::profile::Type::SIP);
+ } else {
+ setConversationFilter(lrc::api::profile::to_type(type));
+ }
+}
+
+void
+ConversationsAdapter::setConversationFilter(lrc::api::profile::Type filter)
+{
+ if (currentTypeFilter_ == filter) {
+ return;
+ }
+ currentTypeFilter_ = filter;
+ LRCInstance::getCurrentConversationModel()->setFilter(currentTypeFilter_);
+}
+
+bool
+ConversationsAdapter::connectConversationModel()
+{
+ /*
+ * Signal connections
+ */
+ auto currentConversationModel = LRCInstance::getCurrentAccountInfo().conversationModel.get();
+
+ QObject::disconnect(modelSortedConnection_);
+ QObject::disconnect(modelUpdatedConnection_);
+ QObject::disconnect(filterChangedConnection_);
+ QObject::disconnect(newConversationConnection_);
+ QObject::disconnect(conversationRemovedConnection_);
+ QObject::disconnect(conversationClearedConnection);
+ QObject::disconnect(newInteractionConnection_);
+ QObject::disconnect(interactionRemovedConnection_);
+
+ modelSortedConnection_ = QObject::connect(
+ currentConversationModel, &lrc::api::ConversationModel::modelSorted, [this]() {
+ updateConversationsFilterWidget();
+ QMetaObject::invokeMethod(qmlObj_, "updateConversationSmartListView");
+ auto convUid = LRCInstance::getCurrentConversation().uid;
+ auto convModel = LRCInstance::getCurrentConversationModel();
+ auto &conversation = LRCInstance::getConversationFromConvUid(convUid);
+ if (conversation.uid.isEmpty()) {
+ return;
+ }
+ auto contactURI = conversation.participants[0];
+ if (contactURI.isEmpty()
+ || convModel->owner.contactModel->getContact(contactURI).profileInfo.type
+ == lrc::api::profile::Type::TEMPORARY) {
+ return;
+ }
+ QMetaObject::invokeMethod(qmlObj_, "modelSorted", Q_ARG(QVariant, contactURI));
+ });
+
+ modelUpdatedConnection_
+ = QObject::connect(currentConversationModel,
+ &lrc::api::ConversationModel::conversationUpdated,
+ [this](const QString &convUid) {
+ Q_UNUSED(convUid);
+ updateConversationsFilterWidget();
+ QMetaObject::invokeMethod(qmlObj_, "updateConversationSmartListView");
+ });
+
+ filterChangedConnection_ = QObject::connect(
+ currentConversationModel, &lrc::api::ConversationModel::filterChanged, [this]() {
+ QMetaObject::invokeMethod(qmlObj_,
+ "updateSmartList",
+ Q_ARG(QVariant, LRCInstance::getCurrAccId()));
+ updateConversationsFilterWidget();
+ QMetaObject::invokeMethod(qmlObj_, "updateConversationSmartListView");
+ });
+
+ newConversationConnection_
+ = QObject::connect(currentConversationModel,
+ &lrc::api::ConversationModel::newConversation,
+ [this](const QString &convUid) {
+ QMetaObject::invokeMethod(qmlObj_,
+ "updateSmartList",
+ Q_ARG(QVariant,
+ LRCInstance::getCurrAccId()));
+ updateConversationForNewContact(convUid);
+ });
+
+ conversationRemovedConnection_
+ = QObject::connect(currentConversationModel,
+ &lrc::api::ConversationModel::conversationRemoved,
+ [this]() { backToWelcomePage(); });
+
+ conversationClearedConnection
+ = QObject::connect(currentConversationModel,
+ &lrc::api::ConversationModel::conversationCleared,
+ [this](const QString &convUid) {
+ /*
+ * If currently selected,
+ * switch to welcome screen (deselecting current smartlist item ).
+ */
+ if (convUid != LRCInstance::getCurrentConvUid()) {
+ return;
+ }
+ backToWelcomePage();
+ });
+
+ newInteractionConnection_
+ = QObject::connect(currentConversationModel,
+ &lrc::api::ConversationModel::newInteraction,
+ [this] {
+ updateConversationsFilterWidget();
+ QMetaObject::invokeMethod(qmlObj_, "updateConversationSmartListView");
+ });
+
+ currentConversationModel->setFilter("");
+ return true;
+}
+
+void
+ConversationsAdapter::updateConversationForNewContact(const QString &convUid)
+{
+ auto convModel = LRCInstance::getCurrentConversationModel();
+ if (convModel == nullptr) {
+ return;
+ }
+ auto selectedUid = LRCInstance::getCurrentConvUid();
+ auto &conversation = LRCInstance::getConversationFromConvUid(convUid, {}, true);
+ if (!conversation.uid.isEmpty()) {
+ try {
+ auto contact = convModel->owner.contactModel->getContact(conversation.participants[0]);
+ if (!contact.profileInfo.uri.isEmpty() && contact.profileInfo.uri == selectedUid) {
+ LRCInstance::setSelectedConvId(convUid);
+ convModel->selectConversation(convUid);
+ }
+ } catch (...) {
+ return;
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/conversationsadapter.h b/src/conversationsadapter.h
new file mode 100644
index 0000000..33dea8f
--- /dev/null
+++ b/src/conversationsadapter.h
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "lrcinstance.h"
+#include "qmladapterbase.h"
+#include "smartlistmodel.h"
+
+#include <QObject>
+#include <QString>
+
+class ConversationsAdapter : public QmlAdapterBase
+{
+ Q_OBJECT
+
+public:
+ explicit ConversationsAdapter(QObject *parent = nullptr);
+ ~ConversationsAdapter();
+
+ Q_INVOKABLE bool connectConversationModel();
+ Q_INVOKABLE void selectConversation(const QString &accountId,
+ const QString &convUid,
+ bool preventSendingSignal = true);
+ Q_INVOKABLE void selectConversation(int index);
+ Q_INVOKABLE void deselectConversation();
+ Q_INVOKABLE void accountChangedSetUp(const QString &accountId);
+ Q_INVOKABLE void updateConversationsFilterWidget();
+ Q_INVOKABLE void setConversationFilter(const QString &type);
+
+signals:
+ void showChatView(const QString &accountId, const QString &convUid);
+ void showConversationTabs(bool visible);
+
+private:
+ void initQmlObject() override;
+ void setConversationFilter(lrc::api::profile::Type filter);
+ void backToWelcomePage();
+ bool selectConversation(const lrc::api::conversation::Info &item,
+ bool preventSendingSignal = true);
+ void updateConversationForNewContact(const QString &convUid);
+
+ SmartListModel *conversationSmartListModel_;
+
+ lrc::api::profile::Type currentTypeFilter_{};
+
+ /*
+ * Connections.
+ */
+ QMetaObject::Connection modelSortedConnection_;
+ QMetaObject::Connection modelUpdatedConnection_;
+ QMetaObject::Connection filterChangedConnection_;
+ QMetaObject::Connection newConversationConnection_;
+ QMetaObject::Connection conversationRemovedConnection_;
+ QMetaObject::Connection newInteractionConnection_;
+ QMetaObject::Connection conversationClearedConnection;
+ QMetaObject::Connection selectedCallChanged_;
+ QMetaObject::Connection smartlistSelectionConnection_;
+ QMetaObject::Connection interactionRemovedConnection_;
+};
diff --git a/src/deviceitemlistmodel.cpp b/src/deviceitemlistmodel.cpp
new file mode 100644
index 0000000..6b2739c
--- /dev/null
+++ b/src/deviceitemlistmodel.cpp
@@ -0,0 +1,117 @@
+/*
+ * Copyright (C) 2019-2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "deviceitemlistmodel.h"
+
+DeviceItemListModel::DeviceItemListModel(QObject *parent)
+ : QAbstractListModel(parent)
+{}
+
+DeviceItemListModel::~DeviceItemListModel() {}
+
+int
+DeviceItemListModel::rowCount(const QModelIndex &parent) const
+{
+ if (!parent.isValid()) {
+ /*
+ * Count.
+ */
+ return LRCInstance::getCurrentAccountInfo().deviceModel->getAllDevices().size();
+ }
+ /*
+ * A valid QModelIndex returns 0 as no entry has sub-elements.
+ */
+ return 0;
+}
+
+int
+DeviceItemListModel::columnCount(const QModelIndex &parent) const
+{
+ Q_UNUSED(parent);
+ /*
+ * Only need one column.
+ */
+ return 1;
+}
+
+QVariant
+DeviceItemListModel::data(const QModelIndex &index, int role) const
+{
+ auto deviceList = LRCInstance::getCurrentAccountInfo().deviceModel->getAllDevices();
+ if (!index.isValid() || deviceList.size() <= index.row()) {
+ return QVariant();
+ }
+
+ switch (role) {
+ case Role::DeviceName:
+ return QVariant(deviceList.at(index.row()).name);
+ case Role::DeviceID:
+ return QVariant(deviceList.at(index.row()).id);
+ case Role::IsCurrent:
+ return QVariant(deviceList.at(index.row()).isCurrent);
+ }
+ return QVariant();
+}
+
+QHash<int, QByteArray>
+DeviceItemListModel::roleNames() const
+{
+ QHash<int, QByteArray> roles;
+ roles[DeviceName] = "DeviceName";
+ roles[DeviceID] = "DeviceID";
+ roles[IsCurrent] = "IsCurrent";
+ return roles;
+}
+
+QModelIndex
+DeviceItemListModel::index(int row, int column, const QModelIndex &parent) const
+{
+ Q_UNUSED(parent);
+ if (column != 0) {
+ return QModelIndex();
+ }
+
+ if (row >= 0 && row < rowCount()) {
+ return createIndex(row, column);
+ }
+ return QModelIndex();
+}
+
+QModelIndex
+DeviceItemListModel::parent(const QModelIndex &child) const
+{
+ Q_UNUSED(child);
+ return QModelIndex();
+}
+
+Qt::ItemFlags
+DeviceItemListModel::flags(const QModelIndex &index) const
+{
+ auto flags = QAbstractItemModel::flags(index) | Qt::ItemNeverHasChildren | Qt::ItemIsSelectable;
+ if (!index.isValid()) {
+ return QAbstractItemModel::flags(index);
+ }
+ return flags;
+}
+
+void
+DeviceItemListModel::reset()
+{
+ beginResetModel();
+ endResetModel();
+}
diff --git a/src/deviceitemlistmodel.h b/src/deviceitemlistmodel.h
new file mode 100644
index 0000000..ff56071
--- /dev/null
+++ b/src/deviceitemlistmodel.h
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2019-2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include <QAbstractItemModel>
+
+#include "api/account.h"
+#include "api/contact.h"
+#include "api/conversation.h"
+#include "api/newdevicemodel.h"
+
+#include "lrcinstance.h"
+
+class DeviceItemListModel : public QAbstractListModel
+{
+ Q_OBJECT
+
+public:
+ enum Role { DeviceName = Qt::UserRole + 1, DeviceID, IsCurrent };
+ Q_ENUM(Role)
+
+ explicit DeviceItemListModel(QObject *parent = 0);
+ ~DeviceItemListModel();
+
+ /*
+ * QAbstractListModel override.
+ */
+ int rowCount(const QModelIndex &parent = QModelIndex()) const override;
+ int columnCount(const QModelIndex &parent) const override;
+ QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
+ /*
+ * Override role name as access point in qml.
+ */
+ QHash<int, QByteArray> roleNames() const override;
+ QModelIndex index(int row, int column = 0, const QModelIndex &parent = QModelIndex()) const;
+ QModelIndex parent(const QModelIndex &child) const;
+ Qt::ItemFlags flags(const QModelIndex &index) const;
+
+ /*
+ * This function is to reset the model when there's new account added.
+ */
+ Q_INVOKABLE void reset();
+};
diff --git a/src/distantrenderer.cpp b/src/distantrenderer.cpp
new file mode 100644
index 0000000..023442b
--- /dev/null
+++ b/src/distantrenderer.cpp
@@ -0,0 +1,65 @@
+/*
+ * Copyright (C) 2019-2020 by Savoir-faire Linux
+ * Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "distantrenderer.h"
+
+#include "lrcinstance.h"
+
+DistantRenderer::DistantRenderer(QQuickItem *parent)
+ : QQuickPaintedItem(parent)
+{
+ setAntialiasing(true);
+ setFillColor(Qt::black);
+ setRenderTarget(QQuickPaintedItem::FramebufferObject);
+ setPerformanceHint(QQuickPaintedItem::FastFBOResizing);
+
+ connect(LRCInstance::renderer(), &RenderManager::distantFrameUpdated, [this](const QString &id) {
+ if (distantRenderId_ == id)
+ update(QRect(0, 0, width(), height()));
+ });
+
+ connect(LRCInstance::renderer(),
+ &RenderManager::distantRenderingStopped,
+ [this](const QString &id) {
+ if (distantRenderId_ == id)
+ update(QRect(0, 0, width(), height()));
+ });
+}
+
+DistantRenderer::~DistantRenderer() {}
+
+void
+DistantRenderer::setRendererId(const QString &id)
+{
+ distantRenderId_ = id;
+ update(QRect(0, 0, width(), height()));
+}
+
+void
+DistantRenderer::paint(QPainter *painter)
+{
+ auto distantImage = LRCInstance::renderer()->getFrame(distantRenderId_);
+ if (distantImage) {
+ auto scaledDistant = distantImage->scaled(size().toSize(), Qt::KeepAspectRatio);
+ auto xDiff = (width() - scaledDistant.width()) / 2;
+ auto yDiff = (height() - scaledDistant.height()) / 2;
+ painter->drawImage(QRect(xDiff, yDiff, scaledDistant.width(), scaledDistant.height()),
+ scaledDistant);
+ }
+}
\ No newline at end of file
diff --git a/src/distantrenderer.h b/src/distantrenderer.h
new file mode 100644
index 0000000..d26f2c2
--- /dev/null
+++ b/src/distantrenderer.h
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include <QtQuick>
+
+/*
+ * Use QQuickPaintedItem so that QPainter apis can be used.
+ * Note: Old video pipeline.
+ */
+
+class DistantRenderer : public QQuickPaintedItem
+{
+ Q_OBJECT
+public:
+ explicit DistantRenderer(QQuickItem *parent = 0);
+ ~DistantRenderer();
+
+ Q_INVOKABLE void setRendererId(const QString &id);
+
+private:
+ void paint(QPainter *painter);
+
+ /*
+ * Unique DistantRenderId for each call.
+ */
+ QString distantRenderId_;
+};
\ No newline at end of file
diff --git a/src/globalsystemtray.cpp b/src/globalsystemtray.cpp
new file mode 100644
index 0000000..a1271c5
--- /dev/null
+++ b/src/globalsystemtray.cpp
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2015-2020 by Savoir-faire Linux
+ * Author: Edric Ladent Milaret <edric.ladent-milaret@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "globalsystemtray.h"
+
+GlobalSystemTray::GlobalSystemTray() {}
+
+void
+GlobalSystemTray::setTriggeredAccountId(const QString &accountId)
+{
+ triggeredAccountId_ = accountId;
+}
+
+const QString &
+GlobalSystemTray::getTriggeredAccountId()
+{
+ return triggeredAccountId_;
+}
+
+void
+GlobalSystemTray::setPossibleOnGoingConversationInfo(const lrc::api::conversation::Info &convInfo)
+{
+ triggeredOnGoingConvInfo_ = convInfo;
+}
+
+const lrc::api::conversation::Info &
+GlobalSystemTray::getPossibleOnGoingConversationInfo()
+{
+ return triggeredOnGoingConvInfo_;
+}
diff --git a/src/globalsystemtray.h b/src/globalsystemtray.h
new file mode 100644
index 0000000..e72713c
--- /dev/null
+++ b/src/globalsystemtray.h
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2015-2020 by Savoir-faire Linux
+ * Author: Edric Ladent Milaret <edric.ladent-milaret@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "lrcinstance.h"
+
+#include <QSystemTrayIcon>
+
+class GlobalSystemTray : public QSystemTrayIcon
+{
+ Q_OBJECT
+
+public:
+ static GlobalSystemTray &
+ instance()
+ {
+ static GlobalSystemTray *instance_ = new GlobalSystemTray();
+
+ return *instance_;
+ }
+
+ /*
+ * Remember the last triggering account for the notification,
+ * safe since user cannot activate previous notifications.
+ */
+ void setTriggeredAccountId(const QString &accountId);
+
+ const QString &getTriggeredAccountId();
+
+ void setPossibleOnGoingConversationInfo(const lrc::api::conversation::Info &convInfo);
+
+ const lrc::api::conversation::Info &getPossibleOnGoingConversationInfo();
+
+private:
+ GlobalSystemTray();
+
+ QString triggeredAccountId_;
+ lrc::api::conversation::Info triggeredOnGoingConvInfo_;
+};
diff --git a/src/jamiavatartheme.h b/src/jamiavatartheme.h
new file mode 100644
index 0000000..08e721a
--- /dev/null
+++ b/src/jamiavatartheme.h
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2017-2020 by Savoir-faire Linux
+ * Author: Edric Ladent Milaret <edric.ladent-milaret@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <QColor>
+
+#pragma once
+
+namespace JamiAvatarTheme {
+static const QColor defaultAvatarColor_ = {"#ff9e9e9e"}; //Grey
+static const QColor avatarColors_[]{
+ {"#fff44336"}, //Red
+ {"#ffe91e63"}, //Pink
+ {"#ff9c27b0"}, //Purple
+ {"#ff673ab7"}, //Deep Purple
+ {"#ff3f51b5"}, //Indigo
+ {"#ff2196f3"}, //Blue
+ {"#ff00bcd4"}, //Cyan
+ {"#ff009688"}, //Teal
+ {"#ff4caf50"}, //Green
+ {"#ff8bc34a"}, //Light Green
+ {"#ff9e9e9e"}, //Grey
+ {"#ffcddc39"}, //Lime
+ {"#ffffc107"}, //Amber
+ {"#ffff5722"}, //Deep Orange
+ {"#ff795548"}, //Brown
+ {"#ff607d8b"} //Blue Grey
+};
+} // namespace JamiAvatarTheme
diff --git a/src/lrcinstance.h b/src/lrcinstance.h
new file mode 100644
index 0000000..16762f1
--- /dev/null
+++ b/src/lrcinstance.h
@@ -0,0 +1,475 @@
+/*
+ * Copyright (C) 2019-2020 by Savoir-faire Linux
+ * Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
+ * Author: Isa Nanic <isa.nanic@savoirfairelinux.com>
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#ifdef _MSC_VER
+#undef ERROR
+#endif
+
+#include "accountlistmodel.h"
+#include "rendermanager.h"
+#include "settingskey.h"
+#include "utils.h"
+
+#include "api/account.h"
+#include "api/avmodel.h"
+#include "api/pluginmodel.h"
+#include "api/behaviorcontroller.h"
+#include "api/contact.h"
+#include "api/contactmodel.h"
+#include "api/conversation.h"
+#include "api/conversationmodel.h"
+#include "api/datatransfermodel.h"
+#include "api/lrc.h"
+#include "api/newaccountmodel.h"
+#include "api/newcallmodel.h"
+#include "api/newcodecmodel.h"
+#include "api/newdevicemodel.h"
+#include "api/peerdiscoverymodel.h"
+
+#include <QBuffer>
+#include <QMutex>
+#include <QObject>
+#include <QPixmap>
+#include <QRegularExpression>
+#include <QSettings>
+#include <QtConcurrent/QtConcurrent>
+
+#include <memory>
+
+using namespace lrc::api;
+
+using migrateCallback = std::function<void()>;
+using getConvPredicate = std::function<bool(const conversation::Info &conv)>;
+
+class LRCInstance : public QObject
+{
+ Q_OBJECT
+
+public:
+ static LRCInstance &
+ instance(migrateCallback willMigrate = {}, migrateCallback didMigrate = {})
+ {
+ static LRCInstance instance_(willMigrate, didMigrate);
+ return instance_;
+ };
+ static void
+ init(migrateCallback willMigrate = {}, migrateCallback didMigrate = {})
+ {
+ instance(willMigrate, didMigrate);
+ };
+ static Lrc &
+ getAPI()
+ {
+ return *(instance().lrc_);
+ };
+ static RenderManager *
+ renderer()
+ {
+ return instance().renderer_.get();
+ }
+ static void
+ connectivityChanged()
+ {
+ instance().lrc_->connectivityChanged();
+ };
+ static NewAccountModel &
+ accountModel()
+ {
+ return instance().lrc_->getAccountModel();
+ };
+ static BehaviorController &
+ behaviorController()
+ {
+ return instance().lrc_->getBehaviorController();
+ };
+ static DataTransferModel &
+ dataTransferModel()
+ {
+ return instance().lrc_->getDataTransferModel();
+ };
+ static AVModel &
+ avModel()
+ {
+ return instance().lrc_->getAVModel();
+ };
+ static PluginModel &
+ pluginModel()
+ {
+ return instance().lrc_->getPluginModel();
+ };
+ static bool
+ isConnected()
+ {
+ return instance().lrc_->isConnected();
+ };
+ static VectorString
+ getActiveCalls()
+ {
+ return instance().lrc_->activeCalls();
+ };
+ static const account::Info &
+ getAccountInfo(const QString &accountId)
+ {
+ return accountModel().getAccountInfo(accountId);
+ };
+ static const account::Info &
+ getCurrentAccountInfo()
+ {
+ return getAccountInfo(getCurrAccId());
+ };
+ static bool
+ hasVideoCall()
+ {
+ auto activeCalls = instance().lrc_->activeCalls();
+ auto accountList = accountModel().getAccountList();
+ bool result = false;
+ for (const auto &callId : activeCalls) {
+ for (const auto &accountId : accountList) {
+ auto &accountInfo = accountModel().getAccountInfo(accountId);
+ if (accountInfo.callModel->hasCall(callId)) {
+ auto call = accountInfo.callModel->getCall(callId);
+ result |= !(call.isAudioOnly || call.videoMuted);
+ }
+ }
+ }
+ return result;
+ };
+ static QString
+ getCallIdForConversationUid(const QString &convUid, const QString &accountId)
+ {
+ auto convInfo = LRCInstance::getConversationFromConvUid(convUid, accountId);
+ if (convInfo.uid.isEmpty()) {
+ return {};
+ }
+ return convInfo.confId.isEmpty() ? convInfo.callId : convInfo.confId;
+ }
+ static const call::Info *
+ getCallInfo(const QString &callId, const QString &accountId)
+ {
+ try {
+ auto &accInfo = LRCInstance::accountModel().getAccountInfo(accountId);
+ if (!accInfo.callModel->hasCall(callId)) {
+ return nullptr;
+ }
+ return &accInfo.callModel->getCall(callId);
+ } catch (...) {
+ return nullptr;
+ }
+ }
+ static const call::Info *
+ getCallInfoForConversation(const conversation::Info &convInfo, bool forceCallOnly = {})
+ {
+ try {
+ auto accountId = convInfo.accountId;
+ auto &accInfo = LRCInstance::accountModel().getAccountInfo(accountId);
+ auto callId = forceCallOnly
+ ? convInfo.callId
+ : (convInfo.confId.isEmpty() ? convInfo.callId : convInfo.confId);
+ if (!accInfo.callModel->hasCall(callId)) {
+ return nullptr;
+ }
+ return &accInfo.callModel->getCall(callId);
+ } catch (...) {
+ return nullptr;
+ }
+ }
+ static const conversation::Info &
+ getConversation(const QString &accountId, getConvPredicate pred = {}, bool filtered = false)
+ {
+ using namespace lrc::api;
+ static conversation::Info invalid = {};
+ try {
+ auto &accInfo = LRCInstance::getAccountInfo(accountId);
+ auto &convModel = accInfo.conversationModel;
+ if (filtered) {
+ auto &convs = convModel->allFilteredConversations();
+ auto conv = std::find_if(convs.begin(), convs.end(), pred);
+ if (conv != convs.end()) {
+ return *conv;
+ }
+ } else {
+ for (int i = Utils::toUnderlyingValue(profile::Type::RING);
+ i <= Utils::toUnderlyingValue(profile::Type::TEMPORARY);
+ ++i) {
+ auto filter = Utils::toEnum<profile::Type>(i);
+ auto &convs = convModel->getFilteredConversations(filter);
+ auto conv = std::find_if(convs.begin(), convs.end(), pred);
+ if (conv != convs.end()) {
+ return *conv;
+ }
+ }
+ }
+ } catch (...) {
+ }
+ return invalid;
+ }
+ static const conversation::Info &
+ getConversationFromCallId(const QString &callId,
+ const QString &accountId = {},
+ bool filtered = false)
+ {
+ return getConversation(
+ !accountId.isEmpty() ? accountId : getCurrAccId(),
+ [&](const conversation::Info &conv) -> bool { return callId == conv.callId; },
+ filtered);
+ }
+ static const conversation::Info &
+ getConversationFromConvUid(const QString &convUid,
+ const QString &accountId = {},
+ bool filtered = false)
+ {
+ return getConversation(
+ !accountId.isEmpty() ? accountId : getCurrAccId(),
+ [&](const conversation::Info &conv) -> bool { return convUid == conv.uid; },
+ filtered);
+ }
+ static const conversation::Info &
+ getConversationFromPeerUri(const QString &peerUri,
+ const QString &accountId = {},
+ bool filtered = false)
+ {
+ return getConversation(
+ !accountId.isEmpty() ? accountId : getCurrAccId(),
+ [&](const conversation::Info &conv) -> bool { return peerUri == conv.participants[0]; },
+ filtered);
+ }
+ static const conversation::Info &
+ getCurrentConversation()
+ {
+ return getConversationFromConvUid(getCurrentConvUid());
+ }
+
+ static ConversationModel *
+ getCurrentConversationModel()
+ {
+ return getCurrentAccountInfo().conversationModel.get();
+ };
+
+ static NewCallModel *
+ getCurrentCallModel()
+ {
+ return getCurrentAccountInfo().callModel.get();
+ };
+
+ static const QString &
+ getCurrAccId()
+ {
+ auto accountList = accountModel().getAccountList();
+ if (instance().selectedAccountId_.isEmpty() && accountList.size()) {
+ instance().selectedAccountId_ = accountList.at(0);
+ }
+ return instance().selectedAccountId_;
+ };
+
+ static void
+ setSelectedAccountId(const QString &accountId = {})
+ {
+ instance().selectedAccountId_ = accountId;
+ QSettings settings("jami.net", "Jami");
+ settings.setValue(SettingsKey::selectedAccount, accountId);
+
+ // Last selected account should be set as preferred.
+ accountModel().setTopAccount(accountId);
+ };
+
+ static const QString &
+ getCurrentConvUid()
+ {
+ return instance().selectedConvUid_;
+ };
+
+ static void
+ setSelectedConvId(const QString &convUid = {})
+ {
+ instance().selectedConvUid_ = convUid;
+ };
+
+ static void
+ reset(bool newInstance = false)
+ {
+ if (newInstance) {
+ instance().renderer_.reset(new RenderManager(avModel()));
+ instance().lrc_.reset(new Lrc());
+ } else {
+ instance().renderer_.reset();
+ instance().lrc_.reset();
+ }
+ };
+
+ static const int
+ getCurrentAccountIndex()
+ {
+ for (int i = 0; i < accountModel().getAccountList().size(); i++) {
+ if (accountModel().getAccountList()[i] == getCurrAccId()) {
+ return i;
+ }
+ }
+ return -1;
+ };
+
+ static const QPixmap
+ getCurrAccPixmap()
+ {
+ return instance()
+ .accountListModel_
+ .data(instance().accountListModel_.index(getCurrentAccountIndex()),
+ AccountListModel::Role::Picture)
+ .value<QPixmap>();
+ };
+
+ static void
+ setAvatarForAccount(const QPixmap &avatarPixmap, const QString &accountID)
+ {
+ QByteArray ba;
+ QBuffer bu(&ba);
+ bu.open(QIODevice::WriteOnly);
+ avatarPixmap.save(&bu, "PNG");
+ auto str = QString::fromLocal8Bit(ba.toBase64());
+ accountModel().setAvatar(accountID, str);
+ };
+
+ static void
+ setCurrAccAvatar(const QPixmap &avatarPixmap)
+ {
+ QByteArray ba;
+ QBuffer bu(&ba);
+ bu.open(QIODevice::WriteOnly);
+ avatarPixmap.save(&bu, "PNG");
+ auto str = QString::fromLocal8Bit(ba.toBase64());
+ accountModel().setAvatar(getCurrAccId(), str);
+ };
+
+ static void
+ setCurrAccAvatar(const QString &avatar)
+ {
+ accountModel().setAvatar(getCurrAccId(), avatar);
+ };
+
+ static void
+ setCurrAccDisplayName(const QString &displayName)
+ {
+ auto accountId = LRCInstance::getCurrAccId();
+ accountModel().setAlias(accountId, displayName);
+ /*
+ * Force save to .yml.
+ */
+ auto confProps = LRCInstance::accountModel().getAccountConfig(accountId);
+ LRCInstance::accountModel().setAccountConfig(accountId, confProps);
+ };
+
+ static const account::ConfProperties_t &
+ getCurrAccConfig()
+ {
+ return instance().getCurrentAccountInfo().confProperties;
+ }
+
+ static void
+ subscribeToDebugReceived()
+ {
+ instance().lrc_->subscribeToDebugReceived();
+ }
+
+ static void
+ startAudioMeter(bool async)
+ {
+ auto f = [] {
+ if (!LRCInstance::getActiveCalls().size()) {
+ LRCInstance::avModel().startAudioDevice();
+ }
+ LRCInstance::avModel().setAudioMeterState(true);
+ };
+ if (async) {
+ QtConcurrent::run(f);
+ } else {
+ f();
+ }
+ }
+
+ static void
+ stopAudioMeter(bool async)
+ {
+ auto f = [] {
+ if (!LRCInstance::getActiveCalls().size()) {
+ LRCInstance::avModel().stopAudioDevice();
+ }
+ LRCInstance::avModel().setAudioMeterState(false);
+ };
+ if (async) {
+ QtConcurrent::run(f);
+ } else {
+ f();
+ }
+ }
+
+ static QString
+ getContentDraft(const QString &convUid, const QString &accountId)
+ {
+ auto draftKey = accountId + "_" + convUid;
+ return instance().contentDrafts_[draftKey];
+ }
+
+ static void
+ setContentDraft(const QString &convUid, const QString &accountId, const QString &content)
+ {
+ auto draftKey = accountId + "_" + convUid;
+ instance().contentDrafts_[draftKey] = content;
+ }
+
+ static void
+ pushLastConferencee(const QString &confId, const QString &callId)
+ {
+ instance().lastConferencees_[confId] = callId;
+ }
+
+ static QString
+ popLastConferencee(const QString &confId)
+ {
+ QString callId = {};
+ auto iter = instance().lastConferencees_.find(confId);
+ if (iter != instance().lastConferencees_.end()) {
+ callId = iter.value();
+ instance().lastConferencees_.erase(iter);
+ }
+ return callId;
+ }
+
+signals:
+ void accountListChanged();
+
+private:
+ LRCInstance(migrateCallback willMigrateCb = {}, migrateCallback didMigrateCb = {})
+ {
+ lrc_ = std::make_unique<Lrc>(willMigrateCb, didMigrateCb);
+ renderer_ = std::make_unique<RenderManager>(lrc_->getAVModel());
+ };
+
+ std::unique_ptr<Lrc> lrc_;
+ std::unique_ptr<RenderManager> renderer_;
+ AccountListModel accountListModel_;
+ QString selectedAccountId_;
+ QString selectedConvUid_;
+ MapStringString contentDrafts_;
+ MapStringString lastConferencees_;
+};
+#if QT_VERSION >= QT_VERSION_CHECK(5, 8, 0)
+Q_DECLARE_METATYPE(LRCInstance *)
+#endif
diff --git a/src/main.cpp b/src/main.cpp
new file mode 100644
index 0000000..2b1349c
--- /dev/null
+++ b/src/main.cpp
@@ -0,0 +1,72 @@
+/*
+ * Copyright (C) 2015-2020 by Savoir-faire Linux
+ * Author: Edric Ladent Milaret <edric.ladent-milaret@savoirfairelinux.com>
+ * Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+#include "mainapplication.h"
+#include "runguard.h"
+
+#include <clocale>
+#include <QCryptographicHash>
+
+#include <clocale>
+
+int
+main(int argc, char *argv[])
+{
+ setlocale(LC_ALL, "en_US.utf8");
+#ifdef Q_OS_LINUX
+ setenv("QT_QPA_PLATFORMTHEME", "gtk3", true);
+#endif
+
+ MainApplication::applicationInitialization();
+
+ char ARG_DISABLE_WEB_SECURITY[] = "--disable-web-security";
+ auto newArgv = MainApplication::parseInputArgument(argc, argv, ARG_DISABLE_WEB_SECURITY);
+
+ MainApplication a(argc, newArgv);
+
+ /*
+ * Runguard to make sure that only one instance runs at a time.
+ * Note: needs to be after the creation of the application
+ */
+ QCryptographicHash appData(QCryptographicHash::Sha256);
+ appData.addData(QApplication::applicationName().toUtf8());
+ appData.addData(QApplication::organizationDomain().toUtf8());
+ RunGuard guard(appData.result());
+ if (!guard.tryToRun()) {
+ /*
+ * No need to exitApp since app is not set up.
+ */
+ return 0;
+ }
+
+ if (!a.applicationSetup()) {
+ guard.release();
+ a.exitApp();
+ return 0;
+ }
+
+ /*
+ * Exec the application.
+ */
+ auto ret = a.exec();
+
+ guard.release();
+ return ret;
+}
diff --git a/src/mainapplication.cpp b/src/mainapplication.cpp
new file mode 100644
index 0000000..938a0eb
--- /dev/null
+++ b/src/mainapplication.cpp
@@ -0,0 +1,450 @@
+/*
+ * Copyright (C) 2015-2020 by Savoir-faire Linux
+ * Author: Edric Ladent Milaret <edric.ladent-milaret@savoirfairelinux.com>
+ * Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "mainapplication.h"
+
+#include "accountadapter.h"
+#include "accountlistmodel.h"
+#include "accountstomigratelistmodel.h"
+#include "audiocodeclistmodel.h"
+#include "audioinputdevicemodel.h"
+#include "audiomanagerlistmodel.h"
+#include "audiooutputdevicemodel.h"
+#include "avadapter.h"
+#include "bannedlistmodel.h"
+#include "calladapter.h"
+#include "clientwrapper.h"
+#include "contactadapter.h"
+#include "conversationsadapter.h"
+#include "deviceitemlistmodel.h"
+#include "pluginitemlistmodel.h"
+#include "preferenceitemlistmodel.h"
+#include "distantrenderer.h"
+#include "globalinstances.h"
+#include "globalsystemtray.h"
+#include "messagesadapter.h"
+#include "namedirectory.h"
+#include "pixbufmanipulator.h"
+#include "previewrenderer.h"
+#include "qrimageprovider.h"
+#include "settingsadaptor.h"
+#include "tintedbuttonimageprovider.h"
+#include "utils.h"
+#include "version.h"
+#include "videocodeclistmodel.h"
+#include "videoformatfpsmodel.h"
+#include "videoformatresolutionmodel.h"
+#include "videoinputdevicemodel.h"
+
+#include <QFontDatabase>
+#include <QQmlContext>
+#include <QtWebEngine>
+
+#include <locale.h>
+
+#ifdef Q_OS_WIN
+#include <windows.h>
+#endif
+
+#if defined _MSC_VER && !COMPILE_ONLY
+#include <gnutls/gnutls.h>
+#endif
+
+MainApplication::MainApplication(int &argc, char **argv)
+ : QApplication(argc, argv)
+ , engine_(new QQmlApplicationEngine())
+{
+ QObject::connect(this, &QApplication::aboutToQuit, [this] { exitApp(); });
+}
+
+void
+MainApplication::applicationInitialization()
+{
+ /*
+ * Some attributes are needed to be set before the creation of the application.
+ */
+ QApplication::setApplicationName("Ring");
+ QApplication::setOrganizationDomain("jami.net");
+ QApplication::setAttribute(Qt::AA_EnableHighDpiScaling, true);
+ QApplication::setAttribute(Qt::AA_UseHighDpiPixmaps);
+ QApplication::setQuitOnLastWindowClosed(false);
+ QCoreApplication::setAttribute(Qt::AA_UseOpenGLES);
+#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)
+ QApplication::setHighDpiScaleFactorRoundingPolicy(
+ Qt::HighDpiScaleFactorRoundingPolicy::RoundPreferFloor);
+ /*
+ * Initialize QtWebEngine.
+ */
+ QtWebEngine::initialize();
+#endif
+}
+
+void
+MainApplication::consoleDebug()
+{
+#ifdef Q_OS_WIN
+ AllocConsole();
+ SetConsoleCP(CP_UTF8);
+
+ freopen("CONOUT$", "w", stdout);
+ freopen("CONOUT$", "w", stderr);
+
+ COORD coordInfo;
+ coordInfo.X = 130;
+ coordInfo.Y = 9000;
+
+ SetConsoleScreenBufferSize(GetStdHandle(STD_OUTPUT_HANDLE), coordInfo);
+ SetConsoleMode(GetStdHandle(STD_OUTPUT_HANDLE), ENABLE_QUICK_EDIT_MODE | ENABLE_EXTENDED_FLAGS);
+#endif
+}
+
+void
+MainApplication::vsConsoleDebug()
+{
+#ifdef _MSC_VER
+ /*
+ * Print debug to output window if using VS.
+ */
+ QObject::connect(&LRCInstance::behaviorController(),
+ &lrc::api::BehaviorController::debugMessageReceived,
+ [](const QString &message) {
+ OutputDebugStringA((message + "\n").toStdString().c_str());
+ });
+#endif
+}
+
+void
+MainApplication::fileDebug(QFile *debugFile)
+{
+ QObject::connect(&LRCInstance::behaviorController(),
+ &lrc::api::BehaviorController::debugMessageReceived,
+ [debugFile](const QString &message) {
+ if (debugFile->open(QIODevice::WriteOnly | QIODevice::Append)) {
+ auto msg = (message + "\n").toStdString().c_str();
+ debugFile->write(msg, qstrlen(msg));
+ debugFile->close();
+ }
+ });
+}
+
+void
+MainApplication::exitApp()
+{
+ GlobalSystemTray::instance().hide();
+#ifdef Q_OS_WIN
+ FreeConsole();
+#endif
+}
+
+char **
+MainApplication::parseInputArgument(int &argc, char *argv[], char *argToParse)
+{
+ /*
+ * Forcefully append argToParse.
+ */
+ int oldArgc = argc;
+ argc = argc + 1 + 1;
+ char **newArgv = new char *[argc];
+ for (int i = 0; i < oldArgc; i++) {
+ newArgv[i] = argv[i];
+ }
+ newArgv[oldArgc] = argToParse;
+ newArgv[oldArgc + 1] = nullptr;
+ return newArgv;
+}
+
+QString
+MainApplication::getDebugFilePath()
+{
+ QDir logPath(QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation));
+ /*
+ * Since logPath will be .../Ring, we use cdUp to remove it.
+ */
+ logPath.cdUp();
+ return QString(logPath.absolutePath() + "/jami/jami.log");
+}
+
+void
+MainApplication::loadTranslations()
+{
+ auto appDir = qApp->applicationDirPath() + "/";
+ const auto locale_name = QLocale::system().name();
+ const auto locale_lang = locale_name.split('_')[0];
+
+ QTranslator *qtTranslator_lang = new QTranslator(this);
+ QTranslator *qtTranslator_name = new QTranslator(this);
+ if (locale_name != locale_lang) {
+ if (qtTranslator_lang->load("qt_" + locale_lang,
+ QLibraryInfo::location(QLibraryInfo::TranslationsPath)))
+ installTranslator(qtTranslator_lang);
+ }
+ qtTranslator_name->load("qt_" + locale_name,
+ QLibraryInfo::location(QLibraryInfo::TranslationsPath));
+ installTranslator(qtTranslator_name);
+
+ QTranslator *lrcTranslator_lang = new QTranslator(this);
+ QTranslator *lrcTranslator_name = new QTranslator(this);
+ if (locale_name != locale_lang) {
+ if (lrcTranslator_lang->load(appDir + "share/libringclient/translations/lrc_" + locale_lang))
+ installTranslator(lrcTranslator_lang);
+ }
+ if (lrcTranslator_name->load(appDir + "share/libringclient/translations/lrc_" + locale_name))
+ installTranslator(lrcTranslator_name);
+
+ QTranslator *mainTranslator_lang = new QTranslator(this);
+ QTranslator *mainTranslator_name = new QTranslator(this);
+ if (locale_name != locale_lang) {
+ if (mainTranslator_lang->load(appDir + "share/ring/translations/ring_client_windows_"
+ + locale_lang))
+ installTranslator(mainTranslator_lang);
+ }
+ if (mainTranslator_name->load(appDir + "share/ring/translations/ring_client_windows_"
+ + locale_name))
+ installTranslator(mainTranslator_name);
+}
+
+void
+MainApplication::initLrc()
+{
+ /*
+ * Init mainwindow and finish splash when mainwindow shows up.
+ */
+ std::atomic_bool isMigrating(false);
+ LRCInstance::init(
+ [this, &isMigrating] {
+ /*
+ * TODO: splash screen for account migration.
+ */
+ isMigrating = true;
+ while (isMigrating) {
+ this->processEvents();
+ }
+ },
+ [this, &isMigrating] {
+ while (!isMigrating) {
+ std::this_thread::sleep_for(std::chrono::milliseconds(10));
+ }
+ isMigrating = false;
+ });
+ LRCInstance::subscribeToDebugReceived();
+ LRCInstance::getAPI().holdConferences = false;
+}
+
+void
+MainApplication::processInputArgument(bool &startMinimized)
+{
+ debugFile_ = std::make_unique<QFile>(getDebugFilePath());
+ QString uri = "";
+
+ for (auto string : QCoreApplication::arguments()) {
+ if (string.startsWith("jami:")) {
+ uri = string;
+ } else {
+ if (string == "-m" || string == "--minimized") {
+ startMinimized = true;
+ }
+ auto dbgFile = string == "-f" || string == "--file";
+ auto dbgConsole = string == "-c" || string == "--vsconsole";
+ if (dbgFile || dbgConsole) {
+ if (dbgFile) {
+ debugFile_->open(QIODevice::WriteOnly | QIODevice::Truncate);
+ debugFile_->close();
+ fileDebug(debugFile_.get());
+ }
+#ifdef _MSC_VER
+ if (dbgConsole) {
+ vsConsoleDebug();
+ }
+#endif
+ }
+ }
+ }
+}
+
+void
+MainApplication::setApplicationFont()
+{
+ QFont font;
+ font.setFamily("Segoe UI");
+ setFont(font);
+ QFontDatabase::addApplicationFont(":/images/FontAwesome.otf");
+}
+
+void
+MainApplication::qmlInitialization()
+{
+ /*
+ * Register accountListModel type.
+ */
+ QML_REGISTERTYPE(AccountListModel, 1, 0);
+ QML_REGISTERTYPE(DeviceItemListModel, 1, 0);
+ QML_REGISTERTYPE(PluginItemListModel, 1, 0);
+ QML_REGISTERTYPE(PreferenceItemListModel, 1, 0);
+ QML_REGISTERTYPE(BannedListModel, 1, 0);
+ QML_REGISTERTYPE(VideoCodecListModel, 1, 0);
+ QML_REGISTERTYPE(AudioCodecListModel, 1, 0);
+ QML_REGISTERTYPE(AccountsToMigrateListModel, 1, 0);
+ QML_REGISTERTYPE(AudioInputDeviceModel, 1, 0);
+ QML_REGISTERTYPE(AudioOutputDeviceModel, 1, 0);
+ QML_REGISTERTYPE(AudioManagerListModel, 1, 0);
+ QML_REGISTERTYPE(VideoInputDeviceModel, 1, 0);
+ QML_REGISTERTYPE(VideoFormatResolutionModel, 1, 0);
+ QML_REGISTERTYPE(VideoFormatFpsModel, 1, 0);
+ /*
+ * Register QQuickItem type.
+ */
+ QML_REGISTERTYPE(PreviewRenderer, 1, 0);
+ QML_REGISTERTYPE(VideoCallPreviewRenderer, 1, 0);
+ QML_REGISTERTYPE(DistantRenderer, 1, 0);
+ QML_REGISTERTYPE(PhotoboothPreviewRender, 1, 0)
+
+ /*
+ * Adapter - qmlRegisterSingletonType.
+ * Note: in future, if lrc is fully compatible with qml (C++ struct
+ * is readable in qml), the adapters can be optimized away.
+ */
+ QML_REGISTERSINGLETONTYPE_URL(QStringLiteral("qrc:/src/constant/JamiTheme.qml"),
+ JamiTheme,
+ 1,
+ 0);
+ QML_REGISTERSINGLETONTYPE(CallAdapter, 1, 0);
+
+ QML_REGISTERSINGLETONTYPE(MessagesAdapter, 1, 0);
+ QML_REGISTERSINGLETONTYPE(ConversationsAdapter, 1, 0);
+ QML_REGISTERSINGLETONTYPE(AvAdapter, 1, 0);
+ QML_REGISTERSINGLETONTYPE(ContactAdapter, 1, 0);
+ QML_REGISTERSINGLETONTYPE(ClientWrapper, 1, 0);
+
+ //QML_REGISTERSINGLETONTYPE_WITH_INSTANCE(AccountAdapter, 1, 0);
+ //QML_REGISTERSINGLETONTYPE_WITH_INSTANCE(UtilsAdapter, 1, 0);
+ QML_REGISTERUNCREATABLE(AccountAdapter, 1, 0);
+ QML_REGISTERUNCREATABLE(UtilsAdapter, 1, 0);
+ QML_REGISTERUNCREATABLE(SettingsAdaptor, 1, 0);
+ QML_REGISTERUNCREATABLE(NameDirectory, 1, 0);
+ QML_REGISTERUNCREATABLE(LRCInstance, 1, 0);
+
+ /*
+ * Lrc models - qmlRegisterUncreatableType & Q_DECLARE_METATYPE.
+ * This to make lrc models recognizable in qml.
+ */
+ QML_REGISTERUNCREATABLE_IN_NAMESPACE(NewAccountModel, lrc::api, 1, 0);
+ QML_REGISTERUNCREATABLE_IN_NAMESPACE(BehaviorController, lrc::api, 1, 0);
+ QML_REGISTERUNCREATABLE_IN_NAMESPACE(DataTransferModel, lrc::api, 1, 0);
+ QML_REGISTERUNCREATABLE_IN_NAMESPACE(AVModel, lrc::api, 1, 0);
+ QML_REGISTERUNCREATABLE_IN_NAMESPACE(ContactModel, lrc::api, 1, 0);
+ QML_REGISTERUNCREATABLE_IN_NAMESPACE(ConversationModel, lrc::api, 1, 0);
+ QML_REGISTERUNCREATABLE_IN_NAMESPACE(NewCallModel, lrc::api, 1, 0);
+ QML_REGISTERUNCREATABLE_IN_NAMESPACE(PluginModel, lrc::api, 1, 0);
+ QML_REGISTERUNCREATABLE_IN_NAMESPACE(NewDeviceModel, lrc::api, 1, 0);
+ QML_REGISTERUNCREATABLE_IN_NAMESPACE(NewCodecModel, lrc::api, 1, 0);
+ QML_REGISTERUNCREATABLE_IN_NAMESPACE(PeerDiscoveryModel, lrc::api, 1, 0);
+
+ /*
+ * Client models - qmlRegisterUncreatableType & Q_DECLARE_METATYPE.
+ * This to make client models recognizable in qml.
+ */
+ QML_REGISTERUNCREATABLE(RenderManager, 1, 0);
+
+ /*
+ * Namespaces - qmlRegisterUncreatableMetaObject.
+ */
+ QML_REGISTERNAMESPACE(lrc::api::staticMetaObject, "Lrc", 1, 0);
+ QML_REGISTERNAMESPACE(lrc::api::account::staticMetaObject, "Account", 1, 0);
+ QML_REGISTERNAMESPACE(lrc::api::call::staticMetaObject, "Call", 1, 0);
+ QML_REGISTERNAMESPACE(lrc::api::datatransfer::staticMetaObject, "Datatransfer", 1, 0);
+ QML_REGISTERNAMESPACE(lrc::api::interaction::staticMetaObject, "Interaction", 1, 0);
+ QML_REGISTERNAMESPACE(lrc::api::video::staticMetaObject, "Video", 1, 0);
+ QML_REGISTERNAMESPACE(lrc::api::profile::staticMetaObject, "Profile", 1, 0);
+
+ /*
+ * Add image provider.
+ */
+ engine_->addImageProvider(QLatin1String("qrImage"), new QrImageProvider());
+ engine_->addImageProvider(QLatin1String("tintedPixmap"), new TintedButtonImageProvider());
+
+ engine_->load(QUrl(QStringLiteral("qrc:/src/MainApplicationWindow.qml")));
+}
+
+MainApplication::~MainApplication() {}
+
+bool
+MainApplication::applicationSetup()
+{
+#ifdef Q_OS_LINUX
+ if (!getenv("QT_QPA_PLATFORMTHEME"))
+ setenv("QT_QPA_PLATFORMTHEME", "gtk3", true);
+#endif
+
+ /*
+ * Start debug console.
+ */
+ for (auto string : QCoreApplication::arguments()) {
+ if (string == "-d" || string == "--debug") {
+ consoleDebug();
+ }
+ }
+
+ /*
+ * Remove old version files.
+ */
+ Utils::removeOldVersions();
+
+ /*
+ * Load translations.
+ */
+ loadTranslations();
+
+ /*
+ * Set font.
+ */
+ setApplicationFont();
+
+#if defined _MSC_VER && !COMPILE_ONLY
+ gnutls_global_init();
+#endif
+
+ /*
+ * Init pixmap manipulator.
+ */
+ GlobalInstances::setPixmapManipulator(std::make_unique<PixbufManipulator>());
+
+ /*
+ * Init lrc and its possible migration ui.
+ */
+ initLrc();
+
+ /*
+ * Process input argument.
+ */
+ bool startMinimized{false};
+ processInputArgument(startMinimized);
+
+ /*
+ * Create jami.net settings in Registry if it is not presented.
+ */
+ QSettings settings("jami.net", "Jami");
+
+ /*
+ * Initialize qml components.
+ */
+ qmlInitialization();
+
+ return true;
+}
diff --git a/src/mainapplication.h b/src/mainapplication.h
new file mode 100644
index 0000000..ae51ac6
--- /dev/null
+++ b/src/mainapplication.h
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Edric Ladent Milaret <edric.ladent-milaret@savoirfairelinux.com>
+ * Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include <QFile>
+#include <QApplication>
+#include <QQmlApplicationEngine>
+#include <QQmlEngine>
+
+#include <memory>
+
+class MainApplication : public QApplication
+{
+ Q_OBJECT
+
+public:
+ explicit MainApplication(int &argc, char **argv);
+ ~MainApplication();
+
+ bool applicationSetup();
+ void exitApp();
+
+ static void applicationInitialization();
+ static QString getDebugFilePath();
+ static char **parseInputArgument(int &argc, char *argv[], char *argToParse);
+
+protected:
+ void consoleDebug();
+ void vsConsoleDebug();
+ void fileDebug(QFile *debugFile);
+
+private:
+ void loadTranslations();
+ void initLrc();
+ void processInputArgument(bool &startMinimized);
+ void setApplicationFont();
+ void qmlInitialization();
+
+ std::unique_ptr<QFile> debugFile_;
+ QQmlApplicationEngine *engine_;
+};
diff --git a/src/mainview/MainView.qml b/src/mainview/MainView.qml
new file mode 100644
index 0000000..6bf2ff5
--- /dev/null
+++ b/src/mainview/MainView.qml
@@ -0,0 +1,506 @@
+
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+import QtQuick 2.14
+import QtQuick.Window 2.14
+import QtQuick.Controls 2.14
+import QtQuick.Layouts 1.14
+import QtQuick.Controls.Universal 2.12
+import QtGraphicalEffects 1.14
+import net.jami.Models 1.0
+
+
+/*
+ * Import qml component files.
+ */
+import "components"
+import "../settingsview"
+
+Window {
+ id: mainViewWindow
+
+ property int minWidth: sidePanelViewStackPreferedWidth
+ property int minHeight: aboutPopUpDialog.contentHeight
+
+ property int mainViewWindowPreferedWidth: 650
+ property int mainViewWindowPreferedHeight: 600
+ property int sidePanelViewStackPreferedWidth: 250
+ property int welcomePageGroupPreferedWidth: 250
+ property int aboutPopUpPreferedWidth: 250
+
+
+ /*
+ * To calculate tab bar bottom border hidden rect left margin.
+ */
+ property int tabBarLeftMargin: 8
+ property int tabButtonShrinkSize: 8
+
+ signal noAccountIsAvailable
+ signal needToAddNewAccount
+ signal closeApp
+
+ function newAccountAdded(index) {
+ mainViewWindowSidePanel.refreshAccountComboBox(index)
+ }
+
+ function recursionStackViewItemMove(stackOne, stackTwo) {
+
+
+ /*
+ * Move all items (expect the bottom item) to stacktwo by the same order in stackone.
+ */
+ if (stackOne.depth === 1) {
+ return
+ }
+
+ var tempItem = stackOne.pop(StackView.Immediate)
+ recursionStackViewItemMove(stackOne, stackTwo)
+ stackTwo.push(tempItem, StackView.Immediate)
+ }
+
+ title: "Jami"
+ visible: true
+ width: mainViewWindowPreferedWidth
+ height: mainViewWindowPreferedHeight
+ minimumWidth: minWidth
+ minimumHeight: minHeight
+
+ Connections {
+ target: CallAdapter
+
+ function onShowCallStack(accountId, convUid, forceReset) {
+ if (forceReset) {
+ callStackView.responsibleAccountId = accountId
+ callStackView.responsibleConvUid = convUid
+ }
+
+
+ /*
+ * Check if it is coming from the current responsible call,
+ * and push views onto the correct stackview
+ */
+ if (callStackView.responsibleAccountId === accountId
+ && callStackView.responsibleConvUid === convUid) {
+ if (welcomeViewStack.visible) {
+ welcomeViewStack.pop(null, StackView.Immediate)
+ welcomeViewStack.push(callStackView, StackView.Immediate)
+ } else {
+ sidePanelViewStack.pop(null, StackView.Immediate)
+ sidePanelViewStack.push(callStackView, StackView.Immediate)
+ }
+ }
+ }
+
+ function onCloseCallStack(accountId, convUid) {
+
+
+ /*
+ * Check if call stack view is on any of the stackview.
+ */
+ if (callStackView.responsibleAccountId === accountId
+ && callStackView.responsibleConvUid === convUid) {
+ if (welcomeViewStack.find(function (item, index) {
+ return item.objectName === "callStackViewObject"
+ }) || sidePanelViewStack.find(function (item, index) {
+ return item.objectName === "callStackViewObject"
+ })) {
+ callStackView.needToCloseInCallConversationAndPotentialWindow()
+ if (welcomeViewStack.visible) {
+ welcomeViewStack.pop(null, StackView.Immediate)
+ welcomeViewStack.push(communicationPageMessageWebView,
+ StackView.Immediate)
+ } else {
+ sidePanelViewStack.pop(null, StackView.Immediate)
+ sidePanelViewStack.push(
+ communicationPageMessageWebView,
+ StackView.Immediate)
+ }
+ }
+ }
+ }
+
+ function onIncomingCallNeedToSetupMainView(accountId, convUid) {
+
+
+ /*
+ * Set up the call stack view that is needed by call overlay.
+ */
+ welcomeViewStack.pop(null, StackView.Immediate)
+ sidePanelViewStack.pop(null, StackView.Immediate)
+
+ var index = ClientWrapper.utilsAdaptor.getCurrAccList().indexOf(accountId)
+ var name = ClientWrapper.utilsAdaptor.getBestName(accountId, convUid)
+ var id = ClientWrapper.utilsAdaptor.getBestId(accountId, convUid)
+
+ communicationPageMessageWebView.headerUserAliasLabelText = name
+ communicationPageMessageWebView.headerUserUserNameLabelText = (name !== id) ? id : ""
+
+ callStackView.needToCloseInCallConversationAndPotentialWindow()
+ callStackView.setCorrspondingMessageWebView(
+ communicationPageMessageWebView)
+
+ callStackView.responsibleAccountId = accountId
+ callStackView.responsibleConvUid = convUid
+ callStackView.updateCorrspondingUI()
+
+ mainViewWindowSidePanel.needToChangeToAccount(accountId, index)
+ ConversationsAdapter.selectConversation(accountId, convUid)
+
+ MessagesAdapter.setupChatView(convUid)
+ }
+ }
+
+ StackLayout {
+ id: mainViewStackLayout
+
+ anchors.fill: parent
+
+ currentIndex: 0
+
+ SplitView {
+ id: splitView
+
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+
+ width: mainViewWindow.width
+ height: mainViewWindow.height
+
+ handle: Rectangle {
+ implicitWidth: JamiTheme.splitViewHandlePreferedWidth
+ implicitHeight: splitView.height
+ color: SplitHandle.pressed ? JamiTheme.pressColor : (SplitHandle.hovered ? JamiTheme.hoverColor : JamiTheme.tabbarBorderColor)
+ }
+
+ StackView {
+ id: sidePanelViewStack
+
+ property int maximumWidth: sidePanelViewStackPreferedWidth + 100
+
+ initialItem: mainViewWindowSidePanel
+
+ SplitView.minimumWidth: sidePanelViewStackPreferedWidth
+ SplitView.maximumWidth: maximumWidth
+ SplitView.fillHeight: true
+
+ clip: true
+ }
+
+ StackView {
+ id: welcomeViewStack
+
+ initialItem: welcomePage
+
+ SplitView.maximumWidth: splitView.width - sidePanelViewStack.width
+ SplitView.fillHeight: true
+
+ clip: true
+ }
+ }
+
+ SettingsView {
+ id: settingsView
+
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+
+ onSettingsViewWindowNeedToShowMainViewWindow: {
+ mainViewWindowSidePanel.refreshAccountComboBox(
+ accountDeleted ? 0 : -1)
+ mainViewStackLayout.currentIndex = 0
+ }
+
+ onSettingsViewWindowNeedToShowNewWizardWindow: {
+ mainViewWindow.noAccountIsAvailable()
+ }
+ }
+ }
+
+ AccountListModel {
+ id: accountListModel
+ }
+
+ SidePanel {
+ id: mainViewWindowSidePanel
+
+ onSettingBtnClicked_AccountComboBox: {
+ mainViewStackLayout.currentIndex = 1
+ }
+
+ onConversationSmartListNeedToAccessMessageWebView: {
+
+ communicationPageMessageWebView.headerUserAliasLabelText = currentUserAlias
+ communicationPageMessageWebView.headerUserUserNameLabelText = currentUserDisplayName
+
+ callStackView.needToCloseInCallConversationAndPotentialWindow()
+ callStackView.responsibleAccountId = ClientWrapper.utilsAdaptor.getCurrAccId()
+ callStackView.responsibleConvUid = currentUID
+ callStackView.updateCorrspondingUI()
+
+ if (callStackViewShouldShow) {
+ if (callStateStr == "Talking" || callStateStr == "Hold") {
+ ClientWrapper.utilsAdaptor.setCurrentCall(
+ ClientWrapper.utilsAdaptor.getCurrAccId(),
+ currentUID)
+ if (isAudioOnly)
+ callStackView.showAudioCallPage()
+ else
+ callStackView.showVideoCallPage(
+ ClientWrapper.utilsAdaptor.getCallId(
+ callStackView.responsibleAccountId,
+ callStackView.responsibleConvUid))
+ } else {
+ callStackView.showOutgoingCallPage(callStateStr)
+ }
+ }
+
+
+ /*
+ * Set up chatview.
+ */
+ MessagesAdapter.setupChatView(currentUID)
+ callStackView.setCorrspondingMessageWebView(
+ communicationPageMessageWebView)
+
+ if (welcomeViewStack.find(function (item, index) {
+ return item.objectName === "communicationPageMessageWebView"
+ }) || sidePanelViewStack.find(function (item, index) {
+ return item.objectName === "communicationPageMessageWebView"
+ })) {
+ if (!callStackViewShouldShow)
+ return
+ }
+
+
+ /*
+ * Push messageWebView or callStackView onto the correct stackview
+ */
+ welcomeViewStack.pop(null, StackView.Immediate)
+ sidePanelViewStack.pop(null, StackView.Immediate)
+
+ if (sidePanelViewStack.visible && welcomeViewStack.visible) {
+ if (callStackViewShouldShow) {
+ welcomeViewStack.push(callStackView)
+ } else {
+ welcomeViewStack.push(communicationPageMessageWebView)
+ }
+ } else if (sidePanelViewStack.visible
+ && !welcomeViewStack.visible) {
+ if (callStackViewShouldShow) {
+ sidePanelViewStack.push(callStackView)
+ } else {
+ sidePanelViewStack.push(communicationPageMessageWebView)
+ }
+ } else if (!sidePanelViewStack.visible
+ && !welcomeViewStack.visible) {
+ if (callStackViewShouldShow) {
+ sidePanelViewStack.push(callStackView)
+ } else {
+ sidePanelViewStack.push(communicationPageMessageWebView)
+ }
+ }
+ }
+
+ onAccountComboBoxNeedToShowWelcomePage: {
+
+
+ /*
+ * If the item argument is specified, all items down to (but not including) item will be popped.
+ */
+ welcomeViewStack.pop(welcomePage)
+ welcomePage.currentAccountIndex = index
+ qrDialog.currentAccountIndex = index
+ }
+
+ onConversationSmartListViewNeedToShowWelcomePage: {
+ welcomeViewStack.pop(welcomePage)
+ welcomePage.currentAccountIndex = 0
+ qrDialog.currentAccountIndex = 0
+ }
+
+ onAccountSignalsReconnect: {
+ MessagesAdapter.accountChangedSetUp(accountId)
+ }
+
+ onNeedToUpdateConversationForAddedContact: {
+ MessagesAdapter.updateConversationForAddedContact()
+ mainViewWindowSidePanel.clearContactSearchBar()
+ mainViewWindowSidePanel.forceReselectConversationSmartListCurrentIndex()
+ }
+
+ onNeedToAddNewAccount: {
+ mainViewWindow.needToAddNewAccount()
+ }
+ }
+
+ CallStackView {
+ id: callStackView
+
+ visible: false
+
+ objectName: "callStackViewObject"
+
+ onCallPageBackButtonIsClicked: {
+ mainViewWindowSidePanel.deselectConversationSmartList()
+ if (welcomeViewStack.visible)
+ welcomeViewStack.pop(welcomePage)
+ else if (sidePanelViewStack.visible)
+ sidePanelViewStack.pop(mainViewWindowSidePanel)
+ }
+
+ onOutgoingCallPageBackButtonIsClicked: {
+ mainViewWindowSidePanel.deselectConversationSmartList()
+ if (welcomeViewStack.visible)
+ welcomeViewStack.pop(welcomePage)
+ else if (sidePanelViewStack.visible)
+ sidePanelViewStack.pop(mainViewWindowSidePanel)
+ }
+ }
+
+ WelcomePage {
+ id: welcomePage
+ visible: false
+ }
+
+ MessageWebView {
+ id: communicationPageMessageWebView
+
+ objectName: "communicationPageMessageWebView"
+
+ signal toSendMessageContentSaved(string arg)
+ signal toMessagesCleared
+ signal toMessagesLoaded
+
+ visible: false
+
+ Connections {
+ target: MessagesAdapter
+
+ function onNeedToUpdateSmartList() {
+ mainViewWindowSidePanel.forceUpdateConversationSmartListView()
+ }
+ }
+
+ onNeedToGoBackToWelcomeView: {
+ mainViewWindowSidePanel.deselectConversationSmartList()
+ if (communicationPageMessageWebView.visible
+ && !welcomeViewStack.visible) {
+ sidePanelViewStack.pop()
+ } else if (communicationPageMessageWebView.visible
+ && welcomeViewStack.visible) {
+ welcomeViewStack.pop()
+ }
+ }
+
+ Component.onCompleted: {
+
+
+ /*
+ * Set qml MessageWebView object pointer to c++.
+ */
+ MessagesAdapter.setQmlObject(this)
+ }
+ }
+
+ onWidthChanged: {
+
+
+ /*
+ * Hide unnecessary stackview when width is changed.
+ */
+ if (mainViewWindow.width < sidePanelViewStackPreferedWidth
+ + welcomePageGroupPreferedWidth - 5
+ && welcomeViewStack.visible) {
+ welcomeViewStack.visible = false
+
+
+ /*
+ * The find callback function is called for each item in the stack.
+ */
+ var inWelcomeViewStack = welcomeViewStack.find(
+ function (item, index) {
+ return index > 0
+ })
+ if (inWelcomeViewStack) {
+ recursionStackViewItemMove(welcomeViewStack, sidePanelViewStack)
+ }
+
+ sidePanelViewStack.maximumWidth = splitView.width
+
+ mainViewWindow.update()
+ } else if (mainViewWindow.width >= sidePanelViewStackPreferedWidth
+ + welcomePageGroupPreferedWidth + 5
+ && !welcomeViewStack.visible) {
+ welcomeViewStack.visible = true
+
+ var inSidePanelViewStack = sidePanelViewStack.find(
+ function (item, index) {
+ return index > 0
+ })
+ if (inSidePanelViewStack) {
+ recursionStackViewItemMove(sidePanelViewStack, welcomeViewStack)
+ }
+
+ sidePanelViewStack.maximumWidth = sidePanelViewStackPreferedWidth + 100
+
+ mainViewWindow.update()
+ }
+ }
+
+ AboutPopUp {
+ id: aboutPopUpDialog
+
+ x: Math.round((mainViewWindow.width - width) / 2)
+ y: Math.round((mainViewWindow.height - height) / 2)
+ width: Math.max(mainViewWindow.width / 2, aboutPopUpPreferedWidth)
+ height: aboutPopUpDialog.contentHeight
+ }
+
+ WelcomePageQrDialog {
+ id: qrDialog
+
+ x: Math.round((mainViewWindow.width - width) / 2)
+ y: Math.round((mainViewWindow.height - height) / 2)
+ width: qrDialog.contentHeight
+ height: qrDialog.contentHeight
+ }
+
+ RecordBox{
+ id: recordBox
+ visible: false
+ }
+
+ UserProfile {
+ id: userProfile
+
+ x: Math.round((mainViewWindow.width - width) / 2)
+ y: Math.round((mainViewWindow.height - height) / 2)
+ width: Math.max(mainViewWindow.width / 2, aboutPopUpPreferedWidth)
+ height: userProfile.contentHeight
+ }
+
+ Component.onCompleted: {
+ CallAdapter.initQmlObject()
+ }
+
+ onClosing: {
+ close.accepted = false
+ mainViewWindow.hide()
+ mainViewWindow.closeApp()
+ }
+}
diff --git a/src/mainview/components/AboutPopUp.qml b/src/mainview/components/AboutPopUp.qml
new file mode 100644
index 0000000..f13c46a
--- /dev/null
+++ b/src/mainview/components/AboutPopUp.qml
@@ -0,0 +1,308 @@
+
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+import QtQuick 2.14
+import QtQuick.Controls 2.14
+import QtQuick.Layouts 1.14
+import net.jami.Models 1.0
+
+import "../../commoncomponents"
+
+Dialog {
+ id: aboutPopUp
+
+
+ /*
+ * When dialog is opened, trigger mainViewWindow overlay which is defined in overlay.model (model : true is necessary).
+ */
+ modal: true
+
+
+ /*
+ * Content height + margin.
+ */
+ contentHeight: aboutPopUpContentRectColumnLayout.height + 5 * 7
+
+ ProjectCreditsScrollView {
+ id: projectCreditsScrollView
+
+ visible: false
+ }
+
+ ChangeLogScrollView {
+ id: changeLogScrollView
+
+ visible: false
+ }
+
+ Rectangle {
+ id: aboutPopUpContentRect
+
+ anchors.fill: parent
+
+ ColumnLayout {
+ id: aboutPopUpContentRectColumnLayout
+
+ Image {
+ id: aboutPopUPJamiLogoImage
+
+ Layout.alignment: Qt.AlignCenter
+ Layout.preferredWidth: aboutPopUpContentRect.width
+ Layout.preferredHeight: 100
+
+ fillMode: Image.PreserveAspectFit
+ source: "qrc:/images/logo-jami-standard-coul.png"
+ mipmap: true
+ }
+
+ Label {
+ id: jamiVersionText
+
+ Layout.alignment: Qt.AlignCenter
+ Layout.preferredWidth: aboutPopUpContentRect.width
+ Layout.preferredHeight: textMetricsjamiVersionText.boundingRect.height
+
+ font.pointSize: JamiTheme.textFontSize - 2
+
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+
+ text: textMetricsjamiVersionText.text
+
+ TextMetrics {
+ id: textMetricsjamiVersionText
+ font: jamiVersionText.font
+ text: qsTr("version") + ": " + ClientWrapper.utilsAdaptor.getVersionStr()
+ }
+ }
+
+ Label {
+ id: jamiSlogansText
+
+ Layout.alignment: Qt.AlignCenter
+ Layout.preferredWidth: aboutPopUpContentRect.width
+ Layout.preferredHeight: textMetricsjamiSlogansText.boundingRect.height
+ Layout.topMargin: 5
+
+ wrapMode: Text.WordWrap
+ font.pointSize: JamiTheme.textFontSize - 2
+
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+
+ text: textMetricsjamiSlogansText.text
+
+ TextMetrics {
+ id: textMetricsjamiSlogansText
+ font: jamiSlogansText.font
+ text: qsTr("Free as in Freedom")
+ }
+ }
+
+ Label {
+ id: jamiDeclarationText
+
+ Layout.alignment: Qt.AlignCenter
+ Layout.preferredWidth: aboutPopUpContentRect.width
+ Layout.preferredHeight: 40
+ Layout.topMargin: 5
+
+ wrapMode: Text.WordWrap
+ font.pointSize: JamiTheme.textFontSize - 2
+
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+
+
+ /*
+ * TextMetrics does not work for multi-line.
+ */
+ text: qsTr("The Microsoft Windows client for Jami.\nJami is a secured and distributed communciation software.")
+ }
+
+ Label {
+ id: jamiDeclarationHyperText
+
+ Layout.alignment: Qt.AlignCenter
+
+
+ /*
+ * Strangely, hoveredLink works badly when width grows too large
+ */
+ Layout.preferredWidth: 50
+ Layout.preferredHeight: textMetricsjamiDeclarationHyperText.boundingRect.height
+ Layout.topMargin: 5
+ Layout.bottomMargin: 5
+
+ font.pointSize: JamiTheme.textFontSize - 2
+
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+
+ text: textMetricsjamiDeclarationHyperText.text
+ onLinkActivated: Qt.openUrlExternally(link)
+
+ TextMetrics {
+ id: textMetricsjamiDeclarationHyperText
+ font: jamiDeclarationHyperText.font
+ text: '<html><style type="text/css"></style><a href="https://jami.net">jami.net</a></html>'
+ }
+
+ MouseArea {
+ anchors.fill: parent
+
+
+ /*
+ * We don't want to eat clicks on the Text.
+ */
+ acceptedButtons: Qt.NoButton
+ cursorShape: parent.hoveredLink ? Qt.PointingHandCursor : Qt.ArrowCursor
+ }
+ }
+
+ Label {
+ id: jamiDeclarationYearText
+
+ Layout.alignment: Qt.AlignCenter
+ Layout.preferredWidth: aboutPopUpContentRect.width
+ Layout.preferredHeight: textMetricsjamiDeclarationYearText.boundingRect.height
+ Layout.bottomMargin: 5
+
+ font.pointSize: JamiTheme.textFontSize - 2
+
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+
+ text: textMetricsjamiDeclarationYearText.text
+
+ TextMetrics {
+ id: textMetricsjamiDeclarationYearText
+ font: jamiDeclarationYearText.font
+ text: "© 2015-2020 Savoir-faire Linux"
+ }
+ }
+
+ Label {
+ id: jamiNoneWarrantyHyperText
+
+ Layout.alignment: Qt.AlignCenter
+ Layout.preferredWidth: Math.min(300,
+ aboutPopUpContentRect.width)
+ Layout.preferredHeight: textMetricsjamiNoneWarrantyHyperText.boundingRect.height * 2
+ Layout.bottomMargin: 10
+
+ wrapMode: Text.WordWrap
+ font.pointSize: JamiTheme.textFontSize - 3
+
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+
+ text: textMetricsjamiNoneWarrantyHyperText.text
+ onLinkActivated: Qt.openUrlExternally(link)
+
+ TextMetrics {
+ id: textMetricsjamiNoneWarrantyHyperText
+ font: jamiDeclarationHyperText.font
+ text: '<html><style type="text/css"></style>This program comes with absolutely no warranty.<br\>See the <a href="http://www.gnu.org/licenses/gpl-3.0.html">GNU General Public License, version 3 or later</a> for details.</html>'
+ }
+
+ MouseArea {
+ anchors.fill: parent
+ acceptedButtons: Qt.NoButton
+ cursorShape: parent.hoveredLink ? Qt.PointingHandCursor : Qt.ArrowCursor
+ }
+ }
+
+ Rectangle {
+ id: buttonGroupChangeLogAndCredits
+
+ Layout.alignment: Qt.AlignCenter
+ Layout.preferredWidth: aboutPopUpContentRect.width
+ Layout.preferredHeight: 30
+ Layout.bottomMargin: 10
+
+ RowLayout {
+ id: buttonGroupChangeLogAndCreditsRowLayout
+
+ anchors.fill: parent
+
+ HoverableButton {
+ id: changeLogButton
+
+ Layout.alignment: Qt.AlignCenter
+ Layout.preferredWidth: textMetricschangeLogButton.boundingRect.width + 20
+ Layout.preferredHeight: 30
+
+ radius: 10
+ fontPointSize: JamiTheme.textFontSize - 2
+ text: textMetricschangeLogButton.text
+
+ TextMetrics {
+ id: textMetricschangeLogButton
+ font: changeLogButton.font
+ text: qsTr("Change Log")
+ }
+
+ onClicked: {
+ if (changeLogOrCreditsStack.depth > 1) {
+ changeLogOrCreditsStack.pop()
+ }
+ }
+ }
+
+ HoverableButton {
+ id: creditsButton
+
+ Layout.alignment: Qt.AlignCenter
+ Layout.preferredWidth: changeLogButton.width
+ Layout.preferredHeight: 30
+
+ radius: 10
+ fontPointSize: JamiTheme.textFontSize - 2
+ text: qsTr("Credits")
+
+ onClicked: {
+ if (changeLogOrCreditsStack.depth == 1) {
+ changeLogOrCreditsStack.push(
+ projectCreditsScrollView)
+ }
+ }
+ }
+ }
+ }
+
+ StackView {
+ id: changeLogOrCreditsStack
+
+ Layout.alignment: Qt.AlignCenter
+ Layout.preferredWidth: aboutPopUpContentRect.width
+ Layout.preferredHeight: 150
+ Layout.bottomMargin: 5
+
+ initialItem: changeLogScrollView
+
+ clip: true
+ }
+ }
+ }
+
+ background: Rectangle {
+ border.width: 0
+ radius: 10
+ }
+}
diff --git a/src/mainview/components/AccountComboBox.qml b/src/mainview/components/AccountComboBox.qml
new file mode 100644
index 0000000..23225f7
--- /dev/null
+++ b/src/mainview/components/AccountComboBox.qml
@@ -0,0 +1,303 @@
+
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+import QtQuick 2.14
+import QtQuick.Controls 2.14
+import QtQuick.Layouts 1.14
+import net.jami.Models 1.0
+
+import "../../commoncomponents"
+
+ComboBox {
+ id: accountComboBox
+
+ signal accountChanged(int index)
+ signal needToBackToWelcomePage(int index)
+ signal needToUpdateSmartList(string accountId)
+ signal newAccountButtonClicked
+ signal settingBtnClicked
+
+ currentIndex: 0
+
+ function backToWelcomePage(index) {
+ accountComboBox.needToBackToWelcomePage(index)
+ }
+
+ function updateSmartList(accountId) {
+ accountComboBox.needToUpdateSmartList(accountId)
+ }
+
+
+ /*
+ * Refresh every item in accountListModel.
+ */
+ function updateAccountListModel() {
+ accountListModel.dataChanged(accountListModel.index(0, 0),
+ accountListModel.index(
+ accountListModel.rowCount() - 1, 0))
+ }
+
+
+ /*
+ * Reset accountListModel.
+ */
+ function resetAccountListModel() {
+ accountListModel.reset()
+ }
+
+ Image {
+ id: userImageRoot
+
+ anchors.left: accountComboBox.left
+ anchors.leftMargin: 5
+ anchors.verticalCenter: accountComboBox.verticalCenter
+
+ width: accountComboBox.height - 10
+ height: accountComboBox.height - 10
+
+ fillMode: Image.PreserveAspectFit
+
+
+ /*
+ * Base 64 format
+ */
+ source: {
+ if (currentIndex !== -1)
+ return "data:image/png;base64," + accountListModel.data(
+ accountListModel.index(
+ accountComboBox.currentIndex, 0), 259)
+ else
+ return source
+ }
+ mipmap: true
+
+ Rectangle {
+ id: presenseRect
+
+ anchors.right: userImageRoot.right
+ anchors.rightMargin: 1
+ anchors.bottom: userImageRoot.bottom
+ anchors.bottomMargin: 2
+
+ width: 14
+ height: 14
+
+
+ /*
+ * Visible when account is registered, enum REGISTERED == 5.
+ */
+ visible: {
+ if (currentIndex !== -1)
+ return accountListModel.data(
+ accountListModel.index(
+ accountComboBox.currentIndex, 0), 261) === 5
+ else
+ return visible
+ }
+
+ Rectangle {
+ id: presenseCycle
+
+ anchors.centerIn: presenseRect
+
+ width: 10
+ height: 10
+
+ radius: 30
+ color: JamiTheme.presenceGreen
+ }
+
+ radius: 30
+ color: "white"
+ }
+ }
+
+ Text {
+ id: textUserAliasRoot
+
+ anchors.left: userImageRoot.right
+ anchors.leftMargin: 10
+ anchors.top: rootItemBackground.top
+ anchors.topMargin: 5
+
+ text: textMetricsUserAliasRoot.elidedText
+ font.pointSize: JamiTheme.textFontSize
+ }
+
+ Text {
+ id: textUsernameRoot
+
+ anchors.left: userImageRoot.right
+ anchors.leftMargin: 10
+ anchors.top: textUserAliasRoot.bottom
+ anchors.topMargin: 5
+
+ text: textMetricsUsernameRoot.elidedText
+ font.pointSize: JamiTheme.textFontSize
+ color: JamiTheme.faddedFontColor
+ }
+
+ TextMetrics {
+ id: textMetricsUserAliasRoot
+
+ font: textUserAliasRoot.font
+ elide: Text.ElideMiddle
+ elideWidth: accountComboBox.width - userImageRoot.width - settingsButton.width - 25
+
+
+ /*
+ * Role::Alias
+ */
+ text: {
+ if (currentIndex !== -1)
+ return accountListModel.data(accountListModel.index(
+ accountComboBox.currentIndex,
+ 0), 257)
+ else
+ return text
+ }
+ }
+
+ TextMetrics {
+ id: textMetricsUsernameRoot
+
+ font: textUsernameRoot.font
+ elide: Text.ElideMiddle
+ elideWidth: accountComboBox.width - userImageRoot.width - settingsButton.width - 25
+
+
+ /*
+ * Role::Username
+ */
+ text: {
+ if (currentIndex !== -1)
+ return accountListModel.data(accountListModel.index(
+ accountComboBox.currentIndex,
+ 0), 258)
+ else
+ return text
+ }
+ }
+
+ HoverableButton {
+ id: settingsButton
+
+ anchors.right: accountComboBox.right
+ anchors.rightMargin: 10
+ anchors.verticalCenter: accountComboBox.verticalCenter
+
+ buttonImageHeight: height - 8
+ buttonImageWidth: width - 8
+ source: "qrc:/images/icons/round-settings-24px.svg"
+ radius: height / 2
+ width: 25
+ height: 25
+
+ onClicked: {
+ settingBtnClicked()
+ }
+ }
+
+ background: Rectangle {
+ id: rootItemBackground
+
+ implicitWidth: accountComboBox.width
+ implicitHeight: accountComboBox.height
+
+ border.width: 0
+ }
+
+ MouseArea {
+ id: comboBoxRootMouseArea
+
+ anchors.fill: parent
+
+ hoverEnabled: true
+ propagateComposedEvents: true
+
+ onPressed: {
+ if (isMouseOnSettingsButton(mouse)) {
+ settingsButton.backgroundColor = JamiTheme.pressColor
+ settingsButton.clicked()
+ } else
+ rootItemBackground.color = JamiTheme.pressColor
+ }
+ onReleased: {
+ if (isMouseOnSettingsButton(mouse)) {
+ settingsButton.backgroundColor = JamiTheme.releaseColor
+ } else {
+ rootItemBackground.color = JamiTheme.releaseColor
+ if (comboBoxPopup.opened) {
+ accountComboBox.popup.close()
+ } else {
+ accountComboBox.popup.open()
+ }
+ }
+ }
+ onEntered: {
+ rootItemBackground.color = JamiTheme.hoverColor
+ }
+ onExited: {
+ rootItemBackground.color = "white"
+ }
+ onMouseXChanged: {
+
+
+ /*
+ * Manually making settings button hover.
+ */
+ if (isMouseOnSettingsButton(mouse)) {
+ settingsButton.backgroundColor = JamiTheme.hoverColor
+ rootItemBackground.color = "white"
+ } else {
+ settingsButton.backgroundColor = "white"
+ rootItemBackground.color = JamiTheme.hoverColor
+ }
+ }
+ function isMouseOnSettingsButton(mouse) {
+ var mousePos = mapToItem(comboBoxRootMouseArea, mouse.x, mouse.y)
+ var settingsButtonPos = mapToItem(comboBoxRootMouseArea,
+ settingsButton.x,
+ settingsButton.y)
+ if ((mousePos.x >= settingsButtonPos.x
+ && mousePos.x <= settingsButtonPos.x + settingsButton.width)
+ && (mousePos.y >= settingsButtonPos.y
+ && mousePos.y <= settingsButtonPos.y + settingsButton.height))
+ return true
+ return false
+ }
+ }
+
+ indicator: null
+
+
+ /*
+ * Overwrite the combo box pop up to add footer (for add accounts).
+ */
+ popup: AccountComboBoxPopup {
+ id: comboBoxPopup
+
+ onAccountNeedToChange: {
+ accountComboBox.accountChanged(index)
+ }
+
+ onNewAccountButtonClicked: {
+ accountComboBox.newAccountButtonClicked()
+ }
+ }
+}
diff --git a/src/mainview/components/AccountComboBoxPopup.qml b/src/mainview/components/AccountComboBoxPopup.qml
new file mode 100644
index 0000000..42a17fb
--- /dev/null
+++ b/src/mainview/components/AccountComboBoxPopup.qml
@@ -0,0 +1,180 @@
+
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+import QtQuick 2.14
+import QtQuick.Controls 2.14
+import QtQuick.Layouts 1.14
+import net.jami.Models 1.0
+
+import "../../commoncomponents"
+
+Popup {
+ id: comboBoxPopup
+
+ property bool toogleUpdatePopupHeight: false
+
+ signal accountNeedToChange(int index)
+ signal newAccountButtonClicked
+
+ y: accountComboBox.height - 1
+ implicitWidth: accountComboBox.width - 1
+
+
+ /*
+ * Hack - limite the accounts that can be shown.
+ */
+ implicitHeight: {
+ comboBoxPopup.visible
+ return Math.min(accountComboBox.height * Math.min(
+ 5, accountListModel.rowCount() + 1),
+ sidePanelRect.height)
+ }
+ padding: 0
+
+ contentItem: ListView {
+ id: comboBoxPopupListView
+
+
+ /*
+ * In list view, index is an interger.
+ */
+ clip: true
+ model: accountListModel
+ implicitHeight: contentHeight
+ delegate: ItemDelegate {
+
+ Image {
+ id: userImage
+
+ anchors.left: parent.left
+ anchors.leftMargin: 5
+ anchors.verticalCenter: parent.verticalCenter
+
+ width: 30
+ height: parent.height
+
+ fillMode: Image.PreserveAspectFit
+ mipmap: true
+
+
+ /*
+ * Role::Picture
+ */
+ source: "data:image/png;base64," + accountListModel.data(
+ accountListModel.index(index, 0), 259)
+ }
+
+ Text {
+ id: textUserAliasPopup
+
+ anchors.left: userImage.right
+ anchors.leftMargin: 10
+ anchors.top: itemCoboBackground.top
+ anchors.topMargin: 5
+
+ text: textMetricsUserAliasPopup.elidedText
+ font.pointSize: JamiTheme.textFontSize
+ }
+
+ Text {
+ id: textUsernamePopup
+
+ anchors.left: userImage.right
+ anchors.leftMargin: 10
+ anchors.top: textUserAliasPopup.bottom
+ anchors.topMargin: 5
+
+ text: textMetricsUsernamePopup.elidedText
+ font.pointSize: JamiTheme.textFontSize
+ color: JamiTheme.faddedFontColor
+ }
+
+ TextMetrics {
+ id: textMetricsUserAliasPopup
+ elide: Text.ElideMiddle
+ elideWidth: accountComboBox.width - userImage.width - settingsButton.width - 30
+ text: Alias
+ }
+
+ TextMetrics {
+ id: textMetricsUsernamePopup
+ elide: Text.ElideMiddle
+ elideWidth: accountComboBox.width - userImage.width - settingsButton.width - 30
+ text: Username
+ }
+
+ background: Rectangle {
+ id: itemCoboBackground
+
+ implicitWidth: accountComboBox.width
+ implicitHeight: accountComboBox.height
+ border.width: 0
+ }
+
+ MouseArea {
+ anchors.fill: parent
+ hoverEnabled: true
+ onPressed: {
+ itemCoboBackground.color = JamiTheme.pressColor
+ }
+ onReleased: {
+ itemCoboBackground.color = JamiTheme.releaseColor
+ currentIndex = index
+ comboBoxPopup.close()
+ comboBoxPopup.accountNeedToChange(index)
+ }
+ onEntered: {
+ itemCoboBackground.color = JamiTheme.hoverColor
+ }
+ onExited: {
+ itemCoboBackground.color = "white"
+ }
+ }
+ }
+
+ footer: HoverableButton {
+ id: comboBoxFooterItem
+
+ implicitWidth: accountComboBox.width
+ implicitHeight: accountComboBox.height
+
+ text: qsTr("Add Account") + "+"
+ backgroundColor: "white"
+ onExitColor: "white"
+
+ onClicked: {
+ comboBoxPopup.close()
+ comboBoxPopup.newAccountButtonClicked()
+ }
+ }
+
+ ScrollIndicator.vertical: ScrollIndicator {}
+ }
+ background: Rectangle {
+ id: accountComboBoxPopup
+
+ CustomBorder {
+ commonBorder: false
+ lBorderwidth: 0
+ rBorderwidth: 1
+ tBorderwidth: 0
+ bBorderwidth: 1
+ borderColor: JamiTheme.tabbarBorderColor
+ }
+ }
+}
diff --git a/src/mainview/components/AudioCallPage.qml b/src/mainview/components/AudioCallPage.qml
new file mode 100644
index 0000000..1292f30
--- /dev/null
+++ b/src/mainview/components/AudioCallPage.qml
@@ -0,0 +1,248 @@
+
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+import QtQuick 2.14
+import QtQuick.Controls 2.14
+import QtQuick.Layouts 1.14
+import QtQuick.Controls.Universal 2.12
+import net.jami.Models 1.0
+
+import "../../commoncomponents"
+
+Rectangle {
+ id: audioCallPageRect
+
+ property string contactImgSource: ""
+ property string bestName: "Best Name"
+ property string bestId: "Best Id"
+
+ property var corrspondingMessageWebView: null
+
+ signal audioCallPageBackButtonIsClicked
+
+ function updateUI(accountId, convUid) {
+ contactImgSource = "data:image/png;base64," + ClientWrapper.utilsAdaptor.getContactImageString(
+ accountId, convUid)
+ bestName = ClientWrapper.utilsAdaptor.getBestName(accountId, convUid)
+
+ var id = ClientWrapper.utilsAdaptor.getBestId(accountId, convUid)
+ bestId = (bestName !== id) ? id : ""
+ }
+
+ function setAudioCallPageCorrspondingMessageWebView(webViewId) {
+ corrspondingMessageWebView = webViewId
+ corrspondingMessageWebView.needToHideConversationInCall.disconnect(
+ closeInCallConversation)
+ corrspondingMessageWebView.needToHideConversationInCall.connect(
+ closeInCallConversation)
+ }
+
+ function closeInCallConversation() {
+ if (inAudioCallMessageWebViewStack.visible) {
+ corrspondingMessageWebView.resetMessagingHeaderBackButtonSource(
+ true)
+ corrspondingMessageWebView.setMessagingHeaderButtonsVisible(true)
+ inAudioCallMessageWebViewStack.visible = false
+ inAudioCallMessageWebViewStack.clear()
+ }
+ }
+
+ function closeContextMenuAndRelatedWindows() {
+ audioCallOverlay.closePotentialContactPicker()
+ }
+
+ anchors.fill: parent
+
+ SplitView {
+ id: mainColumnLayout
+
+ anchors.fill: parent
+
+ orientation: Qt.Vertical
+
+ handle: Rectangle {
+ implicitWidth: audioCallPageRect.width
+ implicitHeight: JamiTheme.splitViewHandlePreferedWidth
+ color: SplitHandle.pressed ? JamiTheme.pressColor : (SplitHandle.hovered ? JamiTheme.hoverColor : JamiTheme.tabbarBorderColor)
+ }
+
+ Rectangle {
+ id: audioCallPageMainRect
+
+ SplitView.preferredHeight: (audioCallPageRect.height / 3) * 2
+ SplitView.minimumHeight: audioCallPageRect.height / 2 + 20
+ SplitView.fillWidth: true
+
+ CallOverlay {
+ id: audioCallOverlay
+
+ anchors.fill: parent
+
+ Connections {
+ target: CallAdapter
+
+ function onUpdateTimeText(time) {
+ audioCallOverlay.timeText = time
+ }
+
+ function onUpdateOverlay(isPaused, isAudioOnly, isAudioMuted, isVideoMuted, isRecording, isSIP, isConferenceCall, bestName) {
+ audioCallOverlay.showOnHoldImage(isPaused)
+ audioCallPageRectCentralRect.visible = !isPaused
+ audioCallOverlay.updateButtonStatus(isPaused,
+ isAudioOnly,
+ isAudioMuted,
+ isVideoMuted,
+ isRecording, isSIP,
+ isConferenceCall)
+ audioCallOverlay.bestName = bestName
+ }
+
+ function onShowOnHoldLabel(isPaused) {
+ audioCallOverlay.showOnHoldImage(isPaused)
+ audioCallPageRectCentralRect.visible = !isPaused
+ }
+ }
+
+ onBackButtonIsClicked: {
+ if (inAudioCallMessageWebViewStack.visible) {
+ corrspondingMessageWebView.resetMessagingHeaderBackButtonSource(
+ true)
+ corrspondingMessageWebView.setMessagingHeaderButtonsVisible(
+ true)
+ inAudioCallMessageWebViewStack.visible = false
+ inAudioCallMessageWebViewStack.clear()
+ }
+ audioCallPageRect.audioCallPageBackButtonIsClicked()
+ }
+
+ onOverlayChatButtonClicked: {
+ if (inAudioCallMessageWebViewStack.visible) {
+ corrspondingMessageWebView.resetMessagingHeaderBackButtonSource(
+ true)
+ corrspondingMessageWebView.setMessagingHeaderButtonsVisible(
+ true)
+ inAudioCallMessageWebViewStack.visible = false
+ inAudioCallMessageWebViewStack.clear()
+ } else {
+ corrspondingMessageWebView.resetMessagingHeaderBackButtonSource(
+ false)
+ corrspondingMessageWebView.setMessagingHeaderButtonsVisible(
+ false)
+ inAudioCallMessageWebViewStack.visible = true
+ inAudioCallMessageWebViewStack.push(
+ corrspondingMessageWebView)
+ }
+ }
+ }
+
+ Rectangle {
+ id: audioCallPageRectCentralRect
+
+ anchors.centerIn: parent
+
+ width: audioCallPageRect.width
+ height: audioCallPageRegisteredNameText.height
+ + audioCallPageIdText.height + contactImage.height + 10
+
+ ColumnLayout {
+ id: audioCallPageRectColumnLayout
+
+ Image {
+ id: contactImage
+
+ Layout.alignment: Qt.AlignCenter
+
+ Layout.preferredWidth: 100
+ Layout.preferredHeight: 100
+
+ fillMode: Image.PreserveAspectFit
+ source: contactImgSource
+ asynchronous: true
+ }
+
+ Text {
+ id: audioCallPageRegisteredNameText
+
+ Layout.alignment: Qt.AlignCenter
+
+ Layout.preferredWidth: audioCallPageRectCentralRect.width
+ Layout.preferredHeight: 50
+
+ font.pointSize: JamiTheme.textFontSize + 3
+
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+
+ text: textMetricsAudioCallPageRegisteredNameText.elidedText
+ color: "white"
+
+ TextMetrics {
+ id: textMetricsAudioCallPageRegisteredNameText
+ font: audioCallPageRegisteredNameText.font
+ text: bestName
+ elideWidth: audioCallPageRectCentralRect.width - 50
+ elide: Qt.ElideMiddle
+ }
+ }
+
+ Text {
+ id: audioCallPageIdText
+
+ Layout.alignment: Qt.AlignCenter
+
+ Layout.preferredWidth: audioCallPageRectCentralRect.width
+ Layout.preferredHeight: 30
+
+ font.pointSize: JamiTheme.textFontSize
+
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+
+ text: textMetricsAudioCallPageIdText.elidedText
+ color: "white"
+
+ TextMetrics {
+ id: textMetricsAudioCallPageIdText
+ font: audioCallPageIdText.font
+ text: bestId
+ elideWidth: audioCallPageRectCentralRect.width - 50
+ elide: Qt.ElideMiddle
+ }
+ }
+ }
+
+ color: "transparent"
+ }
+
+ color: "transparent"
+ }
+
+ StackView {
+ id: inAudioCallMessageWebViewStack
+
+ SplitView.preferredHeight: audioCallPageRect.height / 3
+ SplitView.fillWidth: true
+
+ visible: false
+
+ clip: true
+ }
+ }
+
+ color: "black"
+}
diff --git a/src/mainview/components/CallOverlay.qml b/src/mainview/components/CallOverlay.qml
new file mode 100644
index 0000000..dfd599a
--- /dev/null
+++ b/src/mainview/components/CallOverlay.qml
@@ -0,0 +1,381 @@
+
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+import QtQuick 2.14
+import QtQuick.Controls 2.14
+import QtQuick.Layouts 1.14
+import QtQuick.Controls.Universal 2.12
+import QtQml 2.14
+import net.jami.Models 1.0
+
+import "../js/contactpickercreation.js" as ContactPickerCreation
+
+import "../../commoncomponents"
+
+Rectangle {
+ id: callOverlayRect
+
+ property string bestName: "Best Name"
+ property string timeText: "00:00"
+
+ signal backButtonIsClicked
+ signal overlayChatButtonClicked
+
+ function updateButtonStatus(isPaused, isAudioOnly, isAudioMuted, isVideoMuted, isRecording, isSIP, isConferenceCall) {
+ callOverlayButtonGroup.setButtonStatus(isPaused, isAudioOnly,
+ isAudioMuted, isVideoMuted,
+ isRecording, isSIP,
+ isConferenceCall)
+ }
+
+ function showOnHoldImage(visible) {
+ onHoldImage.visible = visible
+ }
+
+ function closePotentialContactPicker() {
+ ContactPickerCreation.closeContactPicker()
+ }
+
+ function setBackTintedButtonVisible(visible) {
+ backTintedButton.visible = visible
+ }
+
+ anchors.fill: parent
+
+
+ /*
+ * Timer to decide when overlay fade out.
+ */
+ Timer {
+ id: callOverlayTimer
+ interval: 5000
+ onTriggered: {
+ if (overlayUpperPartRect.state !== 'freezed') {
+ overlayUpperPartRect.state = 'freezed'
+ }
+ if (callOverlayButtonGroup.state !== 'freezed') {
+ callOverlayButtonGroup.state = 'freezed'
+ }
+ }
+ }
+
+ Rectangle {
+ id: overlayUpperPartRect
+
+ anchors.top: callOverlayRect.top
+
+ width: callOverlayRect.width
+ height: 50
+ opacity: 0
+
+ RowLayout {
+ id: overlayUpperPartRectRowLayout
+
+ anchors.fill: parent
+
+ TintedButton {
+ id: backTintedButton
+
+ Layout.alignment: Qt.AlignVCenter | Qt.AlignLeft
+ Layout.leftMargin: 5
+ Layout.preferredWidth: 30
+ Layout.preferredHeight: 30
+
+ tintColor: JamiTheme.buttonTintedBlue
+ normalPixmapSource: "qrc:/images/icons/ic_arrow_back_white_24dp.png"
+ selectedPixmapSource: "qrc:/images/icons/ic_arrow_back_white_24dp.png"
+
+ onClicked: {
+ callOverlayRect.backButtonIsClicked()
+ }
+
+ onButtonEntered: {
+ callOverlayRectMouseArea.entered()
+ }
+ }
+
+ Text {
+ id: jamiBestNameText
+
+ Layout.alignment: Qt.AlignVCenter | Qt.AlignLeft
+ Layout.preferredWidth: overlayUpperPartRect.width / 3
+ Layout.preferredHeight: 50
+
+ font.pointSize: JamiTheme.textFontSize
+
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+
+ text: textMetricsjamiBestNameText.elidedText
+ color: "white"
+
+ TextMetrics {
+ id: textMetricsjamiBestNameText
+ font: jamiBestNameText.font
+ text: bestName
+ elideWidth: overlayUpperPartRect.width / 3
+ elide: Qt.ElideMiddle
+ }
+ }
+
+ Text {
+ id: callTimerText
+
+ Layout.alignment: Qt.AlignVCenter | Qt.AlignRight
+ Layout.preferredWidth: overlayUpperPartRect.width / 3
+ Layout.preferredHeight: 50
+
+ font.pointSize: JamiTheme.textFontSize
+
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+
+ text: textMetricscallTimerText.elidedText
+ color: "white"
+
+ TextMetrics {
+ id: textMetricscallTimerText
+ font: callTimerText.font
+ text: timeText
+ elideWidth: overlayUpperPartRect.width / 3
+ elide: Qt.ElideMiddle
+ }
+ }
+ }
+
+ color: "transparent"
+
+
+ /*
+ * Rect states: "entered" state should make overlay fade in,
+ * "freezed" state should make overlay fade out.
+ * Combine with PropertyAnimation of opacity.
+ */
+ states: [
+ State {
+ name: "entered"
+ PropertyChanges {
+ target: overlayUpperPartRect
+ opacity: 1
+ }
+ },
+ State {
+ name: "freezed"
+ PropertyChanges {
+ target: overlayUpperPartRect
+ opacity: 0
+ }
+ }
+ ]
+
+ transitions: Transition {
+ PropertyAnimation {
+ target: overlayUpperPartRect
+ property: "opacity"
+ duration: 1000
+ }
+ }
+ }
+
+ Image {
+ id: onHoldImage
+
+ anchors.verticalCenter: callOverlayRect.verticalCenter
+ anchors.horizontalCenter: callOverlayRect.horizontalCenter
+
+ width: 200
+ height: 200
+
+ visible: false
+
+ fillMode: Image.PreserveAspectFit
+ source: "qrc:/images/icons/ic_pause_white_100px.png"
+ asynchronous: true
+ }
+
+ CallOverlayButtonGroup {
+ id: callOverlayButtonGroup
+
+ anchors.bottom: callOverlayRect.bottom
+ anchors.bottomMargin: 10
+ anchors.horizontalCenter: callOverlayRect.horizontalCenter
+
+ width: callOverlayRect.width / 3 * 2
+ height: 60
+ opacity: 0
+
+ onChatButtonClicked: {
+ callOverlayRect.overlayChatButtonClicked()
+ }
+
+ onAddToConferenceButtonClicked: {
+
+
+ /*
+ * Create contact picker - conference.
+ */
+ ContactPickerCreation.createContactPickerObjects(
+ ContactPicker.ContactPickerType.JAMICONFERENCE,
+ callOverlayRect)
+ ContactPickerCreation.calculateCurrentGeo(
+ callOverlayRect.width / 2, callOverlayRect.height / 2)
+ ContactPickerCreation.openContactPicker()
+ }
+
+ onTransferCallButtonClicked: {
+
+
+ /*
+ * Create contact picker - sip transfer.
+ */
+ ContactPickerCreation.createContactPickerObjects(
+ ContactPicker.ContactPickerType.SIPTRANSFER,
+ callOverlayRect)
+ ContactPickerCreation.calculateCurrentGeo(
+ callOverlayRect.width / 2, callOverlayRect.height / 2)
+ ContactPickerCreation.openContactPicker()
+ }
+
+ onButtonEntered: {
+ callOverlayRectMouseArea.entered()
+ }
+
+ states: [
+ State {
+ name: "entered"
+ PropertyChanges {
+ target: callOverlayButtonGroup
+ opacity: 1
+ }
+ },
+ State {
+ name: "freezed"
+ PropertyChanges {
+ target: callOverlayButtonGroup
+ opacity: 0
+ }
+ }
+ ]
+
+ transitions: Transition {
+ PropertyAnimation {
+ target: callOverlayButtonGroup
+ property: "opacity"
+ duration: 1000
+ }
+ }
+ }
+
+
+ /*
+ * MouseAreas to make sure that overlay states are correctly set.
+ */
+ MouseArea {
+ id: callOverlayButtonGroupLeftSideMouseArea
+
+ anchors.bottom: callOverlayRect.bottom
+ anchors.left: callOverlayRect.left
+
+ width: callOverlayRect.width / 6
+ height: 60
+
+ hoverEnabled: true
+ propagateComposedEvents: true
+ acceptedButtons: Qt.NoButton
+
+ onEntered: {
+ callOverlayRectMouseArea.entered()
+ }
+
+ onMouseXChanged: {
+ callOverlayRectMouseArea.entered()
+ }
+ }
+
+ MouseArea {
+ id: callOverlayButtonGroupRightSideMouseArea
+
+ anchors.bottom: callOverlayRect.bottom
+ anchors.right: callOverlayRect.right
+
+ width: callOverlayRect.width / 6
+ height: 60
+
+ hoverEnabled: true
+ propagateComposedEvents: true
+ acceptedButtons: Qt.NoButton
+
+ onEntered: {
+ callOverlayRectMouseArea.entered()
+ }
+
+ onMouseXChanged: {
+ callOverlayRectMouseArea.entered()
+ }
+ }
+
+ MouseArea {
+ id: callOverlayRectMouseArea
+
+ anchors.top: callOverlayRect.top
+ anchors.topMargin: 50
+
+ width: callOverlayRect.width
+ height: callOverlayRect.height - callOverlayButtonGroup.height - 50
+
+ hoverEnabled: true
+ propagateComposedEvents: true
+ acceptedButtons: Qt.NoButton
+
+ onEntered: {
+ if (overlayUpperPartRect.state !== 'entered') {
+ overlayUpperPartRect.state = 'entered'
+ }
+ if (callOverlayButtonGroup.state !== 'entered') {
+ callOverlayButtonGroup.state = 'entered'
+ }
+ callOverlayTimer.restart()
+ }
+
+ onMouseXChanged: {
+ if (overlayUpperPartRect.state !== 'entered') {
+ overlayUpperPartRect.state = 'entered'
+ }
+ if (callOverlayButtonGroup.state !== 'entered') {
+ callOverlayButtonGroup.state = 'entered'
+ }
+ callOverlayTimer.restart()
+ }
+ }
+
+ color: "transparent"
+
+ onBestNameChanged: {
+ ContactAdapter.setCalleeDisplayName(bestName)
+ }
+
+ onWidthChanged: {
+ ContactPickerCreation.calculateCurrentGeo(callOverlayRect.width / 2,
+ callOverlayRect.height / 2)
+ }
+
+ onHeightChanged: {
+ ContactPickerCreation.calculateCurrentGeo(callOverlayRect.width / 2,
+ callOverlayRect.height / 2)
+ }
+}
diff --git a/src/mainview/components/CallOverlayButtonGroup.qml b/src/mainview/components/CallOverlayButtonGroup.qml
new file mode 100644
index 0000000..4309fa1
--- /dev/null
+++ b/src/mainview/components/CallOverlayButtonGroup.qml
@@ -0,0 +1,311 @@
+
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+import QtQuick 2.14
+import QtQuick.Controls 2.14
+import QtQuick.Layouts 1.14
+import QtQuick.Controls.Universal 2.12
+import QtQml 2.14
+import net.jami.Models 1.0
+
+import "../../commoncomponents"
+
+Rectangle {
+ id: callOverlayButtonGroupRect
+
+
+ /*
+ * ButtonCounts here is to make sure that flow layout margin is calculated correctly,
+ * since no other methods can make buttons at the layout center.
+ */
+ property int buttonCounts: 9
+ property int buttonPreferredSize: 30
+
+ signal buttonEntered
+ signal chatButtonClicked
+ signal addToConferenceButtonClicked
+ signal transferCallButtonClicked
+
+ function setButtonStatus(isPaused, isAudioOnly, isAudioMuted, isVideoMuted, isRecording, isSIP, isConferenceCall) {
+ noVideoButton.visible = !isAudioOnly
+ addToConferenceButton.visible = !isSIP
+ transferCallButton.visible = isSIP
+ sipInputPanelButton.visible = isSIP
+
+ noMicButton.setChecked(isAudioMuted)
+ noVideoButton.setChecked(isVideoMuted)
+ recButton.setChecked(isRecording)
+ holdButton.setChecked(isPaused)
+
+ holdButton.visible = !isConferenceCall
+ }
+
+ function calculateFlowMargin() {
+ return (callOverlayButtonGroupRect.width - buttonCounts * buttonPreferredSize
+ - callOverlayButtonGroupRectFlow.spacing * (buttonCounts - 1)) / 2
+ }
+
+ Flow {
+ id: callOverlayButtonGroupRectFlow
+
+ anchors.fill: parent
+
+
+ /*
+ * Minus 1 is to make sure that button will not flick when doing flow layout.
+ */
+ anchors.leftMargin: calculateFlowMargin(
+ ) < 0 ? 0 : calculateFlowMargin() - 1
+ anchors.rightMargin: calculateFlowMargin(
+ ) < 0 ? 0 : calculateFlowMargin() - 1
+
+ spacing: 10
+
+ TintedButton {
+ id: hangUpButton
+
+ width: buttonPreferredSize
+ height: buttonPreferredSize
+
+ tintColor: JamiTheme.hangUpButtonTintedRed
+ normalPixmapSource: "qrc:/images/icons/ic_close_white_24dp.png"
+ selectedPixmapSource: "qrc:/images/icons/ic_close_white_24dp.png"
+
+ onButtonEntered: {
+ callOverlayButtonGroupRect.buttonEntered()
+ }
+
+ onClicked: {
+ CallAdapter.hangUpThisCall()
+ }
+
+ onVisibleChanged: {
+ if (this.visible)
+ buttonCounts++
+ else
+ buttonCounts--
+ }
+ }
+
+ TintedButton {
+ id: holdButton
+
+ width: buttonPreferredSize
+ height: buttonPreferredSize
+
+ tintColor: JamiTheme.buttonTintedBlue
+ normalPixmapSource: "qrc:/images/icons/ic_pause_white_24dp.png"
+ selectedPixmapSource: "qrc:/images/icons/ic_play_white_24dp.png"
+
+ onClicked: {
+ CallAdapter.holdThisCallToggle()
+ }
+
+ onButtonEntered: {
+ callOverlayButtonGroupRect.buttonEntered()
+ }
+
+ onVisibleChanged: {
+ if (this.visible)
+ buttonCounts++
+ else
+ buttonCounts--
+ }
+ }
+
+ TintedButton {
+ id: addToConferenceButton
+
+ width: buttonPreferredSize
+ height: buttonPreferredSize
+
+ tintColor: JamiTheme.buttonTintedBlue
+ normalPixmapSource: "qrc:/images/icons/ic_group_add_white_24dp.png"
+ selectedPixmapSource: "qrc:/images/icons/ic_group_add_white_24dp.png"
+
+ onButtonEntered: {
+ callOverlayButtonGroupRect.buttonEntered()
+ }
+
+ onClicked: {
+ callOverlayButtonGroupRect.addToConferenceButtonClicked()
+ }
+
+ onVisibleChanged: {
+ if (this.visible)
+ buttonCounts++
+ else
+ buttonCounts--
+ }
+ }
+
+ TintedButton {
+ id: transferCallButton
+
+ width: buttonPreferredSize
+ height: buttonPreferredSize
+
+ tintColor: JamiTheme.buttonTintedBlue
+ normalPixmapSource: "qrc:/images/icons/ic_call_transfer_white_24px.png"
+ selectedPixmapSource: "qrc:/images/icons/ic_call_transfer_white_24px.png"
+
+ onButtonEntered: {
+ callOverlayButtonGroupRect.buttonEntered()
+ }
+
+ onClicked: {
+ callOverlayButtonGroupRect.transferCallButtonClicked()
+ }
+
+ onVisibleChanged: {
+ if (this.visible)
+ buttonCounts++
+ else
+ buttonCounts--
+ }
+ }
+
+ TintedButton {
+ id: chatButton
+
+ width: buttonPreferredSize
+ height: buttonPreferredSize
+
+ tintColor: JamiTheme.buttonTintedBlue
+ normalPixmapSource: "qrc:/images/icons/ic_chat_white_24dp.png"
+ selectedPixmapSource: "qrc:/images/icons/ic_chat_white_24dp.png"
+
+ onClicked: {
+ callOverlayButtonGroupRect.chatButtonClicked()
+ }
+
+ onButtonEntered: {
+ callOverlayButtonGroupRect.buttonEntered()
+ }
+
+ onVisibleChanged: {
+ if (this.visible)
+ buttonCounts++
+ else
+ buttonCounts--
+ }
+ }
+
+ TintedButton {
+ id: noMicButton
+
+ width: buttonPreferredSize
+ height: buttonPreferredSize
+
+ tintColor: JamiTheme.buttonTintedBlue
+ normalPixmapSource: "qrc:/images/icons/ic_mic_white_24dp.png"
+ selectedPixmapSource: "qrc:/images/icons/ic_mic_off_white_24dp.png"
+
+ onClicked: {
+ CallAdapter.muteThisCallToggle()
+ }
+
+ onButtonEntered: {
+ callOverlayButtonGroupRect.buttonEntered()
+ }
+
+ onVisibleChanged: {
+ if (this.visible)
+ buttonCounts++
+ else
+ buttonCounts--
+ }
+ }
+
+ TintedButton {
+ id: noVideoButton
+
+ width: buttonPreferredSize
+ height: buttonPreferredSize
+
+ tintColor: JamiTheme.buttonTintedBlue
+ normalPixmapSource: "qrc:/images/icons/ic_videocam_white.png"
+ selectedPixmapSource: "qrc:/images/icons/ic_videocam_off_white_24dp.png"
+
+ onButtonEntered: {
+ callOverlayButtonGroupRect.buttonEntered()
+ }
+
+ onClicked: {
+ CallAdapter.videoPauseThisCallToggle()
+ }
+
+ onVisibleChanged: {
+ if (this.visible)
+ buttonCounts++
+ else
+ buttonCounts--
+ }
+ }
+
+ TintedButton {
+ id: recButton
+
+ width: buttonPreferredSize
+ height: buttonPreferredSize
+
+ tintColor: JamiTheme.buttonTintedBlue
+ normalPixmapSource: "qrc:/images/icons/ic_voicemail_white_24dp_2x.png"
+ selectedPixmapSource: "qrc:/images/icons/ic_voicemail_white_24dp_2x.png"
+
+ onButtonEntered: {
+ callOverlayButtonGroupRect.buttonEntered()
+ }
+
+ onClicked: {
+ CallAdapter.recordThisCallToggle()
+ }
+
+ onVisibleChanged: {
+ if (this.visible)
+ buttonCounts++
+ else
+ buttonCounts--
+ }
+ }
+
+ TintedButton {
+ id: sipInputPanelButton
+
+ width: buttonPreferredSize
+ height: buttonPreferredSize
+
+ tintColor: JamiTheme.buttonTintedBlue
+ normalPixmapSource: "qrc:/images/icons/icon-keypad-24-2x.png"
+ selectedPixmapSource: "qrc:/images/icons/icon-keypad-24-2x.png"
+
+ onButtonEntered: {
+ callOverlayButtonGroupRect.buttonEntered()
+ }
+
+ onVisibleChanged: {
+ if (this.visible)
+ buttonCounts++
+ else
+ buttonCounts--
+ }
+ }
+ }
+
+ color: "transparent"
+}
diff --git a/src/mainview/components/CallStackView.qml b/src/mainview/components/CallStackView.qml
new file mode 100644
index 0000000..61df06e
--- /dev/null
+++ b/src/mainview/components/CallStackView.qml
@@ -0,0 +1,227 @@
+
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+import QtQuick 2.14
+import QtQuick.Window 2.14
+import QtQuick.Controls 2.14
+import QtQuick.Layouts 1.14
+import QtQuick.Controls.Universal 2.12
+import net.jami.Models 1.0
+
+import "../js/incomingcallpagecreation.js" as IncomingCallPageCreation
+import "../js/videocallfullscreenwindowcontainercreation.js" as VideoCallFullScreenWindowContainerCreation
+
+Rectangle {
+ id: callStackViewWindow
+
+ anchors.fill: parent
+
+ Shortcut {
+ sequence: "Ctrl+D"
+ context: Qt.ApplicationShortcut
+ onActivated: CallAdapter.hangUpThisCall()
+ }
+
+ /*
+ * When selected conversation is changed,
+ * these values will also be changed.
+ */
+ property string responsibleConvUid: ""
+ property string responsibleAccountId: ""
+
+ signal outgoingCallPageBackButtonIsClicked
+ signal callPageBackButtonIsClicked
+
+ function needToCloseInCallConversationAndPotentialWindow() {
+ audioCallPage.closeInCallConversation()
+ videoCallPage.closeInCallConversation()
+
+
+ /*
+ * Close potential window, context menu releated windows.
+ */
+ audioCallPage.closeContextMenuAndRelatedWindows()
+
+ VideoCallFullScreenWindowContainerCreation.closeVideoCallFullScreenWindowContainer()
+ videoCallPage.setCallOverlayBackButtonVisible(true)
+ videoCallPage.closeContextMenuAndRelatedWindows()
+ }
+
+ function setCorrspondingMessageWebView(webViewId) {
+ audioCallPage.setAudioCallPageCorrspondingMessageWebView(webViewId)
+ videoCallPage.setVideoCallPageCorrspondingMessageWebView(webViewId)
+ }
+
+ function updateCorrspondingUI() {
+ audioCallPage.updateUI(responsibleAccountId, responsibleConvUid)
+ outgoingCallPage.updateUI(responsibleAccountId, responsibleConvUid)
+ videoCallPage.updateUI(responsibleAccountId, responsibleConvUid)
+ }
+
+ function showAudioCallPage() {
+ var itemToFind = callStackMainView.find(function (item) {
+ return item.stackNumber === 0
+ })
+
+ if (!itemToFind) {
+ callStackMainView.push(audioCallPage, StackView.Immediate)
+ } else {
+ callStackMainView.pop(itemToFind, StackView.Immediate)
+ }
+ audioCallPage.updateUI(responsibleAccountId, responsibleConvUid)
+ }
+
+ function showOutgoingCallPage(currentCallStatus) {
+ var itemToFind = callStackMainView.find(function (item) {
+ return item.stackNumber === 1
+ })
+
+ if (!itemToFind) {
+ callStackMainView.push(outgoingCallPage, StackView.Immediate)
+ } else {
+ callStackMainView.pop(itemToFind, StackView.Immediate)
+ }
+ if (currentCallStatus)
+ outgoingCallPage.callStatusPresentation = currentCallStatus
+ }
+
+ function showVideoCallPage(callId) {
+ var itemToFind = callStackMainView.find(function (item) {
+ return item.stackNumber === 2
+ })
+
+ if (!itemToFind) {
+ callStackMainView.push(videoCallPage, StackView.Immediate)
+ } else {
+ callStackMainView.pop(itemToFind, StackView.Immediate)
+ }
+ videoCallPage.updateUI(responsibleAccountId, responsibleConvUid)
+ videoCallPage.setDistantRendererId(callId)
+ }
+
+ Connections {
+ target: CallAdapter
+
+ function onShowOutgoingCallPage(accountId, convUid) {
+
+
+ /*
+ * Need to check whether it is the current selected conversation.
+ */
+ if (responsibleConvUid === convUid
+ && responsibleAccountId === accountId) {
+ showOutgoingCallPage()
+ }
+ }
+
+ function onShowIncomingCallPage(accountId, convUid) {
+
+
+ /*
+ * Check is done within the js.
+ */
+ IncomingCallPageCreation.createincomingCallPageWindowObjects(
+ accountId, convUid)
+ IncomingCallPageCreation.showIncomingCallPageWindow(accountId,
+ convUid)
+ }
+
+ function onClosePotentialIncomingCallPageWindow(accountId, convUid) {
+ IncomingCallPageCreation.closeIncomingCallPageWindow(accountId,
+ convUid)
+ }
+
+ function onShowAudioCallPage(accountId, convUid) {
+ if (responsibleConvUid === convUid
+ && responsibleAccountId === accountId) {
+ showAudioCallPage()
+ }
+ }
+
+ function onShowVideoCallPage(accountId, convUid, callId) {
+ if (responsibleConvUid === convUid
+ && responsibleAccountId === accountId) {
+ showVideoCallPage(callId)
+ }
+ }
+
+ function onCallStatusChanged(status, accountId, convUid) {
+ if (responsibleConvUid === convUid
+ && responsibleAccountId === accountId) {
+ outgoingCallPage.callStatusPresentation = status
+ }
+ }
+ }
+
+ AudioCallPage {
+ id: audioCallPage
+
+ property int stackNumber: 0
+
+ onAudioCallPageBackButtonIsClicked: {
+ callStackViewWindow.callPageBackButtonIsClicked()
+ }
+ }
+
+ OutgoingCallPage {
+ id: outgoingCallPage
+
+ property int stackNumber: 1
+
+ onCallCancelButtonIsClicked: {
+ CallAdapter.hangUpACall(responsibleAccountId, responsibleConvUid)
+ }
+
+ onBackButtonIsClicked: {
+ callStackViewWindow.outgoingCallPageBackButtonIsClicked()
+ }
+ }
+
+ VideoCallPage {
+ id: videoCallPage
+
+ property int stackNumber: 2
+
+ onVideoCallPageBackButtonIsClicked: {
+ callStackViewWindow.callPageBackButtonIsClicked()
+ }
+
+ onNeedToShowInFullScreen: {
+ VideoCallFullScreenWindowContainerCreation.createvideoCallFullScreenWindowContainerObject()
+
+ if (!VideoCallFullScreenWindowContainerCreation.checkIfVisible()) {
+ VideoCallFullScreenWindowContainerCreation.setAsContainerChild(
+ videoCallPage)
+ videoCallPage.setCallOverlayBackButtonVisible(false)
+ VideoCallFullScreenWindowContainerCreation.showVideoCallFullScreenWindowContainer()
+ } else {
+ videoCallPage.parent = callStackMainView
+ videoCallPage.setCallOverlayBackButtonVisible(true)
+ VideoCallFullScreenWindowContainerCreation.closeVideoCallFullScreenWindowContainer()
+ }
+ }
+ }
+
+ StackView {
+ id: callStackMainView
+
+ anchors.fill: parent
+
+ initialItem: outgoingCallPage
+ }
+}
diff --git a/src/mainview/components/ChangeLogScrollView.qml b/src/mainview/components/ChangeLogScrollView.qml
new file mode 100644
index 0000000..f672e65
--- /dev/null
+++ b/src/mainview/components/ChangeLogScrollView.qml
@@ -0,0 +1,59 @@
+
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+import QtQuick 2.14
+import QtQuick.Controls 2.14
+import net.jami.Models 1.0
+
+ScrollView {
+ id: changeLogScrollView
+
+ anchors.fill: parent
+
+ clip: true
+
+ ScrollBar.horizontal.policy: ScrollBar.AlwaysOff
+
+ TextEdit {
+ id: changeLogTextArea
+
+ width: changeLogScrollView.width
+
+ selectByMouse: false
+ readOnly: true
+ wrapMode: Text.WordWrap
+
+ font.pointSize: JamiTheme.textFontSize - 3
+ text: ClientWrapper.utilsAdaptor.getChangeLog()
+ textFormat: TextEdit.RichText
+
+ MouseArea {
+ anchors.fill: parent
+ propagateComposedEvents: true
+ cursorShape: Qt.ArrowCursor
+ acceptedButtons: Qt.NoButton
+ }
+ }
+
+ background: Rectangle {
+ id: changeLogScrollViewBackground
+
+ radius: 5
+ border.color: JamiTheme.tabbarBorderColor
+ }
+}
diff --git a/src/mainview/components/ContactPicker.qml b/src/mainview/components/ContactPicker.qml
new file mode 100644
index 0000000..1d41406
--- /dev/null
+++ b/src/mainview/components/ContactPicker.qml
@@ -0,0 +1,149 @@
+
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+import QtQuick 2.14
+import QtQuick.Controls 2.14
+import QtQuick.Layouts 1.14
+import QtQuick.Controls.Universal 2.12
+import net.jami.Models 1.0
+
+import "../../commoncomponents"
+
+Popup {
+ id: contactPickerPopup
+
+ property int type: ContactPicker.ContactPickerType.JAMICONFERENCE
+
+
+ /*
+ * Important to keep it one, since enum in c++ starts at one for conferences.
+ */
+ enum ContactPickerType {
+ JAMICONFERENCE = 1,
+ SIPTRANSFER
+ }
+
+ contentWidth: 250
+ contentHeight: contactPickerPopupRectColumnLayout.height + 50
+
+ padding: 0
+
+ modal: true
+
+ contentItem: Rectangle {
+ id: contactPickerPopupRect
+
+ width: 250
+
+ HoverableButton {
+ id: closeButton
+
+ anchors.top: contactPickerPopupRect.top
+ anchors.topMargin: 5
+ anchors.right: contactPickerPopupRect.right
+ anchors.rightMargin: 5
+
+ width: 30
+ height: 30
+
+ radius: 30
+ source: "qrc:/images/icons/ic_close_black_24dp.png"
+
+ onClicked: {
+ contactPickerPopup.close()
+ }
+ }
+
+ ColumnLayout {
+ id: contactPickerPopupRectColumnLayout
+
+ anchors.top: contactPickerPopupRect.top
+ anchors.topMargin: 15
+
+ Text {
+ id: contactPickerTitle
+
+ Layout.alignment: Qt.AlignCenter
+ Layout.preferredWidth: contactPickerPopupRect.width
+ Layout.preferredHeight: 30
+
+ font.pointSize: JamiTheme.textFontSize
+ font.bold: true
+
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+
+ text: type === ContactPicker.ContactPickerType.JAMICONFERENCE ? qsTr("Add to conference") : qsTr("Transfer this call")
+ }
+
+ ContactSearchBar {
+ id: contactPickerContactSearchBar
+
+ Layout.alignment: Qt.AlignCenter
+ Layout.topMargin: 5
+ Layout.bottomMargin: 5
+ Layout.preferredWidth: contactPickerPopupRect.width - 10
+ Layout.preferredHeight: 35
+
+ onContactSearchBarTextChanged: {
+ ContactAdapter.setSearchFilter(text)
+ }
+
+ Component.onCompleted: {
+ contactPickerContactSearchBar.setPlaceholderString(
+ qsTr("Search contacts"))
+ }
+ }
+
+ ListView {
+ id: contactPickerListView
+
+ Layout.alignment: Qt.AlignCenter
+ Layout.preferredWidth: contactPickerPopupRect.width
+ Layout.preferredHeight: 200
+
+ model: ContactAdapter.getContactSelectableModel(type)
+
+ clip: true
+
+ delegate: ContactPickerItemDelegate {
+ id: contactPickerItemDelegate
+ }
+
+ ScrollIndicator.vertical: ScrollIndicator {}
+ }
+ }
+
+ radius: 10
+ color: "white"
+ }
+
+ onAboutToShow: {
+
+
+ /*
+ * Reset the model on each show.
+ */
+ contactPickerListView.model = ContactAdapter.getContactSelectableModel(
+ type)
+ }
+
+ background: Rectangle {
+ color: "transparent"
+ }
+}
diff --git a/src/mainview/components/ContactPickerItemDelegate.qml b/src/mainview/components/ContactPickerItemDelegate.qml
new file mode 100644
index 0000000..0f2f656
--- /dev/null
+++ b/src/mainview/components/ContactPickerItemDelegate.qml
@@ -0,0 +1,135 @@
+
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+import QtQuick 2.14
+import QtQuick.Controls 2.14
+import QtQuick.Layouts 1.14
+import net.jami.Models 1.0
+
+import "../../commoncomponents"
+
+ItemDelegate {
+ id: contactPickerItemDelegate
+
+ Image {
+ id: contactPickerContactImage
+
+ anchors.left: parent.left
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.leftMargin: 10
+
+ width: 40
+ height: 40
+
+ fillMode: Image.PreserveAspectFit
+ source: "data:image/png;base64," + Picture
+ mipmap: true
+ }
+
+ Rectangle {
+ id: contactPickerContactInfoRect
+
+ anchors.left: contactPickerContactImage.right
+ anchors.leftMargin: 10
+ anchors.top: parent.top
+
+ width: parent.width - contactPickerContactImage.width - 20
+ height: parent.height
+
+ color: "transparent"
+
+ Text {
+ id: contactPickerContactName
+
+ anchors.left: contactPickerContactInfoRect.left
+ anchors.bottom: contactPickerContactInfoRect.verticalCenter
+
+ TextMetrics {
+ id: textMetricsContactPickerContactName
+ font: contactPickerContactName.font
+ elide: Text.ElideMiddle
+ elideWidth: contactPickerContactInfoRect.width
+ text: DisplayName
+ }
+
+ text: textMetricsContactPickerContactName.elidedText
+ font.pointSize: JamiTheme.textFontSize
+ }
+
+ Text {
+ id: contactPickerContactId
+
+ anchors.left: contactPickerContactInfoRect.left
+ anchors.top: contactPickerContactInfoRect.verticalCenter
+
+ fontSizeMode: Text.Fit
+ color: JamiTheme.faddedFontColor
+
+ TextMetrics {
+ id: textMetricsContactPickerContactId
+ font: contactPickerContactId.font
+ elide: Text.ElideMiddle
+ elideWidth: contactPickerContactInfoRect.width
+ text: DisplayID == DisplayName ? "" : DisplayID
+ }
+
+ text: textMetricsContactPickerContactId.elidedText
+ font.pointSize: JamiTheme.textFontSize
+ }
+ }
+
+ background: Rectangle {
+ id: itemSmartListBackground
+
+ color: "white"
+
+ implicitWidth: contactPickerPopupRect.width
+ implicitHeight: Math.max(
+ contactPickerContactName.height
+ + textMetricsContactPickerContactId.height + 10,
+ contactPickerContactImage.height + 10)
+ border.width: 0
+ }
+
+ MouseArea {
+ id: mouseAreaContactPickerItemDelegate
+
+ anchors.fill: parent
+ hoverEnabled: true
+ acceptedButtons: Qt.LeftButton
+
+ onPressed: {
+ itemSmartListBackground.color = JamiTheme.pressColor
+ }
+
+ onReleased: {
+ itemSmartListBackground.color = JamiTheme.releaseColor
+
+ ContactAdapter.contactSelected(index)
+ contactPickerPopup.close()
+ }
+
+ onEntered: {
+ itemSmartListBackground.color = JamiTheme.hoverColor
+ }
+
+ onExited: {
+ itemSmartListBackground.color = "white"
+ }
+ }
+}
diff --git a/src/mainview/components/ContactSearchBar.qml b/src/mainview/components/ContactSearchBar.qml
new file mode 100644
index 0000000..896b48c
--- /dev/null
+++ b/src/mainview/components/ContactSearchBar.qml
@@ -0,0 +1,107 @@
+
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+import QtQuick 2.14
+import QtQuick.Controls 2.14
+import QtQuick.Layouts 1.14
+import net.jami.Models 1.0
+
+Rectangle {
+ id: contactSearchBarRect
+
+ signal contactSearchBarTextChanged(string text)
+
+ function setPlaceholderString(str) {
+ placeholderTextForSearchBar.text = str
+ }
+
+
+ /*
+ * Hack - there is no real way now to make TextField lose its focus,
+ * unless transfer it to other component.
+ */
+ function clearFocus() {
+ fakeFocus.forceActiveFocus()
+ }
+
+ function clearText() {
+ contactSearchBar.clear()
+ fakeFocus.forceActiveFocus()
+ }
+
+ border.color: JamiTheme.pressColor
+ radius: 10
+ color: contactSearchBar.activeFocus ? "white" : JamiTheme.contactSearchBarPlaceHolderGreyBackground
+
+ FocusScope {
+ id: fakeFocus
+ }
+
+ Image {
+ id: searchIconImage
+
+ anchors.verticalCenter: contactSearchBarRect.verticalCenter
+ anchors.left: contactSearchBarRect.left
+ anchors.leftMargin: 5
+
+ width: 20
+ height: 20
+
+ fillMode: Image.PreserveAspectFit
+ mipmap: true
+ source: "qrc:/images/icons/ic_baseline-search-24px.svg"
+ }
+
+ TextField {
+ id: contactSearchBar
+
+ anchors.verticalCenter: contactSearchBarRect.verticalCenter
+ anchors.left: searchIconImage.right
+
+ width: contactSearchBarRect.width - searchIconImage.width - 10
+ height: contactSearchBarRect.height - 5
+
+ font.pointSize: JamiTheme.textFontSize - 1
+ selectByMouse: true
+ selectionColor: JamiTheme.contactSearchBarPlaceHolderTextFontColor
+
+ Text {
+ id: placeholderTextForSearchBar
+
+ anchors.verticalCenter: contactSearchBar.verticalCenter
+ anchors.left: contactSearchBar.left
+ anchors.leftMargin: 5
+
+ text: qsTr("Find or start a conversation")
+ font.pointSize: JamiTheme.textFontSize - 1
+ color: JamiTheme.contactSearchBarPlaceHolderTextFontColor
+ visible: !contactSearchBar.text && !contactSearchBar.activeFocus
+ }
+
+ background: Rectangle {
+ id: searchBarBackground
+
+ color: "transparent"
+ }
+
+ onTextChanged: {
+ contactSearchBarRect.contactSearchBarTextChanged(
+ contactSearchBar.text)
+ }
+ }
+}
diff --git a/src/mainview/components/ConversationSmartListContextMenu.qml b/src/mainview/components/ConversationSmartListContextMenu.qml
new file mode 100644
index 0000000..aece4b4
--- /dev/null
+++ b/src/mainview/components/ConversationSmartListContextMenu.qml
@@ -0,0 +1,151 @@
+
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+import QtQuick 2.14
+import QtQuick.Controls 2.14
+import net.jami.Models 1.0
+
+import "../../commoncomponents"
+
+Menu {
+ id: contextMenu
+
+ property string responsibleAccountId: ""
+ property string responsibleConvUid: ""
+
+ property int generalMenuSeparatorCount: 0
+ property int commonBorderWidth: 2
+
+
+ /*
+ * All GeneralMenuItems should remain the same width / height.
+ */
+ GeneralMenuItem {
+ id: startVideoCallItem
+
+ itemName: qsTr("Start video call")
+ topBorderWidth: commonBorderWidth
+ leftBorderWidth: commonBorderWidth
+ rightBorderWidth: commonBorderWidth
+
+ onClicked: {
+ contextMenu.close()
+ ConversationsAdapter.selectConversation(responsibleAccountId,
+ responsibleConvUid, false)
+ CallAdapter.placeCall()
+ }
+ }
+
+ GeneralMenuItem {
+ id: startAudioCallItem
+
+ itemName: qsTr("Start audio call")
+ leftBorderWidth: commonBorderWidth
+ rightBorderWidth: commonBorderWidth
+
+ onClicked: {
+ contextMenu.close()
+ ConversationsAdapter.selectConversation(responsibleAccountId,
+ responsibleConvUid, false)
+ CallAdapter.placeAudioOnlyCall()
+ }
+ }
+
+ GeneralMenuItem {
+ id: clearConversationItem
+
+ itemName: qsTr("Clear conversation")
+ leftBorderWidth: commonBorderWidth
+ rightBorderWidth: commonBorderWidth
+
+ onClicked: {
+ contextMenu.close()
+ ClientWrapper.utilsAdaptor.clearConversationHistory(responsibleAccountId,
+ responsibleConvUid)
+ }
+ }
+
+ GeneralMenuItem {
+ id: removeContactItem
+
+ itemName: qsTr("Remove contact")
+ leftBorderWidth: commonBorderWidth
+ rightBorderWidth: commonBorderWidth
+
+ onClicked: {
+ contextMenu.close()
+ ClientWrapper.utilsAdaptor.removeConversation(responsibleAccountId,
+ responsibleConvUid)
+ }
+ }
+
+ GeneralMenuSeparator {
+ preferredWidth: startVideoCallItem.preferredWidth
+ preferredHeight: commonBorderWidth
+
+ Component.onCompleted: {
+ generalMenuSeparatorCount++
+ }
+ }
+
+ GeneralMenuItem {
+ id: blockContactItem
+
+ itemName: qsTr("Block contact")
+ leftBorderWidth: commonBorderWidth
+ rightBorderWidth: commonBorderWidth
+
+ onClicked: {
+ contextMenu.close()
+ ClientWrapper.utilsAdaptor.removeConversation(responsibleAccountId,
+ responsibleConvUid, true)
+ }
+ }
+
+ GeneralMenuSeparator {
+ preferredWidth: startVideoCallItem.preferredWidth
+ preferredHeight: commonBorderWidth
+
+ Component.onCompleted: {
+ generalMenuSeparatorCount++
+ }
+ }
+
+ GeneralMenuItem {
+ id: profileItem
+
+ itemName: qsTr("Profile")
+ bottomBorderWidth: commonBorderWidth
+ leftBorderWidth: commonBorderWidth
+ rightBorderWidth: commonBorderWidth
+
+ onClicked: {
+ contextMenu.close()
+ userProfile.open()
+ }
+ }
+
+ background: Rectangle {
+ implicitWidth: startVideoCallItem.preferredWidth
+ implicitHeight: startVideoCallItem.preferredHeight
+ * (contextMenu.count - generalMenuSeparatorCount)
+
+ border.width: commonBorderWidth
+ border.color: JamiTheme.tabbarBorderColor
+ }
+}
diff --git a/src/mainview/components/ConversationSmartListUserImage.qml b/src/mainview/components/ConversationSmartListUserImage.qml
new file mode 100644
index 0000000..6419ec4
--- /dev/null
+++ b/src/mainview/components/ConversationSmartListUserImage.qml
@@ -0,0 +1,88 @@
+
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+import QtQuick 2.14
+import QtQuick.Controls 2.14
+import QtQuick.Layouts 1.14
+import net.jami.Models 1.0
+
+Image {
+ id: userImage
+
+ width: 50
+ height: 50
+
+ fillMode: Image.PreserveAspectFit
+ source: "data:image/png;base64," + Picture
+ mipmap: true
+
+ Rectangle {
+ id: presenseRect
+
+ anchors.right: userImage.right
+ anchors.rightMargin: 1
+ anchors.bottom: userImage.bottom
+ anchors.bottomMargin: 2
+
+ width: 14
+ height: 14
+
+ visible: Presence
+
+ Rectangle {
+ id: presenseCycle
+
+ anchors.centerIn: presenseRect
+
+ width: 10
+ height: 10
+
+ radius: 30
+ color: JamiTheme.presenceGreen
+ }
+
+ radius: 30
+ color: "white"
+ }
+
+ Rectangle {
+ id: unreadMessageCountRect
+
+ anchors.right: userImage.right
+ anchors.rightMargin: 1
+ anchors.top: userImage.top
+ anchors.topMargin: 2
+
+ width: 14
+ height: 14
+
+ visible: UnreadMessagesCount > 0
+
+ Text {
+ id: unreadMessageCounttext
+
+ anchors.centerIn: unreadMessageCountRect
+
+ text: UnreadMessagesCount > 9 ? "···" : UnreadMessagesCount
+ color: "white"
+ }
+
+ radius: 30
+ color: JamiTheme.notificationRed
+ }
+}
diff --git a/src/mainview/components/ConversationSmartListView.qml b/src/mainview/components/ConversationSmartListView.qml
new file mode 100644
index 0000000..0513f6f
--- /dev/null
+++ b/src/mainview/components/ConversationSmartListView.qml
@@ -0,0 +1,104 @@
+
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+import QtQuick 2.14
+import QtQuick.Controls 2.14
+import QtQuick.Layouts 1.14
+import net.jami.Models 1.0
+
+ListView {
+ id: conversationSmartListView
+
+ signal needToAccessMessageWebView(string currentUserDisplayName, string currentUserAlias, string currentUID, bool callStackViewShouldShow, bool isAudioOnly, string callStateStr)
+ signal needToSelectItems(int index)
+ signal needToDeselectItems
+ signal needToBackToWelcomePage
+ signal needToGrabFocus
+
+ signal needToShowChatView(string accountId, string convUid)
+ signal currentIndexIsChanged
+ signal forceUpdatePotentialInvalidItem
+
+
+ /*
+ * When model is sorted, we need to reset to focus (currentIndex)
+ * to the real conversation that we focused.
+ */
+ function modelSorted(contactURIToCompare) {
+ var conversationSmartListViewModel = conversationSmartListView.model
+ conversationSmartListView.currentIndex = -1
+ updateConversationSmartListView()
+ for (var i = 0; i < count; i++) {
+ if (conversationSmartListViewModel.data(
+ conversationSmartListViewModel.index(i, 0),
+ 261) === contactURIToCompare) {
+ conversationSmartListView.currentIndex = i
+ break
+ }
+ }
+ }
+
+
+ /*
+ * Refresh all item within model.
+ */
+ function updateConversationSmartListView() {
+ var conversationSmartListViewModel = conversationSmartListView.model
+ conversationSmartListViewModel.dataChanged(
+ conversationSmartListViewModel.index(0, 0),
+ conversationSmartListViewModel.index(
+ conversationSmartListViewModel.rowCount() - 1, 0))
+ conversationSmartListView.forceUpdatePotentialInvalidItem()
+ }
+
+ function setModel(model) {
+ conversationSmartListView.model = model
+ }
+
+ function backToWelcomePage() {
+ conversationSmartListView.needToBackToWelcomePage()
+ }
+
+
+ /*
+ * Update smartlist to accountId.
+ */
+ function updateSmartList(accountId) {
+ conversationSmartListView.model.setAccount(accountId)
+ }
+
+ Connections {
+ target: CallAdapter
+
+ function onUpdateConversationSmartList() {
+ updateConversationSmartListView()
+ }
+ }
+
+ onCurrentIndexChanged: {
+ conversationSmartListView.currentIndexIsChanged()
+ }
+
+ clip: true
+
+ delegate: ConversationSmartListViewItemDelegate {
+ id: smartListItemDelegate
+ }
+
+ ScrollIndicator.vertical: ScrollIndicator {}
+}
diff --git a/src/mainview/components/ConversationSmartListViewItemDelegate.qml b/src/mainview/components/ConversationSmartListViewItemDelegate.qml
new file mode 100644
index 0000000..7a766f0
--- /dev/null
+++ b/src/mainview/components/ConversationSmartListViewItemDelegate.qml
@@ -0,0 +1,280 @@
+
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+import QtQuick 2.14
+import QtQuick.Controls 2.14
+import QtQuick.Layouts 1.14
+import net.jami.Models 1.0
+
+import "../../commoncomponents"
+
+ItemDelegate {
+ id: smartListItemDelegate
+
+ Connections {
+ target: conversationSmartListView
+
+
+ /*
+ * Hack, make sure that smartListItemDelegate does not show extra item
+ * when searching new contacts.
+ */
+ function onForceUpdatePotentialInvalidItem() {
+ smartListItemDelegate.visible = conversationSmartListView.model.rowCount(
+ ) <= index ? false : true
+ }
+
+
+ /*
+ * When currentIndex is -1, deselect items, if not, change select item
+ */
+ function onCurrentIndexIsChanged() {
+ if (conversationSmartListView.currentIndex === -1
+ || conversationSmartListView.currentIndex !== index) {
+ itemSmartListBackground.color = Qt.binding(function () {
+ return InCall ? Qt.lighter(JamiTheme.selectionBlue,
+ 1.8) : "white"
+ })
+ } else {
+ itemSmartListBackground.color = Qt.binding(function () {
+ return InCall ? Qt.lighter(JamiTheme.selectionBlue,
+ 1.8) : JamiTheme.releaseColor
+ })
+ }
+ }
+
+ function onNeedToShowChatView(accountId, convUid) {
+ if (convUid === UID) {
+ conversationSmartListView.needToAccessMessageWebView(
+ DisplayID == DisplayName ? "" : DisplayID,
+ DisplayName, UID, CallStackViewShouldShow,
+ IsAudioOnly, CallStateStr)
+ }
+ }
+ }
+
+ ConversationSmartListUserImage {
+ id: conversationSmartListUserImage
+
+ anchors.left: parent.left
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.leftMargin: 10
+ }
+
+ Rectangle {
+ id: conversationSmartListUserInfoRect
+
+ anchors.left: conversationSmartListUserImage.right
+ anchors.leftMargin: 10
+ anchors.top: parent.top
+
+ width: LastInteractionDate ? (parent.width - conversationSmartListUserImage.width - 20)
+ / 2 : parent.width - conversationSmartListUserImage.width - 20
+ height: parent.height
+
+ color: "transparent"
+
+ ColumnLayout {
+ id: conversationSmartListUserInfoColumnLayout
+
+ anchors.fill: parent
+
+ Text {
+ id: conversationSmartListUserName
+
+ Layout.alignment: Qt.AlignLeft
+
+ TextMetrics {
+ id: textMetricsConversationSmartListUserName
+ font: conversationSmartListUserName.font
+ elide: Text.ElideMiddle
+ elideWidth: conversationSmartListUserInfoRect.width
+ text: DisplayName
+ }
+
+ text: textMetricsConversationSmartListUserName.elidedText
+ font.pointSize: JamiTheme.textFontSize
+ }
+
+ Text {
+ id: conversationSmartListUserId
+
+ Layout.alignment: Qt.AlignLeft
+
+ fontSizeMode: Text.Fit
+ color: JamiTheme.faddedFontColor
+
+ TextMetrics {
+ id: textMetricsConversationSmartListUserId
+ font: conversationSmartListUserId.font
+ elide: Text.ElideMiddle
+ elideWidth: conversationSmartListUserInfoRect.width
+ text: DisplayID == DisplayName ? "" : DisplayID
+ }
+
+ text: textMetricsConversationSmartListUserId.elidedText
+ font.pointSize: JamiTheme.textFontSize
+ }
+ }
+ }
+
+ Rectangle {
+ id: conversationSmartListUserLastInteractionRect
+
+ anchors.left: conversationSmartListUserInfoRect.right
+ anchors.top: parent.top
+
+ width: (parent.width - conversationSmartListUserImage.width - 20) / 2 - 10
+ height: parent.height
+
+ color: "transparent"
+
+ ColumnLayout {
+ id: conversationSmartListUserLastInteractionColumnLayout
+
+ anchors.fill: parent
+
+ Text {
+ id: conversationSmartListUserLastInteractionDate
+
+ Layout.alignment: Qt.AlignRight
+
+ TextMetrics {
+ id: textMetricsConversationSmartListUserLastInteractionDate
+ font: conversationSmartListUserLastInteractionDate.font
+ elideWidth: conversationSmartListUserLastInteractionRect.width
+ elide: Text.ElideRight
+ text: LastInteractionDate
+ }
+
+ text: textMetricsConversationSmartListUserLastInteractionDate.elidedText
+ font.pointSize: JamiTheme.textFontSize
+ color: JamiTheme.faddedFontColor
+ }
+
+ Text {
+ id: conversationSmartListUserLastInteractionMessage
+
+ Layout.alignment: Qt.AlignRight
+
+ fontSizeMode: Text.Fit
+
+ TextMetrics {
+ id: textMetricsConversationSmartListUserLastInteractionMessage
+ font: conversationSmartListUserLastInteractionMessage.font
+ elideWidth: conversationSmartListUserLastInteractionRect.width
+ elide: Text.ElideRight
+ text: InCall ? CallStateStr : (Draft ? Draft : LastInteraction)
+ }
+
+ font.family: "Segoe UI Emoji"
+ font.hintingPreference: Font.PreferNoHinting
+ text: textMetricsConversationSmartListUserLastInteractionMessage.elidedText
+ font.pointSize: JamiTheme.textFontSize
+ color: Draft ? JamiTheme.draftRed : JamiTheme.faddedLastInteractionFontColor
+ }
+ }
+ }
+
+ background: Rectangle {
+ id: itemSmartListBackground
+
+ color: InCall ? Qt.lighter(JamiTheme.selectionBlue, 1.8) : "white"
+
+ implicitWidth: conversationSmartListView.width
+ implicitHeight: Math.max(
+ conversationSmartListUserName.height
+ + textMetricsConversationSmartListUserId.height + 10,
+ conversationSmartListUserImage.height + 10)
+ border.width: 0
+ }
+
+ MouseArea {
+ id: mouseAreaSmartListItemDelegate
+
+ anchors.fill: parent
+ hoverEnabled: true
+ acceptedButtons: Qt.LeftButton | Qt.RightButton
+
+ onPressed: {
+ if (!InCall) {
+ itemSmartListBackground.color = JamiTheme.pressColor
+ }
+ }
+ onDoubleClicked: {
+ if (!InCall) {
+ ConversationsAdapter.selectConversation(ClientWrapper.utilsAdaptor.getCurrAccId(),
+ UID, false)
+ CallAdapter.placeCall()
+ }
+ }
+ onReleased: {
+ if (!InCall) {
+ itemSmartListBackground.color = JamiTheme.releaseColor
+ }
+ if (mouse.button === Qt.RightButton) {
+
+
+ /*
+ * Make menu pos at mouse.
+ */
+ var relativeMousePos = mapToItem(itemSmartListBackground,
+ mouse.x, mouse.y)
+ smartListContextMenu.x = relativeMousePos.x
+ smartListContextMenu.y = relativeMousePos.y
+ smartListContextMenu.responsibleAccountId = ClientWrapper.utilsAdaptor.getCurrAccId()
+ smartListContextMenu.responsibleConvUid = UID
+ userProfile.responsibleConvUid = UID
+ userProfile.aliasText = DisplayName
+ userProfile.registeredNameText = DisplayID
+ userProfile.idText = URI
+ userProfile.contactPicBase64 = Picture
+ smartListContextMenu.open()
+ } else if (mouse.button === Qt.LeftButton) {
+ conversationSmartListView.currentIndex = index
+ conversationSmartListView.needToSelectItems(index)
+ conversationSmartListView.needToGrabFocus()
+ }
+ }
+ onEntered: {
+ if (!InCall) {
+ itemSmartListBackground.color = JamiTheme.hoverColor
+ }
+ }
+ onExited: {
+ if (!InCall) {
+ if (conversationSmartListView.currentIndex !== index
+ || conversationSmartListView.currentIndex === -1) {
+ itemSmartListBackground.color = Qt.binding(function () {
+ return InCall ? Qt.lighter(JamiTheme.selectionBlue,
+ 1.8) : "white"
+ })
+ } else {
+ itemSmartListBackground.color = Qt.binding(function () {
+ return InCall ? Qt.lighter(JamiTheme.selectionBlue,
+ 1.8) : JamiTheme.releaseColor
+ })
+ }
+ }
+ }
+ }
+
+ ConversationSmartListContextMenu {
+ id: smartListContextMenu
+ }
+}
diff --git a/src/mainview/components/IncomingCallPage.qml b/src/mainview/components/IncomingCallPage.qml
new file mode 100644
index 0000000..eafbaff
--- /dev/null
+++ b/src/mainview/components/IncomingCallPage.qml
@@ -0,0 +1,342 @@
+
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+import QtQuick 2.14
+import QtQuick.Window 2.14
+import QtQuick.Controls 2.14
+import QtQuick.Layouts 1.14
+import QtQuick.Controls.Universal 2.12
+import net.jami.Models 1.0
+
+import "../../commoncomponents"
+
+
+/*
+ * IncomingCallPage as a seperate window,
+ * exist at the right bottom, as a notification to user that
+ * a call is incoming.
+ */
+Window {
+ id: incomingCallPage
+
+ property int minWidth: 300
+ property int minHeight: 400
+
+
+ /*
+ * The unique identifier for incomingCallPage
+ */
+ property string responsibleAccountId: ""
+ property string responsibleConvUid: ""
+
+ property string contactImgSource: ""
+ property string bestName: "Best Name"
+ property string bestId: "Best Id"
+
+ property int buttonPreferredSize: 50
+ property variant clickPos: "1,1"
+
+ function updateUI() {
+ incomingCallPage.contactImgSource = "data:image/png;base64,"
+ + ClientWrapper.utilsAdaptor.getContactImageString(responsibleAccountId,
+ responsibleConvUid)
+ incomingCallPage.bestName = ClientWrapper.utilsAdaptor.getBestName(
+ responsibleAccountId, responsibleConvUid)
+ var id = ClientWrapper.utilsAdaptor.getBestId(responsibleAccountId,
+ responsibleConvUid)
+ incomingCallPage.bestId = (incomingCallPage.bestName !== id) ? id : ""
+ }
+
+ function updatePositionToRightBottom() {
+
+
+ /*
+ * Screen right bottom,
+ * since the qt screen.virtualY, virtualX does not work properly,
+ * we need to calculate the screen x, y ourselves, by
+ * using to fact that window will always be in the middle if no x or y
+ * specificed.
+ * ex: https://doc.qt.io/qt-5/qscreen.html#geometry-prop
+ */
+ var virtualX = (incomingCallPage.x + width / 2) - screen.width / 2
+ incomingCallPage.x = virtualX + screen.width - width
+ incomingCallPage.y = screen.height - height - 50
+ }
+
+ minimumWidth: minWidth
+ minimumHeight: minHeight
+
+ maximumWidth: minWidth + 300
+ maximumHeight: minHeight + 300
+
+ flags: Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint
+ screen: Qt.application.screens[0]
+
+ Rectangle {
+ id: incomingCallPageColumnLayoutMainRect
+
+ anchors.fill: parent
+
+ radius: 15
+ color: "black"
+
+
+ /*
+ * Simulate window drag. (top with height 30).
+ */
+ MouseArea {
+ id: dragMouseArea
+
+ anchors.left: incomingCallPageColumnLayoutMainRect.left
+ anchors.top: incomingCallPageColumnLayoutMainRect.top
+
+ width: incomingCallPageColumnLayoutMainRect.width - closeButton.width - 10
+ height: 30
+
+ onPressed: {
+ clickPos = Qt.point(mouse.x, mouse.y)
+ }
+
+ onPositionChanged: {
+ var delta = Qt.point(mouse.x - clickPos.x, mouse.y - clickPos.y)
+ incomingCallPage.x += delta.x
+ incomingCallPage.y += delta.y
+ }
+ }
+
+ HoverableButton {
+ id: closeButton
+
+ anchors.top: incomingCallPageColumnLayoutMainRect.top
+ anchors.topMargin: 10
+ anchors.right: incomingCallPageColumnLayoutMainRect.right
+ anchors.rightMargin: 10
+
+ width: 30
+ height: 30
+
+ radius: 30
+ source: "qrc:/images/icons/ic_close_white_24dp.png"
+ backgroundColor: "black"
+ onEnterColor: JamiTheme.closeButtonLighterBlack
+ onExitColor: "black"
+ onPressColor: JamiTheme.declineButtonPressedRed
+ onReleaseColor: "black"
+
+ onClicked: {
+ incomingCallPage.close()
+ CallAdapter.refuseACall(responsibleAccountId,
+ responsibleConvUid)
+ }
+ }
+
+ ColumnLayout {
+ id: incomingCallPageColumnLayout
+
+ anchors.fill: parent
+
+ Image {
+ id: contactImg
+
+ Layout.alignment: Qt.AlignCenter
+ Layout.topMargin: 30
+
+ Layout.preferredWidth: 100
+ Layout.preferredHeight: 100
+
+ fillMode: Image.PreserveAspectFit
+ source: contactImgSource
+ }
+
+ Rectangle {
+ id: incomingCallPageTextRect
+
+ Layout.alignment: Qt.AlignCenter
+ Layout.topMargin: 5
+
+ Layout.preferredWidth: incomingCallPage.width
+ Layout.preferredHeight: jamiBestNameText.height + jamiBestIdText.height
+ + talkToYouText.height + 20
+
+ ColumnLayout {
+ id: incomingCallPageTextRectColumnLayout
+
+ Text {
+ id: jamiBestNameText
+
+ Layout.alignment: Qt.AlignCenter
+ Layout.preferredWidth: incomingCallPageTextRect.width
+ Layout.preferredHeight: 50
+
+ font.pointSize: JamiTheme.textFontSize + 3
+
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+
+ text: textMetricsjamiBestNameText.elidedText
+ color: "white"
+
+ TextMetrics {
+ id: textMetricsjamiBestNameText
+ font: jamiBestNameText.font
+ text: bestName
+ elideWidth: incomingCallPageTextRect.width - 30
+ elide: Qt.ElideMiddle
+ }
+ }
+
+ Text {
+ id: jamiBestIdText
+
+ Layout.alignment: Qt.AlignCenter
+ Layout.preferredWidth: incomingCallPageTextRect.width
+ Layout.preferredHeight: 30
+
+ font.pointSize: JamiTheme.textFontSize
+
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+
+ text: textMetricsjamiBestIdText.elidedText
+ color: "white"
+
+ TextMetrics {
+ id: textMetricsjamiBestIdText
+ font: jamiBestIdText.font
+ text: bestId
+ elideWidth: incomingCallPageTextRect.width - 30
+ elide: Qt.ElideMiddle
+ }
+ }
+
+ Text {
+ id: talkToYouText
+
+ Layout.alignment: Qt.AlignCenter
+ Layout.preferredWidth: incomingCallPageTextRect.width
+ Layout.preferredHeight: 30
+
+ font.pointSize: JamiTheme.textFontSize
+
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ color: "white"
+
+ text: "is calling you"
+ }
+ }
+
+ color: "transparent"
+ }
+
+ RowLayout {
+ id: incomingCallPageRowLayout
+
+ Layout.alignment: Qt.AlignHCenter | Qt.AlignBottom
+ Layout.bottomMargin: 5
+
+ Layout.preferredWidth: incomingCallPage.width - 100
+ Layout.preferredHeight: buttonPreferredSize
+
+ ColumnLayout {
+ id: callAnswerButtonColumnLayout
+
+ Layout.alignment: Qt.AlignLeft
+
+ HoverableButton {
+ id: callAnswerButton
+
+ Layout.alignment: Qt.AlignCenter
+
+ Layout.preferredWidth: buttonPreferredSize
+ Layout.preferredHeight: buttonPreferredSize
+
+ backgroundColor: JamiTheme.acceptButtonGreen
+ onEnterColor: JamiTheme.acceptButtonHoverGreen
+ onPressColor: JamiTheme.acceptButtonPressedGreen
+ onReleaseColor: JamiTheme.acceptButtonHoverGreen
+ onExitColor: JamiTheme.acceptButtonGreen
+
+ buttonImageHeight: buttonPreferredSize / 2
+ buttonImageWidth: buttonPreferredSize / 2
+ source: "qrc:/images/icons/ic_check_white_18dp_2x.png"
+ radius: 30
+
+ onClicked: {
+ incomingCallPage.close()
+ CallAdapter.acceptACall(responsibleAccountId,
+ responsibleConvUid)
+ }
+ }
+
+ Text {
+ id: answerText
+
+ Layout.alignment: Qt.AlignCenter
+
+ font.pointSize: JamiTheme.textFontSize - 2
+ text: qsTr("Answer")
+ }
+ }
+
+ ColumnLayout {
+ id: callDeclineButtonColumnLayout
+
+ Layout.alignment: Qt.AlignRight
+
+ HoverableButton {
+ id: callDeclineButton
+
+ Layout.alignment: Qt.AlignCenter
+
+ Layout.preferredWidth: buttonPreferredSize
+ Layout.preferredHeight: buttonPreferredSize
+
+ backgroundColor: JamiTheme.declineButtonRed
+ onEnterColor: JamiTheme.declineButtonHoverRed
+ onPressColor: JamiTheme.declineButtonPressedRed
+ onReleaseColor: JamiTheme.declineButtonHoverRed
+ onExitColor: JamiTheme.declineButtonRed
+
+ buttonImageHeight: buttonPreferredSize / 2
+ buttonImageWidth: buttonPreferredSize / 2
+ source: "qrc:/images/icons/ic_close_white_24dp.png"
+ radius: 30
+
+ onClicked: {
+ incomingCallPage.close()
+ CallAdapter.refuseACall(responsibleAccountId,
+ responsibleConvUid)
+ }
+ }
+
+ Text {
+ id: ignoreText
+
+ Layout.alignment: Qt.AlignCenter
+
+ font.pointSize: JamiTheme.textFontSize - 2
+ text: qsTr("Ignore")
+ }
+ }
+ }
+ }
+ }
+
+ color: "transparent"
+}
diff --git a/src/mainview/components/MessageWebView.qml b/src/mainview/components/MessageWebView.qml
new file mode 100644
index 0000000..2045edf
--- /dev/null
+++ b/src/mainview/components/MessageWebView.qml
@@ -0,0 +1,293 @@
+
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+import QtQuick 2.14
+import QtQuick.Controls 2.14
+import QtQuick.Layouts 1.14
+import QtWebEngine 1.10
+import QtWebChannel 1.14
+import net.jami.Models 1.0
+
+import "../../commoncomponents"
+
+
+Rectangle {
+ id: messageWebViewRect
+
+ property int messageWebViewHeaderPreferredHeight: 60
+ property string headerUserAliasLabelText: ""
+ property string headerUserUserNameLabelText: ""
+
+ signal needToGoBackToWelcomeView
+ signal needToHideConversationInCall
+ signal needToSendContactRequest
+
+ signal sendMessageContentSaved(string arg)
+ signal messagesCleared
+ signal messagesLoaded
+
+
+ function webViewRunJavaScript(arg) {
+ messageWebView.runJavaScript(arg)
+ }
+
+ function setSendContactRequestButtonVisible(visible) {
+ messageWebViewHeader.sendContactRequestButtonVisible = visible
+ }
+
+ function setMessagingHeaderButtonsVisible(visible) {
+ messageWebViewHeader.toggleMessagingHeaderButtonsVisible(visible)
+ }
+
+ function resetMessagingHeaderBackButtonSource(reset) {
+ messageWebViewHeader.resetBackToWelcomeViewButtonSource(reset)
+ }
+
+ anchors.fill: parent
+
+ JamiFileDialog {
+ id: jamiFileDialog
+
+ mode: JamiFileDialog.Mode.OpenFiles
+
+ onAccepted: {
+ var filePaths = jamiFileDialog.files
+ for (var index = 0; index < filePaths.length; ++index) {
+ var path = ClientWrapper.utilsAdaptor.getAbsPath(filePaths[index])
+ MessagesAdapter.setNewMessagesContent(path)
+ }
+ }
+ }
+
+ MessageWebViewHeader {
+
+ DropArea{
+ anchors.fill: parent
+ onDropped: {
+ var path = ClientWrapper.utilsAdaptor.getAbsPath(drop.text.toString())
+ MessagesAdapter.setNewMessagesContent(path)
+ }
+ }
+
+ id: messageWebViewHeader
+
+ anchors.top: messageWebViewRect.top
+ anchors.left: messageWebViewRect.left
+
+ width: messageWebViewRect.width
+ height: messageWebViewHeaderPreferredHeight
+
+ userAliasLabelText: headerUserAliasLabelText
+ userUserNameLabelText: headerUserUserNameLabelText
+
+ onBackToWelcomeViewButtonClicked: {
+ MessagesAdapter.updateDraft()
+ messageWebViewRect.needToGoBackToWelcomeView()
+ }
+
+ onNeedToHideConversationInCall: {
+ messageWebViewRect.needToHideConversationInCall()
+ }
+
+ onSendContactRequestButtonClicked: {
+ MessagesAdapter.sendContactRequest()
+ }
+ }
+
+ QtObject {
+ id: jsBridgeObject
+
+
+ /*
+ * ID, under which this object will be known at chatview.js side.
+ */
+ WebChannel.id: "jsbridge"
+
+
+ /*
+ * Functions that are exposed, return code can be derived from js side
+ * by setting callback function.
+ */
+ function deleteInteraction(arg) {
+ MessagesAdapter.deleteInteraction(arg)
+ }
+
+ function retryInteraction(arg) {
+ MessagesAdapter.retryInteraction(arg)
+ }
+
+ function openFile(arg) {
+ MessagesAdapter.openFile(arg)
+ }
+
+ function acceptFile(arg) {
+ MessagesAdapter.acceptFile(arg)
+ }
+
+ function refuseFile(arg) {
+ MessagesAdapter.refuseFile(arg)
+ }
+
+ function sendMessage(arg) {
+ MessagesAdapter.sendMessage(arg)
+ }
+
+ function sendImage(arg) {
+ MessagesAdapter.sendImage(arg)
+ }
+
+ function sendFile(arg) {
+ MessagesAdapter.sendFile(arg)
+ }
+
+ function selectFile() {
+ jamiFileDialog.open()
+ }
+
+ function acceptInvitation() {
+ MessagesAdapter.acceptInvitation()
+ }
+
+ function refuseInvitation() {
+ MessagesAdapter.refuseInvitation()
+ }
+
+ function blockConversation() {
+ MessagesAdapter.blockConversation()
+ }
+
+ function emitMessagesCleared() {
+ messageWebViewRect.messagesCleared()
+ }
+
+ function emitMessagesLoaded() {
+ messageWebViewRect.messagesLoaded()
+ }
+
+ function emitPasteKeyDetected() {
+ MessagesAdapter.pasteKeyDetected()
+ }
+
+ function openAudioRecorder(spikePosX, spikePosY) {
+ recordBox.openRecorder(spikePosX, spikePosY, false)
+ }
+
+ function openVideoRecorder(spikePosX, spikePosY) {
+ recordBox.openRecorder(spikePosX, spikePosY, true)
+ }
+
+ function saveSendMessageContent(arg) {
+ messageWebViewRect.sendMessageContentSaved(arg)
+ }
+
+ function onComposing(isComposing) {
+ MessagesAdapter.onComposing(isComposing)
+ }
+ }
+
+ WebEngineView {
+
+ id: messageWebView
+
+ anchors.top: messageWebViewHeader.bottom
+ anchors.topMargin: 1
+ anchors.left: messageWebViewRect.left
+
+ width: messageWebViewRect.width
+ height: messageWebViewRect.height - messageWebViewHeaderPreferredHeight
+
+ settings.javascriptEnabled: true
+ settings.javascriptCanOpenWindows: true
+ settings.fullScreenSupportEnabled: true
+ settings.allowRunningInsecureContent: true
+ settings.localContentCanAccessRemoteUrls: true
+ settings.localContentCanAccessFileUrls: true
+ settings.errorPageEnabled: false
+ settings.pluginsEnabled: false
+ settings.screenCaptureEnabled: false
+ settings.linksIncludedInFocusChain: false
+ settings.localStorageEnabled: false
+
+ webChannel: messageWebViewChannel
+ profile: messageWebViewProfile
+
+ DropArea{
+ anchors.fill: parent
+ onDropped: {
+ var path = ClientWrapper.utilsAdaptor.getAbsPath(drop.text.toString())
+ MessagesAdapter.setNewMessagesContent(path)
+ }
+ }
+
+ onLoadingChanged: {
+ if (loadRequest.status == WebEngineView.LoadSucceededStatus) {
+ messageWebView.runJavaScript(ClientWrapper.utilsAdaptor.getStyleSheet(
+ "chatcss",
+ ClientWrapper.utilsAdaptor.qStringFromFile(
+ ":/chatview.css")))
+ messageWebView.runJavaScript(ClientWrapper.utilsAdaptor.getStyleSheet(
+ "chatwin",
+ ClientWrapper.utilsAdaptor.qStringFromFile(
+ ":/chatview-windows.css")))
+
+ messageWebView.runJavaScript(ClientWrapper.utilsAdaptor.qStringFromFile(
+ ":/jed.js"))
+ messageWebView.runJavaScript(ClientWrapper.utilsAdaptor.qStringFromFile(
+ ":/linkify.js"))
+ messageWebView.runJavaScript(ClientWrapper.utilsAdaptor.qStringFromFile(
+ ":/linkify-html.js"))
+ messageWebView.runJavaScript(ClientWrapper.utilsAdaptor.qStringFromFile(
+ ":/linkify-string.js"))
+ messageWebView.runJavaScript(ClientWrapper.utilsAdaptor.qStringFromFile(
+ ":/qwebchannel.js"))
+ messageWebView.runJavaScript(ClientWrapper.utilsAdaptor.qStringFromFile(
+ ":/chatview.js"))
+ messageWebView.runJavaScript("init_i18n();")
+ messageWebView.runJavaScript("displayNavbar(false);")
+ }
+ }
+ Component.onCompleted: {
+ messageWebView.loadHtml(ClientWrapper.utilsAdaptor.qStringFromFile(
+ ":/chatview.html"), ":/chatview.html")
+ messageWebView.url = "qrc:/chatview.html"
+ }
+ }
+
+
+ /*
+ * Provide WebEngineProfile.
+ */
+ WebEngineProfile {
+ id: messageWebViewProfile
+
+ cachePath: ClientWrapper.utilsAdaptor.getCachePath()
+ persistentStoragePath: ClientWrapper.utilsAdaptor.getCachePath()
+ persistentCookiesPolicy: WebEngineProfile.NoPersistentCookies
+ httpCacheType: WebEngineProfile.NoCache
+ httpUserAgent: "jami-windows"
+ }
+
+
+ /*
+ * Provide WebChannel by registering jsBridgeObject.
+ */
+ WebChannel {
+ id: messageWebViewChannel
+ registeredObjects: [jsBridgeObject]
+ }
+}
diff --git a/src/mainview/components/MessageWebViewHeader.qml b/src/mainview/components/MessageWebViewHeader.qml
new file mode 100644
index 0000000..596c672
--- /dev/null
+++ b/src/mainview/components/MessageWebViewHeader.qml
@@ -0,0 +1,237 @@
+
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+import QtQuick 2.14
+import QtQuick.Controls 2.14
+import QtQuick.Layouts 1.14
+import net.jami.Models 1.0
+
+import "../../commoncomponents"
+
+Rectangle {
+ id: messagingHeaderRect
+
+ property int buttonPreferredSize: 30
+ property string userAliasLabelText: ""
+ property string userUserNameLabelText: ""
+ property string backToWelcomeViewButtonSource: "qrc:/images/icons/ic_arrow_back_24px.svg"
+ property bool sendContactRequestButtonVisible: true
+
+ signal backToWelcomeViewButtonClicked
+ signal needToHideConversationInCall
+ signal sendContactRequestButtonClicked
+
+ function resetBackToWelcomeViewButtonSource(reset) {
+ backToWelcomeViewButtonSource = reset ? "qrc:/images/icons/ic_arrow_back_24px.svg" : "qrc:/images/icons/round-close-24px.svg"
+ }
+
+ function toggleMessagingHeaderButtonsVisible(visible) {
+ startAAudioCallButton.visible = visible
+ startAVideoCallButton.visible = visible
+ }
+
+ RowLayout {
+ id: messagingHeaderRectRowLayout
+
+ anchors.fill: parent
+
+ HoverableButton {
+ id: backToWelcomeViewButton
+
+ Layout.alignment: Qt.AlignVCenter | Qt.AlignLeft
+ Layout.leftMargin: 10
+ Layout.preferredWidth: buttonPreferredSize
+ Layout.preferredHeight: buttonPreferredSize
+
+ radius: 30
+ source: backToWelcomeViewButtonSource
+ backgroundColor: "white"
+ onExitColor: "white"
+
+ onClicked: {
+ if (backToWelcomeViewButtonSource === "qrc:/images/icons/ic_arrow_back_24px.svg")
+ messagingHeaderRect.backToWelcomeViewButtonClicked()
+ else
+ messagingHeaderRect.needToHideConversationInCall()
+ }
+ }
+
+ Rectangle {
+ id: userNameOrIdRect
+
+ Layout.alignment: Qt.AlignVCenter | Qt.AlignLeft
+
+
+ /*
+ * Width + margin.
+ */
+ Layout.preferredWidth: messagingHeaderRect.width
+ - backToWelcomeViewButton.width - buttonGroup.width - 45
+ Layout.preferredHeight: messagingHeaderRect.height
+ Layout.leftMargin: 10
+
+ color: "transparent"
+
+ ColumnLayout {
+ id: userNameOrIdColumnLayout
+
+ Label {
+ id: userAliasLabel
+
+ Layout.alignment: Qt.AlignVCenter
+ Layout.preferredWidth: userNameOrIdRect.width
+ Layout.preferredHeight: textMetricsuserAliasLabel.boundingRect.height
+ Layout.topMargin: userNameOrIdRect.height / 2 - userAliasLabel.height - 4
+
+ font.pointSize: JamiTheme.textFontSize - 1
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+
+ text: textMetricsuserAliasLabel.elidedText
+ }
+
+ TextMetrics {
+ id: textMetricsuserAliasLabel
+
+ font: userAliasLabel.font
+ text: userAliasLabelText
+ elideWidth: userNameOrIdRect.width
+ elide: Qt.ElideMiddle
+ }
+
+ Label {
+ id: userUserNameLabel
+
+ Layout.alignment: Qt.AlignVCenter
+ Layout.preferredWidth: userNameOrIdRect.width
+ Layout.preferredHeight: textMetricsuserUserNameLabel.boundingRect.height
+
+ font.pointSize: JamiTheme.textFontSize - 2
+ color: JamiTheme.faddedFontColor
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+
+ text: textMetricsuserUserNameLabel.elidedText
+ }
+
+ TextMetrics {
+ id: textMetricsuserUserNameLabel
+
+ font: userUserNameLabel.font
+ text: userUserNameLabelText
+ elideWidth: userNameOrIdRect.width
+ elide: Qt.ElideMiddle
+ }
+ }
+ }
+
+ Rectangle {
+ id: buttonGroup
+
+ Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
+ Layout.preferredWidth: buttonPreferredSize * 3 + 18
+ Layout.preferredHeight: buttonPreferredSize
+ Layout.rightMargin: 20
+
+ color: "transparent"
+
+ HoverableButton {
+ id: startAAudioCallButton
+
+ anchors.right: startAVideoCallButton.left
+ anchors.verticalCenter: buttonGroup.verticalCenter
+
+ height: buttonPreferredSize
+ width: buttonPreferredSize
+
+ radius: 30
+ source: "qrc:/images/icons/ic_phone_24px.svg"
+ backgroundColor: "white"
+ onExitColor: "white"
+
+ onClicked: {
+ messagingHeaderRect.sendContactRequestButtonClicked()
+ CallAdapter.placeAudioOnlyCall()
+ }
+ }
+
+ HoverableButton {
+ id: startAVideoCallButton
+
+ anchors.right: sendContactRequestButton.left
+ anchors.leftMargin: 5
+ anchors.verticalCenter: buttonGroup.verticalCenter
+
+ height: buttonPreferredSize
+ width: buttonPreferredSize
+
+ radius: 30
+ source: "qrc:/images/icons/ic_video_call_24px.svg"
+ backgroundColor: "white"
+ onExitColor: "white"
+
+ onClicked: {
+ messagingHeaderRect.sendContactRequestButtonClicked()
+ CallAdapter.placeCall()
+ }
+ }
+
+ HoverableButton {
+ id: sendContactRequestButton
+
+ anchors.leftMargin: 5
+ anchors.right: buttonGroup.right
+ anchors.rightMargin: 8
+ anchors.verticalCenter: buttonGroup.verticalCenter
+
+ height: buttonPreferredSize
+ width: buttonPreferredSize
+
+ visible: sendContactRequestButtonVisible
+ radius: 30
+ source: "qrc:/images/icons/ic_person_add_black_24dp_2x.png"
+ backgroundColor: "white"
+ onExitColor: "white"
+
+ onClicked: {
+ messagingHeaderRect.sendContactRequestButtonClicked()
+ sendContactRequestButtonVisible = false
+ }
+
+ onVisibleChanged: {
+ if (sendContactRequestButton.visible) {
+ sendContactRequestButton.width = buttonPreferredSize
+ } else {
+ sendContactRequestButton.width = 0
+ }
+ }
+ }
+ }
+ }
+
+ CustomBorder {
+ commonBorder: false
+ lBorderwidth: 0
+ rBorderwidth: 0
+ tBorderwidth: 0
+ bBorderwidth: 1
+ borderColor: JamiTheme.tabbarBorderColor
+ }
+}
diff --git a/src/mainview/components/OutgoingCallPage.qml b/src/mainview/components/OutgoingCallPage.qml
new file mode 100644
index 0000000..6148d46
--- /dev/null
+++ b/src/mainview/components/OutgoingCallPage.qml
@@ -0,0 +1,229 @@
+
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+import QtQuick 2.14
+import QtQuick.Controls 2.14
+import QtQuick.Layouts 1.14
+import QtQuick.Controls.Universal 2.12
+import net.jami.Models 1.0
+
+import "../../commoncomponents"
+
+Rectangle {
+ id: outgoingCallPageRect
+
+ property int buttonPreferredSize: 50
+ property string callStatusPresentation: "outgoing"
+ property string contactImgSource: ""
+ property string bestName: "Best Name"
+ property string bestId: "Best Id"
+
+ signal callCancelButtonIsClicked
+ signal backButtonIsClicked
+
+ function updateUI(accountId, convUid) {
+ contactImgSource = "data:image/png;base64," + ClientWrapper.utilsAdaptor.getContactImageString(
+ accountId, convUid)
+ bestName = ClientWrapper.utilsAdaptor.getBestName(accountId, convUid)
+ var id = ClientWrapper.utilsAdaptor.getBestId(accountId, convUid)
+ bestId = (bestName !== id) ? id : ""
+ }
+
+ anchors.fill: parent
+
+ color: "black"
+
+
+ /*
+ * Prevent right click propagate to VideoCallPage.
+ */
+ MouseArea {
+ anchors.fill: parent
+ propagateComposedEvents: false
+ acceptedButtons: Qt.RightButton
+ }
+
+ TintedButton {
+ id: backTintedButton
+
+ anchors.top: outgoingCallPageRect.top
+ anchors.topMargin: 10
+ anchors.left: outgoingCallPageRect.left
+ anchors.leftMargin: 5
+
+ width: 30
+ height: 30
+
+ tintColor: JamiTheme.buttonTintedBlue
+ normalPixmapSource: "qrc:/images/icons/ic_arrow_back_white_24dp.png"
+ selectedPixmapSource: "qrc:/images/icons/ic_arrow_back_white_24dp.png"
+
+ onClicked: {
+ outgoingCallPageRect.backButtonIsClicked()
+ }
+ }
+
+ ColumnLayout {
+ id: outgoingCallPageRectColumnLayout
+
+ anchors.fill: parent
+
+ Image {
+ id: contactImg
+
+ Layout.alignment: Qt.AlignCenter
+
+ Layout.preferredWidth: 100
+ Layout.preferredHeight: 100
+
+ fillMode: Image.PreserveAspectFit
+ source: contactImgSource
+ asynchronous: true
+ }
+
+ Rectangle {
+ id: outgoingCallPageTextRect
+
+ Layout.alignment: Qt.AlignCenter
+ Layout.topMargin: 5
+
+ Layout.preferredWidth: outgoingCallPageRect.width
+ Layout.preferredHeight: jamiBestNameText.height + jamiBestIdText.height
+ + callStatusText.height + spinnerImage.height + 20
+
+ color: "transparent"
+
+ ColumnLayout {
+ id: outgoingCallPageTextRectColumnLayout
+
+ Text {
+ id: jamiBestNameText
+
+ Layout.alignment: Qt.AlignCenter
+ Layout.preferredWidth: outgoingCallPageTextRect.width
+ Layout.preferredHeight: 50
+
+ font.pointSize: JamiTheme.textFontSize + 3
+
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+
+ text: textMetricsjamiBestNameText.elidedText
+ color: "white"
+
+ TextMetrics {
+ id: textMetricsjamiBestNameText
+ font: jamiBestNameText.font
+ text: bestName
+ elideWidth: outgoingCallPageTextRect.width - 50
+ elide: Qt.ElideMiddle
+ }
+ }
+
+ Text {
+ id: jamiBestIdText
+
+ Layout.alignment: Qt.AlignCenter
+ Layout.preferredWidth: outgoingCallPageTextRect.width
+ Layout.preferredHeight: 30
+
+ font.pointSize: JamiTheme.textFontSize
+
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+
+ text: textMetricsjamiBestIdText.elidedText
+ color: Qt.lighter("white", 1.5)
+
+ TextMetrics {
+ id: textMetricsjamiBestIdText
+ font: jamiBestIdText.font
+ text: bestId
+ elideWidth: outgoingCallPageTextRect.width - 50
+ elide: Qt.ElideMiddle
+ }
+ }
+
+ AnimatedImage {
+ id: spinnerImage
+
+ Layout.alignment: Qt.AlignCenter
+ Layout.preferredWidth: 20
+ Layout.preferredHeight: 5
+
+ source: "qrc:/images/waiting.gif"
+ }
+
+ Text {
+ id: callStatusText
+
+ Layout.alignment: Qt.AlignCenter
+ Layout.preferredWidth: outgoingCallPageTextRect.width
+ Layout.preferredHeight: 30
+
+ font.pointSize: JamiTheme.textFontSize
+
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+
+ text: callStatusPresentation + "..."
+ color: Qt.lighter("white", 1.5)
+ }
+ }
+ }
+
+ ColumnLayout {
+ id: callCancelButtonColumnLayout
+
+ Layout.alignment: Qt.AlignCenter
+
+ HoverableButton {
+ id: callCancelButton
+
+ Layout.alignment: Qt.AlignCenter
+
+ Layout.preferredWidth: buttonPreferredSize
+ Layout.preferredHeight: buttonPreferredSize
+
+ backgroundColor: JamiTheme.declineButtonRed
+ onEnterColor: JamiTheme.declineButtonHoverRed
+ onPressColor: JamiTheme.declineButtonPressedRed
+ onReleaseColor: JamiTheme.declineButtonHoverRed
+ onExitColor: JamiTheme.declineButtonRed
+
+ buttonImageHeight: buttonPreferredSize / 2
+ buttonImageWidth: buttonPreferredSize / 2
+ source: "qrc:/images/icons/ic_close_white_24dp.png"
+ radius: 30
+
+ onClicked: {
+ outgoingCallPageRect.callCancelButtonIsClicked()
+ }
+ }
+
+ Text {
+ id: cancelText
+
+ Layout.alignment: Qt.AlignCenter
+
+ font.pointSize: JamiTheme.textFontSize - 2
+ text: qsTr("Cancel")
+ }
+ }
+ }
+}
diff --git a/src/mainview/components/ProjectCreditsScrollView.qml b/src/mainview/components/ProjectCreditsScrollView.qml
new file mode 100644
index 0000000..0606f04
--- /dev/null
+++ b/src/mainview/components/ProjectCreditsScrollView.qml
@@ -0,0 +1,61 @@
+
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+import QtQuick 2.14
+import QtQuick.Controls 2.14
+import net.jami.Models 1.0
+
+ScrollView {
+ id: projectCreditsScrollView
+
+ anchors.fill: parent
+
+ clip: true
+
+ ScrollBar.horizontal.policy: ScrollBar.AlwaysOff
+
+ TextEdit {
+ id: projectCreditsTextArea
+
+ horizontalAlignment: Text.AlignHCenter
+
+ width: projectCreditsScrollView.width
+
+ selectByMouse: false
+ readOnly: true
+ wrapMode: Text.WordWrap
+
+ font.pointSize: JamiTheme.textFontSize - 3
+ text: ClientWrapper.utilsAdaptor.getProjectCredits()
+ textFormat: TextEdit.RichText
+
+ MouseArea {
+ anchors.fill: parent
+ propagateComposedEvents: true
+ cursorShape: Qt.ArrowCursor
+ acceptedButtons: Qt.NoButton
+ }
+ }
+
+ background: Rectangle {
+ id: projectCreditsScrollViewBackground
+
+ radius: 5
+ border.color: JamiTheme.tabbarBorderColor
+ }
+}
diff --git a/src/mainview/components/RecordBox.qml b/src/mainview/components/RecordBox.qml
new file mode 100644
index 0000000..b6bc0f9
--- /dev/null
+++ b/src/mainview/components/RecordBox.qml
@@ -0,0 +1,318 @@
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Albert Babí <albert.babi@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+import QtQuick 2.15
+import QtQuick.Controls 2.14
+import QtQuick.Layouts 1.14
+import QtQuick.Controls.Styles 1.4
+import QtQuick.Dialogs 1.3
+import QtGraphicalEffects 1.0
+import net.jami.Models 1.0
+import "../../commoncomponents"
+
+
+Rectangle {
+
+ enum States {
+ INIT,
+ RECORDING,
+ REC_SUCCESS
+ }
+
+ id:recBox
+ color: "#FFFFFF"
+ width: 320
+ height: 240
+ radius: 5
+ border.color: JamiTheme.tabbarBorderColor
+
+ property string pathRecorder: ""
+ property string timeText: "00:00"
+ property int duration: 0
+ property int state: RecordBox.States.INIT
+ property bool isVideo: false
+ property bool previewAvailable: false
+
+ property int h_offset: -65
+ property int v_offset: -65
+
+ function openRecorder(set_x, set_y, vid) {
+ focus = true
+ visible = true
+ x = set_x+(width/2)+h_offset
+ y = set_y-(height/2)+v_offset
+
+ updateState(RecordBox.States.INIT)
+
+ isVideo = vid
+ if (isVideo){
+ ClientWrapper.accountAdaptor.startPreviewing(false)
+ previewAvailable = true
+ }
+ }
+
+ onActiveFocusChanged: {
+ if (visible) {
+ closeRecorder()
+ }
+ }
+
+ onVisibleChanged: {
+ if(!visible) {
+ closeRecorder()
+ }
+ }
+
+ function closeRecorder() {
+ if (isVideo && ClientWrapper.accountAdaptor.isPreviewing()) {
+ ClientWrapper.accountAdaptor.stopPreviewing()
+ }
+ stopRecording()
+ visible = false
+ }
+
+ function updateState(new_state) {
+ state = new_state
+ recordButton.visible = (state == RecordBox.States.INIT)
+ btnStop.visible = (state == RecordBox.States.RECORDING)
+ btnRestart.visible = (state == RecordBox.States.REC_SUCCESS)
+ btnSend.visible = (state == RecordBox.States.REC_SUCCESS)
+
+ if (state == RecordBox.States.INIT) {
+ duration = 0
+ time.text = "00:00"
+ timer.stop()
+ } else if (state == RecordBox.States.REC_SUCCESS) {
+ timer.stop()
+ }
+ }
+
+ function startRecording() {
+ timer.start()
+ pathRecorder = ClientWrapper.avmodel.startLocalRecorder(!isVideo)
+ if (pathRecorder == "") {
+ timer.stop()
+ }
+ }
+
+ function stopRecording() {
+ if (pathRecorder != "") {
+ ClientWrapper.avmodel.stopLocalRecorder(pathRecorder)
+ }
+ }
+
+ function sendRecord() {
+ if (pathRecorder != "") {
+ MessagesAdapter.sendFile(pathRecorder)
+ }
+ }
+
+ function updateTimer() {
+
+ duration += 1
+
+ var m = Math.trunc(duration / 60)
+ var s = (duration % 60)
+
+ var min = (m < 10) ? "0" + String(m) : String(m)
+ var sec = (s < 10) ? "0" + String(s) : String(s)
+
+ time.text = min + ":" + sec;
+ }
+
+
+ Connections{
+ target: ClientWrapper.renderManager
+ }
+
+ Rectangle {
+ id: rectBox
+ visible: (isVideo && previewAvailable)
+ Layout.alignment: Qt.AlignHCenter
+ anchors.fill: parent
+ color: "black"
+ radius: 5
+
+ PreviewRenderer{
+ id: previewWidget
+ anchors.fill: rectBox
+ anchors.centerIn: rectBox
+ layer.enabled: true
+ layer.effect: OpacityMask {
+ maskSource: rectBox
+ }
+ }
+ }
+
+ Label {
+ visible: (isVideo && !previewAvailable)
+
+ Layout.fillWidth: true
+ Layout.alignment: Qt.AlignCenter
+
+ text: qsTr("Preview unavailable")
+ font.pointSize: 10
+ font.kerning: true
+ }
+
+ Timer {
+ id: timer
+ interval: 1000;
+ running: false;
+ repeat: true
+ onTriggered: updateTimer()
+ }
+
+ Text {
+ id: time
+ visible: true
+ text: "00:00"
+ color: (isVideo ? "white" : "black")
+ font.pointSize: (isVideo ? 12 : 20)
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.horizontalCenterOffset: (isVideo ? 100 : 0)
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.verticalCenterOffset: (isVideo ? 100 : 0)
+ }
+
+
+ HoverableRadiusButton {
+ id: recordButton
+ Layout.maximumWidth: 30
+ Layout.preferredWidth: 30
+ Layout.minimumWidth: 30
+
+ Layout.maximumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.minimumHeight: 30
+
+ buttonImageHeight: height
+ buttonImageWidth: height
+ backgroundColor: isVideo? "#000000cc" : "white"
+
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.bottom: parent.bottom
+ anchors.bottomMargin: 5
+
+ radius: height / 2
+
+ icon.source: "qrc:/images/icons/av_icons/fiber_manual_record-24px.svg"
+ icon.height: 24
+ icon.width: 24
+ icon.color: "#dc2719"
+ onClicked: {
+ updateState(RecordBox.States.RECORDING)
+ startRecording()
+ }
+ }
+
+ HoverableRadiusButton {
+ id: btnStop
+ Layout.maximumWidth: 30
+ Layout.preferredWidth: 30
+ Layout.minimumWidth: 30
+
+ Layout.maximumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.minimumHeight: 30
+
+ buttonImageHeight: height
+ buttonImageWidth: height
+ backgroundColor: isVideo? "#000000cc" : "white"
+
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.bottom: parent.bottom
+ anchors.bottomMargin: 5
+
+ radius: height / 2
+
+ icon.source: "qrc:/images/icons/av_icons/stop-24px-red.svg"
+ icon.height: 24
+ icon.width: 24
+ icon.color: isVideo? "white" : "black"
+ onClicked: {
+ stopRecording()
+ updateState(RecordBox.States.REC_SUCCESS)
+ }
+ }
+
+ HoverableRadiusButton {
+ id: btnRestart
+ Layout.maximumWidth: 30
+ Layout.preferredWidth: 30
+ Layout.minimumWidth: 30
+
+ Layout.maximumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.minimumHeight: 30
+
+ buttonImageHeight: height
+ buttonImageWidth: height
+ backgroundColor: isVideo? "#000000cc" : "white"
+
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.right: btnRestart.left
+ anchors.rightMargin: 5
+ anchors.bottom: parent.bottom
+ anchors.bottomMargin: 5
+
+ radius: height / 2
+
+ icon.source: "qrc:/images/icons/av_icons/re-record-24px.svg"
+ icon.height: 24
+ icon.width: 24
+ icon.color: isVideo? "white" : "black"
+ onClicked: {
+ stopRecording()
+ updateState(RecordBox.States.INIT)
+ }
+ }
+
+ HoverableRadiusButton {
+ id: btnSend
+ Layout.maximumWidth: 30
+ Layout.preferredWidth: 30
+ Layout.minimumWidth: 30
+
+ Layout.maximumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.minimumHeight: 30
+
+ buttonImageHeight: height
+ buttonImageWidth: height
+ backgroundColor: isVideo? "#000000cc" : "white"
+
+ anchors.left: btnRestart.right
+ anchors.leftMargin: 5
+ anchors.bottom: parent.bottom
+ anchors.bottomMargin: 5
+
+ radius: height / 2
+
+ icon.source: "qrc:/images/icons/av_icons/send-24px.svg"
+ icon.height: 24
+ icon.width: 24
+ icon.color: isVideo? "white" : "black"
+ onClicked: {
+ stopRecording()
+ sendRecord()
+ closeRecorder()
+ updateState(RecordBox.States.INIT)
+ }
+ }
+}
diff --git a/src/mainview/components/ScreenRubberBand.qml b/src/mainview/components/ScreenRubberBand.qml
new file mode 100644
index 0000000..65c3266
--- /dev/null
+++ b/src/mainview/components/ScreenRubberBand.qml
@@ -0,0 +1,113 @@
+
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+import QtQuick 2.14
+import QtQuick.Window 2.14
+import QtQuick.Controls 2.14
+import QtQuick.Layouts 1.14
+import QtQuick.Controls.Universal 2.12
+import net.jami.Models 1.0
+
+
+/*
+ * ScreenRubberBand as a seperate frameless window,
+ * is to simulate the whole screen area and provide the user
+ * the ability to select certain area of it.
+ *
+ * Typically, it is used for video screen sharing.
+ */
+Window {
+ id: screenRubberBandWindow
+
+ property int screenNumber: 0
+
+ flags: Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint | Qt.WA_TranslucentBackground
+
+
+ /*
+ * Opacity with 0.7 window that will fill the entire screen,
+ * provide the users to select the area that they
+ * want to share.
+ */
+ color: Qt.rgba(0, 0, 0, 0.7)
+
+
+ /*
+ * Rect for selection.
+ */
+ Rectangle {
+ id: recSelect
+
+ height: 0
+ width: 0
+
+ border.color: JamiTheme.rubberBandSelectionBlue
+ border.width: 1
+ color: JamiTheme.rubberBandSelectionBlue
+ opacity: 0.3
+ visible: false
+ }
+
+ MouseArea {
+ id: screenRubberBandMouseArea
+
+ property int originalX: 0
+ property int originalY: 0
+
+ anchors.fill: parent
+ hoverEnabled: true
+ cursorShape: Qt.CrossCursor
+
+
+ /*
+ * Geo changing for user selection.
+ */
+ onPressed: {
+ originalX = mouseX
+ originalY = mouseY
+ recSelect.x = mouseX
+ recSelect.y = mouseY
+ recSelect.visible = true
+ }
+
+ onMouseXChanged: {
+ if (originalX - mouseX >= 0) {
+ recSelect.x = mouseX
+ recSelect.width = originalX - recSelect.x
+ } else if (mouseX - recSelect.x > 0) {
+ recSelect.width = mouseX - recSelect.x
+ }
+ }
+
+ onMouseYChanged: {
+ if (originalY - mouseY >= 0) {
+ recSelect.y = mouseY
+ recSelect.height = originalY - recSelect.y
+ } else if (mouseY - recSelect.y > 0) {
+ recSelect.height = mouseY - recSelect.y
+ }
+ }
+
+ onReleased: {
+ recSelect.visible = false
+ AvAdapter.shareScreenArea(screenNumber, recSelect.x, recSelect.y,
+ recSelect.width, recSelect.height)
+ screenRubberBandWindow.close()
+ }
+ }
+}
diff --git a/src/mainview/components/SelectScreen.qml b/src/mainview/components/SelectScreen.qml
new file mode 100644
index 0000000..506af48
--- /dev/null
+++ b/src/mainview/components/SelectScreen.qml
@@ -0,0 +1,320 @@
+
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+import QtQuick 2.14
+import QtQuick.Window 2.14
+import QtQuick.Controls 2.14
+import QtQuick.Layouts 1.14
+import QtQuick.Controls.Universal 2.12
+import net.jami.Models 1.0
+
+import "../js/screenrubberbandcreation.js" as ScreenRubberBandCreation
+
+import "../../commoncomponents"
+
+
+/*
+ * SelectScreenWindow as a seperate window,
+ * is to make user aware of which screen they want to share,
+ * during the video call, if the context menu item is selected.
+ */
+Window {
+ id: selectScreenWindow
+
+ property int minWidth: 650
+ property int minHeight: 500
+
+ property int selectedScreenNumber: -1
+
+
+ /*
+ * Decide whether to show screen area or entire screen.
+ */
+ property bool selectArea: false
+
+
+ /*
+ * How many rows the ScrollView should have.
+ */
+ function calculateRepeaterModel() {
+ var numberOfScreens = Qt.application.screens.length
+
+ if (numberOfScreens % 2 === 1)
+ return numberOfScreens / 2 + 1
+ else
+ return numberOfScreens / 2
+ }
+
+ function calculateScreenNumber(index) {
+ if (index === 0 || index === 1)
+ return index
+ if (index % 2 === 0)
+ return index * 2
+ else
+ return index * 2 + 1
+ }
+
+ minimumWidth: minWidth
+ minimumHeight: minHeight
+
+ title: "Screen sharing"
+
+
+ /*
+ * Note: Qt.application.screens[0] is the app's current existing screen.
+ */
+ screen: Qt.application.screens[0]
+
+ Rectangle {
+ id: selectScreenWindowRect
+
+ anchors.fill: parent
+
+ Text {
+ id: screenListText
+
+ anchors.top: selectScreenWindowRect.top
+ anchors.topMargin: 20
+ anchors.horizontalCenter: selectScreenWindowRect.horizontalCenter
+
+ font.pointSize: JamiTheme.textFontSize + 2
+ font.bold: true
+ text: qsTr("Choose A Screen to Share")
+ }
+
+ ScrollView {
+ id: screenSelectionScrollView
+
+ anchors.centerIn: selectScreenWindowRect
+
+ width: selectScreenWindowRect.width - 50
+ height: selectScreenWindowRect.height - 150
+
+ clip: true
+
+ ScrollBar.horizontal.policy: ScrollBar.AlwaysOff
+
+
+ /*
+ * Column of rows repeater (two screen captures in a row).
+ */
+ Column {
+ id: screenSelectionScrollViewColumn
+
+ spacing: 10
+
+ Repeater {
+ id: screenInfo
+
+ model: calculateRepeaterModel()
+
+ Row {
+ id: screenInfoRow
+
+ spacing: 20
+
+ Connections {
+ target: selectScreenWindow
+
+ function onSelectedScreenNumberChanged() {
+
+
+ /*
+ * Recover from green state.
+ */
+ screenSelectionRectOdd.borderColor = JamiTheme.tabbarBorderColor
+ screenSelectionRectEven.borderColor = JamiTheme.tabbarBorderColor
+ }
+ }
+
+
+ /*
+ * To make sure that two screen captures in one row,
+ * a repeater of two rect is needed, which one in charge
+ * of odd number screen, one in charge of even number screen.
+ */
+ Rectangle {
+ id: screenSelectionRectOdd
+
+ property string borderColor: JamiTheme.tabbarBorderColor
+
+ height: screenSelectionScrollView.height
+ width: screenSelectionScrollView.width / 2 - screenInfoRow.spacing / 2
+
+ radius: 10
+ border.color: borderColor
+
+ Image {
+ id: screenShotOdd
+
+ anchors.top: screenSelectionRectOdd.top
+ anchors.topMargin: 10
+ anchors.horizontalCenter: screenSelectionRectOdd.horizontalCenter
+
+ height: screenSelectionRectOdd.height - 50
+ width: screenSelectionRectOdd.width - 50
+
+ fillMode: Image.PreserveAspectFit
+ mipmap: true
+
+ Component.onCompleted: {
+ screenShotOdd.source = "data:image/png;base64,"
+ + AvAdapter.captureScreen(
+ calculateScreenNumber(index))
+ }
+ }
+
+ Text {
+ id: screenNameOdd
+
+ anchors.top: screenShotOdd.bottom
+ anchors.topMargin: 10
+ anchors.horizontalCenter: screenSelectionRectOdd.horizontalCenter
+
+ font.pointSize: JamiTheme.textFontSize - 2
+ text: qsTr("Screen") + " " + (calculateScreenNumber(
+ index) + 1)
+ }
+
+ MouseArea {
+ anchors.fill: parent
+ acceptedButtons: Qt.LeftButton
+
+ onClicked: {
+ if (selectedScreenNumber == -1
+ || selectedScreenNumber !== calculateScreenNumber(
+ index)) {
+ selectedScreenNumber = calculateScreenNumber(
+ index)
+ screenSelectionRectOdd.borderColor
+ = JamiTheme.screenSelectionBorderGreen
+ }
+ }
+ }
+ }
+
+ Rectangle {
+ id: screenSelectionRectEven
+
+ property string borderColor: JamiTheme.tabbarBorderColor
+
+ height: screenSelectionScrollView.height
+ width: screenSelectionScrollView.width / 2 - screenInfoRow.spacing / 2
+
+ radius: 10
+ border.color: borderColor
+
+ visible: (Qt.application.screens.length) % 2 != 1
+
+ Image {
+ id: screenShotEven
+
+ anchors.top: screenSelectionRectEven.top
+ anchors.topMargin: 10
+ anchors.horizontalCenter: screenSelectionRectEven.horizontalCenter
+
+ height: screenSelectionRectEven.height - 50
+ width: screenSelectionRectEven.width - 50
+
+ fillMode: Image.PreserveAspectFit
+ mipmap: true
+
+ Component.onCompleted: {
+ if (screenSelectionRectEven.visible)
+ screenShotEven.source = "data:image/png;base64,"
+ + AvAdapter.captureScreen(
+ calculateScreenNumber(
+ index + 1))
+ }
+ }
+
+ Text {
+ id: screenNameEven
+
+ anchors.top: screenShotEven.bottom
+ anchors.topMargin: 10
+ anchors.horizontalCenter: screenSelectionRectEven.horizontalCenter
+
+ font.pointSize: JamiTheme.textFontSize - 2
+ text: qsTr(
+ "Screen") + " " + (calculateScreenNumber(
+ index + 1) + 1)
+ }
+
+ MouseArea {
+ anchors.fill: parent
+ acceptedButtons: Qt.LeftButton
+
+ onClicked: {
+ if (selectedScreenNumber == -1
+ || selectedScreenNumber !== calculateScreenNumber(
+ index + 1)) {
+ selectedScreenNumber = calculateScreenNumber(
+ index + 1)
+ screenSelectionRectEven.borderColor
+ = JamiTheme.screenSelectionBorderGreen
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ background: Rectangle {
+ id: screenSelectionScrollViewBackground
+
+ radius: 10
+ border.color: JamiTheme.tabbarBorderColor
+ }
+ }
+ }
+
+ HoverableButton {
+ id: selectButton
+
+ anchors.bottom: selectScreenWindowRect.bottom
+ anchors.bottomMargin: 10
+ anchors.horizontalCenter: selectScreenWindowRect.horizontalCenter
+
+ visible: selectedScreenNumber != -1
+
+ text: qsTr("Share Screen")
+ radius: 10
+
+ onClicked: {
+ if (selectArea) {
+ selectScreenWindow.hide()
+ ScreenRubberBandCreation.createScreenRubberBandWindowObject(
+ selectScreenWindow, selectedScreenNumber)
+ ScreenRubberBandCreation.showScreenRubberBandWindow()
+
+
+ /*
+ * Destory selectScreenWindow once screenRubberBand is closed.
+ */
+ ScreenRubberBandCreation.connectOnClosingEvent(function () {
+ selectScreenWindow.close()
+ })
+ } else {
+ AvAdapter.shareEntireScreen(selectedScreenNumber)
+ selectScreenWindow.close()
+ }
+ }
+ }
+}
diff --git a/src/mainview/components/SidePanel.qml b/src/mainview/components/SidePanel.qml
new file mode 100644
index 0000000..1a81d1c
--- /dev/null
+++ b/src/mainview/components/SidePanel.qml
@@ -0,0 +1,311 @@
+
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+import QtQuick 2.14
+import QtQuick.Controls 2.14
+import QtQuick.Layouts 1.14
+import net.jami.Models 1.0
+
+import "../../commoncomponents"
+
+Rectangle {
+ id: sidePanelRect
+
+ property bool tabBarVisible: true
+ property int pendingRequestCount: 0
+ property int totalUnreadMessagesCount: 0
+
+ signal conversationSmartListNeedToAccessMessageWebView(string currentUserDisplayName, string currentUserAlias, string currentUID, bool callStackViewShouldShow, bool isAudioOnly, string callStateStr)
+ signal accountComboBoxNeedToShowWelcomePage(int index)
+ signal conversationSmartListViewNeedToShowWelcomePage
+ signal accountSignalsReconnect(string accountId)
+ signal needToUpdateConversationForAddedContact
+ signal needToAddNewAccount
+ signal settingBtnClicked_AccountComboBox
+
+
+ /*
+ * Hack -> force redraw.
+ */
+ function forceReselectConversationSmartListCurrentIndex() {
+ var index = conversationSmartListView.currentIndex
+ conversationSmartListView.currentIndex = -1
+ conversationSmartListView.currentIndex = index
+ }
+
+
+ /*
+ * For contact request conv to be focused correctly.
+ */
+ function setCurrentUidSmartListModelIndex() {
+ conversationSmartListView.currentIndex
+ = conversationSmartListView.model.currentUidSmartListModelIndex(
+ )
+ }
+
+ function updatePendingRequestCount() {
+ pendingRequestCount = ClientWrapper.utilsAdaptor.getTotalPendingRequest()
+ }
+
+ function updateTotalUnreadMessagesCount() {
+ totalUnreadMessagesCount = ClientWrapper.utilsAdaptor.getTotalUnreadMessages()
+ }
+
+ function clearContactSearchBar() {
+ contactSearchBar.clearText()
+ }
+
+ function accountChangedUIReset() {
+ contactSearchBar.clearText()
+ contactSearchBar.setPlaceholderString(
+ JamiTheme.contactSearchBarPlaceHolderConversationText)
+ sidePanelTabBar.converstationTabDown = true
+ sidePanelTabBar.invitationTabDown = false
+ }
+
+ function needToChangeToAccount(accountId, index) {
+ if (index !== -1) {
+ accountComboBox.currentIndex = index
+ ClientWrapper.accountAdaptor.accountChanged(index)
+ accountChangedUIReset()
+ }
+ }
+
+ function refreshAccountComboBox(index = -1) {
+ accountComboBox.resetAccountListModel()
+
+
+ /*
+ * To make sure that the ui is refreshed for accountComboBox.
+ * Note: when index in -1, it means to maintain the
+ * current account selection.
+ */
+ var currentIndex = accountComboBox.currentIndex
+ if (accountComboBox.currentIndex === index)
+ accountComboBox.currentIndex = -1
+ accountComboBox.currentIndex = index
+ if (index !== -1)
+ ClientWrapper.accountAdaptor.accountChanged(index)
+ else
+ accountComboBox.currentIndex = currentIndex
+ accountComboBox.update()
+ accountChangedUIReset()
+ }
+
+ function deselectConversationSmartList() {
+ ConversationsAdapter.deselectConversation()
+ conversationSmartListView.currentIndex = -1
+ }
+
+ function forceUpdateConversationSmartListView() {
+ conversationSmartListView.updateConversationSmartListView()
+ }
+
+
+ /*
+ * Intended -> since strange behavior will happen without this for stackview.
+ */
+ anchors.fill: parent
+
+ AccountComboBox {
+ id: accountComboBox
+
+ anchors.top: sidePanelRect.top
+
+ width: sidePanelRect.width
+ height: 60
+
+ currentIndex: 0
+
+ Connections {
+ target: ClientWrapper.accountAdaptor
+
+ function onAccountSignalsReconnect(accountId) {
+ CallAdapter.connectCallStatusChanged(accountId)
+ ConversationsAdapter.accountChangedSetUp(accountId)
+ sidePanelRect.accountSignalsReconnect(accountId)
+ }
+
+ function onUpdateConversationForAddedContact() {
+ sidePanelRect.needToUpdateConversationForAddedContact()
+ }
+
+ function onAccountStatusChanged() {
+ accountComboBox.updateAccountListModel()
+ }
+ }
+
+ onSettingBtnClicked: {
+ settingBtnClicked_AccountComboBox()
+ }
+
+ onAccountChanged: {
+ ClientWrapper.accountAdaptor.accountChanged(index)
+ accountChangedUIReset()
+ }
+
+ onNeedToUpdateSmartList: {
+ conversationSmartListView.currentIndex = -1
+ conversationSmartListView.updateSmartList(accountId)
+ }
+
+ onNeedToBackToWelcomePage: {
+ sidePanelRect.accountComboBoxNeedToShowWelcomePage(index)
+ }
+
+ onNewAccountButtonClicked: {
+ sidePanelRect.needToAddNewAccount()
+ }
+
+ Component.onCompleted: {
+ ClientWrapper.accountAdaptor.setQmlObject(this)
+ ClientWrapper.accountAdaptor.accountChanged(0)
+ }
+ }
+
+ SidePanelTabBar {
+ id: sidePanelTabBar
+
+ anchors.top: accountComboBox.bottom
+ anchors.topMargin: 20
+ anchors.left: sidePanelRect.left
+ anchors.leftMargin: tabBarLeftMargin
+
+ width: sidePanelRect.width
+ height: Math.max(sidePanelTabBar.converstationTabHeight,
+ sidePanelTabBar.invitationTabHeight)
+ }
+
+ Rectangle {
+ id: sidePanelColumnRect
+
+ anchors.top: sidePanelTabBar.bottom
+ anchors.topMargin: -12
+
+ width: sidePanelRect.width
+ height: sidePanelRect.height - accountComboBox.height - sidePanelTabBar.height
+
+ border.color: JamiTheme.tabbarBorderColor
+ radius: 10
+
+ Rectangle {
+ id: hideTopBoarderRect
+
+ anchors.top: sidePanelColumnRect.top
+ anchors.left: sidePanelColumnRect.left
+ anchors.leftMargin: tabBarLeftMargin + 5
+
+ width: sidePanelTabBar.converstationTabWidth + sidePanelTabBar.invitationTabWidth - 9
+ height: 1
+
+ visible: tabBarVisible
+
+ color: "white"
+ }
+
+ ColumnLayout {
+ id: columnLayoutView
+
+ anchors.centerIn: sidePanelColumnRect
+
+ width: sidePanelColumnRect.width
+ height: sidePanelColumnRect.height - 20
+
+
+ /*
+ * Search bar container to embed search label
+ */
+ ContactSearchBar {
+ id: contactSearchBar
+
+ Layout.alignment: Qt.AlignCenter
+ Layout.topMargin: 10
+ Layout.rightMargin: 5
+ Layout.leftMargin: 5
+ Layout.preferredWidth: parent.width - 10
+ Layout.preferredHeight: 35
+
+ onContactSearchBarTextChanged: {
+ ClientWrapper.utilsAdaptor.setConversationFilter(text)
+ }
+ }
+
+ ConversationSmartListView {
+ id: conversationSmartListView
+
+ Layout.alignment: Qt.AlignCenter
+ Layout.preferredWidth: parent.width
+ Layout.preferredHeight: parent.height - contactSearchBar.height - 30
+
+ Connections {
+ target: ConversationsAdapter
+
+ function onShowChatView(accountId, convUid) {
+ conversationSmartListView.needToShowChatView(accountId,
+ convUid)
+ }
+
+ function onShowConversationTabs(visible) {
+ tabBarVisible = visible
+ updatePendingRequestCount()
+ updateTotalUnreadMessagesCount()
+ }
+ }
+
+ onNeedToSelectItems: {
+ ConversationsAdapter.selectConversation(index)
+ }
+
+ onNeedToBackToWelcomePage: {
+ sidePanelRect.conversationSmartListViewNeedToShowWelcomePage()
+ }
+
+ onNeedToAccessMessageWebView: {
+ sidePanelRect.conversationSmartListNeedToAccessMessageWebView(
+ currentUserDisplayName, currentUserAlias,
+ currentUID, callStackViewShouldShow,
+ isAudioOnly, callStateStr)
+ }
+
+ onNeedToGrabFocus: {
+ contactSearchBar.clearFocus()
+ }
+
+ Component.onCompleted: {
+ ConversationsAdapter.setQmlObject(this)
+ conversationSmartListView.currentIndex = -1
+ }
+ }
+ }
+ }
+
+ onTabBarVisibleChanged: {
+ if (!tabBarVisible) {
+ sidePanelTabBar.height = 0
+ sidePanelTabBar.anchors.topMargin = 12
+ sidePanelColumnRect.border.width = 0
+ } else {
+ sidePanelTabBar.height = Qt.binding(function () {
+ return Math.max(sidePanelTabBar.converstationTabHeight,
+ sidePanelTabBar.invitationTabHeight)
+ })
+ sidePanelTabBar.anchors.topMargin = 20
+ sidePanelColumnRect.border.width = 1
+ }
+ }
+}
diff --git a/src/mainview/components/SidePanelTabBar.qml b/src/mainview/components/SidePanelTabBar.qml
new file mode 100644
index 0000000..d8197e1
--- /dev/null
+++ b/src/mainview/components/SidePanelTabBar.qml
@@ -0,0 +1,199 @@
+
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+import QtQuick 2.14
+import QtQuick.Controls 2.14
+import QtQuick.Layouts 1.14
+import net.jami.Models 1.0
+
+TabBar {
+ id: tabBar
+
+ property alias converstationTabDown: pageOne.down
+ property alias invitationTabDown: pageTwo.down
+ property alias converstationTabWidth: pageOne.width
+ property alias invitationTabWidth: pageTwo.width
+ property alias converstationTabHeight: pageOne.height
+ property alias invitationTabHeight: pageTwo.height
+
+ visible: tabBarVisible
+
+ currentIndex: 0
+
+ TabButton {
+ id: pageOne
+
+ width: tabBar.width / 2 - tabButtonShrinkSize
+ height: textConvElement.height + 10
+
+ down: true
+
+ Rectangle {
+ id: totalUnreadMessagesCountRect
+
+ anchors.right: pageOne.right
+ anchors.rightMargin: 5
+ anchors.bottom: pageOne.bottom
+ anchors.bottomMargin: pageOne.height - totalUnreadMessagesCountRect.height / 2
+
+ width: 14
+ height: 14
+
+ visible: totalUnreadMessagesCount > 0
+
+ Text {
+ id: totalUnreadMessagesCountText
+
+ anchors.centerIn: totalUnreadMessagesCountRect
+
+ text: totalUnreadMessagesCount > 9 ? "···" : totalUnreadMessagesCount
+ color: "white"
+ }
+
+ radius: 30
+ color: JamiTheme.notificationRed
+ }
+
+ background: Rectangle {
+ id: buttonRectOne
+
+ radius: 10
+ width: pageOne.width + 2
+ color: pageOne.down ? "white" : JamiTheme.releaseColor
+ border.color: JamiTheme.tabbarBorderColor
+
+ Text {
+ id: textConvElement
+
+ anchors.centerIn: buttonRectOne
+
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+
+ text: qsTr("Converstation")
+ font.pointSize: JamiTheme.textFontSize
+ opacity: enabled ? 1.0 : 0.3
+ }
+
+ MouseArea {
+ anchors.fill: parent
+ hoverEnabled: true
+ onPressed: {
+ buttonRectOne.color = JamiTheme.pressColor
+ ConversationsAdapter.setConversationFilter("")
+ contactSearchBar.setPlaceholderString(
+ JamiTheme.contactSearchBarPlaceHolderConversationText)
+ pageOne.down = true
+ pageTwo.down = false
+ setCurrentUidSmartListModelIndex()
+ forceReselectConversationSmartListCurrentIndex()
+ }
+ onReleased: {
+ buttonRectOne.color = JamiTheme.releaseColor
+ }
+ onEntered: {
+ buttonRectOne.color = JamiTheme.hoverColor
+ }
+ onExited: {
+ buttonRectOne.color = Qt.binding(function () {
+ return pageOne.down ? "white" : JamiTheme.releaseColor
+ })
+ }
+ }
+ }
+ }
+
+ TabButton {
+ id: pageTwo
+
+ width: tabBar.width / 2 - tabButtonShrinkSize
+ height: textInvElement.height + 10
+
+ Rectangle {
+ id: pendingRequestCountRect
+
+ anchors.right: pageTwo.right
+ anchors.rightMargin: 5
+ anchors.bottom: pageTwo.bottom
+ anchors.bottomMargin: pageTwo.height - pendingRequestCountRect.height / 2
+
+ width: 14
+ height: 14
+
+ visible: pendingRequestCount > 0
+
+ Text {
+ id: pendingRequestCountText
+
+ anchors.centerIn: pendingRequestCountRect
+
+ text: pendingRequestCount > 9 ? "···" : pendingRequestCount
+ color: "white"
+ }
+
+ radius: 30
+ color: JamiTheme.notificationRed
+ }
+
+ background: Rectangle {
+ id: buttonRectTwo
+
+ radius: 10
+ color: pageTwo.down ? "white" : JamiTheme.releaseColor
+ border.color: JamiTheme.tabbarBorderColor
+
+ Text {
+ id: textInvElement
+
+ anchors.centerIn: buttonRectTwo
+
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+
+ font.pointSize: JamiTheme.textFontSize
+
+ text: qsTr("Invitation")
+ opacity: enabled ? 1.0 : 0.3
+ }
+
+ MouseArea {
+ anchors.fill: parent
+ hoverEnabled: true
+ onPressed: {
+ buttonRectTwo.color = JamiTheme.pressColor
+ ConversationsAdapter.setConversationFilter("PENDING")
+ contactSearchBar.setPlaceholderString(
+ JamiTheme.contactSearchBarPlaceHolderInivitionText)
+ pageTwo.down = true
+ pageOne.down = false
+ }
+ onReleased: {
+ buttonRectTwo.color = JamiTheme.releaseColor
+ }
+ onEntered: {
+ buttonRectTwo.color = JamiTheme.hoverColor
+ }
+ onExited: {
+ buttonRectTwo.color = Qt.binding(function () {
+ return pageTwo.down ? "white" : JamiTheme.releaseColor
+ })
+ }
+ }
+ }
+ }
+}
diff --git a/src/mainview/components/UserProfile.qml b/src/mainview/components/UserProfile.qml
new file mode 100644
index 0000000..072d9a6
--- /dev/null
+++ b/src/mainview/components/UserProfile.qml
@@ -0,0 +1,170 @@
+
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+import QtQuick 2.14
+import QtQuick.Controls 2.14
+import QtQuick.Layouts 1.14
+import net.jami.Models 1.0
+
+import "../../commoncomponents"
+
+Dialog {
+ id: userProfileDialog
+
+ property string responsibleConvUid: ""
+ property string contactPicBase64: ""
+ property string aliasText: ""
+ property string registeredNameText: ""
+ property string idText: ""
+
+ modal: true
+
+
+ /*
+ * Content height + margin.
+ */
+ contentHeight: userProfileDialogUpperPartColumnLayout.implicitHeight + 30
+
+
+ /*
+ * Fake focus to make sure that text edit lose focus on close.
+ */
+ FocusScope {
+ id: fakeFocusTextEdit
+ }
+
+ ColumnLayout {
+ id: userProfileDialogUpperPartColumnLayout
+
+ anchors.centerIn: parent
+
+ spacing: 15
+
+ Image {
+ id: contactImage
+
+ Layout.alignment: Qt.AlignCenter
+
+ width: 150
+ height: 150
+
+ fillMode: Image.PreserveAspectFit
+ mipmap: true
+ }
+
+
+ /*
+ * Visible when user alias is not empty or equals to id.
+ */
+ Text {
+ id: contactAlias
+
+ Layout.alignment: Qt.AlignCenter
+
+ font.pointSize: JamiTheme.textFontSize
+ text: textMetricsContactAliasText.elidedText
+ visible: aliasText ? (aliasText === idText ? false : true) : false
+ TextMetrics {
+ id: textMetricsContactAliasText
+ font: contactAlias.font
+ text: aliasText
+ elideWidth: userProfileDialog.width - 30
+ elide: Qt.ElideMiddle
+ }
+ }
+
+
+ /*
+ * Visible when user name is not empty or equals to alias.
+ */
+ Text {
+ id: contactDisplayName
+
+ Layout.alignment: Qt.AlignCenter
+
+ font.pointSize: JamiTheme.textFontSize - 1
+ text: textMetricsContactDisplayNameText.elidedText
+ visible: registeredNameText ? (registeredNameText === aliasText ? false : true) : false
+ color: JamiTheme.faddedFontColor
+
+ TextMetrics {
+ id: textMetricsContactDisplayNameText
+ font: contactDisplayName.font
+ text: registeredNameText
+ elideWidth: userProfileDialog.width - 30
+ elide: Qt.ElideMiddle
+ }
+ }
+
+ TextEdit {
+ id: contactId
+
+ Layout.alignment: Qt.AlignCenter
+
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+
+ selectByMouse: true
+ readOnly: true
+ font.pointSize: JamiTheme.textFontSize - 1
+ text: textMetricsContactIdText.elidedText
+
+ TextMetrics {
+ id: textMetricsContactIdText
+ font: contactId.font
+ text: idText
+ elideWidth: userProfileDialog.width - 30
+ elide: Qt.ElideMiddle
+ }
+ }
+
+ Image {
+ id: contactQrImage
+
+ Layout.alignment: Qt.AlignBottom | Qt.AlignCenter
+
+ width: 150
+ height: 150
+
+ fillMode: Image.PreserveAspectFit
+ sourceSize.width: 150
+ sourceSize.height: 150
+ mipmap: true
+ }
+ }
+
+ background: Rectangle {
+ border.width: 0
+ radius: 10
+ }
+
+ onClosed: {
+ contactId.deselect()
+ fakeFocusTextEdit.focus = true
+ }
+
+ onResponsibleConvUidChanged: {
+ if (responsibleConvUid !== "")
+ contactQrImage.source = "image://qrImage/contact_" + responsibleConvUid
+ }
+
+ onContactPicBase64Changed: {
+ if (contactPicBase64 !== "")
+ contactImage.source = "data:image/png;base64," + contactPicBase64
+ }
+}
diff --git a/src/mainview/components/VideoCallFullScreenWindowContainer.qml b/src/mainview/components/VideoCallFullScreenWindowContainer.qml
new file mode 100644
index 0000000..c63e574
--- /dev/null
+++ b/src/mainview/components/VideoCallFullScreenWindowContainer.qml
@@ -0,0 +1,40 @@
+
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+import QtQuick 2.14
+import QtQuick.Window 2.14
+
+Window {
+ id: videoWindow
+
+ function setAsChild(obj) {
+ obj.parent = containerRect
+ }
+
+ flags: Qt.FramelessWindowHint
+
+ screen: Qt.application.screens[0]
+
+ visible: false
+
+ Rectangle {
+ id: containerRect
+
+ anchors.fill: parent
+ }
+}
diff --git a/src/mainview/components/VideoCallPage.qml b/src/mainview/components/VideoCallPage.qml
new file mode 100644
index 0000000..e1f29b9
--- /dev/null
+++ b/src/mainview/components/VideoCallPage.qml
@@ -0,0 +1,375 @@
+
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+import QtQuick 2.14
+import QtQuick.Controls 2.14
+import QtQuick.Layouts 1.14
+import QtQuick.Controls.Universal 2.12
+import QtGraphicalEffects 1.14
+import net.jami.Models 1.0
+
+import "../../commoncomponents"
+
+Rectangle {
+ id: videoCallPageRect
+
+ property string bestName: "Best Name"
+ property string bestId: "Best Id"
+ property variant clickPos: "1,1"
+ property int previewMargin: 15
+ property int previewToX: 0
+ property int previewToY: 0
+
+ property var corrspondingMessageWebView: null
+
+ signal videoCallPageBackButtonIsClicked
+ signal needToShowInFullScreen
+
+ function updateUI(accountId, convUid) {
+ bestName = ClientWrapper.utilsAdaptor.getBestName(accountId, convUid)
+
+ var id = ClientWrapper.utilsAdaptor.getBestId(accountId, convUid)
+ bestId = (bestName !== id) ? id : ""
+ }
+
+ function setDistantRendererId(id) {
+ distantRenderer.setRendererId(id)
+ }
+
+ function setVideoCallPageCorrspondingMessageWebView(webViewId) {
+ corrspondingMessageWebView = webViewId
+ corrspondingMessageWebView.needToHideConversationInCall.disconnect(
+ closeInCallConversation)
+ corrspondingMessageWebView.needToHideConversationInCall.connect(
+ closeInCallConversation)
+ }
+
+ function closeInCallConversation() {
+ if (inVideoCallMessageWebViewStack.visible) {
+ corrspondingMessageWebView.resetMessagingHeaderBackButtonSource(
+ true)
+ corrspondingMessageWebView.setMessagingHeaderButtonsVisible(true)
+ inVideoCallMessageWebViewStack.visible = false
+ inVideoCallMessageWebViewStack.clear()
+ }
+ }
+
+ function closeContextMenuAndRelatedWindows() {
+ videoCallPageContextMenu.closePotentialWindows()
+ videoCallPageContextMenu.close()
+ videoCallOverlay.closePotentialContactPicker()
+ }
+
+ function previewMagneticSnap() {
+
+
+ /*
+ * Calculate the position where the previewRenderer should attach to.
+ */
+ var previewRendererCenter = Qt.point(
+ previewRenderer.x + previewRenderer.width / 2,
+ previewRenderer.y + previewRenderer.height / 2)
+ var distantRendererCenter = Qt.point(
+ distantRenderer.x + distantRenderer.width / 2,
+ distantRenderer.y + distantRenderer.height / 2)
+
+ if (previewRendererCenter.x >= distantRendererCenter.x) {
+ if (previewRendererCenter.y >= distantRendererCenter.y) {
+
+
+ /*
+ * Bottom right.
+ */
+ previewToX = Qt.binding(function () {
+ return videoCallPageMainRect.width - previewRenderer.width - previewMargin
+ })
+ previewToY = Qt.binding(function () {
+ return videoCallPageMainRect.height - previewRenderer.height - previewMargin
+ })
+ } else {
+
+
+ /*
+ * Top right.
+ */
+ previewToX = Qt.binding(function () {
+ return videoCallPageMainRect.width - previewRenderer.width - previewMargin
+ })
+ previewToY = previewMargin
+ }
+ } else {
+ if (previewRendererCenter.y >= distantRendererCenter.y) {
+
+
+ /*
+ * Bottom left.
+ */
+ previewToX = previewMargin
+ previewToY = Qt.binding(function () {
+ return videoCallPageMainRect.height - previewRenderer.height - previewMargin
+ })
+ } else {
+
+
+ /*
+ * Top left.
+ */
+ previewToX = previewMargin
+ previewToY = previewMargin
+ }
+ }
+ previewRenderer.state = "geoChanging"
+ }
+
+ function setCallOverlayBackButtonVisible(visible) {
+ videoCallOverlay.setBackTintedButtonVisible(visible)
+ }
+
+ anchors.fill: parent
+
+ SplitView {
+ id: mainColumnLayout
+
+ anchors.fill: parent
+
+ orientation: Qt.Vertical
+
+ handle: Rectangle {
+ implicitWidth: videoCallPageRect.width
+ implicitHeight: JamiTheme.splitViewHandlePreferedWidth
+ color: SplitHandle.pressed ? JamiTheme.pressColor : (SplitHandle.hovered ? JamiTheme.hoverColor : JamiTheme.tabbarBorderColor)
+ }
+
+ Rectangle {
+ id: videoCallPageMainRect
+
+ SplitView.preferredHeight: (videoCallPageRect.height / 3) * 2
+ SplitView.minimumHeight: videoCallPageRect.height / 2 + 20
+ SplitView.fillWidth: true
+
+ CallOverlay {
+ id: videoCallOverlay
+
+ anchors.fill: parent
+
+ Connections {
+ target: CallAdapter
+
+ function onUpdateTimeText(time) {
+ videoCallOverlay.timeText = time
+ }
+
+ function onUpdateOverlay(isPaused, isAudioOnly, isAudioMuted, isVideoMuted, isRecording, isSIP, isConferenceCall, bestName) {
+ videoCallOverlay.showOnHoldImage(isPaused)
+ videoCallOverlay.updateButtonStatus(isPaused,
+ isAudioOnly,
+ isAudioMuted,
+ isVideoMuted,
+ isRecording, isSIP,
+ isConferenceCall)
+ videoCallOverlay.bestName = bestName
+ }
+
+ function onShowOnHoldLabel(isPaused) {
+ videoCallOverlay.showOnHoldImage(isPaused)
+ }
+ }
+
+ onBackButtonIsClicked: {
+ if (inVideoCallMessageWebViewStack.visible) {
+ corrspondingMessageWebView.resetMessagingHeaderBackButtonSource(
+ true)
+ corrspondingMessageWebView.setMessagingHeaderButtonsVisible(
+ true)
+ inVideoCallMessageWebViewStack.visible = false
+ inVideoCallMessageWebViewStack.clear()
+ }
+ videoCallPageRect.videoCallPageBackButtonIsClicked()
+ }
+
+ onOverlayChatButtonClicked: {
+ if (inVideoCallMessageWebViewStack.visible) {
+ corrspondingMessageWebView.resetMessagingHeaderBackButtonSource(
+ true)
+ corrspondingMessageWebView.setMessagingHeaderButtonsVisible(
+ true)
+ inVideoCallMessageWebViewStack.visible = false
+ inVideoCallMessageWebViewStack.clear()
+ } else {
+ corrspondingMessageWebView.resetMessagingHeaderBackButtonSource(
+ false)
+ corrspondingMessageWebView.setMessagingHeaderButtonsVisible(
+ false)
+ inVideoCallMessageWebViewStack.visible = true
+ inVideoCallMessageWebViewStack.push(
+ corrspondingMessageWebView)
+ }
+ }
+ }
+
+ DistantRenderer {
+ id: distantRenderer
+
+ anchors.centerIn: videoCallPageMainRect
+ z: -1
+
+ width: videoCallPageMainRect.width
+ height: videoCallPageMainRect.height
+ }
+
+ VideoCallPreviewRenderer {
+ id: previewRenderer
+
+
+ /*
+ * Property is used in the {} expression for height (extra dependency),
+ * it will not affect the true height expression, since expression
+ * at last will be taken only, but it will force the height to update
+ * and reevaluate getPreviewImageScalingFactor().
+ */
+ property int previewImageScalingFactorUpdated: 0
+
+ Connections {
+ target: CallAdapter
+
+ function onPreviewVisibilityNeedToChange(visible) {
+ previewRenderer.visible = visible
+ }
+ }
+
+ width: videoCallPageMainRect.width / 4
+ height: {
+ previewImageScalingFactorUpdated
+ return previewRenderer.width * previewRenderer.getPreviewImageScalingFactor()
+ }
+ x: videoCallPageMainRect.width - previewRenderer.width - previewMargin
+ y: videoCallPageMainRect.height - previewRenderer.height - previewMargin
+ z: -1
+
+ states: [
+ State {
+ name: "geoChanging"
+ PropertyChanges {
+ target: previewRenderer
+ x: previewToX
+ y: previewToY
+ }
+ }
+ ]
+
+ transitions: Transition {
+ PropertyAnimation {
+ properties: "x,y"
+ easing.type: Easing.OutExpo
+ duration: 250
+
+ onStopped: {
+ previewRenderer.state = ""
+ }
+ }
+ }
+
+ MouseArea {
+ id: dragMouseArea
+
+ anchors.fill: previewRenderer
+
+ onPressed: {
+ clickPos = Qt.point(mouse.x, mouse.y)
+ }
+
+ onReleased: {
+ previewRenderer.state = ""
+ previewMagneticSnap()
+ }
+
+ onPositionChanged: {
+
+
+ /*
+ * Calculate mouse position relative change.
+ */
+ var delta = Qt.point(mouse.x - clickPos.x,
+ mouse.y - clickPos.y)
+ var deltaW = previewRenderer.x + delta.x + previewRenderer.width
+ var deltaH = previewRenderer.y + delta.y + previewRenderer.height
+
+
+ /*
+ * Check if the previewRenderer exceeds the border of videoCallPageMainRect.
+ */
+ if (deltaW < videoCallPageMainRect.width
+ && previewRenderer.x + delta.x > 1)
+ previewRenderer.x += delta.x
+ if (deltaH < videoCallPageMainRect.height
+ && previewRenderer.y + delta.y > 1)
+ previewRenderer.y += delta.y
+ }
+ }
+
+ onPreviewImageAvailable: {
+ previewImageScalingFactorUpdated++
+ previewImageScalingFactorUpdated--
+ }
+ }
+
+ color: "transparent"
+ }
+
+ StackView {
+ id: inVideoCallMessageWebViewStack
+
+ SplitView.preferredHeight: videoCallPageRect.height / 3
+ SplitView.fillWidth: true
+
+ visible: false
+
+ clip: true
+ }
+ }
+
+ VideoCallPageContextMenu {
+ id: videoCallPageContextMenu
+
+ onFullScreenNeeded: {
+ videoCallPageRect.needToShowInFullScreen()
+ }
+ }
+
+ MouseArea {
+ anchors.fill: parent
+
+ propagateComposedEvents: true
+ acceptedButtons: Qt.RightButton
+
+ onClicked: {
+
+
+ /*
+ * Make menu pos at mouse.
+ */
+ var relativeMousePos = mapToItem(videoCallPageRect,
+ mouse.x, mouse.y)
+ videoCallPageContextMenu.x = relativeMousePos.x
+ videoCallPageContextMenu.y = relativeMousePos.y
+ videoCallPageContextMenu.activate()
+ }
+ }
+
+ color: "black"
+}
diff --git a/src/mainview/components/VideoCallPageContextMenu.qml b/src/mainview/components/VideoCallPageContextMenu.qml
new file mode 100644
index 0000000..642ec24
--- /dev/null
+++ b/src/mainview/components/VideoCallPageContextMenu.qml
@@ -0,0 +1,209 @@
+
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+import QtQuick 2.14
+import QtQuick.Controls 2.14
+import net.jami.Models 1.0
+
+import "../../commoncomponents"
+
+import "../js/videodevicecontextmenuitemcreation.js" as VideoDeviceContextMenuItemCreation
+import "../js/selectscreenwindowcreation.js" as SelectScreenWindowCreation
+import "../js/screenrubberbandcreation.js" as ScreenRubberBandCreation
+
+Menu {
+ id: contextMenu
+
+ property string responsibleAccountId: ""
+ property string responsibleConvUid: ""
+
+ property int generalMenuSeparatorCount: 0
+ property int commonBorderWidth: 2
+
+ signal fullScreenNeeded
+
+ function activate() {
+ var deviceContextMenuInfoMap = AvAdapter.populateVideoDeviceContextMenuItem()
+
+
+ /*
+ * Somehow, the map size is undefined, so use this instead.
+ */
+ var mapSize = deviceContextMenuInfoMap["size"]
+
+ var count = 1
+ for (var deviceName in deviceContextMenuInfoMap) {
+ if (deviceName === "size")
+ continue
+ if (videoDeviceItem.itemName === "No video device") {
+ videoDeviceItem.checkable = true
+ videoDeviceItem.itemName = deviceName
+ videoDeviceItem.checked = deviceContextMenuInfoMap[deviceName]
+ if (count === mapSize)
+ contextMenu.open()
+ } else {
+ VideoDeviceContextMenuItemCreation.createVideoDeviceContextMenuItemObjects(
+ deviceName, deviceContextMenuInfoMap[deviceName],
+ count === mapSize)
+ }
+ count++
+ }
+ }
+
+ function closePotentialWindows() {
+ SelectScreenWindowCreation.destorySelectScreenWindow()
+ ScreenRubberBandCreation.destoryScreenRubberBandWindow()
+ }
+
+ implicitWidth: 200
+
+ JamiFileDialog {
+ id: jamiFileDialog
+
+ mode: JamiFileDialog.Mode.OpenFile
+
+ onAccepted: {
+ var filePath = jamiFileDialog.file
+
+
+ /*
+ * No need to trim file:///.
+ */
+ AvAdapter.shareFile(filePath)
+ }
+ }
+
+
+ /*
+ * All GeneralMenuItems should remain the same width / height.
+ * The first videoDeviceItem is to make sure the border is correct.
+ */
+ VideoCallPageContextMenuDeviceItem {
+ id: videoDeviceItem
+
+ topBorderWidth: commonBorderWidth
+ contextMenuPreferredWidth: contextMenu.implicitWidth
+ }
+
+ GeneralMenuSeparator {
+ preferredWidth: videoDeviceItem.preferredWidth
+ preferredHeight: commonBorderWidth
+
+ Component.onCompleted: {
+ generalMenuSeparatorCount++
+ }
+ }
+
+ GeneralMenuItem {
+ id: shareEntireScreenItem
+
+ itemName: qsTr("Share entire screen")
+ leftBorderWidth: commonBorderWidth
+ rightBorderWidth: commonBorderWidth
+
+ onClicked: {
+ contextMenu.close()
+ if (Qt.application.screens.length === 1) {
+ AvAdapter.shareEntireScreen(0)
+ } else {
+ SelectScreenWindowCreation.createSelectScreenWindowObject()
+ SelectScreenWindowCreation.showSelectScreenWindow()
+ }
+ }
+ }
+
+ GeneralMenuItem {
+ id: shareScreenAreaItem
+
+ itemName: qsTr("Share screen area")
+ leftBorderWidth: commonBorderWidth
+ rightBorderWidth: commonBorderWidth
+
+ onClicked: {
+ contextMenu.close()
+ if (Qt.application.screens.length === 1) {
+ ScreenRubberBandCreation.createScreenRubberBandWindowObject(
+ null, 0)
+ ScreenRubberBandCreation.showScreenRubberBandWindow()
+ } else {
+ SelectScreenWindowCreation.createSelectScreenWindowObject(true)
+ SelectScreenWindowCreation.showSelectScreenWindow()
+ }
+ }
+ }
+
+ GeneralMenuItem {
+ id: shareFileItem
+
+ itemName: qsTr("Share file")
+ leftBorderWidth: commonBorderWidth
+ rightBorderWidth: commonBorderWidth
+
+ onClicked: {
+ contextMenu.close()
+ jamiFileDialog.open()
+ }
+ }
+
+ GeneralMenuSeparator {
+ preferredWidth: videoDeviceItem.preferredWidth
+ preferredHeight: commonBorderWidth
+
+ Component.onCompleted: {
+ generalMenuSeparatorCount++
+ }
+ }
+
+ GeneralMenuItem {
+ id: fullScreenItem
+
+ property bool isFullScreen: false
+
+ itemName: isFullScreen ? qsTr("Exit full screen") : qsTr(
+ "Full screen mode")
+ iconSource: isFullScreen ? "qrc:/images/icons/ic_exit_full_screen_black.png" : "qrc:/images/icons/ic_full_screen_black.png"
+ leftBorderWidth: commonBorderWidth
+ rightBorderWidth: commonBorderWidth
+ bottomBorderWidth: commonBorderWidth
+
+ onClicked: {
+ contextMenu.close()
+ contextMenu.fullScreenNeeded()
+ isFullScreen = !isFullScreen
+ }
+ }
+
+ onClosed: {
+ videoDeviceItem.itemName = "No video device"
+ VideoDeviceContextMenuItemCreation.removeCreatedItems()
+ }
+
+ Component.onCompleted: {
+ VideoDeviceContextMenuItemCreation.setVideoContextMenuObject(
+ contextMenu)
+ }
+
+ background: Rectangle {
+ implicitWidth: contextMenu.implicitWidth
+ implicitHeight: videoDeviceItem.preferredHeight
+ * (contextMenu.count - generalMenuSeparatorCount)
+
+ border.width: commonBorderWidth
+ border.color: JamiTheme.tabbarBorderColor
+ }
+}
diff --git a/src/mainview/components/VideoCallPageContextMenuDeviceItem.qml b/src/mainview/components/VideoCallPageContextMenuDeviceItem.qml
new file mode 100644
index 0000000..f94a997
--- /dev/null
+++ b/src/mainview/components/VideoCallPageContextMenuDeviceItem.qml
@@ -0,0 +1,94 @@
+
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+import QtQuick 2.14
+import QtQuick.Controls 2.14
+import net.jami.Models 1.0
+
+import "../../commoncomponents"
+
+
+/*
+ * Take advantage of child can access parent's item (ex: contextMenu, commonBorderWidth).
+ */
+GeneralMenuItem {
+ id: videoCallPageContextMenuDeviceItem
+
+ property int contextMenuPreferredWidth: 250
+
+ itemName: qsTr("No video device")
+ leftBorderWidth: commonBorderWidth
+ rightBorderWidth: commonBorderWidth
+
+ TextMetrics {
+ id: textMetrics
+ font: deviceNameText.font
+ elide: Text.ElideMiddle
+ elideWidth: contextMenuPreferredWidth
+ - videoCallPageContextMenuDeviceItem.implicitIndicatorWidth
+ text: videoCallPageContextMenuDeviceItem.itemName
+ }
+
+ contentItem: Text {
+ id: deviceNameText
+
+ leftPadding: 30
+ rightPadding: videoCallPageContextMenuDeviceItem.arrow.width
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+
+ font.pointSize: JamiTheme.textFontSize - 3
+ text: textMetrics.elidedText
+ }
+
+ indicator: Item {
+ id: selectItem
+
+ anchors.left: parent.left
+ anchors.verticalCenter: parent.verticalCenter
+
+ implicitWidth: 32
+ implicitHeight: 32
+
+ Rectangle {
+ id: selectRect
+
+ width: selectItem.width / 2
+ height: selectItem.height / 2
+ anchors.centerIn: parent
+ visible: videoCallPageContextMenuDeviceItem.checkable
+ border.color: JamiTheme.selectionGreen
+ radius: 3
+ Rectangle {
+ width: selectRect.width / 2
+ height: selectRect.height / 2
+ anchors.centerIn: parent
+ visible: videoCallPageContextMenuDeviceItem.checked
+ color: JamiTheme.selectionGreen
+ radius: 2
+ }
+ }
+ }
+
+ onClicked: {
+ var deviceName = videoCallPageContextMenuDeviceItem.itemName
+ contextMenu.close()
+ AvAdapter.onVideoContextMenuDeviceItemClicked(deviceName)
+ }
+}
diff --git a/src/mainview/components/WelcomePage.qml b/src/mainview/components/WelcomePage.qml
new file mode 100644
index 0000000..a6250d0
--- /dev/null
+++ b/src/mainview/components/WelcomePage.qml
@@ -0,0 +1,234 @@
+
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+import QtQuick 2.14
+import QtQuick.Controls 2.14
+import QtQuick.Layouts 1.14
+import net.jami.Models 1.0
+
+import "../../commoncomponents"
+
+Rectangle {
+ id: welcomeRect
+
+ property int currentAccountIndex: 0
+ property int buttonPreferredSize: 30
+
+ anchors.fill: parent
+
+ Rectangle {
+ id: welcomeRectComponentsGroup
+
+ anchors.centerIn: parent
+
+ width: Math.max(welcomePageGroupPreferedWidth, welcomeRect.width - 100)
+ height: mainViewWindow.minimumHeight
+
+ ColumnLayout {
+ id: welcomeRectComponentsGroupColumnLayout
+
+ Image {
+ id: jamiLogoImage
+
+ Layout.alignment: Qt.AlignCenter
+ Layout.preferredWidth: welcomeRectComponentsGroup.width
+ Layout.preferredHeight: 100
+ Layout.topMargin: 50
+ Layout.bottomMargin: 10
+
+ fillMode: Image.PreserveAspectFit
+ source: "qrc:/images/logo-jami-standard-coul.png"
+ mipmap: true
+ }
+
+ Label {
+ id: jamiIntroText
+
+ Layout.alignment: Qt.AlignCenter
+ Layout.preferredWidth: welcomeRectComponentsGroup.width
+ Layout.preferredHeight: 100
+ Layout.bottomMargin: 5
+
+ wrapMode: Text.WordWrap
+ font.pointSize: JamiTheme.textFontSize + 1
+
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+
+ text: qsTr("Jami is a free software for universal communication which repects the freedoms and privacy of its user.")
+ }
+
+ Label {
+ id: jamiShareWithFriendText
+
+ Layout.alignment: Qt.AlignCenter
+ Layout.preferredWidth: welcomeRectComponentsGroup.width
+ Layout.preferredHeight: 50
+
+ wrapMode: Text.WordWrap
+ font.pointSize: JamiTheme.textFontSize - 1
+
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+
+ visible: accountListModel.data(accountListModel.index(
+ currentAccountIndex, 0),
+ 260) === 1
+ text: qsTr("This is your ID.\nCopy and share it with your friends")
+ color: JamiTheme.faddedFontColor
+ }
+
+ Rectangle {
+ id: jamiRegisteredNameRect
+
+ Layout.alignment: Qt.AlignCenter
+ Layout.preferredWidth: welcomeRectComponentsGroup.width
+ Layout.preferredHeight: 65
+ Layout.bottomMargin: 5
+
+ visible: accountListModel.data(accountListModel.index(
+ currentAccountIndex, 0),
+ 260) === 1
+
+ ColumnLayout {
+ id: jamiRegisteredNameRectColumnLayout
+
+ spacing: 0
+
+ Text {
+ id: jamiRegisteredNameText
+
+ Layout.alignment: Qt.AlignCenter
+ Layout.preferredWidth: welcomeRectComponentsGroup.width
+ Layout.preferredHeight: 30
+
+ font.pointSize: JamiTheme.textFontSize
+
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+
+ text: textMetricsjamiRegisteredNameText.elidedText
+
+ TextMetrics {
+ id: textMetricsjamiRegisteredNameText
+
+ font: jamiRegisteredNameText.font
+ text: accountListModel.data(
+ accountListModel.index(
+ currentAccountIndex, 0), 258)
+ elideWidth: welcomeRectComponentsGroup.width
+ elide: Qt.ElideMiddle
+ }
+ }
+
+ RowLayout {
+ id: jamiRegisteredNameRowLayout
+
+ Layout.alignment: Qt.AlignCenter
+ Layout.preferredWidth: buttonPreferredSize * 2 + 20
+ Layout.preferredHeight: 30
+
+ HoverableButton {
+ id: copyRegisterednameButton
+
+ Layout.alignment: Qt.AlignCenter
+ Layout.preferredWidth: buttonPreferredSize
+ Layout.preferredHeight: buttonPreferredSize
+
+ radius: 30
+ source: "qrc:/images/icons/ic_content_copy.svg"
+
+ onClicked: {
+ ClientWrapper.utilsAdaptor.setText(
+ textMetricsjamiRegisteredNameText.text)
+ }
+ }
+
+ HoverableButton {
+ id: qrCodeGenerateButton
+
+ Layout.alignment: Qt.AlignCenter
+ Layout.preferredWidth: buttonPreferredSize
+ Layout.preferredHeight: buttonPreferredSize
+
+ radius: 30
+ source: "qrc:/images/qrcode.png"
+
+ onClicked: {
+ qrDialog.open()
+ }
+ }
+ }
+ }
+ }
+
+ Image {
+ id: sipImage
+
+ Layout.alignment: Qt.AlignCenter
+ Layout.preferredWidth: 200
+ Layout.preferredHeight: 200
+
+
+ /*
+ * Check if account type is ring.
+ */
+ visible: accountListModel.data(accountListModel.index(
+ currentAccountIndex, 0),
+ 260) === 1 ? false : true
+ fillMode: Image.PreserveAspectFit
+
+
+ /*
+ * Requested size.
+ */
+ sourceSize.width: 200
+ sourceSize.height: 200
+ mipmap: true
+ }
+ }
+
+ HoverableButton {
+ id: aboutButton
+
+ anchors.horizontalCenter: welcomeRectComponentsGroup.horizontalCenter
+ anchors.bottom: welcomeRectComponentsGroup.bottom
+ anchors.bottomMargin: 5
+
+ width: 80
+ height: buttonPreferredSize
+
+ text: qsTr("About")
+ fontPointSize: JamiTheme.textFontSize
+ radius: 10
+
+ onClicked: {
+ aboutPopUpDialog.open()
+ }
+ }
+ }
+
+ CustomBorder {
+ commonBorder: false
+ lBorderwidth: 1
+ rBorderwidth: 0
+ tBorderwidth: 0
+ bBorderwidth: 0
+ borderColor: JamiTheme.tabbarBorderColor
+ }
+}
diff --git a/src/mainview/components/WelcomePageQrDialog.qml b/src/mainview/components/WelcomePageQrDialog.qml
new file mode 100644
index 0000000..45c8ff2
--- /dev/null
+++ b/src/mainview/components/WelcomePageQrDialog.qml
@@ -0,0 +1,61 @@
+
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+import QtQuick 2.14
+import QtQuick.Controls 2.14
+import QtQuick.Layouts 1.14
+import net.jami.Models 1.0
+
+Dialog {
+ id: userQrImageDialog
+
+ property int currentAccountIndex: 0
+
+
+ /*
+ * When dialog is opened, trigger mainViewWindow overlay which is defined in overlay.model.
+ * (model : true is necessary)
+ */
+ modal: true
+
+
+ /*
+ * Content height + margin.
+ */
+ contentHeight: userQrImage.height + 30
+
+ Image {
+ id: userQrImage
+
+ anchors.centerIn: parent
+
+ width: 250
+ height: 250
+
+ fillMode: Image.PreserveAspectFit
+ source: "image://qrImage/account_" + currentAccountIndex
+ sourceSize.width: 260
+ sourceSize.height: 260
+ mipmap: true
+ }
+
+ background: Rectangle {
+ border.width: 0
+ radius: 10
+ }
+}
diff --git a/src/mainview/js/contactpickercreation.js b/src/mainview/js/contactpickercreation.js
new file mode 100644
index 0000000..7ce7b62
--- /dev/null
+++ b/src/mainview/js/contactpickercreation.js
@@ -0,0 +1,80 @@
+
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+
+/*
+ * Global contact picker component, object variable for creation.
+ */
+var contactPickerComponent
+var contactPickerObject
+
+function createContactPickerObjects(type, parent) {
+ if (contactPickerObject) {
+
+
+ /*
+ * If already created, reset parameters, since object cannot be destroyed.
+ */
+ contactPickerObject.parent = parent
+ contactPickerObject.type = type
+ return
+ }
+ contactPickerComponent = Qt.createComponent(
+ "../components/ContactPicker.qml")
+ if (contactPickerComponent.status === Component.Ready)
+ finishCreation(type, parent)
+ else if (contactPickerComponent.status === Component.Error)
+ console.log("Error loading component:",
+ contactPickerComponent.errorString())
+}
+
+function finishCreation(type, parent) {
+ contactPickerObject = contactPickerComponent.createObject(parent, {
+ "type": type
+ })
+ if (contactPickerObject === null) {
+
+
+ /*
+ * Error Handling.
+ */
+ console.log("Error creating object for contact picker")
+ }
+}
+
+
+/*
+ * Put contact picker in the middle of container.
+ */
+function calculateCurrentGeo(containerX, containerY) {
+ if (contactPickerObject) {
+ contactPickerObject.x = containerX - contactPickerObject.width / 2
+ contactPickerObject.y = containerY - contactPickerObject.height / 2
+ }
+}
+
+function openContactPicker() {
+ if (contactPickerObject)
+ contactPickerObject.open()
+}
+
+function closeContactPicker() {
+ if (contactPickerObject)
+ contactPickerObject.close()
+}
diff --git a/src/mainview/js/incomingcallpagecreation.js b/src/mainview/js/incomingcallpagecreation.js
new file mode 100644
index 0000000..6e0fcb0
--- /dev/null
+++ b/src/mainview/js/incomingcallpagecreation.js
@@ -0,0 +1,120 @@
+
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+
+/*
+ * Global incomingCallPage storage map<accountId, map<convUid, callwindowpointer>>.
+ */
+let incomingCallPageWindowMap = new Map()
+
+
+/*
+ * Global incomingCallPage component, object variable for creation.
+ */
+var incomingCallPageWindowComponent
+var incomingCallPageWindowObject
+
+function createincomingCallPageWindowObjects(accountId, convUid) {
+
+
+ /*
+ * Check if the corrsponding call exists or not.
+ */
+ if (incomingCallPageWindowMap.has(accountId)) {
+ if (incomingCallPageWindowMap.get(accountId).has(convUid)) {
+ return
+ }
+ }
+
+ incomingCallPageWindowComponent = Qt.createComponent(
+ "../components/IncomingCallPage.qml")
+ if (incomingCallPageWindowComponent.status === Component.Ready)
+ finishCreation(accountId, convUid)
+ else if (incomingCallPageWindowComponent.status === Component.Error)
+ console.log("Error loading component:",
+ incomingCallPageWindowComponent.errorString())
+}
+
+function finishCreation(accountId, convUid) {
+ incomingCallPageWindowObject = incomingCallPageWindowComponent.createObject(
+ )
+ if (incomingCallPageWindowObject === null) {
+
+
+ /*
+ * Error Handling.
+ */
+ console.log("Error creating object for accountId" + accountId)
+ }
+
+ incomingCallPageWindowObject.responsibleConvUid = convUid
+ incomingCallPageWindowObject.responsibleAccountId = accountId
+ incomingCallPageWindowObject.updateUI()
+
+
+ /*
+ * Record in map.
+ */
+ if (incomingCallPageWindowMap.has(accountId)) {
+ incomingCallPageWindowMap.get(accountId).set(
+ convUid, incomingCallPageWindowObject)
+ } else {
+ let incomingCallPageWindowTempMap = new Map()
+ incomingCallPageWindowTempMap.set(convUid, incomingCallPageWindowObject)
+ incomingCallPageWindowMap.set(accountId, incomingCallPageWindowTempMap)
+ }
+}
+
+function showIncomingCallPageWindow(accountId, convUid) {
+ if (incomingCallPageWindowMap.has(accountId)) {
+ if (incomingCallPageWindowMap.get(accountId).has(convUid)) {
+ if (!incomingCallPageWindowMap.get(accountId).get(
+ convUid).visible) {
+ incomingCallPageWindowMap.get(accountId).get(convUid).show()
+ incomingCallPageWindowMap.get(accountId).get(
+ convUid).updatePositionToRightBottom()
+ }
+ }
+ }
+}
+
+function closeIncomingCallPageWindow(accountId, convUid) {
+ if (incomingCallPageWindowMap.has(accountId)) {
+ let incomingCallPageWindowTempMap = incomingCallPageWindowMap.get(
+ accountId)
+ if (incomingCallPageWindowTempMap.has(convUid)) {
+ var incomingCallPageWindow = incomingCallPageWindowTempMap.get(
+ convUid)
+
+
+ /*
+ * Close incomingCallPageWindow and clear the memory
+ */
+ incomingCallPageWindow.close()
+ incomingCallPageWindow.destroy()
+ incomingCallPageWindowTempMap.delete(convUid)
+ if (incomingCallPageWindowTempMap.size === 0) {
+ incomingCallPageWindowMap.delete(accountId)
+ } else {
+ incomingCallPageWindowMap.set(accountId,
+ incomingCallPageWindowTempMap)
+ }
+ }
+ }
+}
diff --git a/src/mainview/js/screenrubberbandcreation.js b/src/mainview/js/screenrubberbandcreation.js
new file mode 100644
index 0000000..38a22fd
--- /dev/null
+++ b/src/mainview/js/screenrubberbandcreation.js
@@ -0,0 +1,80 @@
+
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+
+/*
+ * Global screen rubber band window component, object variable for creation.
+ */
+var screenRubberBandWindowComponent
+var screenRubberBandWindowObject
+
+function createScreenRubberBandWindowObject(parent, screenNumber) {
+ if (screenRubberBandWindowObject)
+ return
+ screenRubberBandWindowComponent = Qt.createComponent(
+ "../components/ScreenRubberBand.qml")
+ if (screenRubberBandWindowComponent.status === Component.Ready)
+ finishCreation(parent, screenNumber)
+ else if (screenRubberBandWindowComponent.status === Component.Error)
+ console.log("Error loading component:",
+ screenRubberBandWindowComponent.errorString())
+}
+
+function finishCreation(parent, screenNumber) {
+ screenRubberBandWindowObject = screenRubberBandWindowComponent.createObject(
+ parent)
+ if (screenRubberBandWindowObject === null) {
+
+
+ /*
+ * Error Handling.
+ */
+ console.log("Error creating screen rubber band object")
+ }
+
+ screenRubberBandWindowObject.screenNumber = screenNumber
+ screenRubberBandWindowObject.screen = Qt.application.screens[screenNumber]
+
+
+ /*
+ * Signal connection.
+ */
+ screenRubberBandWindowObject.onClosing.connect(
+ destoryScreenRubberBandWindow)
+}
+
+function showScreenRubberBandWindow() {
+ screenRubberBandWindowObject.showFullScreen()
+}
+
+
+/*
+ * Destroy and reset screenRubberBandWindowObject when window is closed.
+ */
+function destoryScreenRubberBandWindow() {
+ if (!screenRubberBandWindowObject)
+ return
+ screenRubberBandWindowObject.destroy()
+ screenRubberBandWindowObject = false
+}
+
+function connectOnClosingEvent(func) {
+ if (screenRubberBandWindowObject)
+ screenRubberBandWindowObject.onClosing.connect(func)
+}
diff --git a/src/mainview/js/selectscreenwindowcreation.js b/src/mainview/js/selectscreenwindowcreation.js
new file mode 100644
index 0000000..15bfbd1
--- /dev/null
+++ b/src/mainview/js/selectscreenwindowcreation.js
@@ -0,0 +1,72 @@
+
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+
+/*
+ * Global select screen window component, object variable for creation.
+ */
+var selectScreenWindowComponent
+var selectScreenWindowObject
+
+function createSelectScreenWindowObject(selectArea = false) {
+ if (selectScreenWindowObject)
+ return
+ selectScreenWindowComponent = Qt.createComponent(
+ "../components/SelectScreen.qml")
+ if (selectScreenWindowComponent.status === Component.Ready)
+ finishCreation(selectArea)
+ else if (selectScreenWindowComponent.status === Component.Error)
+ console.log("Error loading component:",
+ selectScreenWindowComponent.errorString())
+}
+
+function finishCreation(selectArea) {
+ selectScreenWindowObject = selectScreenWindowComponent.createObject()
+ if (selectScreenWindowObject === null) {
+
+
+ /*
+ * Error Handling.
+ */
+ console.log("Error creating select screen object")
+ }
+
+ selectScreenWindowObject.selectArea = selectArea
+
+
+ /*
+ * Signal connection.
+ */
+ selectScreenWindowObject.onClosing.connect(destorySelectScreenWindow)
+}
+
+function showSelectScreenWindow() {
+ selectScreenWindowObject.show()
+}
+
+
+/*
+ * Destroy and reset selectScreenWindowObject when window is closed.
+ */
+function destorySelectScreenWindow() {
+ if(!selectScreenWindowObject)
+ return
+ selectScreenWindowObject.destroy()
+ selectScreenWindowObject = false
+}
diff --git a/src/mainview/js/videocallfullscreenwindowcontainercreation.js b/src/mainview/js/videocallfullscreenwindowcontainercreation.js
new file mode 100644
index 0000000..23a51d7
--- /dev/null
+++ b/src/mainview/js/videocallfullscreenwindowcontainercreation.js
@@ -0,0 +1,97 @@
+
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+
+/*
+ * Global video call full screen window container, object variable for creation.
+ */
+var videoCallFullScreenWindowContainerComponent
+var videoCallFullScreenWindowContainerObject
+
+function createvideoCallFullScreenWindowContainerObject() {
+ if (videoCallFullScreenWindowContainerObject)
+ return
+ videoCallFullScreenWindowContainerComponent = Qt.createComponent(
+ "../components/VideoCallFullScreenWindowContainer.qml")
+ if (videoCallFullScreenWindowContainerComponent.status === Component.Ready)
+ finishCreation()
+ else if (videoCallFullScreenWindowContainerComponent.status === Component.Error)
+ console.log("Error loading component:",
+ videoCallFullScreenWindowContainerComponent.errorString())
+}
+
+function finishCreation() {
+ videoCallFullScreenWindowContainerObject
+ = videoCallFullScreenWindowContainerComponent.createObject()
+ if (videoCallFullScreenWindowContainerObject === null) {
+
+
+ /*
+ * Error Handling.
+ */
+ console.log("Error creating video call full screen window container object")
+ }
+
+
+ /*
+ * Signal connection.
+ */
+ videoCallFullScreenWindowContainerObject.onClosing.connect(
+ destoryVideoCallFullScreenWindowContainer)
+}
+
+function checkIfVisible() {
+ if (!videoCallFullScreenWindowContainerObject)
+ return false
+ return videoCallFullScreenWindowContainerObject.visible
+}
+
+function setAsContainerChild(obj) {
+ if (videoCallFullScreenWindowContainerObject)
+ videoCallFullScreenWindowContainerObject.setAsChild(obj)
+}
+
+
+/*
+ * Destroy and reset videoCallFullScreenWindowContainerObject when window is closed.
+ */
+function destoryVideoCallFullScreenWindowContainer() {
+ if (!videoCallFullScreenWindowContainerObject)
+ return
+ videoCallFullScreenWindowContainerObject.destroy()
+ videoCallFullScreenWindowContainerObject = false
+}
+
+function showVideoCallFullScreenWindowContainer() {
+ if (videoCallFullScreenWindowContainerObject) {
+
+
+ /*
+ * Hack: show first, then showFullScreen to make sure that the showFullScreen
+ * display on the correct screen.
+ */
+ videoCallFullScreenWindowContainerObject.show()
+ videoCallFullScreenWindowContainerObject.showFullScreen()
+ }
+}
+
+function closeVideoCallFullScreenWindowContainer() {
+ if (videoCallFullScreenWindowContainerObject)
+ videoCallFullScreenWindowContainerObject.close()
+}
diff --git a/src/mainview/js/videodevicecontextmenuitemcreation.js b/src/mainview/js/videodevicecontextmenuitemcreation.js
new file mode 100644
index 0000000..2bab369
--- /dev/null
+++ b/src/mainview/js/videodevicecontextmenuitemcreation.js
@@ -0,0 +1,92 @@
+
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+
+/*
+ * Global storage for created video device context menu item,
+ * will be cleared once context menu is closed.
+ */
+var itemArray = []
+
+
+/*
+ * Global videoDeviceContextMenuItem component, object variable for creation.
+ */
+var videoContextMenuObject
+var videoDeviceContextMenuItemComponent
+var videoDeviceContextMenuItemObject
+
+
+/*
+ * Init videoContextMenuObject.
+ */
+function setVideoContextMenuObject(obj) {
+ videoContextMenuObject = obj
+}
+
+function createVideoDeviceContextMenuItemObjects(deviceName, setChecked, last) {
+
+ videoDeviceContextMenuItemComponent = Qt.createComponent(
+ "../components/VideoCallPageContextMenuDeviceItem.qml")
+ if (videoDeviceContextMenuItemComponent.status === Component.Ready)
+ finishCreation(deviceName, setChecked, last)
+ else if (videoDeviceContextMenuItemComponent.status === Component.Error)
+ console.log("Error loading component:",
+ videoDeviceContextMenuItemComponent.errorString())
+}
+
+function finishCreation(deviceName, setChecked, last) {
+ videoDeviceContextMenuItemObject = videoDeviceContextMenuItemComponent.createObject()
+ if (videoDeviceContextMenuItemObject === null) {
+
+
+ /*
+ * Error Handling.
+ */
+ console.log("Error creating video context menu object")
+ }
+
+ videoDeviceContextMenuItemObject.itemName = deviceName
+ videoDeviceContextMenuItemObject.checkable = true
+ videoDeviceContextMenuItemObject.checked = setChecked
+ videoDeviceContextMenuItemObject.contextMenuPreferredWidth = videoContextMenuObject.implicitWidth
+
+
+ /*
+ * Push into the storage array, and insert it into context menu.
+ */
+ itemArray.push(videoDeviceContextMenuItemObject)
+ videoContextMenuObject.insertItem(1, videoDeviceContextMenuItemObject)
+
+
+ /*
+ * If it is the last device context menu item, open the context menu.
+ */
+ if (last)
+ videoContextMenuObject.open()
+}
+
+function removeCreatedItems() {
+ var arrayLength = itemArray.length
+ for (var i = 0; i < arrayLength; i++) {
+ videoContextMenuObject.removeItem(itemArray[i])
+ itemArray[i].destroy()
+ }
+ itemArray = []
+}
diff --git a/src/messagesadapter.cpp b/src/messagesadapter.cpp
new file mode 100644
index 0000000..1aa925b
--- /dev/null
+++ b/src/messagesadapter.cpp
@@ -0,0 +1,657 @@
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Edric Ladent Milaret <edric.ladent-milaret@savoirfairelinux.com>
+ * Author: Anthony L�onard <anthony.leonard@savoirfairelinux.com>
+ * Author: Olivier Soldano <olivier.soldano@savoirfairelinux.com>
+ * Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
+ * Author: Isa Nanic <isa.nanic@savoirfairelinux.com>
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "messagesadapter.h"
+#include "webchathelpers.h"
+
+#include "utils.h"
+
+#include <QDesktopServices>
+#include <QFileInfo>
+#include <QImageReader>
+#include <QList>
+#include <QUrl>
+
+MessagesAdapter::MessagesAdapter(QObject *parent)
+ : QmlAdapterBase(parent)
+{}
+
+MessagesAdapter::~MessagesAdapter() {}
+
+void
+MessagesAdapter::initQmlObject()
+{
+ connectConversationModel();
+}
+
+void
+MessagesAdapter::setupChatView(const QString &uid)
+{
+ auto &convInfo = LRCInstance::getConversationFromConvUid(uid);
+ if (convInfo.uid.isEmpty()) {
+ return;
+ }
+
+ QString contactURI = convInfo.participants.at(0);
+
+ bool isContact = false;
+ auto selectedAccountId = LRCInstance::getCurrAccId();
+ auto &accountInfo = LRCInstance::accountModel().getAccountInfo(selectedAccountId);
+
+ lrc::api::profile::Type contactType;
+ try {
+ auto contactInfo = accountInfo.contactModel->getContact(contactURI);
+ if (contactInfo.isTrusted) {
+ isContact = true;
+ }
+ contactType = contactInfo.profileInfo.type;
+ } catch (...) {
+ }
+
+ bool shouldShowSendContactRequestBtn = !isContact
+ && contactType != lrc::api::profile::Type::SIP;
+
+ QMetaObject::invokeMethod(qmlObj_,
+ "setSendContactRequestButtonVisible",
+ Q_ARG(QVariant, shouldShowSendContactRequestBtn));
+
+ setMessagesVisibility(false);
+
+ /*
+ * Type Indicator (contact).
+ */
+ contactIsComposing(convInfo.uid, "", false);
+ connect(LRCInstance::getCurrentConversationModel(),
+ &ConversationModel::composingStatusChanged,
+ [this](const QString &uid, const QString &contactUri, bool isComposing) {
+ contactIsComposing(uid, contactUri, isComposing);
+ });
+
+ /*
+ * Draft and message content set up.
+ */
+ Utils::oneShotConnect(qmlObj_,
+ SIGNAL(sendMessageContentSaved(const QString &)),
+ this,
+ SLOT(slotSendMessageContentSaved(const QString &)));
+
+ requestSendMessageContent();
+}
+
+void
+MessagesAdapter::connectConversationModel()
+{
+ auto currentConversationModel = LRCInstance::getCurrentAccountInfo().conversationModel.get();
+
+ QObject::disconnect(newInteractionConnection_);
+ QObject::disconnect(interactionRemovedConnection_);
+ QObject::disconnect(interactionStatusUpdatedConnection_);
+
+ newInteractionConnection_
+ = QObject::connect(currentConversationModel,
+ &lrc::api::ConversationModel::newInteraction,
+ [this](const QString &convUid,
+ uint64_t interactionId,
+ const lrc::api::interaction::Info &interaction) {
+ auto accountId = LRCInstance::getCurrAccId();
+ newInteraction(accountId, convUid, interactionId, interaction);
+ });
+
+ interactionStatusUpdatedConnection_ = QObject::connect(
+ currentConversationModel,
+ &lrc::api::ConversationModel::interactionStatusUpdated,
+ [this](const QString &convUid,
+ uint64_t interactionId,
+ const lrc::api::interaction::Info &interaction) {
+ if (convUid != LRCInstance::getCurrentConvUid()) {
+ return;
+ }
+ auto ¤tAccountInfo = LRCInstance::getCurrentAccountInfo();
+ auto currentConversationModel = currentAccountInfo.conversationModel.get();
+ currentConversationModel->clearUnreadInteractions(convUid);
+ updateInteraction(*currentConversationModel, interactionId, interaction);
+ });
+
+ interactionRemovedConnection_
+ = QObject::connect(currentConversationModel,
+ &lrc::api::ConversationModel::interactionRemoved,
+ [this](const QString &convUid, uint64_t interactionId) {
+ Q_UNUSED(convUid);
+ removeInteraction(interactionId);
+ });
+
+ currentConversationModel->setFilter("");
+}
+
+void
+MessagesAdapter::sendContactRequest()
+{
+ auto convInfo = LRCInstance::getCurrentConversation();
+ if (!convInfo.uid.isEmpty()) {
+ LRCInstance::getCurrentConversationModel()->makePermanent(convInfo.uid);
+ }
+}
+
+void
+MessagesAdapter::accountChangedSetUp(const QString &accoountId)
+{
+ Q_UNUSED(accoountId)
+
+ connectConversationModel();
+}
+
+void
+MessagesAdapter::updateConversationForAddedContact()
+{
+ auto conversation = LRCInstance::getCurrentConversation();
+ auto convModel = LRCInstance::getCurrentConversationModel();
+
+ clear();
+ setConversationProfileData(conversation);
+ printHistory(*convModel, conversation.interactions);
+}
+
+void
+MessagesAdapter::slotSendMessageContentSaved(const QString &content)
+{
+ if (!LastConvUid_.isEmpty()) {
+ LRCInstance::setContentDraft(LastConvUid_, LRCInstance::getCurrAccId(), content);
+ }
+ LastConvUid_ = LRCInstance::getCurrentConvUid();
+
+ Utils::oneShotConnect(qmlObj_, SIGNAL(messagesCleared()), this, SLOT(slotMessagesCleared()));
+
+ setInvitation(false);
+ clear();
+ auto restoredContent = LRCInstance::getContentDraft(LRCInstance::getCurrentConvUid(),
+ LRCInstance::getCurrAccId());
+ setSendMessageContent(restoredContent);
+ emit needToUpdateSmartList();
+}
+
+void
+MessagesAdapter::slotUpdateDraft(const QString &content)
+{
+ if (!LastConvUid_.isEmpty()) {
+ LRCInstance::setContentDraft(LastConvUid_, LRCInstance::getCurrAccId(), content);
+ }
+ emit needToUpdateSmartList();
+}
+
+void
+MessagesAdapter::slotMessagesCleared()
+{
+ auto &convInfo = LRCInstance::getConversationFromConvUid(LRCInstance::getCurrentConvUid());
+ auto convModel = LRCInstance::getCurrentConversationModel();
+
+ printHistory(*convModel, convInfo.interactions);
+
+ Utils::oneShotConnect(qmlObj_, SIGNAL(messagesLoaded()), this, SLOT(slotMessagesLoaded()));
+
+ setConversationProfileData(convInfo);
+}
+
+void
+MessagesAdapter::slotMessagesLoaded()
+{
+ setMessagesVisibility(true);
+}
+
+void
+MessagesAdapter::sendMessage(const QString &message)
+{
+ try {
+ auto convUid = LRCInstance::getCurrentConvUid();
+ LRCInstance::getCurrentConversationModel()->sendMessage(convUid, message);
+ } catch (...) {
+ qDebug() << "Exception during sendMessage:" << message;
+ }
+}
+
+void
+MessagesAdapter::sendImage(const QString &message)
+{
+ if (message.startsWith("data:image/png;base64,")) {
+ /*
+ * Img tag contains base64 data, trim "data:image/png;base64," from data.
+ */
+ QByteArray data = QByteArray::fromStdString(message.toStdString().substr(22));
+ auto img_name_hash = QString::fromStdString(
+ QCryptographicHash::hash(data, QCryptographicHash::Sha1).toHex().toStdString());
+ QString fileName = "\\img_" + img_name_hash + ".png";
+
+ QPixmap image_to_save;
+ if (!image_to_save.loadFromData(QByteArray::fromBase64(data))) {
+ qDebug().noquote() << "Errors during loadFromData"
+ << "\n";
+ }
+
+ QString path = QString(Utils::WinGetEnv("TEMP")) + fileName;
+ if (!image_to_save.save(path, "PNG")) {
+ qDebug().noquote() << "Errors during QPixmap save"
+ << "\n";
+ }
+
+ try {
+ auto convUid = LRCInstance::getCurrentConvUid();
+ LRCInstance::getCurrentConversationModel()->sendFile(convUid, path, fileName);
+ } catch (...) {
+ qDebug().noquote() << "Exception during sendFile - base64 img"
+ << "\n";
+ }
+
+ } else {
+ /*
+ * Img tag contains file paths.
+ */
+
+ QString msg(message);
+#ifdef Q_OS_WIN
+ msg = msg.replace("file:///", "");
+#else
+ msg = msg.replace("file:///", "/");
+#endif
+ QFileInfo fi(msg);
+ QString fileName = fi.fileName();
+
+ try {
+ auto convUid = LRCInstance::getCurrentConvUid();
+ LRCInstance::getCurrentConversationModel()->sendFile(convUid, msg, fileName);
+ } catch (...) {
+ qDebug().noquote() << "Exception during sendFile - image from path"
+ << "\n";
+ }
+ }
+}
+
+void
+MessagesAdapter::sendFile(const QString &message)
+{
+ QFileInfo fi(message);
+ QString fileName = fi.fileName();
+ try {
+ auto convUid = LRCInstance::getCurrentConvUid();
+ LRCInstance::getCurrentConversationModel()->sendFile(convUid, message, fileName);
+ } catch (...) {
+ qDebug() << "Exception during sendFile";
+ }
+}
+
+void
+MessagesAdapter::retryInteraction(const QString &arg)
+{
+ bool ok;
+ uint64_t interactionUid = arg.toULongLong(&ok);
+ if (ok) {
+ LRCInstance::getCurrentConversationModel()
+ ->retryInteraction(LRCInstance::getCurrentConvUid(), interactionUid);
+ } else {
+ qDebug() << "retryInteraction - invalid arg" << arg;
+ }
+}
+
+void
+MessagesAdapter::setNewMessagesContent(const QString &path)
+{
+ if (path.length() == 0)
+ return;
+ QByteArray imageFormat = QImageReader::imageFormat(path);
+
+ if (!imageFormat.isEmpty()) {
+ setMessagesImageContent(path);
+ } else {
+ setMessagesFileContent(path);
+ }
+}
+
+void
+MessagesAdapter::deleteInteraction(const QString &arg)
+{
+ bool ok;
+ uint64_t interactionUid = arg.toULongLong(&ok);
+ if (ok) {
+ LRCInstance::getCurrentConversationModel()
+ ->clearInteractionFromConversation(LRCInstance::getCurrentConvUid(), interactionUid);
+ } else {
+ qDebug() << "DeleteInteraction - invalid arg" << arg;
+ }
+}
+
+void
+MessagesAdapter::openFile(const QString &arg)
+{
+ QUrl fileUrl("file:///" + arg);
+ if (!QDesktopServices::openUrl(fileUrl)) {
+ qDebug() << "Couldn't open file: " << fileUrl;
+ }
+}
+
+void
+MessagesAdapter::acceptFile(const QString &arg)
+{
+ try {
+ auto interactionUid = arg.toLongLong();
+ auto convUid = LRCInstance::getCurrentConvUid();
+ LRCInstance::getCurrentConversationModel()->acceptTransfer(convUid, interactionUid);
+ } catch (...) {
+ qDebug() << "JS bridging - exception during acceptFile: " << arg;
+ }
+}
+
+void
+MessagesAdapter::refuseFile(const QString &arg)
+{
+ try {
+ auto interactionUid = arg.toLongLong();
+ auto convUid = LRCInstance::getCurrentConvUid();
+ LRCInstance::getCurrentConversationModel()->cancelTransfer(convUid, interactionUid);
+ } catch (...) {
+ qDebug() << "JS bridging - exception during refuseFile:" << arg;
+ }
+}
+
+void
+MessagesAdapter::pasteKeyDetected()
+{
+ const QMimeData *mimeData = QApplication::clipboard()->mimeData();
+
+ if (mimeData->hasImage()) {
+ /*
+ * Save temp data into base64 format.
+ */
+ QPixmap pixmap = qvariant_cast<QPixmap>(mimeData->imageData());
+ QByteArray ba;
+ QBuffer bu(&ba);
+ bu.open(QIODevice::WriteOnly);
+ pixmap.save(&bu, "PNG");
+ auto str = QString::fromLocal8Bit(ba.toBase64());
+
+ setMessagesImageContent(str, true);
+ } else if (mimeData->hasUrls()) {
+ QList<QUrl> urlList = mimeData->urls();
+ /*
+ * Extract the local paths of the files.
+ */
+ for (int i = 0; i < urlList.size(); ++i) {
+ /*
+ * Trim file:/// from url.
+ */
+ QString filePath = urlList.at(i).toString().remove(0, 8);
+ QByteArray imageFormat = QImageReader::imageFormat(filePath);
+
+ /*
+ * Check if file is qt supported image file type.
+ */
+ if (!imageFormat.isEmpty()) {
+ setMessagesImageContent(filePath);
+ } else {
+ setMessagesFileContent(filePath);
+ }
+ }
+ } else {
+ QMetaObject::invokeMethod(qmlObj_,
+ "webViewRunJavaScript",
+ Q_ARG(QVariant,
+ QStringLiteral("replaceText(`%1`)").arg(mimeData->text())));
+ }
+}
+
+void
+MessagesAdapter::onComposing(bool isComposing)
+{
+ LRCInstance::getCurrentConversationModel()->setIsComposing(LRCInstance::getCurrentConvUid(),
+ isComposing);
+}
+
+void
+MessagesAdapter::setConversationProfileData(const lrc::api::conversation::Info &convInfo)
+{
+ auto convModel = LRCInstance::getCurrentConversationModel();
+ auto accInfo = &LRCInstance::getCurrentAccountInfo();
+ auto contactUri = convInfo.participants.front();
+
+ if (contactUri.isEmpty()) {
+ return;
+ }
+ try {
+ auto &contact = accInfo->contactModel->getContact(contactUri);
+ auto bestName = Utils::bestNameForConversation(convInfo, *convModel);
+ setInvitation(contact.profileInfo.type == lrc::api::profile::Type::PENDING,
+ bestName,
+ contactUri);
+
+ if (!contact.profileInfo.avatar.isEmpty()) {
+ setSenderImage(contactUri, contact.profileInfo.avatar);
+ } else {
+ auto avatar = Utils::conversationPhoto(convInfo.uid, *accInfo, true);
+ QByteArray ba;
+ QBuffer bu(&ba);
+ avatar.save(&bu, "PNG");
+ setSenderImage(contactUri, QString::fromLocal8Bit(ba.toBase64()));
+ }
+ } catch (...) {
+ }
+}
+
+void
+MessagesAdapter::newInteraction(const QString &accountId,
+ const QString &convUid,
+ uint64_t interactionId,
+ const interaction::Info &interaction)
+{
+ Q_UNUSED(interactionId);
+ try {
+ auto &accountInfo = LRCInstance::getAccountInfo(accountId);
+ auto &convModel = accountInfo.conversationModel;
+ auto &conversation = LRCInstance::getConversationFromConvUid(convUid, accountId);
+
+ if (conversation.uid.isEmpty()) {
+ return;
+ }
+ if (!interaction.authorUri.isEmpty()
+ && (!QApplication::focusWindow() || LRCInstance::getCurrAccId() != accountId)) {
+ /*
+ * TODO: Notification from other accounts.
+ */
+ }
+ if (convUid != LRCInstance::getCurrentConvUid()) {
+ return;
+ }
+ convModel->clearUnreadInteractions(convUid);
+ printNewInteraction(*convModel, interactionId, interaction);
+ } catch (...) {
+ }
+}
+
+void
+MessagesAdapter::updateDraft()
+{
+ Utils::oneShotConnect(qmlObj_,
+ SIGNAL(sendMessageContentSaved(const QString &)),
+ this,
+ SLOT(slotUpdateDraft(const QString &)));
+
+ requestSendMessageContent();
+}
+
+/*
+ * JS invoke.
+ */
+void
+MessagesAdapter::setMessagesVisibility(bool visible)
+{
+ QString s = QString::fromLatin1(visible ? "showMessagesDiv();" : "hideMessagesDiv();");
+ QMetaObject::invokeMethod(qmlObj_, "webViewRunJavaScript", Q_ARG(QVariant, s));
+}
+
+void
+MessagesAdapter::requestSendMessageContent()
+{
+ QString s = QString::fromLatin1("requestSendMessageContent();");
+ QMetaObject::invokeMethod(qmlObj_, "webViewRunJavaScript", Q_ARG(QVariant, s));
+}
+
+void
+MessagesAdapter::setInvitation(bool show, const QString &contactUri, const QString &contactId)
+{
+ QString s
+ = show
+ ? QString::fromLatin1("showInvitation(\"%1\", \"%2\")").arg(contactUri).arg(contactId)
+ : QString::fromLatin1("showInvitation()");
+
+ QMetaObject::invokeMethod(qmlObj_, "webViewRunJavaScript", Q_ARG(QVariant, s));
+}
+
+void
+MessagesAdapter::clear()
+{
+ QString s = QString::fromLatin1("clearMessages();");
+ QMetaObject::invokeMethod(qmlObj_, "webViewRunJavaScript", Q_ARG(QVariant, s));
+}
+
+void
+MessagesAdapter::printHistory(lrc::api::ConversationModel &conversationModel,
+ const std::map<uint64_t, lrc::api::interaction::Info> interactions)
+{
+ auto interactionsStr = interactionsToJsonArrayObject(conversationModel, interactions).toUtf8();
+ QString s = QString::fromLatin1("printHistory(%1);").arg(interactionsStr.constData());
+ QMetaObject::invokeMethod(qmlObj_, "webViewRunJavaScript", Q_ARG(QVariant, s));
+}
+
+void
+MessagesAdapter::setSenderImage(const QString &sender, const QString &senderImage)
+{
+ QJsonObject setSenderImageObject = QJsonObject();
+ setSenderImageObject.insert("sender_contact_method", QJsonValue(sender));
+ setSenderImageObject.insert("sender_image", QJsonValue(senderImage));
+
+ auto setSenderImageObjectString = QString(
+ QJsonDocument(setSenderImageObject).toJson(QJsonDocument::Compact));
+ QString s = QString::fromLatin1("setSenderImage(%1);")
+ .arg(setSenderImageObjectString.toUtf8().constData());
+ QMetaObject::invokeMethod(qmlObj_, "webViewRunJavaScript", Q_ARG(QVariant, s));
+}
+
+void
+MessagesAdapter::printNewInteraction(lrc::api::ConversationModel &conversationModel,
+ uint64_t msgId,
+ const lrc::api::interaction::Info &interaction)
+{
+ auto interactionObject
+ = interactionToJsonInteractionObject(conversationModel, msgId, interaction).toUtf8();
+ if (interactionObject.isEmpty()) {
+ return;
+ }
+ QString s = QString::fromLatin1("addMessage(%1);").arg(interactionObject.constData());
+ QMetaObject::invokeMethod(qmlObj_, "webViewRunJavaScript", Q_ARG(QVariant, s));
+}
+
+void
+MessagesAdapter::updateInteraction(lrc::api::ConversationModel &conversationModel,
+ uint64_t msgId,
+ const lrc::api::interaction::Info &interaction)
+{
+ auto interactionObject
+ = interactionToJsonInteractionObject(conversationModel, msgId, interaction).toUtf8();
+ if (interactionObject.isEmpty()) {
+ return;
+ }
+ QString s = QString::fromLatin1("updateMessage(%1);").arg(interactionObject.constData());
+ QMetaObject::invokeMethod(qmlObj_, "webViewRunJavaScript", Q_ARG(QVariant, s));
+}
+
+void
+MessagesAdapter::setMessagesImageContent(const QString &path, bool isBased64)
+{
+ if (isBased64) {
+ QString param = QString("addImage_base64('file://%1')").arg(path);
+ QMetaObject::invokeMethod(qmlObj_, "webViewRunJavaScript", Q_ARG(QVariant, param));
+ } else {
+ QString param = QString("addImage_path('file://%1')").arg(path);
+ QMetaObject::invokeMethod(qmlObj_, "webViewRunJavaScript", Q_ARG(QVariant, param));
+ }
+}
+
+void
+MessagesAdapter::setMessagesFileContent(const QString &path)
+{
+ qint64 fileSize = QFileInfo(path).size();
+ QString fileName = QFileInfo(path).fileName();
+ /*
+ * If file name is too large, trim it.
+ */
+ if (fileName.length() > 15) {
+ fileName = fileName.remove(12, fileName.length() - 12) + "...";
+ }
+ QString param = QString("addFile_path('%1','%2','%3')")
+ .arg(path, fileName, Utils::humanFileSize(fileSize));
+
+ QMetaObject::invokeMethod(qmlObj_, "webViewRunJavaScript", Q_ARG(QVariant, param));
+}
+
+void
+MessagesAdapter::removeInteraction(uint64_t interactionId)
+{
+ QString s = QString::fromLatin1("removeInteraction(%1);").arg(QString::number(interactionId));
+ QMetaObject::invokeMethod(qmlObj_, "webViewRunJavaScript", Q_ARG(QVariant, s));
+}
+
+void
+MessagesAdapter::setSendMessageContent(const QString &content)
+{
+ QString s = QString::fromLatin1("setSendMessageContent(`%1`);").arg(content);
+ QMetaObject::invokeMethod(qmlObj_, "webViewRunJavaScript", Q_ARG(QVariant, s));
+}
+
+void
+MessagesAdapter::contactIsComposing(const QString &uid, const QString &contactUri, bool isComposing)
+{
+ if (LRCInstance::getCurrentConvUid() == uid) {
+ QString s
+ = QString::fromLatin1("showTypingIndicator(`%1`, %2);").arg(contactUri).arg(isComposing);
+ QMetaObject::invokeMethod(qmlObj_, "webViewRunJavaScript", Q_ARG(QVariant, s));
+ }
+}
+
+void
+MessagesAdapter::acceptInvitation()
+{
+ auto convUid = LRCInstance::getCurrentConvUid();
+ LRCInstance::getCurrentConversationModel()->makePermanent(convUid);
+}
+
+void
+MessagesAdapter::refuseInvitation()
+{
+ auto convUid = LRCInstance::getCurrentConvUid();
+ LRCInstance::getCurrentConversationModel()->removeConversation(convUid, false);
+ setInvitation(false);
+}
+
+void
+MessagesAdapter::blockConversation()
+{
+ auto convUid = LRCInstance::getCurrentConvUid();
+ LRCInstance::getCurrentConversationModel()->removeConversation(convUid, true);
+ setInvitation(false);
+}
diff --git a/src/messagesadapter.h b/src/messagesadapter.h
new file mode 100644
index 0000000..f324766
--- /dev/null
+++ b/src/messagesadapter.h
@@ -0,0 +1,111 @@
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "lrcinstance.h"
+#include "qmladapterbase.h"
+
+#include <QObject>
+#include <QString>
+
+class MessagesAdapter : public QmlAdapterBase
+{
+ Q_OBJECT
+
+public:
+ explicit MessagesAdapter(QObject *parent = 0);
+ ~MessagesAdapter();
+
+ Q_INVOKABLE void setupChatView(const QString &uid);
+ Q_INVOKABLE void connectConversationModel();
+ Q_INVOKABLE void sendContactRequest();
+ Q_INVOKABLE void accountChangedSetUp(const QString &accoountId);
+ Q_INVOKABLE void updateConversationForAddedContact();
+
+ /*
+ * JS Q_INVOKABLE.
+ */
+ Q_INVOKABLE void acceptInvitation();
+ Q_INVOKABLE void refuseInvitation();
+ Q_INVOKABLE void blockConversation();
+ Q_INVOKABLE void setNewMessagesContent(const QString &path);
+ Q_INVOKABLE void sendMessage(const QString &message);
+ Q_INVOKABLE void sendImage(const QString &message);
+ Q_INVOKABLE void sendFile(const QString &message);
+ Q_INVOKABLE void retryInteraction(const QString &arg);
+ Q_INVOKABLE void deleteInteraction(const QString &arg);
+ Q_INVOKABLE void openFile(const QString &arg);
+ Q_INVOKABLE void acceptFile(const QString &arg);
+ Q_INVOKABLE void refuseFile(const QString &arg);
+ Q_INVOKABLE void pasteKeyDetected();
+ Q_INVOKABLE void onComposing(bool isComposing);
+
+ /*
+ * Manually update draft when hiding message web view (Back to welcome page).
+ */
+ Q_INVOKABLE void updateDraft();
+
+ /*
+ * Run corrsponding js functions, c++ to qml.
+ */
+ void setMessagesVisibility(bool visible);
+ void requestSendMessageContent();
+ void setInvitation(bool show, const QString &contactUri = "", const QString &contactId = "");
+ void clear();
+ void printHistory(lrc::api::ConversationModel &conversationModel,
+ const std::map<uint64_t, lrc::api::interaction::Info> interactions);
+ void setSenderImage(const QString &sender, const QString &senderImage);
+ void printNewInteraction(lrc::api::ConversationModel &conversationModel,
+ uint64_t msgId,
+ const lrc::api::interaction::Info &interaction);
+ void updateInteraction(lrc::api::ConversationModel &conversationModel,
+ uint64_t msgId,
+ const lrc::api::interaction::Info &interaction);
+ void setMessagesImageContent(const QString &path, bool isBased64 = false);
+ void setMessagesFileContent(const QString &path);
+ void removeInteraction(uint64_t interactionId);
+ void setSendMessageContent(const QString &content);
+ void contactIsComposing(const QString &uid, const QString &contactUri, bool isComposing);
+
+signals:
+ void needToUpdateSmartList();
+
+public slots:
+ void slotSendMessageContentSaved(const QString &content);
+ void slotUpdateDraft(const QString &content);
+ void slotMessagesCleared();
+ void slotMessagesLoaded();
+
+private:
+ void initQmlObject() override final;
+ void setConversationProfileData(const lrc::api::conversation::Info &convInfo);
+ void newInteraction(const QString &accountId,
+ const QString &convUid,
+ uint64_t interactionId,
+ const interaction::Info &interaction);
+
+ QString LastConvUid_;
+
+ /*
+ * Interaction connections.
+ */
+ QMetaObject::Connection newInteractionConnection_;
+ QMetaObject::Connection interactionStatusUpdatedConnection_;
+ QMetaObject::Connection interactionRemovedConnection_;
+};
\ No newline at end of file
diff --git a/src/pixbufmanipulator.cpp b/src/pixbufmanipulator.cpp
new file mode 100644
index 0000000..e621808
--- /dev/null
+++ b/src/pixbufmanipulator.cpp
@@ -0,0 +1,131 @@
+/*
+ * Copyright (C) 2015-2020 by Savoir-faire Linux
+ * Author: Edric Ladent Milaret <edric.ladent-milaret@savoirfairelinux.com>
+ * Author: Anthony Léonard <anthony.leonard@savoirfairelinux.com>
+ * Author: Olivier Soldano <olivier.soldano@savoirfairelinux.com>
+ * Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+#include "pixbufmanipulator.h"
+
+#include <QBuffer>
+#include <QByteArray>
+#include <QIODevice>
+#include <QImage>
+#include <QMetaType>
+#include <QPainter>
+#include <QSize>
+
+#include "globalinstances.h"
+
+#include <api/account.h>
+#include <api/contact.h>
+#include <api/contactmodel.h>
+#include <api/conversation.h>
+
+#include "utils.h"
+#undef interface
+
+QVariant
+PixbufManipulator::personPhoto(const QByteArray &data, const QString &type)
+{
+ QImage avatar;
+ const bool ret = avatar.loadFromData(QByteArray::fromBase64(data), type.toLatin1());
+ if (!ret) {
+ qDebug() << "vCard image loading failed";
+ return QVariant();
+ }
+ return QPixmap::fromImage(Utils::getCirclePhoto(avatar, avatar.size().width()));
+}
+
+QVariant
+PixbufManipulator::numberCategoryIcon(const QVariant &p,
+ const QSize &size,
+ bool displayPresence,
+ bool isPresent)
+{
+ Q_UNUSED(p)
+ Q_UNUSED(size)
+ Q_UNUSED(displayPresence)
+ Q_UNUSED(isPresent)
+ return QVariant();
+}
+
+QByteArray
+PixbufManipulator::toByteArray(const QVariant &pxm)
+{
+ auto image = pxm.value<QImage>();
+ QByteArray ba = Utils::QImageToByteArray(image);
+ return ba;
+}
+
+QVariant
+PixbufManipulator::userActionIcon(const UserActionElement &state) const
+{
+ Q_UNUSED(state)
+ return QVariant();
+}
+
+QVariant
+PixbufManipulator::decorationRole(const QModelIndex &index)
+{
+ Q_UNUSED(index)
+ return QVariant();
+}
+
+QVariant
+PixbufManipulator::decorationRole(const lrc::api::conversation::Info &conversationInfo,
+ const lrc::api::account::Info &accountInfo)
+{
+ QImage photo;
+ auto contacts = conversationInfo.participants;
+ if (contacts.empty()) {
+ return QVariant::fromValue(photo);
+ }
+ try {
+ /*
+ * Get first contact photo.
+ */
+ auto contactUri = contacts.front();
+ auto contactInfo = accountInfo.contactModel->getContact(contactUri);
+ auto contactPhoto = contactInfo.profileInfo.avatar;
+ auto bestName = Utils::bestNameForContact(contactInfo);
+ auto bestId = Utils::bestIdForContact(contactInfo);
+ if (accountInfo.profileInfo.type == lrc::api::profile::Type::SIP
+ && contactInfo.profileInfo.type == lrc::api::profile::Type::TEMPORARY) {
+ photo = Utils::fallbackAvatar(IMAGE_SIZE, QString(), QString());
+ } else if (contactInfo.profileInfo.type == lrc::api::profile::Type::TEMPORARY
+ && contactInfo.profileInfo.uri.isEmpty()) {
+ photo = Utils::fallbackAvatar(IMAGE_SIZE, QString(), QString());
+ } else if (!contactPhoto.isEmpty()) {
+ QByteArray byteArray = contactPhoto.toLocal8Bit();
+ photo = personPhoto(byteArray, nullptr).value<QImage>();
+ if (photo.isNull()) {
+ auto avatarName = contactInfo.profileInfo.uri == bestName ? QString() : bestName;
+ photo = Utils::fallbackAvatar(IMAGE_SIZE,
+ "ring:" + contactInfo.profileInfo.uri,
+ avatarName);
+ }
+ } else {
+ auto avatarName = contactInfo.profileInfo.uri == bestName ? QString() : bestName;
+ photo = Utils::fallbackAvatar(IMAGE_SIZE,
+ "ring:" + contactInfo.profileInfo.uri,
+ avatarName);
+ }
+ } catch (...) {
+ }
+ return QVariant::fromValue(Utils::scaleAndFrame(photo, IMAGE_SIZE));
+}
\ No newline at end of file
diff --git a/src/pixbufmanipulator.h b/src/pixbufmanipulator.h
new file mode 100644
index 0000000..5325f15
--- /dev/null
+++ b/src/pixbufmanipulator.h
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2015-2020 by Savoir-faire Linux
+ * Author: Edric Ladent Milaret <edric.ladent-milaret@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include <QImage>
+
+#include <interfaces/pixmapmanipulatori.h>
+#include <memory>
+
+Q_DECLARE_METATYPE(QImage);
+
+class Person;
+
+QByteArray QImageToByteArray(QImage image);
+
+class PixbufManipulator : public Interfaces::PixmapManipulatorI
+{
+public:
+ QVariant personPhoto(const QByteArray &data, const QString &type = "PNG") override;
+
+ /*
+ * TODO: the following methods return an empty QVariant/QByteArray.
+ */
+ QVariant numberCategoryIcon(const QVariant &p,
+ const QSize &size,
+ bool displayPresence = false,
+ bool isPresent = false) override;
+ QByteArray toByteArray(const QVariant &pxm) override;
+ QVariant userActionIcon(const UserActionElement &state) const override;
+ QVariant decorationRole(const QModelIndex &index) override;
+ QVariant decorationRole(const lrc::api::conversation::Info &conversation,
+ const lrc::api::account::Info &accountInfo) override;
+};
diff --git a/src/pluginitemlistmodel.cpp b/src/pluginitemlistmodel.cpp
new file mode 100644
index 0000000..dcc072f
--- /dev/null
+++ b/src/pluginitemlistmodel.cpp
@@ -0,0 +1,123 @@
+/*
+ * Copyright (C) 2019-2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "pluginitemlistmodel.h"
+
+PluginItemListModel::PluginItemListModel(QObject *parent)
+ : QAbstractListModel(parent)
+{}
+
+PluginItemListModel::~PluginItemListModel() {}
+
+int
+PluginItemListModel::rowCount(const QModelIndex &parent) const
+{
+ if (!parent.isValid()) {
+ /*
+ * Count.
+ */
+ return LRCInstance::pluginModel().listAvailablePlugins().size();
+ }
+ /*
+ * A valid QModelIndex returns 0 as no entry has sub-elements.
+ */
+ return 0;
+}
+
+int
+PluginItemListModel::columnCount(const QModelIndex &parent) const
+{
+ Q_UNUSED(parent);
+ /*
+ * Only need one column.
+ */
+ return 1;
+}
+
+QVariant
+PluginItemListModel::data(const QModelIndex &index, int role) const
+{
+ auto pluginList = LRCInstance::pluginModel().listAvailablePlugins();
+ if (!index.isValid() || pluginList.size() <= index.row()) {
+ return QVariant();
+ }
+
+ auto details = LRCInstance::pluginModel().getPluginDetails(pluginList.at(index.row()));
+
+ switch (role) {
+ case Role::PluginName:
+ return QVariant(details.name);
+ case Role::PluginId:
+ return QVariant(pluginList.at(index.row()));
+ case Role::PluginIcon:
+ return QVariant(details.iconPath);
+ case Role::IsLoaded:
+ return QVariant(details.loaded);
+ }
+ return QVariant();
+}
+
+QHash<int, QByteArray>
+PluginItemListModel::roleNames() const
+{
+ QHash<int, QByteArray> roles;
+ roles[PluginName] = "PluginName";
+ roles[PluginId] = "PluginId";
+ roles[PluginIcon] = "PluginIcon";
+ roles[IsLoaded] = "IsLoaded";
+
+ return roles;
+}
+
+QModelIndex
+PluginItemListModel::index(int row, int column, const QModelIndex &parent) const
+{
+ Q_UNUSED(parent);
+ if (column != 0) {
+ return QModelIndex();
+ }
+
+ if (row >= 0 && row < rowCount()) {
+ return createIndex(row, column);
+ }
+ return QModelIndex();
+}
+
+QModelIndex
+PluginItemListModel::parent(const QModelIndex &child) const
+{
+ Q_UNUSED(child);
+ return QModelIndex();
+}
+
+Qt::ItemFlags
+PluginItemListModel::flags(const QModelIndex &index) const
+{
+ auto flags = QAbstractItemModel::flags(index) | Qt::ItemNeverHasChildren | Qt::ItemIsSelectable;
+ if (!index.isValid()) {
+ return QAbstractItemModel::flags(index);
+ }
+ return flags;
+}
+
+void
+PluginItemListModel::reset()
+{
+ beginResetModel();
+ endResetModel();
+}
diff --git a/src/pluginitemlistmodel.h b/src/pluginitemlistmodel.h
new file mode 100644
index 0000000..da399f7
--- /dev/null
+++ b/src/pluginitemlistmodel.h
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2019-2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include <QAbstractItemModel>
+
+#include "api/pluginmodel.h"
+
+#include "lrcinstance.h"
+
+class PluginItemListModel : public QAbstractListModel
+{
+ Q_OBJECT
+
+public:
+ enum Role { PluginName = Qt::UserRole + 1, PluginId, PluginIcon, IsLoaded };
+ Q_ENUM(Role)
+
+ explicit PluginItemListModel(QObject *parent = 0);
+ ~PluginItemListModel();
+
+ /*
+ * QAbstractListModel override.
+ */
+ int rowCount(const QModelIndex &parent = QModelIndex()) const override;
+ int columnCount(const QModelIndex &parent) const override;
+ QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
+ /*
+ * Override role name as access point in qml.
+ */
+ QHash<int, QByteArray> roleNames() const override;
+ QModelIndex index(int row, int column = 0, const QModelIndex &parent = QModelIndex()) const;
+ QModelIndex parent(const QModelIndex &child) const;
+ Qt::ItemFlags flags(const QModelIndex &index) const;
+
+ /*
+ * This function is to reset the model when there's new account added.
+ */
+ Q_INVOKABLE void reset();
+};
diff --git a/src/preferenceitemlistmodel.cpp b/src/preferenceitemlistmodel.cpp
new file mode 100644
index 0000000..8e90426
--- /dev/null
+++ b/src/preferenceitemlistmodel.cpp
@@ -0,0 +1,153 @@
+/*
+ * Copyright (C) 2019-2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "preferenceitemlistmodel.h"
+#include <map>
+
+std::map<QString, int> mapType {{QString("List"), PreferenceItemListModel::Type::LIST}};
+
+PreferenceItemListModel::PreferenceItemListModel(QObject *parent)
+ : QAbstractListModel(parent)
+{}
+
+PreferenceItemListModel::~PreferenceItemListModel() {}
+
+int
+PreferenceItemListModel::rowCount(const QModelIndex &parent) const
+{
+ if (!parent.isValid()) {
+ /*
+ * Count.
+ */
+ return LRCInstance::pluginModel().getPluginPreferences(pluginId_).size();
+ }
+ /*
+ * A valid QModelIndex returns 0 as no entry has sub-elements.
+ */
+ return 0;
+}
+
+int
+PreferenceItemListModel::columnCount(const QModelIndex &parent) const
+{
+ Q_UNUSED(parent);
+ /*
+ * Only need one column.
+ */
+ return 1;
+}
+
+QVariant
+PreferenceItemListModel::data(const QModelIndex &index, int role) const
+{
+ auto preferenceList = LRCInstance::pluginModel().getPluginPreferences(pluginId_);
+ if (!index.isValid() || preferenceList.size() <= index.row()) {
+ return QVariant();
+ }
+
+ auto details = preferenceList.at(index.row());
+ int type = Type::DEFAULT;
+ auto it = mapType.find(details["type"]);
+ if (it != mapType.end())
+ {
+ type = mapType[details["type"]];
+ }
+
+ switch (role) {
+ case Role::PreferenceKey:
+ return QVariant(details["key"]);
+ case Role::PreferenceName:
+ return QVariant(details["title"]);
+ case Role::PreferenceSummary:
+ return QVariant(details["summary"]);
+ case Role::PreferenceType:
+ return QVariant(type);
+ case Role::PreferenceDefaultValue:
+ return QVariant(details["defaultValue"]);
+ case Role::PreferenceEntries:
+ return QVariant(details["entries"]);
+ case Role::PreferenceEntryValues:
+ return QVariant(details["entryValues"]);
+ }
+ return QVariant();
+}
+
+QHash<int, QByteArray>
+PreferenceItemListModel::roleNames() const
+{
+ QHash<int, QByteArray> roles;
+ roles[PreferenceKey] = "PreferenceKey";
+ roles[PreferenceName] = "PreferenceName";
+ roles[PreferenceSummary] = "PreferenceSummary";
+ roles[PreferenceType] = "PreferenceType";
+ roles[PreferenceDefaultValue] = "PreferenceDefaultValue";
+ roles[PreferenceEntries] = "PreferenceEntries";
+ roles[PreferenceEntryValues] = "PreferenceEntryValues";
+
+ return roles;
+}
+
+QModelIndex
+PreferenceItemListModel::index(int row, int column, const QModelIndex &parent) const
+{
+ Q_UNUSED(parent);
+ if (column != 0) {
+ return QModelIndex();
+ }
+
+ if (row >= 0 && row < rowCount()) {
+ return createIndex(row, column);
+ }
+ return QModelIndex();
+}
+
+QModelIndex
+PreferenceItemListModel::parent(const QModelIndex &child) const
+{
+ Q_UNUSED(child);
+ return QModelIndex();
+}
+
+Qt::ItemFlags
+PreferenceItemListModel::flags(const QModelIndex &index) const
+{
+ auto flags = QAbstractItemModel::flags(index) | Qt::ItemNeverHasChildren | Qt::ItemIsSelectable;
+ if (!index.isValid()) {
+ return QAbstractItemModel::flags(index);
+ }
+ return flags;
+}
+
+void
+PreferenceItemListModel::reset()
+{
+ beginResetModel();
+ endResetModel();
+}
+
+QString
+PreferenceItemListModel::pluginId() const
+{
+ return pluginId_;
+}
+
+void
+PreferenceItemListModel::setPluginId(const QString &pluginId)
+{
+ pluginId_ = pluginId;
+}
diff --git a/src/preferenceitemlistmodel.h b/src/preferenceitemlistmodel.h
new file mode 100644
index 0000000..c51a070
--- /dev/null
+++ b/src/preferenceitemlistmodel.h
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 2019-2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include <QAbstractItemModel>
+
+#include "api/pluginmodel.h"
+
+#include "lrcinstance.h"
+
+class PreferenceItemListModel : public QAbstractListModel
+{
+ Q_OBJECT
+
+ Q_PROPERTY(QString pluginId READ pluginId WRITE setPluginId)
+public:
+ enum Role { PreferenceKey = Qt::UserRole + 1, PreferenceName, PreferenceSummary, PreferenceType, PreferenceDefaultValue, PreferenceEntries, PreferenceEntryValues};
+
+ typedef enum {
+ LIST,
+ DEFAULT,
+ } Type;
+
+ Q_ENUM(Role)
+
+ explicit PreferenceItemListModel(QObject *parent = 0);
+ ~PreferenceItemListModel();
+
+ /*
+ * QAbstractListModel override.
+ */
+ int rowCount(const QModelIndex &parent = QModelIndex()) const override;
+ int columnCount(const QModelIndex &parent) const override;
+ QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
+ /*
+ * Override role name as access point in qml.
+ */
+ QHash<int, QByteArray> roleNames() const override;
+ QModelIndex index(int row, int column = 0, const QModelIndex &parent = QModelIndex()) const;
+ QModelIndex parent(const QModelIndex &child) const;
+ Qt::ItemFlags flags(const QModelIndex &index) const;
+
+ /*
+ * This function is to reset the model when there's new account added.
+ */
+ Q_INVOKABLE void reset();
+
+ QString pluginId() const;
+ void setPluginId(const QString &pluginId);
+// signals:
+// void pluginIdChanged();
+private:
+ QString pluginId_;
+};
diff --git a/src/previewrenderer.cpp b/src/previewrenderer.cpp
new file mode 100644
index 0000000..773b23f
--- /dev/null
+++ b/src/previewrenderer.cpp
@@ -0,0 +1,146 @@
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "previewrenderer.h"
+
+#include "lrcinstance.h"
+
+PreviewRenderer::PreviewRenderer(QQuickItem *parent)
+ : QQuickPaintedItem(parent)
+{
+ setAntialiasing(true);
+ setFillColor(Qt::black);
+ setRenderTarget(QQuickPaintedItem::FramebufferObject);
+ setPerformanceHint(QQuickPaintedItem::FastFBOResizing);
+
+ previewFrameUpdatedConnection_ = connect(LRCInstance::renderer(),
+ &RenderManager::previewFrameUpdated,
+ [this]() { update(QRect(0, 0, width(), height())); });
+ previewRenderingStopped_ = connect(LRCInstance::renderer(),
+ &RenderManager::previewRenderingStopped,
+ [this]() { update(QRect(0, 0, width(), height())); });
+}
+
+PreviewRenderer::~PreviewRenderer()
+{
+ disconnect(previewFrameUpdatedConnection_);
+ disconnect(previewRenderingStopped_);
+}
+
+void
+PreviewRenderer::paint(QPainter *painter)
+{
+ auto previewImage = LRCInstance::renderer()->getPreviewFrame();
+ if (previewImage) {
+ QImage scaledPreview;
+ auto aspectRatio = static_cast<qreal>(previewImage->width())
+ / static_cast<qreal>(previewImage->height());
+ auto previewHeight = height();
+ auto previewWidth = previewHeight * aspectRatio;
+
+ /* Instead of setting fixed size, we could get an x offset for the preview
+ * but this would render the horizontal spacers in the parent widget useless.
+ * e.g.
+ * auto parent = qobject_cast<QWidget*>(this->parent());
+ * auto xPos = (parent->width() - previewWidth) / 2;
+ * setGeometry(QRect(QPoint(xPos, this->pos().y()), QSize(previewWidth, previewHeight)));
+ */
+ setWidth(previewWidth);
+ setHeight(previewHeight);
+
+ scaledPreview = previewImage->scaled(size().toSize(), Qt::KeepAspectRatio);
+ painter->drawImage(QRect(0, 0, scaledPreview.width(), scaledPreview.height()),
+ scaledPreview);
+ }
+}
+
+VideoCallPreviewRenderer::VideoCallPreviewRenderer(QQuickItem *parent)
+ : PreviewRenderer(parent)
+{}
+
+VideoCallPreviewRenderer::~VideoCallPreviewRenderer() {}
+
+qreal
+VideoCallPreviewRenderer::getPreviewImageScalingFactor()
+{
+ auto previewImage = LRCInstance::renderer()->getPreviewFrame();
+ if (previewImage) {
+ return static_cast<qreal>(previewImage->height())
+ / static_cast<qreal>(previewImage->width());
+ }
+ return 1.0;
+}
+
+void
+VideoCallPreviewRenderer::paint(QPainter *painter)
+{
+ auto previewImage = LRCInstance::renderer()->getPreviewFrame();
+
+ if (previewImage) {
+ emit previewImageAvailable();
+
+ QImage scaledPreview;
+ scaledPreview = previewImage->scaled(size().toSize(), Qt::KeepAspectRatio);
+ painter->drawImage(QRect(0, 0, scaledPreview.width(), scaledPreview.height()),
+ scaledPreview);
+ }
+}
+
+PhotoboothPreviewRender::PhotoboothPreviewRender(QQuickItem *parent)
+ : PreviewRenderer(parent)
+{
+ connect(LRCInstance::renderer(), &RenderManager::previewRenderingStopped, [this]() {
+ emit hideBooth();
+ });
+}
+
+PhotoboothPreviewRender::~PhotoboothPreviewRender() {}
+
+QImage
+PhotoboothPreviewRender::takePhoto()
+{
+ if (auto previewImage = LRCInstance::renderer()->getPreviewFrame()) {
+ return previewImage->copy();
+ }
+ return QImage();
+}
+
+QString
+PhotoboothPreviewRender::takeCroppedPhotoToBase64(int size)
+{
+ auto image = Utils::cropImage(takePhoto());
+ auto avatar = image.scaled(size, size, Qt::KeepAspectRatioByExpanding, Qt::SmoothTransformation);
+
+ return QString::fromLatin1(Utils::QImageToByteArray(avatar).toBase64().data());
+}
+
+void
+PhotoboothPreviewRender::paint(QPainter *painter)
+{
+ painter->setRenderHint(QPainter::Antialiasing, true);
+
+ auto previewImage = LRCInstance::renderer()->getPreviewFrame();
+ if (previewImage) {
+ QImage scaledPreview;
+ scaledPreview = Utils::getCirclePhoto(*previewImage,
+ height() <= width() ? height() : width());
+ painter->drawImage(QRect(0, 0, scaledPreview.width(), scaledPreview.height()),
+ scaledPreview);
+ }
+}
diff --git a/src/previewrenderer.h b/src/previewrenderer.h
new file mode 100644
index 0000000..408416c
--- /dev/null
+++ b/src/previewrenderer.h
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include <QtQuick>
+
+/*
+ * Use QQuickPaintedItem so that QPainter apis can be used.
+ * Note: Old video pipeline.
+ */
+class PreviewRenderer : public QQuickPaintedItem
+{
+ Q_OBJECT
+public:
+ explicit PreviewRenderer(QQuickItem *parent = 0);
+ ~PreviewRenderer();
+
+protected:
+ void paint(QPainter *painter) override;
+
+private:
+ QMetaObject::Connection previewFrameUpdatedConnection_;
+ QMetaObject::Connection previewRenderingStopped_;
+};
+
+class VideoCallPreviewRenderer : public PreviewRenderer
+{
+ Q_OBJECT
+public:
+ explicit VideoCallPreviewRenderer(QQuickItem *parent = 0);
+ virtual ~VideoCallPreviewRenderer();
+
+ Q_INVOKABLE qreal getPreviewImageScalingFactor();
+
+signals:
+ void previewImageAvailable();
+
+private:
+ void paint(QPainter *painter) override final;
+};
+
+class PhotoboothPreviewRender : public PreviewRenderer
+{
+ Q_OBJECT
+public:
+ explicit PhotoboothPreviewRender(QQuickItem *parent = 0);
+ virtual ~PhotoboothPreviewRender();
+
+ QImage takePhoto();
+ Q_INVOKABLE QString takeCroppedPhotoToBase64(int size);
+
+signals:
+ void hideBooth();
+
+private:
+ void paint(QPainter *painter) override final;
+};
diff --git a/src/qmladapterbase.cpp b/src/qmladapterbase.cpp
new file mode 100644
index 0000000..6b8d3f6
--- /dev/null
+++ b/src/qmladapterbase.cpp
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "qmladapterbase.h"
+
+QmlAdapterBase::QmlAdapterBase(QObject *parent)
+ : QObject(parent)
+{
+ qmlObj_ = nullptr;
+}
+
+QmlAdapterBase::~QmlAdapterBase() {}
+
+void
+QmlAdapterBase::setQmlObject(QObject *obj)
+{
+ qmlObj_ = obj;
+
+ initQmlObject();
+}
diff --git a/src/qmladapterbase.h b/src/qmladapterbase.h
new file mode 100644
index 0000000..e476359
--- /dev/null
+++ b/src/qmladapterbase.h
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include <QObject>
+
+/*
+ * The main purpose of this class is to operate on qml objects,
+ * or provide api calls to qml objects that cannot be done directly in qml.
+ */
+class QmlAdapterBase : public QObject
+{
+ Q_OBJECT
+public:
+ explicit QmlAdapterBase(QObject *parent = nullptr);
+ ~QmlAdapterBase();
+
+ /*
+ * This function should be called in the Component.onCompleted slot
+ * in the qml component that this adapter should attach to.
+ */
+ Q_INVOKABLE void setQmlObject(QObject *obj);
+
+protected:
+ /*
+ *Once the qml object is set, custom actions can be done in this function.
+ */
+ virtual void initQmlObject() = 0;
+
+ /*
+ * Object pointer.
+ */
+ QObject *qmlObj_;
+};
diff --git a/src/qrimageprovider.h b/src/qrimageprovider.h
new file mode 100644
index 0000000..cc8837e
--- /dev/null
+++ b/src/qrimageprovider.h
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "accountlistmodel.h"
+#include "lrcinstance.h"
+
+#include <QImage>
+#include <QObject>
+#include <QPair>
+#include <QQuickImageProvider>
+#include <QString>
+
+class QrImageProvider : public QObject, public QQuickImageProvider
+{
+public:
+ QrImageProvider()
+ : QQuickImageProvider(QQuickImageProvider::Image,
+ QQmlImageProviderBase::ForceAsynchronousImageLoading)
+ {}
+
+ enum class QrType { Account, Contact };
+
+ /*
+ * Id should be string like account_0 (account index),
+ * or contact_xxx (uid).
+ * Cannot use getCurrentAccId to replace account index,
+ * since we need to keep each image id unique.
+ */
+ QPair<QrType, QString>
+ getIndexFromID(const QString &id)
+ {
+ auto list = id.split('_', QString::SkipEmptyParts);
+ if (list.contains("account")) {
+ return QPair(QrType::Account, list[1]);
+ } else if (list.contains("contact") && list.size() > 1) {
+ /*
+ * For contact_xxx, xxx is "" initially
+ */
+ auto convInfo = LRCInstance::getConversationFromConvUid(list[1]);
+ auto contact = LRCInstance::getCurrentAccountInfo().contactModel->getContact(
+ convInfo.participants.at(0));
+ return QPair(QrType::Contact, contact.profileInfo.uri);
+ }
+ return QPair(QrType::Account, "");
+ }
+
+ QImage
+ requestImage(const QString &id, QSize *size, const QSize &requestedSize) override
+ {
+ Q_UNUSED(size);
+
+ QString uri;
+ auto indexPair = getIndexFromID(id);
+
+ if (indexPair.first == QrType::Contact) {
+ uri = indexPair.second;
+ } else {
+ if (indexPair.second.isEmpty())
+ return QImage();
+
+ auto accountList = LRCInstance::accountModel().getAccountList();
+ auto accountIndex = indexPair.second.toInt();
+ if (accountList.size() <= accountIndex)
+ return QImage();
+
+ auto &accountInfo = LRCInstance::accountModel().getAccountInfo(
+ accountList.at(accountIndex));
+ uri = accountInfo.profileInfo.uri;
+ }
+
+ if (!requestedSize.isEmpty())
+ return Utils::setupQRCode(uri, 0).scaled(requestedSize, Qt::KeepAspectRatio);
+ else
+ return Utils::setupQRCode(uri, 0);
+ }
+};
\ No newline at end of file
diff --git a/src/rendermanager.cpp b/src/rendermanager.cpp
new file mode 100644
index 0000000..dfd095b
--- /dev/null
+++ b/src/rendermanager.cpp
@@ -0,0 +1,374 @@
+/*
+ * Copyright (C) 2019-2020 by Savoir-faire Linux
+ * Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "rendermanager.h"
+
+#include <QtConcurrent/QtConcurrent>
+
+#include <stdexcept>
+
+using namespace lrc::api;
+
+FrameWrapper::FrameWrapper(AVModel &avModel, const QString &id)
+ : avModel_(avModel)
+ , id_(id)
+ , isRendering_(false)
+{}
+
+FrameWrapper::~FrameWrapper()
+{
+ if (id_ == video::PREVIEW_RENDERER_ID) {
+ avModel_.stopPreview();
+ }
+}
+
+void
+FrameWrapper::connectStartRendering()
+{
+ QObject::disconnect(renderConnections_.started);
+ renderConnections_.started = QObject::connect(&avModel_,
+ &AVModel::rendererStarted,
+ this,
+ &FrameWrapper::slotRenderingStarted);
+}
+
+bool
+FrameWrapper::startRendering()
+{
+ try {
+ renderer_ = const_cast<video::Renderer *>(&avModel_.getRenderer(id_));
+ } catch (std::out_of_range &e) {
+ qWarning() << e.what();
+ return false;
+ }
+
+ QObject::disconnect(renderConnections_.updated);
+ QObject::disconnect(renderConnections_.stopped);
+
+ renderConnections_.updated = QObject::connect(&avModel_,
+ &AVModel::frameUpdated,
+ this,
+ &FrameWrapper::slotFrameUpdated);
+
+ renderConnections_.stopped = QObject::connect(&avModel_,
+ &AVModel::rendererStopped,
+ this,
+ &FrameWrapper::slotRenderingStopped);
+
+ return true;
+}
+
+QImage *
+FrameWrapper::getFrame()
+{
+ return image_.get();
+}
+
+bool
+FrameWrapper::isRendering()
+{
+ return isRendering_;
+}
+
+void
+FrameWrapper::slotRenderingStarted(const QString &id)
+{
+ if (id != id_) {
+ return;
+ }
+
+ if (!startRendering()) {
+ qWarning() << "Couldn't start rendering for id: " << id_;
+ return;
+ }
+
+ isRendering_ = true;
+
+ emit renderingStarted(id);
+}
+
+void
+FrameWrapper::slotFrameUpdated(const QString &id)
+{
+ if (id != id_) {
+ return;
+ }
+
+ if (!renderer_ || !renderer_->isRendering()) {
+ return;
+ }
+
+ {
+ QMutexLocker lock(&mutex_);
+
+ frame_ = renderer_->currentFrame();
+
+ unsigned int width = renderer_->size().width();
+ unsigned int height = renderer_->size().height();
+
+#ifndef Q_OS_LINUX
+ unsigned int size = frame_.storage.size();
+ /*
+ * If the frame is empty or not the expected size,
+ * do nothing and keep the last rendered QImage.
+ */
+ if (size != 0 && size == width * height * 4) {
+ buffer_ = std::move(frame_.storage);
+ image_.reset(new QImage((uchar *) buffer_.data(),
+ width,
+ height,
+ QImage::Format_ARGB32_Premultiplied));
+#else
+ if (frame_.ptr) {
+ image_.reset(new QImage(frame_.ptr, width, height, QImage::Format_ARGB32));
+#endif
+ }
+ }
+
+ emit frameUpdated(id);
+}
+
+void
+FrameWrapper::slotRenderingStopped(const QString &id)
+{
+ if (id != id_) {
+ return;
+ }
+
+ QObject::disconnect(renderConnections_.updated);
+ QObject::disconnect(renderConnections_.stopped);
+ renderer_ = nullptr;
+
+ /*
+ * The object's QImage pointer is reset before renderingStopped
+ * is emitted, allowing the listener to invoke specific behavior
+ * like clearing the widget or changing the UI entirely.
+ */
+ image_.reset();
+
+ isRendering_ = false;
+
+ emit renderingStopped(id);
+}
+
+RenderManager::RenderManager(AVModel &avModel)
+ : avModel_(avModel)
+{
+ deviceListSize_ = avModel_.getDevices().size();
+ connect(&avModel_, &lrc::api::AVModel::deviceEvent, this, &RenderManager::slotDeviceEvent);
+
+ previewFrameWrapper_ = std::make_unique<FrameWrapper>(avModel_);
+
+ QObject::connect(previewFrameWrapper_.get(),
+ &FrameWrapper::renderingStarted,
+ [this](const QString &id) {
+ Q_UNUSED(id);
+ emit previewRenderingStarted();
+ });
+ QObject::connect(previewFrameWrapper_.get(),
+ &FrameWrapper::frameUpdated,
+ [this](const QString &id) {
+ Q_UNUSED(id);
+ emit previewFrameUpdated();
+ });
+ QObject::connect(previewFrameWrapper_.get(),
+ &FrameWrapper::renderingStopped,
+ [this](const QString &id) {
+ Q_UNUSED(id);
+ emit previewRenderingStopped();
+ });
+
+ previewFrameWrapper_->connectStartRendering();
+}
+
+RenderManager::~RenderManager()
+{
+ previewFrameWrapper_.reset();
+
+ for (auto &dfw : distantFrameWrapperMap_) {
+ dfw.second.reset();
+ }
+}
+
+bool
+RenderManager::isPreviewing()
+{
+ return previewFrameWrapper_->isRendering();
+}
+
+QImage *
+RenderManager::getPreviewFrame()
+{
+ return previewFrameWrapper_->getFrame();
+}
+
+void
+RenderManager::stopPreviewing(bool async)
+{
+ if (!previewFrameWrapper_->isRendering()) {
+ return;
+ }
+
+ if (async) {
+ QtConcurrent::run([this] { avModel_.stopPreview(); });
+ } else {
+ avModel_.stopPreview();
+ }
+}
+
+void
+RenderManager::startPreviewing(bool force, bool async)
+{
+ if (previewFrameWrapper_->isRendering() && !force) {
+ return;
+ }
+
+ auto restart = [this] {
+ if (previewFrameWrapper_->isRendering()) {
+ avModel_.stopPreview();
+ }
+ avModel_.startPreview();
+ };
+ if (async) {
+ QtConcurrent::run(restart);
+ } else {
+ restart();
+ }
+}
+
+QImage *
+RenderManager::getFrame(const QString &id)
+{
+ auto dfwIt = distantFrameWrapperMap_.find(id);
+ if (dfwIt != distantFrameWrapperMap_.end()) {
+ return dfwIt->second->getFrame();
+ }
+ return nullptr;
+}
+
+void
+RenderManager::addDistantRenderer(const QString &id)
+{
+ /*
+ * Check if a FrameWrapper with this id exists.
+ */
+ auto dfwIt = distantFrameWrapperMap_.find(id);
+ if (dfwIt != distantFrameWrapperMap_.end()) {
+ if (!dfwIt->second->startRendering()) {
+ qWarning() << "Couldn't start rendering for id: " << id;
+ }
+ } else {
+ auto dfw = std::make_unique<FrameWrapper>(avModel_, id);
+
+ /*
+ * Connect this to the FrameWrapper.
+ */
+ distantConnectionMap_[id].started = QObject::connect(dfw.get(),
+ &FrameWrapper::renderingStarted,
+ [this](const QString &id) {
+ emit distantRenderingStarted(id);
+ });
+ distantConnectionMap_[id].updated = QObject::connect(dfw.get(),
+ &FrameWrapper::frameUpdated,
+ [this](const QString &id) {
+ emit distantFrameUpdated(id);
+ });
+ distantConnectionMap_[id].stopped = QObject::connect(dfw.get(),
+ &FrameWrapper::renderingStopped,
+ [this](const QString &id) {
+ emit distantRenderingStopped(id);
+ });
+
+ /*
+ * Connect FrameWrapper to avmodel.
+ */
+ dfw->connectStartRendering();
+
+ /*
+ * Add to map.
+ */
+ distantFrameWrapperMap_.insert(std::make_pair(id, std::move(dfw)));
+ }
+}
+
+void
+RenderManager::removeDistantRenderer(const QString &id)
+{
+ auto dfwIt = distantFrameWrapperMap_.find(id);
+ if (dfwIt != distantFrameWrapperMap_.end()) {
+ /*
+ * Disconnect FrameWrapper from this.
+ */
+ auto dcIt = distantConnectionMap_.find(id);
+ if (dcIt != distantConnectionMap_.end()) {
+ QObject::disconnect(dcIt->second.started);
+ QObject::disconnect(dcIt->second.updated);
+ QObject::disconnect(dcIt->second.stopped);
+ }
+
+ /*
+ * Erase.
+ */
+ distantFrameWrapperMap_.erase(dfwIt);
+ }
+}
+
+void
+RenderManager::slotDeviceEvent()
+{
+ auto defaultDevice = avModel_.getDefaultDevice();
+ auto currentCaptureDevice = avModel_.getCurrentVideoCaptureDevice();
+ /*
+ * Decide whether a device has plugged, unplugged, or nothing has changed.
+ */
+ auto deviceList = avModel_.getDevices();
+ auto currentDeviceListSize = deviceList.size();
+
+ DeviceEvent deviceEvent{DeviceEvent::None};
+ if (currentDeviceListSize > deviceListSize_) {
+ deviceEvent = DeviceEvent::Added;
+ } else if (currentDeviceListSize < deviceListSize_) {
+ /*
+ * Check if the currentCaptureDevice is still in the device list.
+ */
+ if (std::find(std::begin(deviceList), std::end(deviceList), currentCaptureDevice)
+ == std::end(deviceList)) {
+ deviceEvent = DeviceEvent::RemovedCurrent;
+ }
+ }
+
+ if (previewFrameWrapper_->isRendering()) {
+ if (currentDeviceListSize == 0) {
+ avModel_.clearCurrentVideoCaptureDevice();
+ avModel_.switchInputTo({});
+ stopPreviewing();
+ } else if (deviceEvent == DeviceEvent::RemovedCurrent && currentDeviceListSize > 0) {
+ avModel_.setCurrentVideoCaptureDevice(defaultDevice);
+ startPreviewing(true);
+ } else {
+ startPreviewing();
+ }
+ } else if (deviceEvent == DeviceEvent::Added && currentDeviceListSize == 1) {
+ avModel_.setCurrentVideoCaptureDevice(defaultDevice);
+ }
+
+ emit videoDeviceListChanged();
+
+ deviceListSize_ = currentDeviceListSize;
+}
diff --git a/src/rendermanager.h b/src/rendermanager.h
new file mode 100644
index 0000000..edb6017
--- /dev/null
+++ b/src/rendermanager.h
@@ -0,0 +1,282 @@
+/*
+ * Copyright (C) 2019-2020 by Savoir-faire Linux
+ * Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "api/avmodel.h"
+#include "api/lrc.h"
+
+#include <QImage>
+#include <QMutex>
+#include <QObject>
+
+using namespace lrc::api;
+
+/*
+ * This class acts as a QImage rendering sink and manages
+ * signal/slot connections to it's underlying (AVModel) renderer
+ * corresponding to the object's renderer id.
+ * A QImage pointer is provisioned and updated once rendering
+ * starts.
+ */
+
+struct RenderConnections
+{
+ QMetaObject::Connection started, stopped, updated;
+};
+
+class FrameWrapper final : public QObject
+{
+ Q_OBJECT;
+
+public:
+ FrameWrapper(AVModel &avModel, const QString &id = video::PREVIEW_RENDERER_ID);
+ ~FrameWrapper();
+
+ /*
+ * Reconnect the started rendering connection for this object.
+ */
+ void connectStartRendering();
+
+ /*
+ * Get a pointer to the renderer and reconnect the update/stopped
+ * rendering connections for this object.
+ * @return whether the start succeeded or not
+ */
+ bool startRendering();
+
+ /*
+ * Get the most recently rendered frame as a QImage.
+ * @return the rendered image of this object's id
+ */
+ QImage *getFrame();
+
+ /*
+ * Check if the object is updating actively.
+ */
+ bool isRendering();
+
+signals:
+ /*
+ * Emitted once in slotRenderingStarted.
+ * @param id of the renderer
+ */
+ void renderingStarted(const QString &id);
+ /*
+ * Emitted each time a frame is ready to be displayed.
+ * @param id of the renderer
+ */
+ void frameUpdated(const QString &id);
+ /*
+ * Emitted once in slotRenderingStopped.
+ * @param id of the renderer
+ */
+ void renderingStopped(const QString &id);
+
+private slots:
+ /*
+ * Used to listen to AVModel::rendererStarted.
+ * @param id of the renderer
+ */
+ void slotRenderingStarted(const QString &id = video::PREVIEW_RENDERER_ID);
+ /*
+ * Used to listen to AVModel::frameUpdated.
+ * @param id of the renderer
+ */
+ void slotFrameUpdated(const QString &id = video::PREVIEW_RENDERER_ID);
+ /*
+ * Used to listen to AVModel::renderingStopped.
+ * @param id of the renderer
+ */
+ void slotRenderingStopped(const QString &id = video::PREVIEW_RENDERER_ID);
+
+private:
+ /*
+ * The id of the renderer.
+ */
+ QString id_;
+
+ /*
+ * A pointer to the lrc renderer object.
+ */
+ video::Renderer *renderer_;
+
+ /*
+ * A local copy of the renderer's current frame.
+ */
+ video::Frame frame_;
+
+ /*
+ * A the frame's storage data used to set the image.
+ */
+ std::vector<uint8_t> buffer_;
+
+ /*
+ * The frame's paint ready QImage.
+ */
+ std::unique_ptr<QImage> image_;
+
+ /*
+ * Used to protect the buffer during QImage creation routine.
+ */
+ QMutex mutex_;
+
+ /*
+ * True if the object is rendering
+ */
+ std::atomic_bool isRendering_;
+
+ /*
+ * Convenience ref to avmodel
+ */
+ AVModel &avModel_;
+
+ /*
+ * Connections to the underlying renderer signals in avmodel
+ */
+ RenderConnections renderConnections_;
+};
+
+/**
+ * RenderManager filters signals and ecapsulates preview and distant
+ * frame wrappers, providing access to QImages for each and simplified
+ * start/stop mechanisms for renderers. It should contain as much
+ * renderer control logic as possible and prevent ui widgets from directly
+ * interfacing the rendering logic.
+ */
+class RenderManager final : public QObject
+{
+ Q_OBJECT;
+
+public:
+ explicit RenderManager(AVModel &avModel);
+ ~RenderManager();
+
+ /*
+ * Check if the preview is active.
+ */
+ bool isPreviewing();
+ /*
+ * Get the most recently rendered preview frame as a QImage.
+ * @return the rendered preview image
+ */
+ QImage *getPreviewFrame();
+ /*
+ * Start capturing and rendering preview frames.
+ * @param force if the capture device should be started
+ * @param async
+ */
+ void startPreviewing(bool force = false, bool async = true);
+ /*
+ * Stop capturing.
+ * @param async
+ */
+ void stopPreviewing(bool async = true);
+
+ /*
+ * Get the most recently rendered distant frame for a given id
+ * as a QImage.
+ * @return the rendered preview image
+ */
+ QImage *getFrame(const QString &id);
+ /*
+ * Add and connect a distant renderer for a given id
+ * to a FrameWrapper object
+ * @param id
+ */
+ void addDistantRenderer(const QString &id);
+ /*
+ * Disconnect and remove a FrameWrapper object connected to a
+ * distant renderer for a given id
+ * @param id
+ */
+ void removeDistantRenderer(const QString &id);
+
+signals:
+ /*
+ * Emitted when the size of the video capture device list changes.
+ */
+ void videoDeviceListChanged();
+
+ /*
+ * Emitted when the preview is started.
+ */
+ void previewRenderingStarted();
+
+ /*
+ * Emitted when the preview has a new frame ready.
+ */
+ void previewFrameUpdated();
+
+ /*
+ * Emitted when the preview is stopped.
+ */
+ void previewRenderingStopped();
+
+ /*
+ * Emitted when a distant renderer is started for a given id.
+ */
+ void distantRenderingStarted(const QString &id);
+
+ /*
+ * Emitted when a distant renderer has a new frame ready for a given id.
+ */
+ void distantFrameUpdated(const QString &id);
+
+ /*
+ * Emitted when a distant renderer is stopped for a given id.
+ */
+ void distantRenderingStopped(const QString &id);
+
+private slots:
+ /*
+ * Used to listen to AVModel::deviceEvent.
+ */
+ void slotDeviceEvent();
+
+private:
+ /*
+ * Used to classify capture device events.
+ */
+ enum class DeviceEvent { Added, RemovedCurrent, None };
+
+ /*
+ * Used to track the capture device count.
+ */
+ int deviceListSize_;
+
+ /*
+ * One preview frame.
+ */
+ std::unique_ptr<FrameWrapper> previewFrameWrapper_;
+
+ /*
+ * Distant for each call/conf/conversation.
+ */
+ std::map<QString, std::unique_ptr<FrameWrapper>> distantFrameWrapperMap_;
+ std::map<QString, RenderConnections> distantConnectionMap_;
+
+ /*
+ * Convenience ref to avmodel.
+ */
+ AVModel &avModel_;
+};
+#if QT_VERSION >= QT_VERSION_CHECK(5, 8, 0)
+Q_DECLARE_METATYPE(RenderManager *)
+#endif
diff --git a/src/runguard.cpp b/src/runguard.cpp
new file mode 100644
index 0000000..4d22959
--- /dev/null
+++ b/src/runguard.cpp
@@ -0,0 +1,130 @@
+/*
+ * Copyright (C) 2019-2020 by Savoir-faire Linux
+ * Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+// Based on: https://stackoverflow.com/a/28172162
+
+#include "runguard.h"
+#include <QCryptographicHash>
+
+namespace {
+
+QString
+generateKeyHash(const QString &key, const QString &salt)
+{
+ QByteArray data;
+
+ data.append(key.toUtf8());
+ data.append(salt.toUtf8());
+ data = QCryptographicHash::hash(data, QCryptographicHash::Sha1).toHex();
+
+ return data;
+}
+
+} // namespace
+
+RunGuard::RunGuard(const QString &key)
+ : key_(key)
+ , memLockKey_(generateKeyHash(key, "_memLockKey"))
+ , sharedmemKey_(generateKeyHash(key, "_sharedmemKey"))
+ , sharedMem_(sharedmemKey_)
+ , memLock_(memLockKey_, 1)
+{}
+
+RunGuard::~RunGuard()
+{
+ release();
+}
+
+void
+RunGuard::tryRestorePrimaryInstance()
+{
+ /*
+ * TODO: relaunch application
+ */
+}
+
+bool
+RunGuard::isAnotherRunning()
+{
+ if (sharedMem_.isAttached())
+ return false;
+
+ memLock_.acquire();
+ const bool isRunning = sharedMem_.attach();
+ if (isRunning)
+ sharedMem_.detach();
+ memLock_.release();
+
+ return isRunning;
+}
+
+bool
+RunGuard::tryToRun()
+{
+#ifdef Q_OS_WIN
+ if (isAnotherRunning()) {
+ /*
+ * This is a secondary instance,
+ * connect to the primary instance to trigger a restore
+ * then fail.
+ */
+ if (socket_ == nullptr) {
+ socket_ = new QLocalSocket();
+ }
+ if (socket_->state() == QLocalSocket::UnconnectedState
+ || socket_->state() == QLocalSocket::ClosingState) {
+ socket_->connectToServer(key_);
+ }
+ if (socket_->state() == QLocalSocket::ConnectingState) {
+ socket_->waitForConnected();
+ }
+ return false;
+ }
+
+ memLock_.acquire();
+ const bool result = sharedMem_.create(sizeof(quint64));
+ memLock_.release();
+ if (!result) {
+ release();
+ return false;
+ }
+
+ /*
+ * This is the primary instance,
+ * listen for subsequent instances.
+ */
+ QLocalServer::removeServer(key_);
+ server_ = new QLocalServer();
+ server_->setSocketOptions(QLocalServer::UserAccessOption);
+ server_->listen(key_);
+ QObject::connect(server_,
+ &QLocalServer::newConnection,
+ this,
+ &RunGuard::tryRestorePrimaryInstance);
+#endif
+
+ return true;
+}
+
+void
+RunGuard::release()
+{
+ memLock_.acquire();
+ if (sharedMem_.isAttached())
+ sharedMem_.detach();
+ memLock_.release();
+}
\ No newline at end of file
diff --git a/src/runguard.h b/src/runguard.h
new file mode 100644
index 0000000..6e0f0d7
--- /dev/null
+++ b/src/runguard.h
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2019-2020 by Savoir-faire Linux
+ * Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+// Based on: https://stackoverflow.com/a/28172162
+
+#pragma once
+
+#include <QObject>
+#include <QSharedMemory>
+#include <QSystemSemaphore>
+#include <QtNetwork/QLocalServer>
+#include <QtNetwork/QLocalSocket>
+
+class RunGuard : public QObject
+{
+ Q_OBJECT;
+
+public:
+ RunGuard(const QString &key);
+ ~RunGuard();
+
+ bool isAnotherRunning();
+ bool tryToRun();
+ void release();
+
+private slots:
+ void tryRestorePrimaryInstance();
+
+private:
+ const QString key_;
+ const QString memLockKey_;
+ const QString sharedmemKey_;
+
+ QSharedMemory sharedMem_;
+ QSystemSemaphore memLock_;
+
+ QLocalSocket *socket_;
+ QLocalServer *server_;
+
+ Q_DISABLE_COPY(RunGuard)
+};
\ No newline at end of file
diff --git a/src/settingsadaptor.cpp b/src/settingsadaptor.cpp
new file mode 100644
index 0000000..471b25f
--- /dev/null
+++ b/src/settingsadaptor.cpp
@@ -0,0 +1,1047 @@
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "settingsadaptor.h"
+
+#include "api/newdevicemodel.h"
+
+SettingsAdaptor::SettingsAdaptor(QObject *parent)
+ : QObject(parent)
+{}
+
+///Singleton
+SettingsAdaptor &
+SettingsAdaptor::instance()
+{
+ static auto instance = new SettingsAdaptor;
+ return *instance;
+}
+
+QString
+SettingsAdaptor::getDir_Document()
+{
+ return QDir::toNativeSeparators(
+ QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation));
+}
+
+QString
+SettingsAdaptor::getDir_Download()
+{
+ QString downloadPath = QDir::toNativeSeparators(LRCInstance::dataTransferModel().downloadDirectory);
+ if (downloadPath.isEmpty()) {
+ downloadPath = lrc::api::DataTransferModel::createDefaultDirectory();
+ setDownloadPath(downloadPath);
+ LRCInstance::dataTransferModel().downloadDirectory = downloadPath;
+ }
+#ifdef Q_OS_WIN
+ int pos = downloadPath.lastIndexOf(QChar('\\'));
+#else
+ int pos = downloadPath.lastIndexOf(QChar('/'));
+#endif
+ if (pos == downloadPath.length() - 1)
+ downloadPath.truncate(pos);
+ return downloadPath;
+}
+
+bool
+SettingsAdaptor::getSettingsValue_CloseOrMinimized()
+{
+ QSettings settings("jami.net", "Jami");
+ return settings.value(SettingsKey::closeOrMinimized).toBool();
+}
+
+bool
+SettingsAdaptor::getSettingsValue_EnableNotifications()
+{
+ QSettings settings("jami.net", "Jami");
+ return settings.value(SettingsKey::enableNotifications).toBool();
+}
+
+bool
+SettingsAdaptor::getSettingsValue_AutoUpdate()
+{
+ QSettings settings("jami.net", "Jami");
+ return settings.value(SettingsKey::autoUpdate).toBool();
+}
+
+void
+SettingsAdaptor::setClosedOrMin(bool state)
+{
+ QSettings settings("jami.net", "Jami");
+ settings.setValue(SettingsKey::closeOrMinimized, state);
+}
+
+void
+SettingsAdaptor::setNotifications(bool state)
+{
+ QSettings settings("jami.net", "Jami");
+ settings.setValue(SettingsKey::enableNotifications, state);
+}
+
+void
+SettingsAdaptor::setUpdateAutomatic(bool state)
+{
+#ifdef Q_OS_WIN
+ QSettings settings("jami.net", "Jami");
+ settings.setValue(SettingsKey::autoUpdate, state);
+#endif
+}
+
+void
+SettingsAdaptor::setRunOnStartUp(bool state)
+{
+ if (Utils::CheckStartupLink(L"Jami")) {
+ if (!state) {
+ Utils::DeleteStartupLink(L"Jami");
+ }
+ } else if (state) {
+ Utils::CreateStartupLink(L"Jami");
+ }
+}
+
+void
+SettingsAdaptor::setDownloadPath(QString dir)
+{
+ QSettings settings("jami.net", "Jami");
+ settings.setValue(SettingsKey::downloadPath, dir);
+ LRCInstance::dataTransferModel().downloadDirectory = dir + "/";
+}
+
+lrc::api::video::ResRateList
+SettingsAdaptor::get_ResRateList(lrc::api::video::Channel channel, QString device)
+{
+ auto deviceCapabilities = get_DeviceCapabilities(device);
+
+ return deviceCapabilities[channel];
+}
+
+int
+SettingsAdaptor::get_DeviceCapabilitiesSize(const QString &device)
+{
+ return get_DeviceCapabilities(device).size();
+}
+
+QVector<QString>
+SettingsAdaptor::getResolutions(const QString &device)
+{
+ QVector<QString> resolutions;
+
+ auto currentSettings = LRCInstance::avModel().getDeviceSettings(device);
+
+ auto currentChannel = currentSettings.channel.isEmpty() ? "default" : currentSettings.channel;
+ auto channelCaps = get_ResRateList(currentChannel, device);
+ for (auto [resolution, frameRateList] : channelCaps) {
+ for (auto rate : frameRateList) {
+ resolutions.append(resolution);
+ }
+ }
+
+ return resolutions;
+}
+
+QVector<int>
+SettingsAdaptor::getFrameRates(const QString &device)
+{
+ QVector<int> rates;
+
+ auto currentSettings = LRCInstance::avModel().getDeviceSettings(device);
+
+ auto currentChannel = currentSettings.channel.isEmpty() ? "default" : currentSettings.channel;
+ auto channelCaps = get_ResRateList(currentChannel, device);
+ for (auto [resolution, frameRateList] : channelCaps) {
+ for (auto rate : frameRateList) {
+ rates.append((int) rate);
+ }
+ }
+
+ return rates;
+}
+
+lrc::api::video::Capabilities
+SettingsAdaptor::get_DeviceCapabilities(const QString &device)
+{
+ return LRCInstance::avModel().getDeviceCapabilities(device);
+}
+
+QString
+SettingsAdaptor::get_Video_Settings_Channel(const QString &deviceId)
+{
+ auto settings = LRCInstance::avModel().getDeviceSettings(deviceId);
+
+ return (QString) settings.channel;
+}
+
+QString
+SettingsAdaptor::get_Video_Settings_Name(const QString &deviceId)
+{
+ auto settings = LRCInstance::avModel().getDeviceSettings(deviceId);
+
+ return (QString) settings.name;
+}
+
+QString
+SettingsAdaptor::get_Video_Settings_Id(const QString &deviceId)
+{
+ auto settings = LRCInstance::avModel().getDeviceSettings(deviceId);
+
+ return (QString) settings.id;
+}
+
+qreal
+SettingsAdaptor::get_Video_Settings_Rate(const QString &deviceId)
+{
+ auto settings = LRCInstance::avModel().getDeviceSettings(deviceId);
+
+ return (qreal) settings.rate;
+}
+
+QString
+SettingsAdaptor::get_Video_Settings_Size(const QString &deviceId)
+{
+ auto settings = LRCInstance::avModel().getDeviceSettings(deviceId);
+
+ return (QString) settings.size;
+}
+
+void
+SettingsAdaptor::set_Video_Settings_Rate_And_Resolution(const QString &deviceId,
+ qreal rate,
+ const QString &resolution)
+{
+ auto settings = LRCInstance::avModel().getDeviceSettings(deviceId);
+ settings.rate = rate;
+ settings.size = resolution;
+ LRCInstance::avModel().setDeviceSettings(settings);
+}
+
+const lrc::api::account::Info &
+SettingsAdaptor::getCurrentAccountInfo()
+{
+ return LRCInstance::getCurrentAccountInfo();
+}
+
+const Q_INVOKABLE lrc::api::profile::Info &
+SettingsAdaptor::getCurrentAccount_Profile_Info()
+{
+ return LRCInstance::getCurrentAccountInfo().profileInfo;
+}
+
+lrc::api::ContactModel *
+SettingsAdaptor::getContactModel()
+{
+ return getCurrentAccountInfo().contactModel.get();
+}
+
+lrc::api::NewDeviceModel *
+SettingsAdaptor::getDeviceModel()
+{
+ return getCurrentAccountInfo().deviceModel.get();
+}
+
+QString
+SettingsAdaptor::get_CurrentAccountInfo_RegisteredName()
+{
+ return LRCInstance::getCurrentAccountInfo().registeredName;
+}
+
+QString
+SettingsAdaptor::get_CurrentAccountInfo_Id()
+{
+ return LRCInstance::getCurrentAccountInfo().id;
+}
+
+bool
+SettingsAdaptor::get_CurrentAccountInfo_Enabled()
+{
+ return LRCInstance::getCurrentAccountInfo().enabled;
+}
+
+QString
+SettingsAdaptor::getCurrentAccount_Profile_Info_Uri()
+{
+ return getCurrentAccount_Profile_Info().uri;
+}
+
+QString
+SettingsAdaptor::getCurrentAccount_Profile_Info_Alias()
+{
+ return getCurrentAccount_Profile_Info().alias;
+}
+
+int
+SettingsAdaptor::getCurrentAccount_Profile_Info_Type()
+{
+ return (int) (getCurrentAccount_Profile_Info().type);
+}
+
+QString
+SettingsAdaptor::getAccountBestName()
+{
+ return Utils::bestNameForAccount(LRCInstance::getCurrentAccountInfo());
+}
+
+QString
+SettingsAdaptor::getAvatarImage_Base64(int avatarSize)
+{
+ auto &accountInfo = LRCInstance::getCurrentAccountInfo();
+ auto avatar = Utils::accountPhoto(accountInfo, {avatarSize, avatarSize});
+
+ return QString::fromLatin1(Utils::QImageToByteArray(avatar).toBase64().data());
+}
+
+bool
+SettingsAdaptor::getIsDefaultAvatar()
+{
+ auto &accountInfo = LRCInstance::getCurrentAccountInfo();
+
+ return accountInfo.profileInfo.avatar.isEmpty();
+}
+
+bool
+SettingsAdaptor::setCurrAccAvatar(QString avatarImgBase64)
+{
+ QImage avatarImg;
+ const bool ret = avatarImg.loadFromData(QByteArray::fromBase64(avatarImgBase64.toLatin1()));
+ if (!ret) {
+ qDebug() << "Current avatar loading from base64 fail";
+ return false;
+ } else {
+ LRCInstance::setCurrAccAvatar(QPixmap::fromImage(avatarImg));
+ }
+ return true;
+}
+
+void
+SettingsAdaptor::clearCurrentAvatar()
+{
+ LRCInstance::setCurrAccAvatar(QPixmap());
+}
+
+lrc::api::account::ConfProperties_t
+SettingsAdaptor::getAccountConfig()
+{
+ return LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId());
+}
+
+QString
+SettingsAdaptor::getAccountConfig_Manageruri()
+{
+ return getAccountConfig().managerUri;
+}
+
+QString
+SettingsAdaptor::getAccountConfig_Username()
+{
+ return getAccountConfig().username;
+}
+
+QString
+SettingsAdaptor::getAccountConfig_Hostname()
+{
+ return getAccountConfig().hostname;
+}
+
+QString
+SettingsAdaptor::getAccountConfig_Password()
+{
+ return getAccountConfig().password;
+}
+
+QString
+SettingsAdaptor::getAccountConfig_ProxyServer()
+{
+ return getAccountConfig().proxyServer;
+}
+
+bool
+SettingsAdaptor::getAccountConfig_PeerDiscovery()
+{
+ return getAccountConfig().peerDiscovery;
+}
+
+bool
+SettingsAdaptor::getAccountConfig_DHT_PublicInCalls()
+{
+ return getAccountConfig().DHT.PublicInCalls;
+}
+
+bool
+SettingsAdaptor::getAccountConfig_AutoAnswer()
+{
+ return getAccountConfig().autoAnswer;
+}
+
+QString
+SettingsAdaptor::getAccountConfig_RingNS_Uri()
+{
+ return getAccountConfig().RingNS.uri;
+}
+
+bool
+SettingsAdaptor::getAccountConfig_ProxyEnabled()
+{
+ return getAccountConfig().proxyEnabled;
+}
+
+QString
+SettingsAdaptor::getAccountConfig_TLS_CertificateListFile()
+{
+ return getAccountConfig().TLS.certificateListFile;
+}
+
+QString
+SettingsAdaptor::getAccountConfig_TLS_CertificateFile()
+{
+ return getAccountConfig().TLS.certificateFile;
+}
+
+QString
+SettingsAdaptor::getAccountConfig_TLS_PrivateKeyFile()
+{
+ return getAccountConfig().TLS.privateKeyFile;
+}
+
+bool
+SettingsAdaptor::getAccountConfig_TLS_Enable()
+{
+ return getAccountConfig().TLS.enable;
+}
+
+QString
+SettingsAdaptor::getAccountConfig_TLS_Password()
+{
+ return getAccountConfig().TLS.password;
+}
+
+bool
+SettingsAdaptor::getAccountConfig_TLS_VerifyServer()
+{
+ return getAccountConfig().TLS.verifyServer;
+}
+
+bool
+SettingsAdaptor::getAccountConfig_TLS_VerifyClient()
+{
+ return getAccountConfig().TLS.verifyClient;
+}
+
+bool
+SettingsAdaptor::getAccountConfig_TLS_RequireClientCertificate()
+{
+ return getAccountConfig().TLS.requireClientCertificate;
+}
+
+int
+SettingsAdaptor::getAccountConfig_TLS_Method_inInt()
+{
+ return (int) getAccountConfig().TLS.method;
+}
+
+QString
+SettingsAdaptor::getAccountConfig_TLS_Servername()
+{
+ return getAccountConfig().TLS.serverName;
+}
+
+int
+SettingsAdaptor::getAccountConfig_TLS_NegotiationTimeoutSec()
+{
+ return getAccountConfig().TLS.negotiationTimeoutSec;
+}
+
+bool
+SettingsAdaptor::getAccountConfig_SRTP_Enabled()
+{
+ return getAccountConfig().SRTP.enable;
+}
+
+int
+SettingsAdaptor::getAccountConfig_SRTP_KeyExchange()
+{
+ return (int) getAccountConfig().SRTP.keyExchange;
+}
+
+bool
+SettingsAdaptor::getAccountConfig_SRTP_RtpFallback()
+{
+ return getAccountConfig().SRTP.rtpFallback;
+}
+
+bool
+SettingsAdaptor::getAccountConfig_UpnpEnabled()
+{
+ return getAccountConfig().upnpEnabled;
+}
+
+bool
+SettingsAdaptor::getAccountConfig_TURN_Enabled()
+{
+ return getAccountConfig().TURN.enable;
+}
+
+QString
+SettingsAdaptor::getAccountConfig_TURN_Server()
+{
+ return getAccountConfig().TURN.server;
+}
+
+QString
+SettingsAdaptor::getAccountConfig_TURN_Username()
+{
+ return getAccountConfig().TURN.username;
+}
+
+QString
+SettingsAdaptor::getAccountConfig_TURN_Password()
+{
+ return getAccountConfig().TURN.password;
+}
+
+QString
+SettingsAdaptor::getAccountConfig_TURN_Realm()
+{
+ return getAccountConfig().TURN.realm;
+}
+
+bool
+SettingsAdaptor::getAccountConfig_STUN_Enabled()
+{
+ return getAccountConfig().STUN.enable;
+}
+
+QString
+SettingsAdaptor::getAccountConfig_STUN_Server()
+{
+ return getAccountConfig().STUN.server;
+}
+
+bool
+SettingsAdaptor::getAccountConfig_Video_Enabled()
+{
+ return getAccountConfig().Video.videoEnabled;
+}
+
+int
+SettingsAdaptor::getAccountConfig_Video_VideoPortMin()
+{
+ return getAccountConfig().Video.videoPortMin;
+}
+
+int
+SettingsAdaptor::getAccountConfig_Video_VideoPortMax()
+{
+ return getAccountConfig().Video.videoPortMax;
+}
+
+int
+SettingsAdaptor::getAccountConfig_Audio_AudioPortMin()
+{
+ return getAccountConfig().Audio.audioPortMin;
+}
+
+int
+SettingsAdaptor::getAccountConfig_Audio_AudioPortMax()
+{
+ return getAccountConfig().Audio.audioPortMax;
+}
+
+bool
+SettingsAdaptor::getAccountConfig_Ringtone_RingtoneEnabled()
+{
+ return getAccountConfig().Ringtone.ringtoneEnabled;
+}
+
+QString
+SettingsAdaptor::getAccountConfig_Ringtone_RingtonePath()
+{
+ return getAccountConfig().Ringtone.ringtonePath;
+}
+
+int
+SettingsAdaptor::getAccountConfig_Registration_Expire()
+{
+ return getAccountConfig().Registration.expire;
+}
+
+int
+SettingsAdaptor::getAccountConfig_Localport()
+{
+ return getAccountConfig().localPort;
+}
+
+bool
+SettingsAdaptor::getAccountConfig_PublishedSameAsLocal()
+{
+ return getAccountConfig().publishedSameAsLocal;
+}
+
+QString
+SettingsAdaptor::getAccountConfig_PublishedAddress()
+{
+ return getAccountConfig().publishedAddress;
+}
+
+int
+SettingsAdaptor::getAccountConfig_PublishedPort()
+{
+ return getAccountConfig().publishedPort;
+}
+
+QString
+SettingsAdaptor::getAccountConfig_Mailbox()
+{
+ return getAccountConfig().mailbox;
+}
+
+void
+SettingsAdaptor::setAccountConfig_Username(QString input)
+{
+ auto confProps = getAccountConfig();
+ confProps.username = input;
+ LRCInstance::accountModel().setAccountConfig(LRCInstance::getCurrAccId(), confProps);
+}
+
+void
+SettingsAdaptor::setAccountConfig_Hostname(QString input)
+{
+ auto confProps = getAccountConfig();
+ confProps.hostname = input;
+ LRCInstance::accountModel().setAccountConfig(LRCInstance::getCurrAccId(), confProps);
+}
+
+void
+SettingsAdaptor::setAccountConfig_Password(QString input)
+{
+ auto confProps = getAccountConfig();
+ confProps.password = input;
+ LRCInstance::accountModel().setAccountConfig(LRCInstance::getCurrAccId(), confProps);
+}
+
+void
+SettingsAdaptor::setAccountConfig_ProxyServer(QString input)
+{
+ auto confProps = getAccountConfig();
+ confProps.proxyServer = input;
+ LRCInstance::accountModel().setAccountConfig(LRCInstance::getCurrAccId(), confProps);
+}
+
+void
+SettingsAdaptor::setAutoConnectOnLocalNetwork(bool state)
+{
+ auto confProps = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId());
+ confProps.peerDiscovery = state;
+ LRCInstance::accountModel().setAccountConfig(LRCInstance::getCurrAccId(), confProps);
+}
+
+void
+SettingsAdaptor::setCallsUntrusted(bool state)
+{
+ auto confProps = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId());
+ confProps.DHT.PublicInCalls = state;
+ LRCInstance::accountModel().setAccountConfig(LRCInstance::getCurrAccId(), confProps);
+}
+
+void
+SettingsAdaptor::setAutoAnswerCalls(bool state)
+{
+ auto confProps = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId());
+ confProps.autoAnswer = state;
+ LRCInstance::accountModel().setAccountConfig(LRCInstance::getCurrAccId(), confProps);
+}
+
+void
+SettingsAdaptor::setEnableRingtone(bool state)
+{
+ auto confProps = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId());
+ confProps.Ringtone.ringtoneEnabled = state;
+ LRCInstance::accountModel().setAccountConfig(LRCInstance::getCurrAccId(), confProps);
+}
+
+void
+SettingsAdaptor::setEnableProxy(bool state)
+{
+ auto confProps = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId());
+ confProps.proxyEnabled = state;
+ LRCInstance::accountModel().setAccountConfig(LRCInstance::getCurrAccId(), confProps);
+}
+
+void
+SettingsAdaptor::setUseUPnP(bool state)
+{
+ auto confProps = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId());
+ confProps.upnpEnabled = state;
+ LRCInstance::accountModel().setAccountConfig(LRCInstance::getCurrAccId(), confProps);
+}
+
+void
+SettingsAdaptor::setUseTURN(bool state)
+{
+ auto confProps = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId());
+ confProps.TURN.enable = state;
+ LRCInstance::accountModel().setAccountConfig(LRCInstance::getCurrAccId(), confProps);
+}
+
+void
+SettingsAdaptor::setUseSTUN(bool state)
+{
+ auto confProps = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId());
+ confProps.STUN.enable = state;
+ LRCInstance::accountModel().setAccountConfig(LRCInstance::getCurrAccId(), confProps);
+}
+
+void
+SettingsAdaptor::setVideoState(bool state)
+{
+ auto confProps = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId());
+ confProps.Video.videoEnabled = state;
+ LRCInstance::accountModel().setAccountConfig(LRCInstance::getCurrAccId(), confProps);
+}
+
+void
+SettingsAdaptor::setUseSRTP(bool state)
+{
+ auto confProps = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId());
+ confProps.SRTP.enable = state;
+ LRCInstance::accountModel().setAccountConfig(LRCInstance::getCurrAccId(), confProps);
+}
+
+void
+SettingsAdaptor::setUseSDES(bool state)
+{
+ auto confProps = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId());
+ confProps.SRTP.keyExchange = state ? lrc::api::account::KeyExchangeProtocol::SDES
+ : lrc::api::account::KeyExchangeProtocol::NONE;
+ LRCInstance::accountModel().setAccountConfig(LRCInstance::getCurrAccId(), confProps);
+}
+
+void
+SettingsAdaptor::setUseRTPFallback(bool state)
+{
+ auto confProps = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId());
+ confProps.SRTP.rtpFallback = state;
+ LRCInstance::accountModel().setAccountConfig(LRCInstance::getCurrAccId(), confProps);
+}
+
+void
+SettingsAdaptor::setUseTLS(bool state)
+{
+ auto confProps = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId());
+ confProps.TLS.enable = state;
+ LRCInstance::accountModel().setAccountConfig(LRCInstance::getCurrAccId(), confProps);
+}
+
+void
+SettingsAdaptor::setVerifyCertificatesServer(bool state)
+{
+ auto confProps = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId());
+ confProps.TLS.verifyServer = state;
+ LRCInstance::accountModel().setAccountConfig(LRCInstance::getCurrAccId(), confProps);
+}
+
+void
+SettingsAdaptor::setVerifyCertificatesClient(bool state)
+{
+ auto confProps = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId());
+ confProps.TLS.verifyClient = state;
+ LRCInstance::accountModel().setAccountConfig(LRCInstance::getCurrAccId(), confProps);
+}
+
+void
+SettingsAdaptor::setRequireCertificatesIncomingTLS(bool state)
+{
+ auto confProps = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId());
+ confProps.TLS.requireClientCertificate = state;
+ LRCInstance::accountModel().setAccountConfig(LRCInstance::getCurrAccId(), confProps);
+}
+
+void
+SettingsAdaptor::setUseCustomAddressAndPort(bool state)
+{
+ auto confProps = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId());
+ confProps.publishedSameAsLocal = state;
+ LRCInstance::accountModel().setAccountConfig(LRCInstance::getCurrAccId(), confProps);
+}
+
+void
+SettingsAdaptor::setNameServer(QString text)
+{
+ auto confProps = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId());
+ confProps.RingNS.uri = text;
+ LRCInstance::accountModel().setAccountConfig(LRCInstance::getCurrAccId(), confProps);
+}
+
+void
+SettingsAdaptor::setProxyAddress(QString text)
+{
+ auto confProps = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId());
+ confProps.proxyServer = text;
+ LRCInstance::accountModel().setAccountConfig(LRCInstance::getCurrAccId(), confProps);
+}
+
+void
+SettingsAdaptor::setBootstrapAddress(QString text)
+{
+ auto confProps = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId());
+ confProps.hostname = text;
+ LRCInstance::accountModel().setAccountConfig(LRCInstance::getCurrAccId(), confProps);
+}
+
+void
+SettingsAdaptor::setTURNAddress(QString text)
+{
+ auto confProps = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId());
+ confProps.TURN.server = text;
+ LRCInstance::accountModel().setAccountConfig(LRCInstance::getCurrAccId(), confProps);
+}
+
+void
+SettingsAdaptor::setTURNUsername(QString text)
+{
+ auto confProps = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId());
+ confProps.TURN.username = text;
+ LRCInstance::accountModel().setAccountConfig(LRCInstance::getCurrAccId(), confProps);
+}
+
+void
+SettingsAdaptor::setTURNPassword(QString text)
+{
+ auto confProps = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId());
+ confProps.TURN.password = text;
+ LRCInstance::accountModel().setAccountConfig(LRCInstance::getCurrAccId(), confProps);
+}
+
+void
+SettingsAdaptor::setTURNRealm(QString text)
+{
+ auto confProps = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId());
+ confProps.TURN.realm = text;
+ LRCInstance::accountModel().setAccountConfig(LRCInstance::getCurrAccId(), confProps);
+}
+
+void
+SettingsAdaptor::setSTUNAddress(QString text)
+{
+ auto confProps = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId());
+ confProps.STUN.server = text;
+ LRCInstance::accountModel().setAccountConfig(LRCInstance::getCurrAccId(), confProps);
+}
+
+void
+SettingsAdaptor::lineEditVoiceMailDialCodeEditFinished(QString text)
+{
+ auto confProps = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId());
+ confProps.mailbox = text;
+ LRCInstance::accountModel().setAccountConfig(LRCInstance::getCurrAccId(), confProps);
+}
+
+void
+SettingsAdaptor::outgoingTLSServerNameLineEditTextChanged(QString text)
+{
+ auto confProps = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId());
+ confProps.TLS.serverName = text;
+ LRCInstance::accountModel().setAccountConfig(LRCInstance::getCurrAccId(), confProps);
+}
+
+void
+SettingsAdaptor::lineEditSIPCertPasswordLineEditTextChanged(QString text)
+{
+ auto confProps = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId());
+ confProps.TLS.password = text;
+ LRCInstance::accountModel().setAccountConfig(LRCInstance::getCurrAccId(), confProps);
+}
+
+void
+SettingsAdaptor::lineEditSIPCustomAddressLineEditTextChanged(QString text)
+{
+ auto confProps = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId());
+ confProps.publishedAddress = text;
+ LRCInstance::accountModel().setAccountConfig(LRCInstance::getCurrAccId(), confProps);
+}
+
+void
+SettingsAdaptor::customPortSIPSpinBoxValueChanged(int value)
+{
+ auto confProps = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId());
+ confProps.publishedPort = value;
+ LRCInstance::accountModel().setAccountConfig(LRCInstance::getCurrAccId(), confProps);
+}
+
+void
+SettingsAdaptor::negotiationTimeoutSpinBoxValueChanged(int value)
+{
+ auto confProps = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId());
+ confProps.TLS.negotiationTimeoutSec = value;
+ LRCInstance::accountModel().setAccountConfig(LRCInstance::getCurrAccId(), confProps);
+}
+
+void
+SettingsAdaptor::registrationTimeoutSpinBoxValueChanged(int value)
+{
+ auto confProps = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId());
+ confProps.Registration.expire = value;
+ LRCInstance::accountModel().setAccountConfig(LRCInstance::getCurrAccId(), confProps);
+}
+
+void
+SettingsAdaptor::networkInterfaceSpinBoxValueChanged(int value)
+{
+ auto confProps = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId());
+ confProps.localPort = value;
+ LRCInstance::accountModel().setAccountConfig(LRCInstance::getCurrAccId(), confProps);
+}
+
+void
+SettingsAdaptor::audioRTPMinPortSpinBoxEditFinished(int value)
+{
+ auto confProps = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId());
+ confProps.Audio.audioPortMin = value;
+ LRCInstance::accountModel().setAccountConfig(LRCInstance::getCurrAccId(), confProps);
+}
+
+void
+SettingsAdaptor::audioRTPMaxPortSpinBoxEditFinished(int value)
+{
+ auto confProps = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId());
+ confProps.Audio.audioPortMax = value;
+ LRCInstance::accountModel().setAccountConfig(LRCInstance::getCurrAccId(), confProps);
+}
+
+void
+SettingsAdaptor::videoRTPMinPortSpinBoxEditFinished(int value)
+{
+ auto confProps = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId());
+ confProps.Video.videoPortMin = value;
+ LRCInstance::accountModel().setAccountConfig(LRCInstance::getCurrAccId(), confProps);
+}
+
+void
+SettingsAdaptor::videoRTPMaxPortSpinBoxEditFinished(int value)
+{
+ auto confProps = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId());
+ confProps.Video.videoPortMax = value;
+ LRCInstance::accountModel().setAccountConfig(LRCInstance::getCurrAccId(), confProps);
+}
+
+void
+SettingsAdaptor::tlsProtocolComboBoxIndexChanged(const int &index)
+{
+ auto confProps = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId());
+
+ if (static_cast<int>(confProps.TLS.method) != index) {
+ if (index == 0) {
+ confProps.TLS.method = lrc::api::account::TlsMethod::DEFAULT;
+ } else if (index == 1) {
+ confProps.TLS.method = lrc::api::account::TlsMethod::TLSv1;
+ } else if (index == 2) {
+ confProps.TLS.method = lrc::api::account::TlsMethod::TLSv1_1;
+ } else {
+ confProps.TLS.method = lrc::api::account::TlsMethod::TLSv1_2;
+ }
+ LRCInstance::accountModel().setAccountConfig(LRCInstance::getCurrAccId(), confProps);
+ }
+}
+
+void
+SettingsAdaptor::setDeviceName(QString text)
+{
+ auto confProps = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId());
+ confProps.deviceName = text;
+ LRCInstance::accountModel().setAccountConfig(LRCInstance::getCurrAccId(), confProps);
+}
+
+void
+SettingsAdaptor::unbanContact(int index)
+{
+ auto bannedContactList = LRCInstance::getCurrentAccountInfo().contactModel->getBannedContacts();
+ auto it = bannedContactList.begin();
+ std::advance(it, index);
+
+ auto contactInfo = LRCInstance::getCurrentAccountInfo().contactModel->getContact(*it);
+
+ LRCInstance::getCurrentAccountInfo().contactModel->addContact(contactInfo);
+}
+
+void
+SettingsAdaptor::audioCodecsStateChange(unsigned int id, bool isToEnable)
+{
+ auto audioCodecList = LRCInstance::getCurrentAccountInfo().codecModel->getAudioCodecs();
+ LRCInstance::getCurrentAccountInfo().codecModel->enable(id, isToEnable);
+}
+
+void
+SettingsAdaptor::videoCodecsStateChange(unsigned int id, bool isToEnable)
+{
+ auto videoCodecList = LRCInstance::getCurrentAccountInfo().codecModel->getVideoCodecs();
+ LRCInstance::getCurrentAccountInfo().codecModel->enable(id, isToEnable);
+}
+
+void
+SettingsAdaptor::decreaseAudioCodecPriority(unsigned int id)
+{
+ LRCInstance::getCurrentAccountInfo().codecModel->decreasePriority(id, false);
+}
+
+void
+SettingsAdaptor::increaseAudioCodecPriority(unsigned int id)
+{
+ LRCInstance::getCurrentAccountInfo().codecModel->increasePriority(id, false);
+}
+
+void
+SettingsAdaptor::decreaseVideoCodecPriority(unsigned int id)
+{
+ LRCInstance::getCurrentAccountInfo().codecModel->decreasePriority(id, true);
+}
+
+void
+SettingsAdaptor::increaseVideoCodecPriority(unsigned int id)
+{
+ LRCInstance::getCurrentAccountInfo().codecModel->increasePriority(id, true);
+}
+
+void
+SettingsAdaptor::set_RingtonePath(QString text)
+{
+ auto confProps = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId());
+ confProps.Ringtone.ringtonePath = text;
+ LRCInstance::accountModel().setAccountConfig(LRCInstance::getCurrAccId(), confProps);
+}
+
+void
+SettingsAdaptor::set_FileCACert(QString text)
+{
+ auto confProps = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId());
+ confProps.TLS.certificateListFile = text;
+ LRCInstance::accountModel().setAccountConfig(LRCInstance::getCurrAccId(), confProps);
+}
+
+void
+SettingsAdaptor::set_FileUserCert(QString text)
+{
+ auto confProps = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId());
+ confProps.TLS.certificateFile = text;
+ LRCInstance::accountModel().setAccountConfig(LRCInstance::getCurrAccId(), confProps);
+}
+
+void
+SettingsAdaptor::set_FilePrivateKey(QString text)
+{
+ auto confProps = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId());
+ confProps.TLS.privateKeyFile = text;
+ LRCInstance::accountModel().setAccountConfig(LRCInstance::getCurrAccId(), confProps);
+}
diff --git a/src/settingsadaptor.h b/src/settingsadaptor.h
new file mode 100644
index 0000000..eec7784
--- /dev/null
+++ b/src/settingsadaptor.h
@@ -0,0 +1,241 @@
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include <QObject>
+#include <QSettings>
+
+#include "api/account.h"
+#include "api/datatransfermodel.h"
+#include "lrcinstance.h"
+#include "typedefs.h"
+#include "utils.h"
+
+class SettingsAdaptor : public QObject
+{
+ Q_OBJECT
+public:
+ explicit SettingsAdaptor(QObject *parent = nullptr);
+
+ //Singleton
+ static SettingsAdaptor &instance();
+ /*
+ * getters of directories
+ */
+ Q_INVOKABLE QString getDir_Document();
+ Q_INVOKABLE QString getDir_Download();
+
+ /*
+ * getters and setters of app settings options
+ */
+ Q_INVOKABLE bool getSettingsValue_CloseOrMinimized();
+ Q_INVOKABLE bool getSettingsValue_EnableNotifications();
+ Q_INVOKABLE bool getSettingsValue_AutoUpdate();
+
+ Q_INVOKABLE void setClosedOrMin(bool state);
+ Q_INVOKABLE void setNotifications(bool state);
+ Q_INVOKABLE void setUpdateAutomatic(bool state);
+ Q_INVOKABLE void setRunOnStartUp(bool state);
+ Q_INVOKABLE void setDownloadPath(QString dir);
+
+ /*
+ * getters of devices' Info and options
+ */
+ Q_INVOKABLE lrc::api::video::Capabilities get_DeviceCapabilities(const QString &device);
+ Q_INVOKABLE lrc::api::video::ResRateList get_ResRateList(lrc::api::video::Channel channel,
+ QString device);
+ Q_INVOKABLE int get_DeviceCapabilitiesSize(const QString &device);
+
+ /*
+ * getters of resolution and frame rates of current device
+ */
+ Q_INVOKABLE QVector<QString> getResolutions(const QString &device);
+ Q_INVOKABLE QVector<int> getFrameRates(const QString &device);
+
+ /*
+ * getters and setters: lrc video::setting
+ */
+ Q_INVOKABLE QString get_Video_Settings_Channel(const QString &deviceId);
+ Q_INVOKABLE QString get_Video_Settings_Name(const QString &deviceId);
+ Q_INVOKABLE QString get_Video_Settings_Id(const QString &deviceId);
+ Q_INVOKABLE qreal get_Video_Settings_Rate(const QString &deviceId);
+ Q_INVOKABLE QString get_Video_Settings_Size(const QString &deviceId);
+
+ Q_INVOKABLE void set_Video_Settings_Rate_And_Resolution(const QString &deviceId,
+ qreal rate,
+ const QString &resolution);
+
+ /*
+ * getters and setters of current account Info
+ */
+ const Q_INVOKABLE lrc::api::account::Info &getCurrentAccountInfo();
+ const Q_INVOKABLE lrc::api::profile::Info &getCurrentAccount_Profile_Info();
+
+ Q_INVOKABLE lrc::api::ContactModel *getContactModel();
+ Q_INVOKABLE lrc::api::NewDeviceModel *getDeviceModel();
+
+ Q_INVOKABLE QString get_CurrentAccountInfo_RegisteredName();
+ Q_INVOKABLE QString get_CurrentAccountInfo_Id();
+ Q_INVOKABLE bool get_CurrentAccountInfo_Enabled();
+
+ // profile info
+ Q_INVOKABLE QString getCurrentAccount_Profile_Info_Uri();
+ Q_INVOKABLE QString getCurrentAccount_Profile_Info_Alias();
+ Q_INVOKABLE int getCurrentAccount_Profile_Info_Type();
+ Q_INVOKABLE QString getAccountBestName();
+
+ // getters and setters of avatar image
+ Q_INVOKABLE QString getAvatarImage_Base64(int avatarSize);
+ Q_INVOKABLE bool getIsDefaultAvatar();
+ Q_INVOKABLE bool setCurrAccAvatar(QString avatarImgBase64);
+ Q_INVOKABLE void clearCurrentAvatar();
+
+ /*
+ * getters and setters of ConfProperties_t
+ */
+ // getters
+ Q_INVOKABLE lrc::api::account::ConfProperties_t getAccountConfig();
+ Q_INVOKABLE QString getAccountConfig_Manageruri();
+ Q_INVOKABLE QString getAccountConfig_Username();
+ Q_INVOKABLE QString getAccountConfig_Hostname();
+ Q_INVOKABLE QString getAccountConfig_Password();
+
+ Q_INVOKABLE QString getAccountConfig_ProxyServer();
+ Q_INVOKABLE bool getAccountConfig_ProxyEnabled();
+
+ Q_INVOKABLE bool getAccountConfig_PeerDiscovery();
+ Q_INVOKABLE bool getAccountConfig_DHT_PublicInCalls();
+ Q_INVOKABLE bool getAccountConfig_AutoAnswer();
+
+ Q_INVOKABLE QString getAccountConfig_RingNS_Uri();
+
+ Q_INVOKABLE QString getAccountConfig_TLS_CertificateListFile();
+ Q_INVOKABLE QString getAccountConfig_TLS_CertificateFile();
+ Q_INVOKABLE QString getAccountConfig_TLS_PrivateKeyFile();
+ Q_INVOKABLE bool getAccountConfig_TLS_Enable();
+ Q_INVOKABLE QString getAccountConfig_TLS_Password();
+ Q_INVOKABLE bool getAccountConfig_TLS_VerifyServer();
+ Q_INVOKABLE bool getAccountConfig_TLS_VerifyClient();
+ Q_INVOKABLE bool getAccountConfig_TLS_RequireClientCertificate();
+ Q_INVOKABLE int getAccountConfig_TLS_Method_inInt();
+ Q_INVOKABLE QString getAccountConfig_TLS_Servername();
+ Q_INVOKABLE int getAccountConfig_TLS_NegotiationTimeoutSec();
+
+ Q_INVOKABLE bool getAccountConfig_SRTP_Enabled();
+ Q_INVOKABLE int getAccountConfig_SRTP_KeyExchange();
+ Q_INVOKABLE bool getAccountConfig_SRTP_RtpFallback();
+
+ Q_INVOKABLE bool getAccountConfig_UpnpEnabled();
+ Q_INVOKABLE bool getAccountConfig_TURN_Enabled();
+ Q_INVOKABLE QString getAccountConfig_TURN_Server();
+ Q_INVOKABLE QString getAccountConfig_TURN_Username();
+ Q_INVOKABLE QString getAccountConfig_TURN_Password();
+ Q_INVOKABLE QString getAccountConfig_TURN_Realm();
+
+ Q_INVOKABLE bool getAccountConfig_STUN_Enabled();
+ Q_INVOKABLE QString getAccountConfig_STUN_Server();
+
+ Q_INVOKABLE bool getAccountConfig_Video_Enabled();
+ Q_INVOKABLE int getAccountConfig_Video_VideoPortMin();
+ Q_INVOKABLE int getAccountConfig_Video_VideoPortMax();
+
+ Q_INVOKABLE int getAccountConfig_Audio_AudioPortMin();
+ Q_INVOKABLE int getAccountConfig_Audio_AudioPortMax();
+
+ Q_INVOKABLE bool getAccountConfig_Ringtone_RingtoneEnabled();
+ Q_INVOKABLE QString getAccountConfig_Ringtone_RingtonePath();
+
+ Q_INVOKABLE int getAccountConfig_Registration_Expire();
+ Q_INVOKABLE int getAccountConfig_Localport();
+ Q_INVOKABLE bool getAccountConfig_PublishedSameAsLocal();
+ Q_INVOKABLE QString getAccountConfig_PublishedAddress();
+ Q_INVOKABLE int getAccountConfig_PublishedPort();
+
+ Q_INVOKABLE QString getAccountConfig_Mailbox();
+
+ // setters
+ Q_INVOKABLE void setAccountConfig_Username(QString input);
+ Q_INVOKABLE void setAccountConfig_Hostname(QString input);
+ Q_INVOKABLE void setAccountConfig_Password(QString input);
+ Q_INVOKABLE void setAccountConfig_ProxyServer(QString input);
+
+ Q_INVOKABLE void setAutoConnectOnLocalNetwork(bool state);
+ Q_INVOKABLE void setCallsUntrusted(bool state);
+ Q_INVOKABLE void setAutoAnswerCalls(bool state);
+ Q_INVOKABLE void setEnableRingtone(bool state);
+ Q_INVOKABLE void setEnableProxy(bool state);
+ Q_INVOKABLE void setUseUPnP(bool state);
+ Q_INVOKABLE void setUseTURN(bool state);
+ Q_INVOKABLE void setUseSTUN(bool state);
+ Q_INVOKABLE void setVideoState(bool state);
+ Q_INVOKABLE void setUseSRTP(bool state);
+ Q_INVOKABLE void setUseSDES(bool state);
+ Q_INVOKABLE void setUseRTPFallback(bool state);
+ Q_INVOKABLE void setUseTLS(bool state);
+ Q_INVOKABLE void setVerifyCertificatesServer(bool state);
+ Q_INVOKABLE void setVerifyCertificatesClient(bool state);
+ Q_INVOKABLE void setRequireCertificatesIncomingTLS(bool state);
+ Q_INVOKABLE void setUseCustomAddressAndPort(bool state);
+
+ Q_INVOKABLE void setNameServer(QString text);
+ Q_INVOKABLE void setProxyAddress(QString text);
+ Q_INVOKABLE void setBootstrapAddress(QString text);
+ Q_INVOKABLE void setTURNAddress(QString text);
+ Q_INVOKABLE void setTURNUsername(QString text);
+ Q_INVOKABLE void setTURNPassword(QString text);
+ Q_INVOKABLE void setTURNRealm(QString text);
+ Q_INVOKABLE void setSTUNAddress(QString text);
+
+ Q_INVOKABLE void lineEditVoiceMailDialCodeEditFinished(QString text);
+ Q_INVOKABLE void outgoingTLSServerNameLineEditTextChanged(QString text);
+ Q_INVOKABLE void lineEditSIPCertPasswordLineEditTextChanged(QString text);
+ Q_INVOKABLE void lineEditSIPCustomAddressLineEditTextChanged(QString text);
+
+ Q_INVOKABLE void customPortSIPSpinBoxValueChanged(int value);
+ Q_INVOKABLE void negotiationTimeoutSpinBoxValueChanged(int value);
+ Q_INVOKABLE void registrationTimeoutSpinBoxValueChanged(int value);
+ Q_INVOKABLE void networkInterfaceSpinBoxValueChanged(int value);
+ Q_INVOKABLE void audioRTPMinPortSpinBoxEditFinished(int value);
+ Q_INVOKABLE void audioRTPMaxPortSpinBoxEditFinished(int value);
+ Q_INVOKABLE void videoRTPMinPortSpinBoxEditFinished(int value);
+ Q_INVOKABLE void videoRTPMaxPortSpinBoxEditFinished(int value);
+
+ Q_INVOKABLE void tlsProtocolComboBoxIndexChanged(const int &index);
+
+ Q_INVOKABLE void setDeviceName(QString text);
+
+ Q_INVOKABLE void unbanContact(int index);
+
+ Q_INVOKABLE void audioCodecsStateChange(unsigned int id, bool isToEnable);
+ Q_INVOKABLE void videoCodecsStateChange(unsigned int id, bool isToEnable);
+
+ Q_INVOKABLE void decreaseAudioCodecPriority(unsigned int id);
+ Q_INVOKABLE void increaseAudioCodecPriority(unsigned int id);
+
+ Q_INVOKABLE void decreaseVideoCodecPriority(unsigned int id);
+ Q_INVOKABLE void increaseVideoCodecPriority(unsigned int id);
+
+ Q_INVOKABLE void set_RingtonePath(QString text);
+ Q_INVOKABLE void set_FileCACert(QString text);
+ Q_INVOKABLE void set_FileUserCert(QString text);
+ Q_INVOKABLE void set_FilePrivateKey(QString text);
+};
+#if QT_VERSION >= QT_VERSION_CHECK(5, 8, 0)
+Q_DECLARE_METATYPE(SettingsAdaptor *)
+#endif
diff --git a/src/settingskey.h b/src/settingskey.h
new file mode 100644
index 0000000..6c82598
--- /dev/null
+++ b/src/settingskey.h
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2015-2020 by Savoir-faire Linux
+ * Author: Edric Ladent Milaret <edric.ladent-milaret@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+namespace SettingsKey {
+
+constexpr static char closeOrMinimized[] = "closeOrMin";
+constexpr static char downloadPath[] = "downloadPath";
+constexpr static char enableNotifications[] = "enableNotifications";
+constexpr static char geometry[] = "geometry";
+constexpr static char selectedAccount[] = "selectedAccount";
+constexpr static char mainSplitterState[] = "mainSplitterState";
+constexpr static char smartListToWebviewSplitterState[] = "smartListToWebviewSplitterState";
+constexpr static char windowState[] = "windowState";
+constexpr static char autoUpdate[] = "autoUpdate";
+constexpr static char neverShowMeAgain[] = "neverShowMeAgain";
+constexpr static char hasRun[] = "hasRun";
+} // namespace SettingsKey
diff --git a/src/settingsview/SettingsView.qml b/src/settingsview/SettingsView.qml
new file mode 100644
index 0000000..3cc0f77
--- /dev/null
+++ b/src/settingsview/SettingsView.qml
@@ -0,0 +1,290 @@
+/*
+ * Copyright (C) 2019-2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+import QtQuick 2.15
+import QtQuick.Window 2.14
+import QtQuick.Controls 2.14
+import QtQuick.Controls.Universal 2.12
+import QtQuick.Layouts 1.3
+import QtGraphicalEffects 1.14
+import net.jami.Models 1.0
+
+import "components"
+
+Rectangle {
+ id: settingsViewWindow
+
+ enum SettingsMenu{
+ Account,
+ General,
+ Media,
+ Plugin
+ }
+
+ onVisibleChanged: {
+ if(visible){
+ setSelected(selectedMenu,true)
+ }
+ }
+
+ function setSelected(sel, recovery = false){
+ profileType = ClientWrapper.settingsAdaptor.getCurrentAccount_Profile_Info_Type()
+
+ if(selectedMenu === sel && (!recovery)){return}
+ switch(sel){
+ case SettingsView.Account:
+ currentAccountSettingsScrollWidget.connectCurrentAccount()
+
+ avSettings.stopAudioMeter()
+ avSettings.stopPreviewing()
+
+ selectedMenu = sel
+
+ if(!settingsViewRect.isSIP){
+ if(currentAccountSettingsScrollWidget.isPhotoBoothOpened())
+ {
+ currentAccountSettingsScrollWidget.setAvatar()
+ }
+
+ currentAccountSettingsScrollWidget.updateAccountInfoDisplayed()
+ } else {
+ if(currentSIPAccountSettingsScrollWidget.isPhotoBoothOpened()) {
+ currentSIPAccountSettingsScrollWidget.setAvatar()
+ }
+ currentSIPAccountSettingsScrollWidget.updateAccountInfoDisplayed()
+ }
+ break
+ case SettingsView.General:
+ try{
+ avSettings.stopAudioMeter()
+ avSettings.stopPreviewing()
+ } catch(erro){}
+
+ selectedMenu = sel
+ generalSettings.populateGeneralSettings()
+ break
+ case SettingsView.Media:
+ selectedMenu = sel
+
+ avSettings.stopPreviewing()
+ avSettings.populateAVSettings()
+ avSettings.startAudioMeter()
+ break
+ case SettingsView.Plugin:
+ try{
+ avSettings.stopAudioMeter()
+ avSettings.stopPreviewing()
+ } catch(erro){}
+
+ selectedMenu = sel
+ pluginSettings.populatePluginSettings()
+ break
+ }
+ }
+
+ Connections{
+ id: accountListChangedConnection
+ target: ClientWrapper.lrcInstance
+
+ function onAccountListChanged(){
+ slotAccountListChanged()
+ accountListChangedConnection.enabled = false
+ }
+ }
+
+ // slots
+ function leaveSettingsSlot(accountDeleted = false, showMainView = true){
+ avSettings.stopAudioMeter()
+ avSettings.stopPreviewing()
+ if(!settingsViewRect.isSIP){
+ currentAccountSettingsScrollWidget.stopBooth()
+ } else {
+ currentSIPAccountSettingsScrollWidget.stopBooth()
+ }
+ if (showMainView)
+ settingsViewWindowNeedToShowMainViewWindow(accountDeleted)
+ else
+ settingsViewWindowNeedToShowNewWizardWindow()
+ }
+
+ function slotAccountListChanged(){
+ var accountList = ClientWrapper.accountModel.getAccountList()
+ if(accountList.length === 0) {
+ setSelected(SettingsView.Account)
+ } else {
+ currentAccountSettingsScrollWidget.disconnectAccountConnections()
+ }
+ var device = ClientWrapper.avmodel.getDefaultDevice()
+ if(device.length === 0){
+ ClientWrapper.avmodel.setCurrentVideoCaptureDevice(device)
+ }
+ }
+ property int profileType: ClientWrapper.settingsAdaptor.getCurrentAccount_Profile_Info_Type()
+
+
+ property int selectedMenu: SettingsView.Account
+ /*
+ * signal to redirect the page to main view
+ */
+ signal settingsViewWindowNeedToShowMainViewWindow(bool accountDeleted)
+ signal settingsViewWindowNeedToShowNewWizardWindow
+
+ property int textFontSize: 9
+
+ visible: true
+
+ Rectangle {
+ id: settingsViewRect
+ anchors.fill: parent
+
+ property bool isSIP: {
+ switch (profileType) {
+ case Profile.Type.SIP:
+ return true;
+ default:
+ return false;
+ }
+ }
+
+ SplitView {
+ anchors.fill: parent
+ orientation: Qt.Horizontal
+
+ handle: Rectangle {
+ implicitWidth: 3
+ implicitHeight: 3
+ color: JamiTheme.lightGrey_
+ }
+
+ Rectangle {
+ id: leftSettingsWidget
+
+ SplitView.minimumWidth: 200
+ SplitView.preferredWidth: 200
+ SplitView.maximumWidth: parent.width / 2
+ SplitView.fillHeight: true
+ LeftPanelView {
+ id: leftPanelView
+
+ contentViewportWidth: leftSettingsWidget.width
+ contentViewPortHeight: leftSettingsWidget.height
+
+ onBtnExitClicked:{
+ leaveSettingsSlot()
+ }
+
+ Connections {
+ target: leftPanelView.btnAccountSettings
+ function onCheckedToggledForRightPanel(checked) {
+ setSelected(SettingsView.Account)
+ }
+ }
+ Connections {
+ target: leftPanelView.btnGeneralSettings
+ function onCheckedToggledForRightPanel(checked) {
+ setSelected(SettingsView.General)
+ }
+ }
+ Connections {
+ target: leftPanelView.btnMediaSettings
+ function onCheckedToggledForRightPanel(checked) {
+ setSelected(SettingsView.Media)
+ }
+ }
+ Connections {
+ target: leftPanelView.btnPluginSettings
+ function onCheckedToggledForRightPanel(checked) {
+ setSelected(SettingsView.Plugin)
+ }
+ }
+ }
+ }
+
+ StackLayout {
+ id: rightSettingsWidget
+
+ property int pageIdCurrentAccountSettingsScrollPage: 0
+ property int pageIdCurrentSIPAccountSettingScrollPage: 1
+ property int pageIdGeneralSettingsPage: 2
+ property int pageIdAvSettingPage: 3
+ property int pageIdPluginSettingsPage: 4
+
+ currentIndex: {
+ switch(selectedMenu){
+ case SettingsView.Account:
+ if(settingsViewRect.isSIP){
+ return pageIdCurrentSIPAccountSettingScrollPage
+ } else {
+ return pageIdCurrentAccountSettingsScrollPage
+ }
+ case SettingsView.General:
+ return pageIdGeneralSettingsPage
+ case SettingsView.Media:
+ return pageIdAvSettingPage
+ case SettingsView.Plugin:
+ return pageIdPluginSettingsPage
+ }
+ }
+
+ SplitView.fillWidth: true
+ SplitView.fillHeight: true
+
+ // current account setting scroll page, index 0
+ CurrentAccountSettingsScrollPage {
+ id: currentAccountSettingsScrollWidget
+
+ onNavigateToMainView:{
+ leaveSettingsSlot(true)
+ }
+
+ onNavigateToNewWizardView: {
+ leaveSettingsSlot(true, false)
+ }
+ }
+
+ // current SIP account setting scroll page, index 1
+ CurrentSIPAccountSettingScrollPage {
+ id: currentSIPAccountSettingsScrollWidget
+
+ onNavigateToMainView: {
+ leaveSettingsSlot(true)
+ }
+
+ onNavigateToNewWizardView: {
+ leaveSettingsSlot(true, false)
+ }
+ }
+
+ // general setting page, index 2
+ GeneralSettingsPage {
+ id: generalSettings
+ }
+
+ // av setting page, index 3
+ AvSettingPage {
+ id: avSettings
+ }
+
+ // plugin setting page, index 4
+ PluginSettingsPage {
+ id: pluginSettings
+ }
+ }
+ }
+ }
+}
diff --git a/src/settingsview/components/AdvancedSIPSettingsView.qml b/src/settingsview/components/AdvancedSIPSettingsView.qml
new file mode 100644
index 0000000..5ebcf84
--- /dev/null
+++ b/src/settingsview/components/AdvancedSIPSettingsView.qml
@@ -0,0 +1,2554 @@
+/*
+ * Copyright (C) 2019-2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+import QtQuick 2.15
+import QtQuick.Window 2.14
+import QtQuick.Controls 2.14
+import QtQuick.Controls.Universal 2.12
+import QtQuick.Layouts 1.3
+import QtGraphicalEffects 1.14
+import QtQuick.Controls.Styles 1.4
+import QtQuick.Dialogs 1.3
+import Qt.labs.platform 1.1
+import net.jami.Models 1.0
+
+import "../../commoncomponents"
+
+ColumnLayout {
+ function updateAccountInfoDisplayedAdvanceSIP(){
+ // Call Settings
+ checkBoxAutoAnswerSIP.checked = ClientWrapper.settingsAdaptor.getAccountConfig_AutoAnswer()
+ checkBoxCustomRingtoneSIP.checked = ClientWrapper.settingsAdaptor.getAccountConfig_Ringtone_RingtoneEnabled()
+
+ // security
+ btnSIPCACert.enabled = ClientWrapper.settingsAdaptor.getAccountConfig_TLS_Enable()
+ btnSIPUserCert.enabled = ClientWrapper.settingsAdaptor.getAccountConfig_TLS_Enable()
+ btnSIPPrivateKey.enabled = ClientWrapper.settingsAdaptor.getAccountConfig_TLS_Enable()
+ lineEditSIPCertPassword.enabled = ClientWrapper.settingsAdaptor.getAccountConfig_TLS_Enable()
+ enableSDESToggle.enabled = ClientWrapper.settingsAdaptor.getAccountConfig_SRTP_Enabled()
+ fallbackRTPToggle.enabled = ClientWrapper.settingsAdaptor.getAccountConfig_SRTP_Enabled()
+
+ btnSIPCACert.text = ClientWrapper.utilsAdaptor.toFileInfoName(ClientWrapper.settingsAdaptor.getAccountConfig_TLS_CertificateListFile())
+ btnSIPUserCert.text = ClientWrapper.utilsAdaptor.toFileInfoName(ClientWrapper.settingsAdaptor.getAccountConfig_TLS_CertificateFile())
+ btnSIPPrivateKey.text = ClientWrapper.utilsAdaptor.toFileInfoName(ClientWrapper.settingsAdaptor.getAccountConfig_TLS_PrivateKeyFile())
+ lineEditSIPCertPassword.text = ClientWrapper.settingsAdaptor.getAccountConfig_TLS_Password()
+
+ encryptMediaStreamsToggle.checked = ClientWrapper.settingsAdaptor.getAccountConfig_SRTP_Enabled()
+ enableSDESToggle.checked = (ClientWrapper.settingsAdaptor.getAccountConfig_SRTP_KeyExchange() === Account.KeyExchangeProtocol.SDES)
+ fallbackRTPToggle.checked = ClientWrapper.settingsAdaptor.getAccountConfig_SRTP_RtpFallback()
+ encryptNegotitationToggle.checked = ClientWrapper.settingsAdaptor.getAccountConfig_TLS_Enable()
+ verifyIncomingCertificatesServerToogle.checked = ClientWrapper.settingsAdaptor.getAccountConfig_TLS_VerifyServer()
+ verifyIncomingCertificatesClientToogle.checked = ClientWrapper.settingsAdaptor.getAccountConfig_TLS_VerifyClient()
+ requireCeritificateForTLSIncomingToggle.checked = ClientWrapper.settingsAdaptor.getAccountConfig_TLS_RequireClientCertificate()
+
+ var method = ClientWrapper.settingsAdaptor.getAccountConfig_TLS_Method_inInt()
+ tlsProtocolComboBox.currentIndex = method
+
+ outgoingTLSServerNameLineEdit.text = ClientWrapper.settingsAdaptor.getAccountConfig_TLS_Servername()
+ negotiationTimeoutSpinBox.value = ClientWrapper.settingsAdaptor.getAccountConfig_TLS_NegotiationTimeoutSec()
+
+ // Connectivity
+ checkBoxUPnPSIP.checked = ClientWrapper.settingsAdaptor.getAccountConfig_UpnpEnabled()
+ checkBoxTurnEnableSIP.checked = ClientWrapper.settingsAdaptor.getAccountConfig_TURN_Enabled()
+ lineEditTurnAddressSIP.text = ClientWrapper.settingsAdaptor.getAccountConfig_TURN_Server()
+ lineEditTurnUsernameSIP.text = ClientWrapper.settingsAdaptor.getAccountConfig_TURN_Username()
+ lineEditTurnPsswdSIP.text = ClientWrapper.settingsAdaptor.getAccountConfig_TURN_Password()
+ lineEditTurnRealmSIP.text = ClientWrapper.settingsAdaptor.getAccountConfig_TURN_Realm()
+ lineEditTurnAddressSIP.enabled = ClientWrapper.settingsAdaptor.getAccountConfig_TURN_Enabled()
+ lineEditTurnUsernameSIP.enabled = ClientWrapper.settingsAdaptor.getAccountConfig_TURN_Enabled()
+ lineEditTurnPsswdSIP.enabled = ClientWrapper.settingsAdaptor.getAccountConfig_TURN_Enabled()
+ lineEditTurnRealmSIP.enabled = ClientWrapper.settingsAdaptor.getAccountConfig_TURN_Enabled()
+
+ checkBoxSTUNEnableSIP.checked = ClientWrapper.settingsAdaptor.getAccountConfig_STUN_Enabled()
+ lineEditSTUNAddressSIP.text = ClientWrapper.settingsAdaptor.getAccountConfig_STUN_Server()
+ lineEditSTUNAddressSIP.enabled = ClientWrapper.settingsAdaptor.getAccountConfig_STUN_Enabled()
+
+ registrationExpireTimeoutSpinBox.value = ClientWrapper.settingsAdaptor.getAccountConfig_Registration_Expire()
+ networkInterfaceSpinBox.value = ClientWrapper.settingsAdaptor.getAccountConfig_Localport()
+
+ // published address
+ checkBoxCustomAddressPort.checked = ClientWrapper.settingsAdaptor.getAccountConfig_PublishedSameAsLocal()
+ lineEditSIPCustomAddress.text = ClientWrapper.settingsAdaptor.getAccountConfig_PublishedAddress()
+ customPortSIPSpinBox.value = ClientWrapper.settingsAdaptor.getAccountConfig_PublishedPort()
+
+ // codecs
+ videoCheckBoxSIP.checked = ClientWrapper.settingsAdaptor.getAccountConfig_Video_Enabled()
+ updateAudioCodecs()
+ updateVideoCodecs()
+ btnRingtoneSIP.enabled = ClientWrapper.settingsAdaptor.getAccountConfig_Ringtone_RingtoneEnabled()
+ btnRingtoneSIP.text = ClientWrapper.utilsAdaptor.toFileInfoName(ClientWrapper.settingsAdaptor.getAccountConfig_Ringtone_RingtonePath())
+ lineEditSTUNAddressSIP.enabled = ClientWrapper.settingsAdaptor.getAccountConfig_STUN_Enabled()
+
+ // SDP session negotiation ports
+ audioRTPMinPortSpinBox.value = ClientWrapper.settingsAdaptor.getAccountConfig_Audio_AudioPortMin()
+ audioRTPMaxPortSpinBox.value = ClientWrapper.settingsAdaptor.getAccountConfig_Audio_AudioPortMax()
+ videoRTPMinPortSpinBox.value = ClientWrapper.settingsAdaptor.getAccountConfig_Video_VideoPortMin()
+ videoRTPMaxPortSpinBox.value = ClientWrapper.settingsAdaptor.getAccountConfig_Video_VideoPortMax()
+
+ // voicemail
+ lineEditVoiceMailDialCode.text = ClientWrapper.settingsAdaptor.getAccountConfig_Mailbox()
+ }
+
+ function updateAudioCodecs(){
+ audioCodecListModelSIP.layoutAboutToBeChanged()
+ audioCodecListModelSIP.dataChanged(audioCodecListModelSIP.index(0, 0),
+ audioCodecListModelSIP.index(audioCodecListModelSIP.rowCount() - 1, 0))
+ audioCodecListModelSIP.layoutChanged()
+ }
+
+ function updateVideoCodecs(){
+ videoCodecListModelSIP.layoutAboutToBeChanged()
+ videoCodecListModelSIP.dataChanged(videoCodecListModelSIP.index(0, 0),
+ videoCodecListModelSIP.index(videoCodecListModelSIP.rowCount() - 1, 0))
+ videoCodecListModelSIP.layoutChanged()
+ }
+
+ function decreaseAudioCodecPriority(){
+ var index = audioListWidgetSIP.currentIndex
+ var codecId = audioCodecListModelSIP.data(audioCodecListModelSIP.index(index,0), AudioCodecListModel.AudioCodecID)
+
+ ClientWrapper.settingsAdaptor.decreaseAudioCodecPriority(codecId)
+ audioListWidgetSIP.currentIndex = index + 1
+ updateAudioCodecs()
+ }
+
+ function increaseAudioCodecPriority(){
+ var index = audioListWidgetSIP.currentIndex
+ var codecId = audioCodecListModelSIP.data(audioCodecListModelSIP.index(index,0), AudioCodecListModel.AudioCodecID)
+
+ ClientWrapper.settingsAdaptor.increaseAudioCodecPriority(codecId)
+ audioListWidgetSIP.currentIndex = index - 1
+ updateAudioCodecs()
+ }
+
+ function decreaseVideoCodecPriority(){
+ var index = videoListWidgetSIP.currentIndex
+ var codecId = videoCodecListModelSIP.data(videoCodecListModelSIP.index(index,0), VideoCodecListModel.VideoCodecID)
+
+ ClientWrapper.settingsAdaptor.decreaseVideoCodecPriority(codecId)
+ videoListWidgetSIP.currentIndex = index + 1
+ updateVideoCodecs()
+ }
+
+ function increaseVideoCodecPriority(){
+ var index = videoListWidgetSIP.currentIndex
+ var codecId = videoCodecListModelSIP.data(videoCodecListModelSIP.index(index,0), VideoCodecListModel.VideoCodecID)
+
+ ClientWrapper.settingsAdaptor.increaseVideoCodecPriority(codecId)
+ videoListWidgetSIP.currentIndex = index - 1
+ updateVideoCodecs()
+ }
+
+ VideoCodecListModel{
+ id: videoCodecListModelSIP
+ }
+
+ AudioCodecListModel{
+ id: audioCodecListModelSIP
+ }
+
+
+ // slots
+ function audioRTPMinPortSpinBoxEditFinished(value){
+ if (ClientWrapper.settingsAdaptor.getAccountConfig_Audio_AudioPortMax() < value) {
+ audioRTPMinPortSpinBox.value = ClientWrapper.settingsAdaptor.getAccountConfig_Audio_AudioPortMin()
+ return
+ }
+ ClientWrapper.settingsAdaptor.audioRTPMinPortSpinBoxEditFinished(value)
+ }
+
+ function audioRTPMaxPortSpinBoxEditFinished(value){
+ if (value < ClientWrapper.settingsAdaptor.getAccountConfig_Audio_AudioPortMin()) {
+ audioRTPMaxPortSpinBox.value = ClientWrapper.settingsAdaptor.getAccountConfig_Audio_AudioPortMax()
+ return
+ }
+ ClientWrapper.settingsAdaptor.audioRTPMaxPortSpinBoxEditFinished(value)
+ }
+
+ function videoRTPMinPortSpinBoxEditFinished(value){
+ if (ClientWrapper.settingsAdaptor.getAccountConfig_Video_VideoPortMax() < value) {
+ videoRTPMinPortSpinBox.value = ClientWrapper.settingsAdaptor.getAccountConfig_Video_VideoPortMin()
+ return
+ }
+ ClientWrapper.settingsAdaptor.videoRTPMinPortSpinBoxEditFinished(value)
+ }
+
+ function videoRTPMaxPortSpinBoxEditFinished(value){
+ if (value < ClientWrapper.settingsAdaptor.getAccountConfig_Video_VideoPortMin()) {
+ videoRTPMinPortSpinBox.value = ClientWrapper.settingsAdaptor.getAccountConfig_Video_VideoPortMin()
+ return
+ }
+ ClientWrapper.settingsAdaptor.videoRTPMaxPortSpinBoxEditFinished(value)
+ }
+
+
+ function changeRingtonePath(url){
+ if(url.length !== 0) {
+ ClientWrapper.settingsAdaptor.set_RingtonePath(url)
+ btnRingtoneSIP.text = ClientWrapper.utilsAdaptor.toFileInfoName(ClientWrapper.settingsAdaptor.getAccountConfig_Ringtone_RingtonePath())
+ } else if (ClientWrapper.settingsAdaptor.getAccountConfig_Ringtone_RingtonePath().length === 0){
+ btnRingtoneSIP.text = qsTr("Add a custom ringtone")
+ }
+ }
+
+ function changeFileCACert(url){
+ if(url.length !== 0) {
+ ClientWrapper.settingsAdaptor.set_FileCACert(url)
+ btnSIPCACert.text = ClientWrapper.utilsAdaptor.toFileInfoName(ClientWrapper.settingsAdaptor.getAccountConfig_TLS_CertificateListFile())
+ }
+ }
+
+ function changeFileUserCert(url){
+ if(url.length !== 0) {
+ ClientWrapper.settingsAdaptor.set_FileUserCert(url)
+ btnSIPUserCert.text = ClientWrapper.utilsAdaptor.toFileInfoName(ClientWrapper.settingsAdaptor.getAccountConfig_TLS_CertificateFile())
+ }
+ }
+
+ function changeFilePrivateKey(url){
+ if(url.length !== 0) {
+ ClientWrapper.settingsAdaptor.set_FilePrivateKey(url)
+ btnSIPPrivateKey.text = ClientWrapper.utilsAdaptor.toFileInfoName(ClientWrapper.settingsAdaptor.getAccountConfig_TLS_PrivateKeyFile())
+ }
+ }
+
+ JamiFileDialog {
+ id: ringtonePath_Dialog_SIP
+
+ property string oldPath : ClientWrapper.settingsAdaptor.getAccountConfig_Ringtone_RingtonePath()
+ property string openPath : oldPath === "" ? (ClientWrapper.utilsAdaptor.getCurrentPath() + "/ringtones/") : (ClientWrapper.utilsAdaptor.toFileAbsolutepath(oldPath))
+
+ mode: JamiFileDialog.OpenFile
+ title: qsTr("Select a new ringtone")
+ folder: openPath
+
+ nameFilters: [qsTr("Audio Files") + " (*.wav *.ogg *.opus *.mp3 *.aiff *.wma)", qsTr(
+ "All files") + " (*)"]
+
+ onRejected: {}
+
+ onVisibleChanged: {
+ if (!visible) {
+ rejected()
+ }
+ }
+
+ onAccepted: {
+ var url = ClientWrapper.utilsAdaptor.getAbsPath(file.toString())
+ changeRingtonePath(url)
+ }
+ }
+
+ JamiFileDialog {
+ id: caCert_Dialog_SIP
+
+ property string oldPath : ClientWrapper.settingsAdaptor.getAccountConfig_TLS_CertificateListFile()
+ property string openPath : oldPath === "" ? (ClientWrapper.utilsAdaptor.getCurrentPath() + "/ringtones/") : (ClientWrapper.utilsAdaptor.toFileAbsolutepath(oldPath))
+
+ mode: JamiFileDialog.OpenFile
+ title: qsTr("Select a CA certificate")
+ folder: openPath
+ nameFilters: [qsTr("Certificate File") + " (*.crt)", qsTr(
+ "All files") + " (*)"]
+
+ onRejected: {}
+
+ onVisibleChanged: {
+ if (!visible) {
+ rejected()
+ }
+ }
+
+ onAccepted: {
+ var url = ClientWrapper.utilsAdaptor.getAbsPath(file.toString())
+ changeFileCACert(url)
+ }
+ }
+
+ JamiFileDialog {
+ id: userCert_Dialog_SIP
+
+ property string oldPath : ClientWrapper.settingsAdaptor.getAccountConfig_TLS_CertificateFile()
+ property string openPath : oldPath === "" ? (ClientWrapper.utilsAdaptor.getCurrentPath() + "/ringtones/") : (ClientWrapper.utilsAdaptor.toFileAbsolutepath(oldPath))
+
+ mode: JamiFileDialog.OpenFile
+ title: qsTr("Select a user certificate")
+ folder: openPath
+ nameFilters: [qsTr("Certificate File") + " (*.crt)", qsTr(
+ "All files") + " (*)"]
+
+ onRejected: {}
+
+ onVisibleChanged: {
+ if (!visible) {
+ rejected()
+ }
+ }
+
+ onAccepted: {
+ var url = ClientWrapper.utilsAdaptor.getAbsPath(file.toString())
+ changeFileUserCert(url)
+ }
+ }
+
+ JamiFileDialog {
+ id: privateKey_Dialog_SIP
+
+ property string oldPath : ClientWrapper.settingsAdaptor.getAccountConfig_TLS_PrivateKeyFile()
+ property string openPath : oldPath === "" ? (ClientWrapper.utilsAdaptor.getCurrentPath() + "/ringtones/") : (ClientWrapper.utilsAdaptor.toFileAbsolutepath(oldPath))
+
+ mode: JamiFileDialog.OpenFile
+ title: qsTr("Select a private key")
+ folder: openPath
+ nameFilters: [qsTr("Key File") + " (*.key)", qsTr(
+ "All files") + " (*)"]
+
+ onRejected: {}
+
+ onVisibleChanged: {
+ if (!visible) {
+ rejected()
+ }
+ }
+
+ onAccepted: {
+ var url = ClientWrapper.utilsAdaptor.getAbsPath(file.toString())
+ changeFilePrivateKey(url)
+ }
+ }
+
+ spacing: 6
+ Layout.preferredWidth: 532
+ Layout.maximumWidth: 532
+
+ Item {
+ Layout.fillWidth: true
+
+ Layout.minimumHeight: 24
+ Layout.preferredHeight: 24
+ Layout.maximumHeight: 24
+ }
+
+ // call setting section
+ ColumnLayout {
+ spacing: 6
+ Layout.fillWidth: true
+
+ Label {
+ Layout.fillWidth: true
+
+ Layout.minimumHeight: 27
+ Layout.preferredHeight: 27
+ Layout.maximumHeight: 27
+
+ text: qsTr("Call Settings")
+
+ font.pointSize: 13
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ ColumnLayout {
+ spacing: 6
+ Layout.fillWidth: true
+ Layout.leftMargin: 20
+
+ ToggleSwitch {
+ id: checkBoxAutoAnswerSIP
+ labelText: qsTr("Auto Answer Call")
+ fontPointSize: 10
+
+ Layout.leftMargin: 20
+
+ onSwitchToggled: {
+ ClientWrapper.settingsAdaptor.setAutoAnswerCalls(checked)
+ }
+ }
+
+ RowLayout {
+ Layout.fillWidth: true
+ Layout.leftMargin: 20
+ Layout.maximumHeight: 30
+
+ ToggleSwitch {
+ id: checkBoxCustomRingtoneSIP
+ labelText: qsTr("Enable Custom Ringtone")
+ fontPointSize: 10
+
+ Layout.maximumWidth: 164
+ Layout.preferredWidth: 164
+ Layout.minimumWidth: 164
+
+ onSwitchToggled: {
+ ClientWrapper.settingsAdaptor.setEnableRingtone(checked)
+ btnRingtoneSIP.enabled = checked
+ }
+ }
+
+ Item {
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ }
+
+ HoverableRadiusButton {
+ id: btnRingtoneSIP
+
+ radius: height / 2
+
+ Layout.maximumWidth: 164
+ Layout.preferredWidth: 164
+ Layout.minimumWidth: 164
+
+ Layout.maximumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.minimumHeight: 30
+
+ icon.source: "qrc:/images/icons/round-folder-24px.svg"
+ icon.width: 16
+ icon.height: 16
+
+ onClicked: {
+ ringtonePath_Dialog_SIP.open()
+ }
+ }
+ }
+ }
+ }
+
+ Item {
+ Layout.fillWidth: true
+
+ Layout.minimumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.maximumHeight: 20
+ }
+
+ // voice mail section
+ ColumnLayout {
+ spacing: 6
+ Layout.fillWidth: true
+
+ Label {
+ Layout.fillWidth: true
+
+ Layout.minimumHeight: 27
+ Layout.preferredHeight: 27
+ Layout.maximumHeight: 27
+
+ text: qsTr("Voicemail")
+
+ font.pointSize: 13
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ Item {
+ Layout.fillWidth: true
+
+ Layout.minimumHeight: 13
+ Layout.preferredHeight: 13
+ Layout.maximumHeight: 13
+ }
+
+ RowLayout {
+ Layout.fillWidth: true
+ Layout.leftMargin: 20
+ Layout.maximumHeight: 30
+
+ Label {
+ Layout.maximumWidth: 162
+ Layout.preferredWidth: 162
+ Layout.minimumWidth: 162
+
+ Layout.minimumHeight: 28
+ Layout.preferredHeight: 28
+ Layout.maximumHeight: 28
+
+ text: qsTr("Voicemail Dial Code")
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ Item {
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ }
+
+ InfoLineEdit {
+ id: lineEditVoiceMailDialCode
+
+ fieldLayoutWidth: 250
+
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+
+ onEditingFinished: {
+ ClientWrapper.settingsAdaptor.lineEditVoiceMailDialCodeEditFinished(text)
+ }
+ }
+ }
+ }
+
+ Item {
+ Layout.fillWidth: true
+
+ Layout.minimumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.maximumHeight: 20
+ }
+
+ // security section
+ ColumnLayout {
+ spacing: 6
+ Layout.fillWidth: true
+
+ Label {
+ Layout.fillWidth: true
+
+ Layout.minimumHeight: 27
+ Layout.preferredHeight: 27
+ Layout.maximumHeight: 27
+
+ text: qsTr("Security")
+
+ font.pointSize: 13
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ Item {
+ Layout.fillWidth: true
+
+ Layout.maximumHeight: 13
+ Layout.preferredHeight: 13
+ Layout.minimumHeight: 13
+ }
+
+ GridLayout {
+ Layout.leftMargin: 20
+ Layout.fillWidth: true
+
+ rowSpacing: 6
+ columnSpacing: 6
+
+ rows: 14
+ columns: 3
+
+ // First row
+ ToggleSwitch{
+ id: encryptMediaStreamsToggle
+
+ labelText: qsTr("Encrypt Media Streams(SRTP)")
+ fontPointSize: 10
+
+ Layout.row: 0
+ Layout.column: 0
+
+ onSwitchToggled: {
+ ClientWrapper.settingsAdaptor.setUseSRTP(checked)
+ enableSDESToggle.enabled = checked
+ fallbackRTPToggle.enabled = checked
+ }
+ }
+
+ Item{
+ Layout.fillHeight: true
+
+ Layout.maximumWidth: 20
+ Layout.preferredWidth: 20
+ Layout.minimumWidth: 20
+
+ Layout.row: 0
+ Layout.column: 1
+ }
+
+ // second row
+ ToggleSwitch{
+ id: enableSDESToggle
+
+ labelText: qsTr("Enable SDES(Key Exchange)")
+ fontPointSize: 10
+
+ Layout.row: 1
+ Layout.column: 0
+
+ onSwitchToggled: {
+ ClientWrapper.settingsAdaptor.setUseSDES(checked)
+ }
+ }
+
+ Item{
+ Layout.fillHeight: true
+
+ Layout.maximumWidth: 20
+ Layout.preferredWidth: 20
+ Layout.minimumWidth: 20
+
+ Layout.row: 1
+ Layout.column: 1
+ }
+
+ // third row
+ ToggleSwitch{
+ id: fallbackRTPToggle
+
+ labelText: qsTr("Can Fallback on RTP")
+ fontPointSize: 10
+
+ Layout.row: 2
+ Layout.column: 0
+
+ onSwitchToggled: {
+ ClientWrapper.settingsAdaptor.setUseRTPFallback(checked)
+ }
+ }
+
+ Item{
+ Layout.fillHeight: true
+
+ Layout.maximumWidth: 20
+ Layout.preferredWidth: 20
+ Layout.minimumWidth: 20
+
+ Layout.row: 2
+ Layout.column: 1
+ }
+
+ // fourth row
+ ToggleSwitch{
+ id: encryptNegotitationToggle
+
+ labelText: qsTr("Encrypt Negotiation(TLS)")
+ fontPointSize: 10
+
+ Layout.row: 3
+ Layout.column: 0
+
+ onSwitchToggled: {
+ ClientWrapper.settingsAdaptor.setUseTLS(checked)
+ btnSIPCACert.enabled = checked
+ btnSIPUserCert.enabled = checked
+ btnSIPPrivateKey.enabled = checked
+ lineEditSIPCertPassword.enabled = checked
+ }
+ }
+
+ Item{
+ Layout.fillHeight: true
+
+ Layout.maximumWidth: 20
+ Layout.preferredWidth: 20
+ Layout.minimumWidth: 20
+
+ Layout.row: 3
+ Layout.column: 1
+ }
+
+ // fifth row
+ RowLayout{
+ spacing: 6
+ Layout.maximumHeight: 30
+
+ Layout.row: 4
+ Layout.column: 0
+
+ Item{
+ Layout.fillHeight: true
+
+ Layout.maximumWidth: 20
+ Layout.preferredWidth: 20
+ Layout.minimumWidth: 20
+ }
+
+ Label{
+ Layout.maximumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.minimumHeight: 30
+
+ Layout.maximumWidth: 209
+ Layout.preferredWidth: 209
+ Layout.minimumWidth: 209
+
+ text: qsTr("CA Certificate")
+
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+ }
+
+ Item{
+ Layout.fillHeight: true
+
+ Layout.maximumWidth: 20
+ Layout.preferredWidth: 20
+ Layout.minimumWidth: 20
+
+ Layout.row: 4
+ Layout.column: 1
+ }
+
+ HoverableRadiusButton{
+ id: btnSIPCACert
+
+ Layout.maximumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.minimumHeight: 30
+
+ Layout.maximumWidth: 250
+ Layout.preferredWidth: 250
+ Layout.minimumWidth: 250
+
+ radius: height / 2
+
+ icon.source: "qrc:/images/icons/round-folder-24px.svg"
+ icon.width: 16
+ icon.height: 16
+
+ Layout.row: 4
+ Layout.column: 2
+
+ onClicked: {
+ caCert_Dialog_SIP.open()
+ }
+ }
+
+ // sixth row
+ RowLayout{
+ spacing: 6
+ Layout.maximumHeight: 30
+
+ Layout.row: 5
+ Layout.column: 0
+
+ Item{
+ Layout.fillHeight: true
+
+ Layout.maximumWidth: 20
+ Layout.preferredWidth: 20
+ Layout.minimumWidth: 20
+ }
+
+ Label{
+ Layout.maximumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.minimumHeight: 30
+
+ Layout.maximumWidth: 209
+ Layout.preferredWidth: 209
+ Layout.minimumWidth: 209
+
+ text: qsTr("User Certificate")
+
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+ }
+
+ Item{
+ Layout.fillHeight: true
+
+ Layout.maximumWidth: 20
+ Layout.preferredWidth: 20
+ Layout.minimumWidth: 20
+
+ Layout.row: 5
+ Layout.column: 1
+ }
+
+ HoverableRadiusButton{
+ id: btnSIPUserCert
+
+ Layout.maximumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.minimumHeight: 30
+
+ Layout.maximumWidth: 250
+ Layout.preferredWidth: 250
+ Layout.minimumWidth: 250
+
+ radius: height / 2
+
+ icon.source: "qrc:/images/icons/round-folder-24px.svg"
+ icon.width: 16
+ icon.height: 16
+
+ Layout.row: 5
+ Layout.column: 2
+
+ onClicked: {
+ userCert_Dialog_SIP.open()
+ }
+ }
+
+ // seventh row
+ RowLayout{
+ spacing: 6
+ Layout.maximumHeight: 30
+
+ Layout.row: 6
+ Layout.column: 0
+
+ Item{
+ Layout.fillHeight: true
+
+ Layout.maximumWidth: 20
+ Layout.preferredWidth: 20
+ Layout.minimumWidth: 20
+ }
+
+ Label{
+ Layout.maximumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.minimumHeight: 30
+
+ Layout.maximumWidth: 209
+ Layout.preferredWidth: 209
+ Layout.minimumWidth: 209
+
+ text: qsTr("Private Key")
+
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+ }
+
+ Item{
+ Layout.fillHeight: true
+
+ Layout.maximumWidth: 20
+ Layout.preferredWidth: 20
+ Layout.minimumWidth: 20
+
+ Layout.row: 6
+ Layout.column: 1
+ }
+
+ HoverableRadiusButton{
+ id: btnSIPPrivateKey
+
+ Layout.maximumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.minimumHeight: 30
+
+ Layout.maximumWidth: 250
+ Layout.preferredWidth: 250
+ Layout.minimumWidth: 250
+
+ radius: height / 2
+
+ icon.source: "qrc:/images/icons/round-folder-24px.svg"
+ icon.width: 16
+ icon.height: 16
+
+ Layout.row: 6
+ Layout.column: 2
+
+ onClicked: {
+ privateKey_Dialog_SIP.open()
+ }
+ }
+
+ // eight row
+ RowLayout{
+ spacing: 6
+ Layout.maximumHeight: 30
+
+ Layout.row: 7
+ Layout.column: 0
+
+ Item{
+ Layout.fillHeight: true
+
+ Layout.maximumWidth: 20
+ Layout.preferredWidth: 20
+ Layout.minimumWidth: 20
+ }
+
+ Label{
+ Layout.maximumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.minimumHeight: 30
+
+ Layout.maximumWidth: 209
+ Layout.preferredWidth: 209
+ Layout.minimumWidth: 209
+
+ text: qsTr("Private Key Password")
+
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+ }
+
+ Item{
+ Layout.fillHeight: true
+
+ Layout.maximumWidth: 20
+ Layout.preferredWidth: 20
+ Layout.minimumWidth: 20
+
+ Layout.row: 7
+ Layout.column: 1
+ }
+
+ InfoLineEdit {
+ id: lineEditSIPCertPassword
+
+ Layout.alignment: Qt.AlignCenter
+
+ fieldLayoutWidth: 250
+ fieldLayoutHeight: 29
+
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+
+ echoMode: TextInput.Password
+
+ Layout.row: 7
+ Layout.column: 2
+
+ onEditingFinished: {
+ ClientWrapper.settingsAdaptor.lineEditSIPCertPasswordLineEditTextChanged(text)
+ }
+ }
+
+ // nineth row
+ ToggleSwitch{
+ id: verifyIncomingCertificatesServerToogle
+
+ labelText: qsTr("Verify Certificates(Server Side)")
+ fontPointSize: 10
+
+ Layout.row: 8
+ Layout.column: 0
+
+ onSwitchToggled: {
+ ClientWrapper.settingsAdaptor.setVerifyCertificatesServer(checked)
+ }
+ }
+
+ Item{
+ Layout.fillHeight: true
+
+ Layout.maximumWidth: 20
+ Layout.preferredWidth: 20
+ Layout.minimumWidth: 20
+
+ Layout.row: 8
+ Layout.column: 1
+ }
+
+ // tenth row
+ ToggleSwitch{
+ id: verifyIncomingCertificatesClientToogle
+
+ labelText: qsTr("Verify Certificates(Client Side)")
+ fontPointSize: 10
+
+ Layout.row: 9
+ Layout.column: 0
+
+ onSwitchToggled: {
+ ClientWrapper.settingsAdaptor.setVerifyCertificatesClient(checked)
+ }
+ }
+
+ Item{
+ Layout.fillHeight: true
+
+ Layout.maximumWidth: 20
+ Layout.preferredWidth: 20
+ Layout.minimumWidth: 20
+
+ Layout.row: 9
+ Layout.column: 1
+ }
+
+ //eleventh row
+ ToggleSwitch{
+ id: requireCeritificateForTLSIncomingToggle
+
+ labelText: qsTr("TLS Connections Require Certificate")
+ fontPointSize: 10
+
+ Layout.row: 10
+ Layout.column: 0
+
+ onSwitchToggled: {
+ ClientWrapper.settingsAdaptor.setRequireCertificatesIncomingTLS(checked)
+ }
+ }
+
+ Item{
+ Layout.fillHeight: true
+
+ Layout.maximumWidth: 20
+ Layout.preferredWidth: 20
+ Layout.minimumWidth: 20
+
+ Layout.row:10
+ Layout.column: 1
+ }
+
+ // twelveth row
+ Label{
+ Layout.fillWidth: true
+
+ Layout.maximumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.minimumHeight: 30
+
+ text: qsTr("TLS Protocol Method")
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+
+ Layout.row: 11
+ Layout.column: 0
+ }
+
+ Item{
+ Layout.fillHeight: true
+
+ Layout.maximumWidth: 20
+ Layout.preferredWidth: 20
+ Layout.minimumWidth: 20
+
+ Layout.row: 11
+ Layout.column: 1
+ }
+
+ SettingParaCombobox{
+ id:tlsProtocolComboBox
+
+ Layout.maximumWidth: 252
+ Layout.preferredWidth: 252
+ Layout.minimumWidth: 252
+
+ Layout.maximumHeight: 29
+ Layout.minimumHeight: 29
+ Layout.preferredHeight: 29
+
+ Layout.alignment: Qt.AlignCenter
+
+ font.pointSize: 10
+ font.kerning: true
+
+ Layout.row: 11
+ Layout.column: 2
+
+ textRole: "textDisplay"
+
+ model: ListModel{
+ ListElement{textDisplay: "Default"; firstArg: "Default"; secondArg: 0}
+ ListElement{textDisplay: "TLSv1"; firstArg: "TLSv1"; secondArg: 1}
+ ListElement{textDisplay: "TLSv1.1"; firstArg: "TLSv1.1"; secondArg: 2}
+ ListElement{textDisplay: "TLSv1.2"; firstArg: "TLSv1.2"; secondArg: 3}
+ }
+
+ onActivated: {
+ var indexOfOption = tlsProtocolComboBox.model.get(index).secondArg
+ ClientWrapper.settingsAdaptor.tlsProtocolComboBoxIndexChanged(parseInt(indexOfOption))
+ }
+ }
+
+ // 13th row
+ Label{
+ Layout.fillWidth: true
+
+ Layout.maximumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.minimumHeight: 30
+
+ text: qsTr("Outgoing TLS Server Name")
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+
+ Layout.row: 12
+ Layout.column: 0
+ }
+
+ Item{
+ Layout.fillHeight: true
+
+ Layout.maximumWidth: 20
+ Layout.preferredWidth: 20
+ Layout.minimumWidth: 20
+
+ Layout.row: 12
+ Layout.column: 1
+ }
+
+ InfoLineEdit {
+ id: outgoingTLSServerNameLineEdit
+
+ Layout.alignment: Qt.AlignCenter
+
+ fieldLayoutWidth: 250
+ fieldLayoutHeight: 29
+
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+
+ Layout.row: 12
+ Layout.column: 2
+
+ onEditingFinished: {
+ ClientWrapper.settingsAdaptor.outgoingTLSServerNameLineEditTextChanged(text)
+ }
+ }
+
+ // 14th row
+ Label{
+ Layout.fillWidth: true
+
+ Layout.maximumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.minimumHeight: 30
+
+ text: qsTr("Negotiation Timeout(seconds)")
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+
+ Layout.row: 13
+ Layout.column: 0
+ }
+
+ Item{
+ Layout.fillHeight: true
+
+ Layout.maximumWidth: 20
+ Layout.preferredWidth: 20
+ Layout.minimumWidth: 20
+
+ Layout.row: 13
+ Layout.column: 1
+ }
+
+ SpinBox{
+ id:negotiationTimeoutSpinBox
+
+ Layout.maximumWidth: 252
+ Layout.preferredWidth: 252
+ Layout.minimumWidth: 252
+
+ Layout.maximumHeight: 30
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+
+ Layout.alignment: Qt.AlignCenter
+
+ font.pointSize: 10
+ font.kerning: true
+
+ from: 0
+ to: 3000
+ stepSize: 1
+
+ Layout.row: 13
+ Layout.column: 2
+
+ onValueModified: {
+ ClientWrapper.settingsAdaptor.negotiationTimeoutSpinBoxValueChanged(value)
+ }
+ }
+ }
+ }
+
+ Item{
+ Layout.fillWidth: true
+
+ Layout.maximumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.minimumHeight: 20
+ }
+
+ // connectivity section
+ ColumnLayout{
+ spacing: 6
+ Layout.fillWidth: true
+
+ Label {
+ Layout.fillWidth: true
+
+ Layout.minimumHeight: 27
+ Layout.preferredHeight: 27
+ Layout.maximumHeight: 27
+
+ text: qsTr("Connectivity")
+
+ font.pointSize: 13
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ Item {
+ Layout.fillWidth: true
+
+ Layout.maximumHeight: 10
+ Layout.preferredHeight: 10
+ Layout.minimumHeight: 10
+ }
+
+ GridLayout{
+ Layout.leftMargin: 20
+ Layout.fillWidth: true
+
+ rowSpacing: 6
+ columnSpacing: 6
+
+ rows: 9
+ columns: 3
+
+ // 1st row
+ Label{
+ Layout.minimumWidth: 286
+ Layout.preferredWidth: 286
+
+ Layout.minimumHeight: 28
+ Layout.preferredHeight: 28
+ Layout.maximumHeight: 28
+
+ text: qsTr("Registration Expire Timeout(seconds)")
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+
+ Layout.row: 0
+ Layout.column: 0
+ }
+
+ Item{
+ Layout.fillHeight: true
+
+ Layout.maximumWidth: 20
+ Layout.preferredWidth: 20
+ Layout.minimumWidth: 20
+
+ Layout.row: 0
+ Layout.column: 1
+ }
+
+ SpinBox{
+ id: registrationExpireTimeoutSpinBox
+
+ Layout.maximumWidth: 250
+ Layout.preferredWidth: 250
+ Layout.minimumWidth: 250
+
+ Layout.maximumHeight: 30
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+
+ Layout.alignment: Qt.AlignCenter
+
+ font.pointSize: 10
+ font.kerning: true
+
+ from: 0
+ to: 3000
+ stepSize: 1
+
+ Layout.row: 0
+ Layout.column: 2
+
+ onValueModified: {
+ ClientWrapper.settingsAdaptor.registrationTimeoutSpinBoxValueChanged(value)
+ }
+ }
+
+ // 2nd row
+ Label{
+ Layout.minimumWidth: 286
+ Layout.preferredWidth: 286
+
+ Layout.minimumHeight: 28
+ Layout.preferredHeight: 28
+ Layout.maximumHeight: 28
+
+ text: qsTr("Newtwork interface")
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+
+ Layout.row: 1
+ Layout.column: 0
+ }
+
+ Item{
+ Layout.fillHeight: true
+
+ Layout.maximumWidth: 20
+ Layout.preferredWidth: 20
+ Layout.minimumWidth: 20
+
+ Layout.row: 1
+ Layout.column: 1
+ }
+
+ SpinBox{
+ id: networkInterfaceSpinBox
+
+ Layout.maximumWidth: 250
+ Layout.preferredWidth: 250
+ Layout.minimumWidth: 250
+
+ Layout.maximumHeight: 30
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+
+ Layout.alignment: Qt.AlignCenter
+
+ font.pointSize: 10
+ font.kerning: true
+
+ from: 0
+ to: 65536
+ stepSize: 1
+
+ Layout.row: 1
+ Layout.column: 2
+
+ onValueModified: {
+ ClientWrapper.settingsAdaptor.networkInterfaceSpinBoxValueChanged(value)
+ }
+ }
+
+ // 3rd row
+ ToggleSwitch{
+ id: checkBoxUPnPSIP
+
+ labelText: qsTr("Use UPnP")
+ fontPointSize: 10
+
+ Layout.row: 2
+ Layout.column: 0
+
+ onSwitchToggled: {
+ ClientWrapper.settingsAdaptor.setUseUPnP(checked)
+ }
+ }
+
+ Item{
+ Layout.fillHeight: true
+
+ Layout.maximumWidth: 20
+ Layout.preferredWidth: 20
+ Layout.minimumWidth: 20
+
+ Layout.row: 2
+ Layout.column: 1
+ }
+
+ // 4th row
+ ToggleSwitch{
+ id: checkBoxTurnEnableSIP
+
+ labelText: qsTr("Use TURN")
+ fontPointSize: 10
+
+ Layout.row: 3
+ Layout.column: 0
+
+ onSwitchToggled: {
+ ClientWrapper.settingsAdaptor.setUseTURN(checked)
+ lineEditTurnAddressSIP.enabled = checked
+ lineEditTurnUsernameSIP.enabled = checked
+ lineEditTurnPsswdSIP.enabled = checked
+ lineEditTurnRealmSIP.enabled = checked
+ }
+ }
+
+ Item{
+ Layout.fillHeight: true
+
+ Layout.maximumWidth: 20
+ Layout.preferredWidth: 20
+ Layout.minimumWidth: 20
+
+ Layout.row: 3
+ Layout.column: 1
+ }
+
+ // 5th row
+ RowLayout{
+ spacing: 6
+ Layout.maximumHeight: 30
+
+ Layout.row: 4
+ Layout.column: 0
+
+ Item{
+ Layout.fillHeight: true
+
+ Layout.maximumWidth: 20
+ Layout.preferredWidth: 20
+ Layout.minimumWidth: 20
+ }
+
+ Label{
+ Layout.maximumHeight: 27
+ Layout.preferredHeight: 27
+ Layout.minimumHeight: 27
+
+ Layout.maximumWidth: 260
+ Layout.preferredWidth: 260
+ Layout.minimumWidth: 260
+
+ text: qsTr("TURN Address")
+
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+ }
+
+ Item{
+ Layout.fillHeight: true
+
+ Layout.maximumWidth: 20
+ Layout.preferredWidth: 20
+ Layout.minimumWidth: 20
+
+ Layout.row: 4
+ Layout.column: 1
+ }
+
+
+ InfoLineEdit {
+ id: lineEditTurnAddressSIP
+
+ Layout.alignment: Qt.AlignCenter
+
+ fieldLayoutWidth: 250
+ fieldLayoutHeight: 29
+
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+
+ Layout.row: 4
+ Layout.column: 2
+
+ onEditingFinished: {
+ ClientWrapper.settingsAdaptor.setTURNAddress(text)
+ }
+ }
+
+ // 6th row
+ RowLayout{
+ spacing: 6
+ Layout.maximumHeight: 30
+
+ Layout.row: 5
+ Layout.column: 0
+
+ Item{
+ Layout.fillHeight: true
+
+ Layout.maximumWidth: 20
+ Layout.preferredWidth: 20
+ Layout.minimumWidth: 20
+ }
+
+ Label{
+ Layout.maximumHeight: 27
+ Layout.preferredHeight: 27
+ Layout.minimumHeight: 27
+
+ Layout.maximumWidth: 260
+ Layout.preferredWidth: 260
+ Layout.minimumWidth: 260
+
+ text: qsTr("TURN Username")
+
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+ }
+
+ Item{
+ Layout.fillHeight: true
+
+ Layout.maximumWidth: 20
+ Layout.preferredWidth: 20
+ Layout.minimumWidth: 20
+
+ Layout.row: 5
+ Layout.column: 1
+ }
+
+ InfoLineEdit {
+ id: lineEditTurnUsernameSIP
+
+ Layout.alignment: Qt.AlignCenter
+
+ fieldLayoutWidth: 250
+ fieldLayoutHeight: 29
+
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+
+ Layout.row: 5
+ Layout.column: 2
+
+ onEditingFinished: {
+ ClientWrapper.settingsAdaptor.setTURNUsername(text)
+ }
+ }
+
+ // 7th row
+ RowLayout{
+ spacing: 6
+ Layout.maximumHeight: 30
+
+ Layout.row: 6
+ Layout.column: 0
+
+ Item{
+ Layout.fillHeight: true
+
+ Layout.maximumWidth: 20
+ Layout.preferredWidth: 20
+ Layout.minimumWidth: 20
+ }
+
+ Label{
+ Layout.maximumHeight: 27
+ Layout.preferredHeight: 27
+ Layout.minimumHeight: 27
+
+ Layout.maximumWidth: 260
+ Layout.preferredWidth: 260
+ Layout.minimumWidth: 260
+
+ text: qsTr("TURN Password")
+
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+ }
+
+ Item{
+ Layout.fillHeight: true
+
+ Layout.maximumWidth: 20
+ Layout.preferredWidth: 20
+ Layout.minimumWidth: 20
+
+ Layout.row: 6
+ Layout.column: 1
+ }
+
+ InfoLineEdit {
+ id: lineEditTurnPsswdSIP
+
+ Layout.alignment: Qt.AlignCenter
+
+ fieldLayoutWidth: 250
+ fieldLayoutHeight: 29
+
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+
+ Layout.row: 6
+ Layout.column: 2
+
+ echoMode: TextInput.Password
+
+ onEditingFinished: {
+ ClientWrapper.settingsAdaptor.setTURNPassword(text)
+ }
+ }
+
+ // 8th row
+ RowLayout{
+ spacing: 6
+ Layout.maximumHeight: 30
+
+ Layout.row: 7
+ Layout.column: 0
+
+ Item{
+ Layout.fillHeight: true
+
+ Layout.maximumWidth: 20
+ Layout.preferredWidth: 20
+ Layout.minimumWidth: 20
+ }
+
+ Label{
+ Layout.maximumHeight: 27
+ Layout.preferredHeight: 27
+ Layout.minimumHeight: 27
+
+ Layout.maximumWidth: 260
+ Layout.preferredWidth: 260
+ Layout.minimumWidth: 260
+
+ text: qsTr("TURN Realm")
+
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+ }
+
+ Item{
+ Layout.fillHeight: true
+
+ Layout.maximumWidth: 20
+ Layout.preferredWidth: 20
+ Layout.minimumWidth: 20
+
+ Layout.row: 7
+ Layout.column: 1
+ }
+
+ InfoLineEdit {
+ id: lineEditTurnRealmSIP
+
+ Layout.alignment: Qt.AlignCenter
+
+ fieldLayoutWidth: 250
+ fieldLayoutHeight: 29
+
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+
+ Layout.row: 7
+ Layout.column: 2
+
+ onEditingFinished: {
+ ClientWrapper.settingsAdaptor.setTURNRealm(text)
+ }
+ }
+
+ // 9th row
+ ToggleSwitch{
+ id: checkBoxSTUNEnableSIP
+
+ labelText: qsTr("Use STUN")
+ fontPointSize: 10
+
+ Layout.row: 8
+ Layout.column: 0
+
+ onSwitchToggled: {
+ ClientWrapper.settingsAdaptor.setUseSTUN(checked)
+ lineEditSTUNAddressSIP.enabled = checked
+ }
+ }
+
+ Item{
+ Layout.fillHeight: true
+
+ Layout.maximumWidth: 20
+ Layout.preferredWidth: 20
+ Layout.minimumWidth: 20
+
+ Layout.row: 8
+ Layout.column: 1
+ }
+
+ InfoLineEdit {
+ id: lineEditSTUNAddressSIP
+
+ Layout.alignment: Qt.AlignCenter
+
+ fieldLayoutWidth: 250
+ fieldLayoutHeight: 29
+
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+
+ Layout.row: 8
+ Layout.column: 2
+
+ onEditingFinished: {
+ ClientWrapper.settingsAdaptor.setSTUNAddress(text)
+ }
+ }
+ }
+ }
+
+ Item{
+ Layout.fillWidth: true
+
+ Layout.maximumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.minimumHeight: 20
+ }
+
+ // public address section
+ ColumnLayout{
+ spacing: 6
+ Layout.fillWidth: true
+
+ Label {
+ Layout.fillWidth: true
+
+ Layout.minimumHeight: 27
+ Layout.preferredHeight: 27
+ Layout.maximumHeight: 27
+
+ text: qsTr("Public Address")
+
+ font.pointSize: 13
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ Item {
+ Layout.fillWidth: true
+
+ Layout.maximumHeight: 10
+ Layout.preferredHeight: 10
+ Layout.minimumHeight: 10
+ }
+
+ GridLayout{
+ Layout.leftMargin: 20
+ Layout.fillWidth: true
+
+ rowSpacing: 6
+ columnSpacing: 6
+
+ rows: 3
+ columns: 3
+
+ // 1st row
+ ToggleSwitch{
+ id: checkBoxCustomAddressPort
+
+ Layout.maximumWidth: 88
+ labelText: qsTr("Use Custom Address/Port")
+ fontPointSize: 10
+
+ Layout.row: 0
+ Layout.column: 0
+
+ onSwitchToggled: {
+ ClientWrapper.settingsAdaptor.setUseCustomAddressAndPort(checked)
+ lineEditSIPCustomAddress.enabled = checked
+ customPortSIPSpinBox.enabled = checked
+ }
+ }
+
+ Item{
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+
+ Layout.row: 0
+ Layout.column: 1
+ }
+
+ //2nd row
+ Label{
+ Layout.leftMargin: 26
+
+ Layout.maximumHeight: 27
+ Layout.preferredHeight: 27
+ Layout.minimumHeight: 27
+
+ Layout.maximumWidth: 60
+ Layout.preferredWidth: 60
+ Layout.minimumWidth: 60
+
+ text: qsTr("Address")
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+
+ Layout.row: 1
+ Layout.column: 0
+ }
+
+ Item{
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+
+ Layout.row: 1
+ Layout.column: 1
+ }
+
+ InfoLineEdit {
+ id: lineEditSIPCustomAddress
+
+ Layout.alignment: Qt.AlignCenter
+
+ fieldLayoutWidth: 250
+ fieldLayoutHeight: 29
+
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+
+ Layout.row: 1
+ Layout.column: 2
+
+ onEditingFinished: {
+ ClientWrapper.settingsAdaptor.lineEditSIPCustomAddressLineEditTextChanged(text)
+ }
+ }
+
+ //3rd row
+ Label{
+ Layout.leftMargin: 26
+
+ Layout.maximumHeight: 27
+ Layout.preferredHeight: 27
+ Layout.minimumHeight: 27
+
+ Layout.maximumWidth: 60
+ Layout.preferredWidth: 60
+ Layout.minimumWidth: 60
+
+ text: qsTr("Port")
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+
+ Layout.row: 2
+ Layout.column: 0
+ }
+
+ Item{
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+
+ Layout.row: 2
+ Layout.column: 1
+ }
+
+ SpinBox{
+ id: customPortSIPSpinBox
+
+ Layout.maximumWidth: 250
+ Layout.preferredWidth: 250
+ Layout.minimumWidth: 250
+
+ Layout.maximumHeight: 30
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+
+ Layout.alignment: Qt.AlignCenter
+
+ font.pointSize: 10
+ font.kerning: true
+
+ from: 0
+ to: 65535
+ stepSize: 1
+
+ Layout.row: 2
+ Layout.column: 2
+
+ onValueModified: {
+ ClientWrapper.settingsAdaptor.customPortSIPSpinBoxValueChanged(value)
+ }
+ }
+ }
+ }
+
+ // media section
+ ColumnLayout{
+ spacing: 6
+ Layout.fillWidth: true
+
+ Label {
+ Layout.fillWidth: true
+
+ Layout.minimumHeight: 27
+ Layout.preferredHeight: 27
+ Layout.maximumHeight: 27
+
+ text: qsTr("Media")
+
+ font.pointSize: 13
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ Item {
+ Layout.fillWidth: true
+
+ Layout.maximumHeight: 10
+ Layout.preferredHeight: 10
+ Layout.minimumHeight: 10
+ }
+
+ ColumnLayout {
+ spacing: 6
+ Layout.fillWidth: true
+
+ ToggleSwitch {
+ id: videoCheckBoxSIP
+
+ Layout.leftMargin: 20
+
+ labelText: qsTr("Enable Video")
+ fontPointSize: 10
+
+ onSwitchToggled: {
+ ClientWrapper.settingsAdaptor.setVideoState(checked)
+ }
+ }
+
+ RowLayout {
+ spacing: 6
+ Layout.fillWidth: true
+ Layout.leftMargin: 20
+
+ ColumnLayout {
+ spacing: 6
+ Layout.maximumWidth: 348
+
+ RowLayout {
+ spacing: 6
+ Layout.fillWidth: true
+
+ Layout.maximumHeight: 30
+
+ Label {
+ Layout.fillWidth: true
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ text: qsTr("Video Codecs")
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ Item {
+ Layout.fillHeight: true
+
+ Layout.minimumWidth: 20
+ Layout.preferredWidth: 20
+ Layout.maximumWidth: 20
+ }
+
+ HoverableRadiusButton {
+ id: videoDownPushButtonSIP
+
+ Layout.minimumWidth: 30
+ Layout.preferredWidth: 30
+ Layout.maximumWidth: 30
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ radius: height / 2
+ scale: 1
+
+ buttonImageHeight: height
+ buttonImageWidth: height
+
+ font.pointSize: 9
+ font.kerning: true
+
+ icon.source: "qrc:/images/icons/round-arrow_drop_down-24px.svg"
+ icon.width: 32
+ icon.height: 32
+
+ onClicked: {
+ decreaseVideoCodecPriority()
+ }
+ }
+
+ HoverableRadiusButton {
+ id: videoUpPushButtonSIP
+
+ Layout.minimumWidth: 30
+ Layout.preferredWidth: 30
+ Layout.maximumWidth: 30
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ radius: height / 2
+
+ buttonImageHeight: height
+ buttonImageWidth: height
+
+ font.pointSize: 9
+ font.kerning: true
+
+ icon.source: "qrc:/images/icons/round-arrow_drop_up-24px.svg"
+ icon.width: 32
+ icon.height: 32
+
+ onClicked: {
+ increaseVideoCodecPriority()
+ }
+ }
+ }
+
+ ListViewJami {
+ id: videoListWidgetSIP
+
+ Layout.minimumWidth: 348
+ Layout.preferredWidth: 348
+ Layout.maximumWidth: 348
+
+ Layout.minimumHeight: 192
+ Layout.preferredHeight: 192
+ Layout.maximumHeight: 192
+
+ model: videoCodecListModelSIP
+
+ delegate: VideoCodecDelegate {
+ id: videoCodecDelegate
+
+ width: videoListWidgetSIP.width
+ height: videoListWidgetSIP.height / 4
+
+ videoCodecName : VideoCodecName
+ isEnabled : IsEnabled
+ videoCodecId: VideoCodecID
+
+ onClicked: {
+ videoListWidgetSIP.currentIndex = index
+ }
+
+ onVideoCodecStateChange:{
+ ClientWrapper.settingsAdaptor.videoCodecsStateChange(idToSet , isToBeEnabled)
+ updateVideoCodecs()
+ }
+ }
+ }
+ }
+
+ ColumnLayout {
+ spacing: 6
+ Layout.maximumWidth: 348
+
+ RowLayout {
+ spacing: 6
+ Layout.fillWidth: true
+
+ Layout.maximumHeight: 30
+
+ Label {
+ Layout.fillWidth: true
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ text: qsTr("Audio Codecs")
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ Item {
+ Layout.fillHeight: true
+
+ Layout.minimumWidth: 20
+ Layout.preferredWidth: 20
+ Layout.maximumWidth: 20
+ }
+
+ HoverableRadiusButton {
+ id: audioDownPushButtonSIP
+
+ Layout.minimumWidth: 30
+ Layout.preferredWidth: 30
+ Layout.maximumWidth: 30
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ radius: height / 2
+
+ buttonImageHeight: height
+ buttonImageWidth: height
+
+ font.pointSize: 9
+ font.kerning: true
+
+ icon.source: "qrc:/images/icons/round-arrow_drop_down-24px.svg"
+ icon.width: 32
+ icon.height: 32
+
+ onClicked: {
+ decreaseAudioCodecPriority()
+ }
+ }
+
+ HoverableRadiusButton {
+ id: audioUpPushButtonSIP
+
+ Layout.minimumWidth: 30
+ Layout.preferredWidth: 30
+ Layout.maximumWidth: 30
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ radius: height / 2
+
+ buttonImageHeight: height
+ buttonImageWidth: height
+
+ font.pointSize: 9
+ font.kerning: true
+
+ icon.source: "qrc:/images/icons/round-arrow_drop_up-24px.svg"
+ icon.width: 32
+ icon.height: 32
+
+ onClicked: {
+ increaseAudioCodecPriority()
+ }
+ }
+ }
+
+ ListViewJami {
+ id: audioListWidgetSIP
+
+ Layout.minimumWidth: 348
+ Layout.preferredWidth: 348
+ Layout.maximumWidth: 348
+
+ Layout.minimumHeight: 192
+ Layout.preferredHeight: 192
+ Layout.maximumHeight: 192
+
+ model: audioCodecListModelSIP
+
+ delegate: AudioCodecDelegate {
+ id: audioCodecDelegate
+
+ width: audioListWidgetSIP.width
+ height: audioListWidgetSIP.height / 4
+
+ layer.mipmap: false
+ clip: true
+
+ audioCodecName : AudioCodecName
+ isEnabled : IsEnabled
+ audioCodecId: AudioCodecID
+ samplerRate: Samplerate
+
+ onClicked: {
+ audioListWidgetSIP.currentIndex = index
+ }
+
+ onAudioCodecStateChange:{
+ ClientWrapper.settingsAdaptor.audioCodecsStateChange(idToSet , isToBeEnabled)
+ updateAudioCodecs()
+ }
+ }
+ }
+ }
+ }
+ }
+
+ }
+
+ Item {
+ Layout.fillWidth: true
+
+ Layout.maximumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.minimumHeight: 20
+ }
+
+ ColumnLayout{
+ spacing: 6
+ Layout.fillWidth: true
+
+ Label {
+ Layout.fillWidth: true
+
+ Layout.minimumHeight: 27
+ Layout.preferredHeight: 27
+ Layout.maximumHeight: 27
+
+ text: qsTr("SDP Session Negotiation(ICE Fallback)")
+
+ font.pointSize: 13
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ Label {
+ Layout.fillWidth: true
+
+ Layout.minimumHeight: 21
+ Layout.preferredHeight: 21
+ Layout.maximumHeight: 21
+
+ text: qsTr("Only used during negotiation in case ICE is not supported")
+
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ Item {
+ Layout.fillWidth: true
+
+ Layout.maximumHeight: 10
+ Layout.preferredHeight: 10
+ Layout.minimumHeight: 10
+ }
+
+ GridLayout{
+ Layout.leftMargin: 20
+ Layout.fillWidth: true
+
+ rowSpacing: 6
+ columnSpacing: 6
+
+ rows: 4
+ columns: 3
+
+ // 1st row
+ Label{
+ Layout.minimumWidth: 162
+ Layout.preferredWidth: 162
+ Layout.maximumWidth: 162
+
+ Layout.minimumHeight: 28
+ Layout.preferredHeight: 28
+ Layout.maximumHeight: 28
+
+ text: qsTr("Audio RTP Min Port")
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+
+ Layout.row: 0
+ Layout.column: 0
+ }
+
+ Item{
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+
+ Layout.row: 0
+ Layout.column: 1
+ }
+
+ SpinBox{
+ id:audioRTPMinPortSpinBox
+
+ Layout.minimumWidth: 250
+ Layout.preferredWidth: 250
+ Layout.maximumWidth: 250
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ font.pointSize: 10
+ font.kerning: true
+
+ from: 0
+ to: 65535
+ stepSize: 1
+
+ Layout.row: 0
+ Layout.column: 2
+
+ onValueModified: {
+ audioRTPMinPortSpinBoxEditFinished(value)
+ }
+ }
+
+ // 2nd row
+ Label{
+ Layout.minimumWidth: 162
+ Layout.preferredWidth: 162
+ Layout.maximumWidth: 162
+
+ Layout.minimumHeight: 28
+ Layout.preferredHeight: 28
+ Layout.maximumHeight: 28
+
+ text: qsTr("Audio RTP Max Port")
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+
+ Layout.row: 1
+ Layout.column: 0
+ }
+
+ Item{
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+
+ Layout.row: 1
+ Layout.column: 1
+ }
+
+ SpinBox{
+ id:audioRTPMaxPortSpinBox
+
+ Layout.minimumWidth: 250
+ Layout.preferredWidth: 250
+ Layout.maximumWidth: 250
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ font.pointSize: 10
+ font.kerning: true
+
+ from: 0
+ to: 65535
+ stepSize: 1
+
+ Layout.row: 1
+ Layout.column: 2
+
+ onValueModified: {
+ audioRTPMaxPortSpinBoxEditFinished(value)
+ }
+ }
+
+ // 3rd row
+ Label{
+ Layout.minimumWidth: 162
+ Layout.preferredWidth: 162
+ Layout.maximumWidth: 162
+
+ Layout.minimumHeight: 28
+ Layout.preferredHeight: 28
+ Layout.maximumHeight: 28
+
+ text: qsTr("Video RTP Min Port")
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+
+ Layout.row: 2
+ Layout.column: 0
+ }
+
+ Item{
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+
+ Layout.row: 2
+ Layout.column: 1
+ }
+
+ SpinBox{
+ id:videoRTPMinPortSpinBox
+
+ Layout.minimumWidth: 250
+ Layout.preferredWidth: 250
+ Layout.maximumWidth: 250
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ font.pointSize: 10
+ font.kerning: true
+
+ from: 0
+ to: 65535
+ stepSize: 1
+
+ Layout.row: 2
+ Layout.column: 2
+
+ onValueModified: {
+ videoRTPMinPortSpinBoxEditFinished(value)
+ }
+ }
+
+ // 4th row
+ Label{
+ Layout.minimumWidth: 162
+ Layout.preferredWidth: 162
+ Layout.maximumWidth: 162
+
+ Layout.minimumHeight: 28
+ Layout.preferredHeight: 28
+ Layout.maximumHeight: 28
+
+ text: qsTr("Video RTP Max Port")
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+
+ Layout.row: 3
+ Layout.column: 0
+ }
+
+ Item{
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+
+ Layout.row: 3
+ Layout.column: 1
+ }
+
+ SpinBox{
+ id:videoRTPMaxPortSpinBox
+
+ Layout.minimumWidth: 250
+ Layout.preferredWidth: 250
+ Layout.maximumWidth: 250
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ font.pointSize: 10
+ font.kerning: true
+
+ from: 0
+ to: 65535
+ stepSize: 1
+
+ Layout.row: 3
+ Layout.column: 2
+
+ onValueModified: {
+ videoRTPMaxPortSpinBoxEditFinished(value)
+ }
+ }
+ }
+ }
+
+ // spacers
+ Item {
+ Layout.fillWidth: true
+
+ Layout.maximumHeight: 48
+ Layout.preferredHeight: 48
+ Layout.minimumHeight: 48
+ }
+
+ Item {
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ }
+}
+
+
diff --git a/src/settingsview/components/AdvancedSettingsView.qml b/src/settingsview/components/AdvancedSettingsView.qml
new file mode 100644
index 0000000..003869b
--- /dev/null
+++ b/src/settingsview/components/AdvancedSettingsView.qml
@@ -0,0 +1,1370 @@
+/*
+ * Copyright (C) 2019-2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+import QtQuick 2.15
+import QtQuick.Window 2.14
+import QtQuick.Controls 2.14
+import QtQuick.Controls.Universal 2.12
+import QtQuick.Layouts 1.3
+import QtGraphicalEffects 1.14
+import QtQuick.Controls.Styles 1.4
+import QtQuick.Dialogs 1.3
+import Qt.labs.platform 1.1
+import net.jami.Models 1.0
+
+import "../../commoncomponents"
+
+ColumnLayout {
+ function updateAccountInfoDisplayedAdvance() {
+ //Call Settings
+ checkAutoConnectOnLocalNetwork.checked = ClientWrapper.settingsAdaptor.getAccountConfig_PeerDiscovery()
+ checkBoxUntrusted.checked = ClientWrapper.settingsAdaptor.getAccountConfig_DHT_PublicInCalls()
+ checkBoxAutoAnswer.checked = ClientWrapper.settingsAdaptor.getAccountConfig_AutoAnswer()
+ checkBoxCustomRingtone.checked = ClientWrapper.settingsAdaptor.getAccountConfig_Ringtone_RingtoneEnabled()
+
+ // Name Server
+ lineEditNameServer.text = ClientWrapper.settingsAdaptor.getAccountConfig_RingNS_Uri()
+
+ //OpenDHT Config
+ checkBoxEnableProxy.checked = ClientWrapper.settingsAdaptor.getAccountConfig_ProxyEnabled()
+ lineEditProxy.text = ClientWrapper.settingsAdaptor.getAccountConfig_ProxyServer()
+ lineEditBootstrap.text = ClientWrapper.settingsAdaptor.getAccountConfig_Hostname()
+
+ // Security
+ btnCACert.text = ClientWrapper.utilsAdaptor.toFileInfoName(ClientWrapper.settingsAdaptor.getAccountConfig_TLS_CertificateListFile())
+ btnUserCert.text = ClientWrapper.utilsAdaptor.toFileInfoName(ClientWrapper.settingsAdaptor.getAccountConfig_TLS_CertificateFile())
+ btnPrivateKey.text = ClientWrapper.utilsAdaptor.toFileInfoName(ClientWrapper.settingsAdaptor.getAccountConfig_TLS_PrivateKeyFile())
+
+ // Connectivity
+ checkBoxUPnP.checked = ClientWrapper.settingsAdaptor.getAccountConfig_UpnpEnabled()
+ checkBoxTurnEnable.checked = ClientWrapper.settingsAdaptor.getAccountConfig_TURN_Enabled()
+ lineEditTurnAddress.text = ClientWrapper.settingsAdaptor.getAccountConfig_TURN_Server()
+ lineEditTurnUsername.text = ClientWrapper.settingsAdaptor.getAccountConfig_TURN_Username()
+ lineEditTurnPassword.text = ClientWrapper.settingsAdaptor.getAccountConfig_TURN_Password()
+ checkBoxSTUNEnable.checked = ClientWrapper.settingsAdaptor.getAccountConfig_STUN_Enabled()
+ lineEditSTUNAddress.text = ClientWrapper.settingsAdaptor.getAccountConfig_STUN_Server()
+ // codecs
+ videoCheckBox.checked = ClientWrapper.settingsAdaptor.getAccountConfig_Video_Enabled()
+ // update audio and video codec, make sure this change does not trigger item change events
+ updateAudioCodecs();
+ updateVideoCodecs();
+ btnRingtone.enabled = ClientWrapper.settingsAdaptor.getAccountConfig_Ringtone_RingtoneEnabled()
+ btnRingtone.text = ClientWrapper.utilsAdaptor.toFileInfoName(ClientWrapper.settingsAdaptor.getAccountConfig_Ringtone_RingtonePath())
+ lineEditProxy.enabled = ClientWrapper.settingsAdaptor.getAccountConfig_ProxyEnabled()
+ lineEditSTUNAddress.enabled = ClientWrapper.settingsAdaptor.getAccountConfig_STUN_Enabled()
+ }
+
+ function updateAudioCodecs(){
+ audioCodecListModel.layoutAboutToBeChanged()
+ audioCodecListModel.dataChanged(audioCodecListModel.index(0, 0),
+ audioCodecListModel.index(audioCodecListModel.rowCount() - 1, 0))
+ audioCodecListModel.layoutChanged()
+ }
+
+ function updateVideoCodecs(){
+ videoCodecListModel.layoutAboutToBeChanged()
+ videoCodecListModel.dataChanged(videoCodecListModel.index(0, 0),
+ videoCodecListModel.index(videoCodecListModel.rowCount() - 1, 0))
+ videoCodecListModel.layoutChanged()
+ }
+
+ function decreaseAudioCodecPriority(){
+ var index = audioListWidget.currentIndex
+ var codecId = audioCodecListModel.data(audioCodecListModel.index(index,0), AudioCodecListModel.AudioCodecID)
+
+ ClientWrapper.settingsAdaptor.decreaseAudioCodecPriority(codecId)
+ audioListWidget.currentIndex = index + 1
+ updateAudioCodecs()
+ }
+
+ function increaseAudioCodecPriority(){
+ var index = audioListWidget.currentIndex
+ var codecId = audioCodecListModel.data(audioCodecListModel.index(index,0), AudioCodecListModel.AudioCodecID)
+
+ ClientWrapper.settingsAdaptor.increaseAudioCodecPriority(codecId)
+ audioListWidget.currentIndex = index - 1
+ updateAudioCodecs()
+ }
+
+ function decreaseVideoCodecPriority(){
+ var index = videoListWidget.currentIndex
+ var codecId = videoCodecListModel.data(videoCodecListModel.index(index,0), VideoCodecListModel.VideoCodecID)
+
+ ClientWrapper.settingsAdaptor.decreaseVideoCodecPriority(codecId)
+ videoListWidget.currentIndex = index + 1
+ updateVideoCodecs()
+ }
+
+ function increaseVideoCodecPriority(){
+ var index = videoListWidget.currentIndex
+ var codecId = videoCodecListModel.data(videoCodecListModel.index(index,0), VideoCodecListModel.VideoCodecID)
+
+ ClientWrapper.settingsAdaptor.increaseVideoCodecPriority(codecId)
+ videoListWidget.currentIndex = index - 1
+ updateVideoCodecs()
+ }
+
+ VideoCodecListModel{
+ id: videoCodecListModel
+ }
+
+ AudioCodecListModel{
+ id: audioCodecListModel
+ }
+
+ function changeRingtonePath(url){
+ if(url.length !== 0) {
+ ClientWrapper.settingsAdaptor.set_RingtonePath(url)
+ btnRingtone.text = ClientWrapper.utilsAdaptor.toFileInfoName(ClientWrapper.settingsAdaptor.getAccountConfig_Ringtone_RingtonePath())
+ } else if (ClientWrapper.settingsAdaptor.getAccountConfig_Ringtone_RingtonePath().length === 0){
+ btnRingtone.text = qsTr("Add a custom ringtone")
+ }
+ }
+
+ function changeFileCACert(url){
+ if(url.length !== 0) {
+ ClientWrapper.settingsAdaptor.set_FileCACert(url)
+ btnCACert.text = ClientWrapper.utilsAdaptor.toFileInfoName(ClientWrapper.settingsAdaptor.getAccountConfig_TLS_CertificateListFile())
+ }
+ }
+
+ function changeFileUserCert(url){
+ if(url.length !== 0) {
+ ClientWrapper.settingsAdaptor.set_FileUserCert(url)
+ btnUserCert.text = ClientWrapper.utilsAdaptor.toFileInfoName(ClientWrapper.settingsAdaptor.getAccountConfig_TLS_CertificateFile())
+ }
+ }
+
+ function changeFilePrivateKey(url){
+ if(url.length !== 0) {
+ ClientWrapper.settingsAdaptor.set_FilePrivateKey(url)
+ btnPrivateKey.text = ClientWrapper.utilsAdaptor.toFileInfoName(ClientWrapper.settingsAdaptor.getAccountConfig_TLS_PrivateKeyFile())
+ }
+ }
+
+ JamiFileDialog {
+ id: ringtonePath_Dialog
+
+ property string oldPath : ClientWrapper.settingsAdaptor.getAccountConfig_Ringtone_RingtonePath()
+ property string openPath : oldPath === "" ? (ClientWrapper.utilsAdaptor.getCurrentPath() + "/ringtones/") : (ClientWrapper.utilsAdaptor.toFileAbsolutepath(oldPath))
+
+ mode: JamiFileDialog.OpenFile
+ title: qsTr("Select a new ringtone")
+ folder: openPath
+
+ nameFilters: [qsTr("Audio Files") + " (*.wav *.ogg *.opus *.mp3 *.aiff *.wma)", qsTr(
+ "All files") + " (*)"]
+
+ onRejected: {}
+
+ onVisibleChanged: {
+ if (!visible) {
+ rejected()
+ }
+ }
+
+ onAccepted: {
+ var url = ClientWrapper.utilsAdaptor.getAbsPath(file.toString())
+ changeRingtonePath(url)
+ }
+ }
+
+ JamiFileDialog {
+ id: caCert_Dialog
+
+ property string oldPath : ClientWrapper.settingsAdaptor.getAccountConfig_TLS_CertificateListFile()
+ property string openPath : oldPath === "" ? (ClientWrapper.utilsAdaptor.getCurrentPath() + "/ringtones/") : (ClientWrapper.utilsAdaptor.toFileAbsolutepath(oldPath))
+
+ mode: JamiFileDialog.OpenFile
+ title: qsTr("Select a CA certificate")
+ folder: openPath
+ nameFilters: [qsTr("Certificate File") + " (*.crt)", qsTr(
+ "All files") + " (*)"]
+
+ onRejected: {}
+
+ onVisibleChanged: {
+ if (!visible) {
+ rejected()
+ }
+ }
+
+ onAccepted: {
+ var url = ClientWrapper.utilsAdaptor.getAbsPath(file.toString())
+ changeFileCACert(url)
+ }
+ }
+
+ JamiFileDialog {
+ id: userCert_Dialog
+
+ property string oldPath : ClientWrapper.settingsAdaptor.getAccountConfig_TLS_CertificateFile()
+ property string openPath : oldPath === "" ? (ClientWrapper.utilsAdaptor.getCurrentPath() + "/ringtones/") : (ClientWrapper.utilsAdaptor.toFileAbsolutepath(oldPath))
+
+ mode: JamiFileDialog.OpenFile
+ title: qsTr("Select a user certificate")
+ folder: openPath
+ nameFilters: [qsTr("Certificate File") + " (*.crt)", qsTr(
+ "All files") + " (*)"]
+
+ onRejected: {}
+
+ onVisibleChanged: {
+ if (!visible) {
+ rejected()
+ }
+ }
+
+ onAccepted: {
+ var url = ClientWrapper.utilsAdaptor.getAbsPath(file.toString())
+ changeFileUserCert(url)
+ }
+ }
+
+ JamiFileDialog {
+ id: privateKey_Dialog
+
+ property string oldPath : ClientWrapper.settingsAdaptor.getAccountConfig_TLS_PrivateKeyFile()
+ property string openPath : oldPath === "" ? (ClientWrapper.utilsAdaptor.getCurrentPath() + "/ringtones/") : (ClientWrapper.utilsAdaptor.toFileAbsolutepath(oldPath))
+
+ mode: JamiFileDialog.OpenFile
+ title: qsTr("Select a private key")
+ folder: openPath
+ nameFilters: [qsTr("Key File") + " (*.key)", qsTr(
+ "All files") + " (*)"]
+
+ onRejected: {}
+
+ onVisibleChanged: {
+ if (!visible) {
+ rejected()
+ }
+ }
+
+ onAccepted: {
+ var url = ClientWrapper.utilsAdaptor.getAbsPath(file.toString())
+ changeFilePrivateKey(url)
+ }
+ }
+
+ spacing: 6
+
+ Layout.preferredWidth: 532
+ Layout.maximumWidth: 532
+
+ Item {
+ Layout.fillWidth: true
+
+ Layout.minimumHeight: 24
+ Layout.preferredHeight: 24
+ Layout.maximumHeight: 24
+ }
+
+ ColumnLayout {
+ spacing: 6
+ Layout.fillWidth: true
+
+ Label {
+ Layout.fillWidth: true
+
+ Layout.minimumHeight: 27
+ Layout.preferredHeight: 27
+ Layout.maximumHeight: 27
+
+ text: qsTr("Call Settings")
+ font.pointSize: 13
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ Item {
+ Layout.fillWidth: true
+
+ Layout.minimumHeight: 10
+ Layout.preferredHeight: 10
+ Layout.maximumHeight: 10
+ }
+
+ ColumnLayout {
+ spacing: 6
+ Layout.fillWidth: true
+
+ ToggleSwitch {
+ id: checkBoxUntrusted
+
+ Layout.leftMargin: 20
+
+ labelText: qsTr("Allow incoming calls from unknown contacts")
+ fontPointSize: 10
+
+ onSwitchToggled: {
+ ClientWrapper.settingsAdaptor.setCallsUntrusted(checked)
+ }
+ }
+
+ ToggleSwitch {
+ id: checkBoxAutoAnswer
+
+ Layout.fillWidth: true
+ Layout.leftMargin: 20
+
+ labelText: qsTr("Auto Answer Calls")
+ fontPointSize: 10
+
+ onSwitchToggled: {
+ ClientWrapper.settingsAdaptor.setAutoAnswerCalls(checked)
+ }
+ }
+
+ RowLayout {
+ spacing: 6
+ Layout.fillWidth: true
+ Layout.leftMargin: 20
+ Layout.maximumHeight: 30
+
+ ToggleSwitch {
+ id: checkBoxCustomRingtone
+
+ labelText: qsTr("Enable Custom Ringtone")
+ fontPointSize: 10
+
+ onSwitchToggled: {
+ ClientWrapper.settingsAdaptor.setEnableRingtone(checked)
+ btnRingtone.enabled = checked
+ }
+ }
+
+ HoverableRadiusButton {
+ id: btnRingtone
+
+ Layout.minimumWidth: 300
+ Layout.preferredWidth: 300
+ Layout.maximumWidth: 300
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ radius: height / 2
+
+ icon.source: "qrc:/images/icons/round-folder-24px.svg"
+ icon.width: 16
+ icon.height: 16
+
+ onClicked: {
+ ringtonePath_Dialog.open()
+ }
+ }
+ }
+ }
+ }
+
+ Item {
+ Layout.fillWidth: true
+
+ Layout.minimumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.maximumHeight: 20
+ }
+
+ ColumnLayout {
+ spacing: 6
+ Layout.fillWidth: true
+
+ Label {
+ Layout.fillWidth: true
+
+ Layout.minimumHeight: 27
+ Layout.preferredHeight: 27
+ Layout.maximumHeight: 27
+
+ text: qsTr("Name Server")
+ font.pointSize: 13
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ Item {
+ Layout.fillWidth: true
+
+ Layout.minimumHeight: 10
+ Layout.preferredHeight: 10
+ Layout.maximumHeight: 10
+ }
+
+ RowLayout {
+ Layout.fillWidth: true
+ Layout.leftMargin: 20
+ Layout.maximumHeight: 29
+
+ Label {
+ Layout.minimumWidth: 60
+
+ Layout.minimumHeight: 29
+ Layout.preferredHeight: 29
+ Layout.maximumHeight: 29
+
+ text: qsTr("Address")
+
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ Item {
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ }
+
+ InfoLineEdit {
+ id: lineEditNameServer
+
+ fieldLayoutWidth: 300
+ fieldLayoutHeight: 29
+
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+
+ onEditingFinished: {
+ ClientWrapper.settingsAdaptor.setNameServer(text)
+ }
+ }
+ }
+ }
+
+ Item {
+ Layout.fillWidth: true
+
+ Layout.minimumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.maximumHeight: 20
+ }
+
+ ColumnLayout {
+ spacing: 6
+ Layout.fillWidth: true
+
+ Label {
+ Layout.fillWidth: true
+
+ Layout.minimumHeight: 27
+ Layout.preferredHeight: 27
+ Layout.maximumHeight: 27
+
+ text: qsTr("OpenDHT Configuration")
+ font.pointSize: 13
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ Item {
+ Layout.fillWidth: true
+
+ Layout.minimumHeight: 10
+ Layout.preferredHeight: 10
+ Layout.maximumHeight: 10
+ }
+
+ ColumnLayout {
+ spacing: 6
+ Layout.fillWidth: true
+
+ RowLayout {
+ spacing: 6
+ Layout.fillWidth: true
+ Layout.leftMargin: 20
+
+ ToggleSwitch {
+ id: checkBoxEnableProxy
+
+ labelText: qsTr("Enable proxy")
+ fontPointSize: 10
+
+ onSwitchToggled: {
+ ClientWrapper.settingsAdaptor.setEnableProxy(checked)
+ lineEditProxy.enabled = checked
+ }
+ }
+
+ Item {
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ }
+
+ InfoLineEdit {
+ id: lineEditProxy
+
+ fieldLayoutWidth: 300
+ fieldLayoutHeight: 29
+
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+
+ onEditingFinished: {
+ ClientWrapper.settingsAdaptor.setProxyAddress(text)
+ }
+ }
+ }
+
+ RowLayout {
+ spacing: 6
+ Layout.fillWidth: true
+ Layout.leftMargin: 20
+
+ Label {
+ id: labelBootstrap
+
+ Layout.minimumWidth: 72
+ Layout.preferredWidth: 72
+
+ Layout.minimumHeight: 29
+ Layout.preferredHeight: 29
+ Layout.maximumHeight: 29
+
+ text: qsTr("Bootstrap")
+ font.pointSize: 10
+ font.kerning: true
+ }
+
+ Item {
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ }
+
+ InfoLineEdit {
+ id: lineEditBootstrap
+
+ fieldLayoutWidth: 300
+ fieldLayoutHeight: 29
+
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+
+ onEditingFinished: {
+ ClientWrapper.settingsAdaptor.setBootstrapAddress(text)
+ }
+ }
+ }
+ }
+ }
+
+ ColumnLayout {
+ spacing: 6
+ Layout.fillWidth: true
+
+ Label {
+ Layout.fillWidth: true
+
+ Layout.minimumHeight: 27
+ Layout.preferredHeight: 27
+ Layout.maximumHeight: 27
+
+ text: qsTr("Security")
+ font.pointSize: 13
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ Item {
+ Layout.fillWidth: true
+
+ Layout.minimumHeight: 10
+ Layout.preferredHeight: 10
+ Layout.maximumHeight: 10
+ }
+
+ ColumnLayout {
+ spacing: 6
+ Layout.fillWidth: true
+
+ GridLayout {
+ rows: 4
+ columns: 2
+ rowSpacing: 0
+ columnSpacing: 6
+
+ Layout.fillWidth: true
+ Layout.leftMargin: 20
+
+ // CA Certificate
+ Label {
+ Layout.fillWidth: true
+
+ Layout.minimumHeight: 32
+ Layout.preferredHeight: 32
+ Layout.maximumHeight: 32
+
+ text: qsTr("CA Certificate")
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ HoverableRadiusButton {
+ id: btnCACert
+
+ radius: height / 2
+
+ Layout.minimumWidth: 298
+ Layout.preferredWidth: 298
+ Layout.maximumWidth: 298
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ icon.source: "qrc:/images/icons/round-folder-24px.svg"
+ icon.width: 16
+ icon.height: 16
+
+ onClicked: {
+ caCert_Dialog.open()
+ }
+ }
+
+ // User Certificate
+ Label {
+ Layout.fillWidth: true
+
+ Layout.minimumHeight: 32
+ Layout.preferredHeight: 32
+ Layout.maximumHeight: 32
+
+ text: qsTr("User Certificate")
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ HoverableRadiusButton {
+ id: btnUserCert
+
+ radius: height / 2
+
+ Layout.minimumWidth: 298
+ Layout.preferredWidth: 298
+ Layout.maximumWidth: 298
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ icon.source: "qrc:/images/icons/round-folder-24px.svg"
+ icon.width: 16
+ icon.height: 16
+
+ onClicked: {
+ userCert_Dialog.open()
+ }
+ }
+
+ // Private Key
+ Label {
+ Layout.fillWidth: true
+
+ Layout.minimumHeight: 32
+ Layout.preferredHeight: 32
+ Layout.maximumHeight: 32
+
+ text: qsTr("Private Key")
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ HoverableRadiusButton {
+ id: btnPrivateKey
+
+ radius: height / 2
+
+ Layout.minimumWidth: 298
+ Layout.preferredWidth: 298
+ Layout.maximumWidth: 298
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ icon.source: "qrc:/images/icons/round-folder-24px.svg"
+ icon.width: 16
+ icon.height: 16
+
+ onClicked: {
+ privateKey_Dialog.open()
+ }
+ }
+
+ // Private key password
+ Label {
+ Layout.fillWidth: true
+
+ Layout.minimumHeight: 29
+ Layout.preferredHeight: 29
+ Layout.maximumHeight: 29
+
+ text: qsTr("Private Key Password")
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ InfoLineEdit {
+ id: lineEditCertPassword
+
+ fieldLayoutWidth: 300
+ fieldLayoutHeight: 29
+
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ echoMode: TextInput.Password
+ }
+ }
+ }
+ }
+
+ Item {
+ Layout.fillWidth: true
+
+ Layout.minimumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.maximumHeight: 20
+ }
+
+ ColumnLayout {
+ spacing: 6
+ Layout.fillWidth: true
+
+ Label {
+ Layout.fillWidth: true
+ Layout.topMargin: 10
+
+ Layout.minimumHeight: 27
+ Layout.preferredHeight: 27
+ Layout.maximumHeight: 27
+
+ text: qsTr("Connectivity")
+ font.pointSize: 13
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ Item {
+ Layout.fillWidth: true
+
+ Layout.minimumHeight: 10
+ Layout.preferredHeight: 10
+ Layout.maximumHeight: 10
+ }
+
+ ColumnLayout {
+ spacing: 6
+ Layout.fillWidth: true
+
+ GridLayout {
+ Layout.leftMargin: 20
+ Layout.fillWidth: true
+
+ rows: 6
+ columns: 3
+ rowSpacing: 6
+ columnSpacing: 6
+
+ // row 2
+ ToggleSwitch {
+ id: checkAutoConnectOnLocalNetwork
+
+ Layout.row: 0
+ Layout.column: 0
+
+ labelText: qsTr("Auto Connect On Local Network")
+ fontPointSize: 10
+
+ onSwitchToggled: {
+ ClientWrapper.settingsAdaptor.setAutoConnectOnLocalNetwork(checked)
+ }
+ }
+
+ Item {
+ Layout.row: 0
+ Layout.column: 1
+
+ Layout.fillHeight: true
+
+ Layout.minimumWidth: 40
+ Layout.preferredWidth: 40
+ Layout.maximumWidth: 40
+ }
+
+ // row 2
+ ToggleSwitch {
+ id: checkBoxUPnP
+
+ Layout.row: 1
+ Layout.column: 0
+
+ labelText: qsTr("Use UPnP")
+ fontPointSize: 10
+
+ onSwitchToggled: {
+ ClientWrapper.settingsAdaptor.setUseUPnP(checked)
+ }
+ }
+
+ Item {
+ Layout.row: 1
+ Layout.column: 1
+
+ Layout.fillHeight: true
+
+ Layout.minimumWidth: 40
+ Layout.preferredWidth: 40
+ Layout.maximumWidth: 40
+ }
+
+ // row 3
+ ToggleSwitch {
+ id: checkBoxTurnEnable
+
+ Layout.row: 2
+ Layout.column: 0
+
+ labelText: qsTr("Use TURN")
+ fontPointSize: 10
+
+ onSwitchToggled: {
+ ClientWrapper.settingsAdaptor.setUseTURN(checked)
+ }
+ }
+
+ // row 4
+ Label {
+ Layout.row: 3
+ Layout.column: 0
+
+ Layout.minimumWidth: 124
+
+ Layout.minimumHeight: 27
+ Layout.preferredHeight: 27
+ Layout.maximumHeight: 27
+
+ text: qsTr("TURN Address")
+
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ InfoLineEdit {
+ id: lineEditTurnAddress
+
+ Layout.row: 3
+ Layout.column: 2
+
+ fieldLayoutWidth: 300
+ fieldLayoutHeight: 29
+
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+
+ onEditingFinished: {
+ ClientWrapper.settingsAdaptor.setTURNAddress(text)
+ }
+ }
+
+ //row 5
+ Label {
+ Layout.row: 4
+ Layout.column: 0
+
+ Layout.minimumWidth: 124
+
+ Layout.minimumHeight: 27
+ Layout.preferredHeight: 27
+ Layout.maximumHeight: 27
+
+ text: qsTr("TURN Username")
+
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ InfoLineEdit {
+ id: lineEditTurnUsername
+
+ Layout.row: 4
+ Layout.column: 2
+
+ fieldLayoutWidth: 300
+ fieldLayoutHeight: 29
+
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+
+ onEditingFinished: {
+ ClientWrapper.settingsAdaptor.setTURNUsername(text)
+ }
+ }
+
+ //row 6
+ Label {
+ Layout.row: 5
+ Layout.column: 0
+
+ Layout.minimumWidth: 124
+
+ Layout.minimumHeight: 27
+ Layout.preferredHeight: 27
+ Layout.maximumHeight: 27
+
+ text: qsTr("TURN Password")
+
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ InfoLineEdit {
+ id: lineEditTurnPassword
+ layer.mipmap: false
+
+ Layout.row: 5
+ Layout.column: 2
+
+ fieldLayoutWidth: 300
+ fieldLayoutHeight: 29
+
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ echoMode: TextInput.Password
+
+ onEditingFinished: {
+ ClientWrapper.settingsAdaptor.setTURNPassword(text)
+ }
+ }
+
+ // row 7
+ ToggleSwitch {
+ id: checkBoxSTUNEnable
+
+ Layout.row: 6
+ Layout.column: 0
+
+ labelText: qsTr("Use STUN")
+ fontPointSize: 10
+
+ onSwitchToggled: {
+ ClientWrapper.settingsAdaptor.setUseSTUN(checked)
+ lineEditSTUNAddress.enabled = checked
+ }
+ }
+
+ InfoLineEdit {
+ id: lineEditSTUNAddress
+
+ Layout.row: 6
+ Layout.column: 2
+
+ fieldLayoutWidth: 300
+ fieldLayoutHeight: 29
+
+ font.pointSize: 10
+ font.kerning: true
+
+ placeholderText: qsTr("STUN Address")
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+
+ onEditingFinished: {
+ ClientWrapper.settingsAdaptor.setSTUNAddress(text)
+ }
+ }
+ }
+ }
+ }
+
+ Item {
+ Layout.fillWidth: true
+
+ Layout.minimumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.maximumHeight: 20
+ }
+
+ ColumnLayout {
+ spacing: 6
+ Layout.fillWidth: true
+
+ Label {
+ Layout.fillWidth: true
+ Layout.topMargin: 10
+
+ Layout.minimumHeight: 27
+ Layout.preferredHeight: 27
+ Layout.maximumHeight: 27
+
+ text: qsTr("Media")
+ font.pointSize: 13
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ Item {
+ Layout.fillWidth: true
+
+ Layout.minimumHeight: 10
+ Layout.preferredHeight: 10
+ Layout.maximumHeight: 10
+ }
+
+ ColumnLayout {
+ spacing: 6
+ Layout.fillWidth: true
+
+ ToggleSwitch {
+ id: videoCheckBox
+
+ Layout.leftMargin: 20
+
+ labelText: qsTr("Enable Video")
+ fontPointSize: 10
+
+ onSwitchToggled: {
+ ClientWrapper.settingsAdaptor.setVideoState(checked)
+ }
+ }
+
+ RowLayout {
+ spacing: 6
+ Layout.fillWidth: true
+ Layout.leftMargin: 20
+
+ ColumnLayout {
+ spacing: 6
+ //Layout.fillWidth: true
+ Layout.maximumWidth: 348
+
+ RowLayout {
+ spacing: 6
+ Layout.fillWidth: true
+
+ Layout.maximumHeight: 30
+
+ Label {
+ Layout.fillWidth: true
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ text: qsTr("Video Codecs")
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ Item {
+ Layout.fillHeight: true
+
+ Layout.minimumWidth: 20
+ Layout.preferredWidth: 20
+ Layout.maximumWidth: 20
+ }
+
+ HoverableRadiusButton {
+ id: videoDownPushButton
+
+ Layout.minimumWidth: 30
+ Layout.preferredWidth: 30
+ Layout.maximumWidth: 30
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ buttonImageHeight: height
+ buttonImageWidth: height
+ radius: height / 2
+ scale: 1
+
+ font.pointSize: 9
+ font.kerning: true
+
+ icon.source: "qrc:/images/icons/round-arrow_drop_down-24px.svg"
+ icon.width: 32
+ icon.height: 32
+
+ onClicked: {
+ decreaseVideoCodecPriority()
+ }
+ }
+
+ HoverableRadiusButton {
+ id: videoUpPushButton
+
+ Layout.minimumWidth: 30
+ Layout.preferredWidth: 30
+ Layout.maximumWidth: 30
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ buttonImageHeight: height
+ buttonImageWidth: height
+ radius: height / 2
+
+ font.pointSize: 9
+ font.kerning: true
+
+ icon.source: "qrc:/images/icons/round-arrow_drop_up-24px.svg"
+ icon.width: 32
+ icon.height: 32
+
+ onClicked: {
+ increaseVideoCodecPriority()
+ }
+ }
+ }
+
+ ListViewJami {
+ id: videoListWidget
+
+ Layout.minimumWidth: 348
+ Layout.preferredWidth: 348
+ Layout.maximumWidth: 348
+
+ Layout.minimumHeight: 192
+ Layout.preferredHeight: 192
+ Layout.maximumHeight: 192
+
+ model: videoCodecListModel
+
+ delegate: VideoCodecDelegate {
+ id: videoCodecDelegate
+
+ width: videoListWidget.width
+ height: videoListWidget.height / 4
+
+ videoCodecName : VideoCodecName
+ isEnabled : IsEnabled
+ videoCodecId: VideoCodecID
+
+ onClicked: {
+ videoListWidget.currentIndex = index
+ }
+
+ onVideoCodecStateChange:{
+ ClientWrapper.settingsAdaptor.videoCodecsStateChange(idToSet , isToBeEnabled)
+ updateVideoCodecs()
+ }
+ }
+ }
+ }
+
+ ColumnLayout {
+ spacing: 6
+ Layout.maximumWidth: 348
+
+ RowLayout {
+ spacing: 6
+ Layout.fillWidth: true
+
+ Layout.maximumHeight: 30
+
+ Label {
+ Layout.fillWidth: true
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ text: qsTr("Audio Codecs")
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ Item {
+ Layout.fillHeight: true
+
+ Layout.minimumWidth: 20
+ Layout.preferredWidth: 20
+ Layout.maximumWidth: 20
+ }
+
+ HoverableRadiusButton {
+ id: audioDownPushButton
+
+ Layout.minimumWidth: 30
+ Layout.preferredWidth: 30
+ Layout.maximumWidth: 30
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ radius: height / 2
+ buttonImageHeight: height
+ buttonImageWidth: height
+
+ font.pointSize: 9
+ font.kerning: true
+
+ icon.source: "qrc:/images/icons/round-arrow_drop_down-24px.svg"
+ icon.width: 32
+ icon.height: 32
+
+ onClicked: {
+ decreaseAudioCodecPriority()
+ }
+ }
+
+ HoverableRadiusButton {
+ id: audioUpPushButton
+
+ Layout.minimumWidth: 30
+ Layout.preferredWidth: 30
+ Layout.maximumWidth: 30
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ buttonImageHeight: height
+ buttonImageWidth: height
+
+ radius: height / 2
+
+ font.pointSize: 9
+ font.kerning: true
+
+ icon.source: "qrc:/images/icons/round-arrow_drop_up-24px.svg"
+ icon.width: 32
+ icon.height: 32
+
+ onClicked: {
+ increaseAudioCodecPriority()
+ }
+ }
+ }
+
+ ListViewJami {
+ id: audioListWidget
+
+ Layout.minimumWidth: 348
+ Layout.preferredWidth: 348
+ Layout.maximumWidth: 348
+
+ Layout.minimumHeight: 192
+ Layout.preferredHeight: 192
+ Layout.maximumHeight: 192
+
+ model: audioCodecListModel
+
+ delegate: AudioCodecDelegate {
+ id: audioCodecDelegate
+
+ width: audioListWidget.width
+ height: audioListWidget.height / 4
+
+ layer.mipmap: false
+ clip: true
+
+ audioCodecName : AudioCodecName
+ isEnabled : IsEnabled
+ audioCodecId: AudioCodecID
+ samplerRate: Samplerate
+
+ onClicked: {
+ audioListWidget.currentIndex = index
+ }
+
+ onAudioCodecStateChange:{
+ ClientWrapper.settingsAdaptor.audioCodecsStateChange(idToSet , isToBeEnabled)
+ updateAudioCodecs()
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ Item {
+ Layout.fillWidth: true
+
+ Layout.minimumHeight: 48
+ Layout.preferredHeight: 48
+ Layout.maximumHeight: 48
+ }
+}
diff --git a/src/settingsview/components/AudioCodecDelegate.qml b/src/settingsview/components/AudioCodecDelegate.qml
new file mode 100644
index 0000000..9f80a2e
--- /dev/null
+++ b/src/settingsview/components/AudioCodecDelegate.qml
@@ -0,0 +1,102 @@
+/*
+ * Copyright (C) 2019-2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+import QtQuick 2.15
+import QtQuick.Window 2.15
+import QtQuick.Controls 2.15
+import QtQuick.Controls.Universal 2.12
+import QtQuick.Layouts 1.3
+import QtGraphicalEffects 1.14
+import QtQuick.Controls.Styles 1.4
+import net.jami.Models 1.0
+
+ItemDelegate {
+ id: videoCodecDelegate
+
+ property string audioCodecName : ""
+ property bool isEnabled : false
+ property int audioCodecId
+ property string samplerRate: ""
+
+ signal audioCodecStateChange(string idToSet , bool isToBeEnabled)
+
+ property int checkBoxWidth: 10
+
+ highlighted: ListView.isCurrentItem
+
+ RowLayout{
+ anchors.fill: parent
+ z: 1
+
+ spacing: 10
+
+ CheckBox{
+ id: checkBoxIsEnabled
+
+ Layout.leftMargin: 20
+
+ Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
+ Layout.fillHeight: true
+
+ Layout.minimumWidth: checkBoxWidth
+ Layout.preferredWidth: checkBoxWidth
+ Layout.maximumWidth: checkBoxWidth
+
+ tristate: false
+ checkState: isEnabled ? Qt.Checked : Qt.Unchecked
+
+ indicator.implicitWidth: checkBoxWidth
+ indicator.implicitHeight:checkBoxWidth
+
+ indicator.layer.textureSize.width: checkBoxWidth
+ indicator.layer.textureSize.height: checkBoxWidth
+
+ text: ""
+
+ nextCheckState: function() {
+ var result
+ var result_bool
+
+ if (checkState === Qt.Checked){
+ result = Qt.Unchecked
+ result_bool = false
+ } else {
+ result = Qt.Checked
+ result_bool = true
+ }
+ audioCodecStateChange(audioCodecId,result_bool)
+ return result
+ }
+ }
+
+ Label{
+ id: formatNameLabel
+
+ Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+
+ text: audioCodecName + " " + samplerRate + " Hz"
+ font.pointSize: 8
+ font.kerning: true
+ }
+ }
+}
diff --git a/src/settingsview/components/AvSettingPage.qml b/src/settingsview/components/AvSettingPage.qml
new file mode 100644
index 0000000..a999e32
--- /dev/null
+++ b/src/settingsview/components/AvSettingPage.qml
@@ -0,0 +1,832 @@
+/*
+ * Copyright (C) 2019-2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+import QtQuick 2.15
+import QtQuick.Window 2.14
+import QtQuick.Controls 2.15
+import QtQuick.Controls.Universal 2.12
+import QtQuick.Layouts 1.3
+import QtGraphicalEffects 1.14
+import QtQuick.Controls.Styles 1.4
+import net.jami.Models 1.0
+
+Rectangle {
+ id: avSettingPage
+
+ AudioInputDeviceModel{
+ id: audioInputDeviceModel
+ }
+
+ AudioOutputDeviceModel{
+ id: audioOutputDeviceModel
+ }
+
+ AudioManagerListModel{
+ id: audioManagerListModel
+ }
+
+ VideoInputDeviceModel{
+ id: videoInputDeviceModel
+ }
+
+ VideoFormatResolutionModel{
+ id: videoFormatResolutionModel
+ }
+
+ VideoFormatFpsModel{
+ id: videoFormatFpsModel
+ }
+
+ function populateAVSettings(){
+ audioInputDeviceModel.reset()
+ audioOutputDeviceModel.reset()
+
+ inputComboBox.currentIndex = audioInputDeviceModel.getCurrentSettingIndex()
+ outputComboBox.currentIndex = audioOutputDeviceModel.getCurrentSettingIndex()
+ ringtoneDeviceComboBox.currentIndex = audioOutputDeviceModel.getCurrentRingtoneDeviceIndex()
+
+ audioManagerRowLayout.visible = (audioManagerListModel.rowCount() > 0)
+ if(audioManagerListModel.rowCount() > 0){
+ audioManagerComboBox.currentIndex = audioManagerListModel.getCurrentSettingIndex()
+ }
+
+ populateVideoSettings()
+ var encodeAccel = ClientWrapper.avmodel.getHardwareAcceleration()
+ hardwareAccelControl.checked = encodeAccel
+ }
+
+ function populateVideoSettings() {
+ videoInputDeviceModel.reset()
+
+ deviceBox.enabled = (videoInputDeviceModel.deviceCount() > 0)
+ resolutionBox.enabled = (videoInputDeviceModel.deviceCount() > 0)
+ fpsBox.enabled = (videoInputDeviceModel.deviceCount() > 0)
+ labelVideoDevice.enabled = (videoInputDeviceModel.deviceCount() > 0)
+ labelVideoResolution.enabled = (videoInputDeviceModel.deviceCount() > 0)
+ labelVideoFps.enabled = (videoInputDeviceModel.deviceCount() > 0)
+
+ deviceBox.currentIndex = videoInputDeviceModel.getCurrentSettingIndex()
+ slotDeviceBoxCurrentIndexChanged(deviceBox.currentIndex)
+
+ try{
+ startPreviewing(false)
+ } catch (err2){ console.log("Start preview fail when populate video settings, exception: "+ err2.message)}
+
+ }
+
+ function setFormatListForCurrentDevice(){
+ var device = ClientWrapper.avmodel.getCurrentVideoCaptureDevice()
+ if(ClientWrapper.settingsAdaptor.get_DeviceCapabilitiesSize(device) === 0){
+ return
+ }
+
+ try{
+ videoFormatResolutionModel.reset()
+ resolutionBox.currentIndex = videoFormatResolutionModel.getCurrentSettingIndex()
+ slotFormatCurrentIndexChanged(resolutionBox.currentIndex,true)
+ } catch(err){console.warn("Exception: " + err.message)}
+ }
+
+ function startPreviewing(force = false){
+ ClientWrapper.accountAdaptor.startPreviewing(force)
+ previewAvailable = true
+ }
+
+ function stopPreviewing(){
+ ClientWrapper.accountAdaptor.stopPreviewing()
+ }
+
+ function startAudioMeter(async = true){
+ audioInputMeter.start()
+ ClientWrapper.accountAdaptor.startAudioMeter(async)
+ }
+
+ function stopAudioMeter(async = true){
+ audioInputMeter.stop()
+ ClientWrapper.accountAdaptor.stopAudioMeter(async)
+ }
+
+ // slots for av page
+ function slotAudioMeter(id, level){
+ if (id === "audiolayer_id") {
+ audioInputMeter.setLevel(level)
+ }
+ }
+
+ function slotSetHardwareAccel(state){
+ ClientWrapper.accountAdaptor.avModel().setHardwareAcceleration(state)
+ startPreviewing(true)
+ }
+
+ function slotAudioManagerIndexChanged(index){
+ stopAudioMeter(false)
+ var selectedAudioManager = audioManagerListModel.data(audioManagerListModel.index(
+ index, 0), AudioManagerListModel.AudioManagerID)
+ ClientWrapper.avmodel.setAudioManager(selectedAudioManager)
+ startAudioMeter(false)
+ }
+
+ function slotRingtoneDeviceIndexChanged(index){
+ stopAudioMeter(false)
+ var selectedRingtoneDeviceName = audioOutputDeviceModel.data(audioOutputDeviceModel.index(
+ index, 0), AudioOutputDeviceModel.Device_ID)
+ ClientWrapper.avmodel.setRingtoneDevice(selectedRingtoneDeviceName)
+ startAudioMeter(false)
+ }
+
+ function slotAudioOutputIndexChanged(index){
+ stopAudioMeter(false)
+ var selectedOutputDeviceName = audioOutputDeviceModel.data(audioOutputDeviceModel.index(
+ index, 0), AudioOutputDeviceModel.Device_ID)
+ ClientWrapper.avmodel.setOutputDevice(selectedOutputDeviceName)
+ startAudioMeter(false)
+ }
+
+ function slotAudioInputIndexChanged(index){
+ stopAudioMeter(false)
+ var selectedInputDeviceName = audioInputDeviceModel.data(audioInputDeviceModel.index(
+ index, 0), AudioInputDeviceModel.Device_ID)
+
+ ClientWrapper.avmodel.setInputDevice(selectedInputDeviceName)
+ startAudioMeter(false)
+ }
+
+ function slotDeviceBoxCurrentIndexChanged(index){
+ if(videoInputDeviceModel.deviceCount() <= 0){
+ return
+ }
+
+ try{
+ var deviceId = videoInputDeviceModel.data(videoInputDeviceModel.index(
+ index, 0), VideoInputDeviceModel.DeviceId)
+ var deviceName = videoInputDeviceModel.data(videoInputDeviceModel.index(
+ index, 0), VideoInputDeviceModel.DeviceName)
+ if(deviceId.length === 0){
+ console.warn("Couldn't find device: " + deviceName)
+ return
+ }
+
+ ClientWrapper.avmodel.setCurrentVideoCaptureDevice(deviceId)
+ ClientWrapper.avmodel.setDefaultDevice(deviceId)
+ setFormatListForCurrentDevice()
+ startPreviewing(true)
+ } catch(err){console.warn(err.message)}
+ }
+
+ function slotFormatCurrentIndexChanged(index, isResolutionIndex){
+ var resolution
+ var rate
+ if(isResolutionIndex){
+ resolution = videoFormatResolutionModel.data(videoFormatResolutionModel.index(
+ index, 0), VideoFormatResolutionModel.Resolution)
+ videoFormatFpsModel.currentResolution = resolution
+ fpsBox.currentIndex = videoFormatFpsModel.getCurrentSettingIndex()
+ rate = videoFormatFpsModel.data(videoFormatFpsModel.index(
+ fpsBox.currentIndex, 0), VideoFormatFpsModel.FPS)
+ } else {
+ resolution = videoFormatResolutionModel.data(videoFormatResolutionModel.index(
+ resolutionBox.currentIndex, 0), VideoFormatResolutionModel.Resolution)
+ videoFormatFpsModel.currentResolution = resolution
+ rate = videoFormatFpsModel.data(videoFormatFpsModel.index(
+ index, 0), VideoFormatFpsModel.FPS)
+ }
+
+ try{
+ ClientWrapper.settingsAdaptor.set_Video_Settings_Rate_And_Resolution(ClientWrapper.avmodel.getCurrentVideoCaptureDevice(),rate,resolution)
+ } catch(error){console.warn(error.message)}
+ }
+
+ function slotVideoDeviceListChanged(){
+ populateVideoSettings()
+ }
+
+ property bool previewAvailable: false
+
+ Connections{
+ target: ClientWrapper.avmodel
+
+ function onAudioMeter(id, level){
+ slotAudioMeter(id,level)
+ }
+ }
+
+ Connections{
+ target: ClientWrapper.renderManager
+
+ function onVideoDeviceListChanged(){
+ slotVideoDeviceListChanged()
+ }
+ }
+
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+
+ ScrollView{
+ anchors.fill: parent
+ clip: true
+
+ RowLayout {
+ width: avSettingPage.width
+ height: avSettingPage.height
+
+ spacing: 0
+ Item {
+ Layout.fillHeight: true
+ Layout.maximumWidth: 48
+ Layout.preferredWidth: 48
+ Layout.minimumWidth: 48
+ }
+
+ ColumnLayout {
+ spacing: 7
+
+ Layout.fillHeight: true
+ Layout.maximumWidth: 580
+ Layout.preferredWidth: 580
+ Layout.minimumWidth: 580
+
+ Item {
+ Layout.fillWidth: true
+ Layout.minimumHeight: 10
+ Layout.preferredHeight: 10
+ Layout.maximumHeight: 10
+ }
+
+ Label {
+ Layout.fillWidth: true
+ Layout.minimumHeight: 25
+ Layout.preferredHeight: 25
+ Layout.maximumHeight: 25
+
+ text: qsTr("Audio / Video")
+ font.pointSize: 15
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ Item {
+ Layout.fillWidth: true
+ Layout.minimumHeight: 24
+ Layout.preferredHeight: 24
+ Layout.maximumHeight: 24
+ }
+
+ ColumnLayout {
+ spacing: 0
+ Layout.fillWidth: true
+
+ Label {
+ Layout.fillWidth: true
+ Layout.minimumHeight: 21
+ Layout.preferredHeight: 21
+ Layout.maximumHeight: 21
+
+ text: qsTr("Audio")
+ font.pointSize: 13
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ Item {
+ Layout.fillWidth: true
+ Layout.minimumHeight: 10
+ Layout.preferredHeight: 10
+ Layout.maximumHeight: 10
+ }
+
+ ColumnLayout {
+ spacing: 7
+ Layout.fillWidth: true
+
+ RowLayout {
+ spacing: 7
+ Layout.leftMargin: 20
+ Layout.fillWidth: true
+ Layout.maximumHeight: 30
+
+ Label {
+ Layout.maximumWidth: 77
+ Layout.preferredWidth: 77
+ Layout.minimumWidth: 77
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ text: qsTr("Microphone")
+ font.pointSize: 11
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ Item {
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ }
+
+ SettingParaCombobox {
+ id: inputComboBox
+
+ Layout.maximumWidth: 360
+ Layout.preferredWidth: 360
+ Layout.minimumWidth: 360
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ font.pointSize: 10
+ font.kerning: true
+
+ model: audioInputDeviceModel
+
+ textRole: "ID_UTF8"
+
+ onActivated: {
+ slotAudioInputIndexChanged(index)
+ }
+ }
+ }
+
+ // the audio level meter
+ LevelMeter {
+ id: audioInputMeter
+
+ Layout.leftMargin: 20
+
+ Layout.fillWidth: true
+
+ Layout.minimumHeight: 10
+ Layout.preferredHeight: 10
+ Layout.maximumHeight: 10
+
+ indeterminate: false
+ from: 0
+ to: 100
+ }
+
+ Item {
+ Layout.fillWidth: true
+
+ Layout.minimumHeight: 5
+ Layout.preferredHeight: 5
+ Layout.maximumHeight: 5
+ }
+
+ RowLayout {
+ spacing: 7
+ Layout.leftMargin: 20
+ Layout.fillWidth: true
+ Layout.maximumHeight: 30
+
+ Label {
+ Layout.maximumWidth: 95
+ Layout.preferredWidth: 95
+ Layout.minimumWidth: 95
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ text: qsTr("Output Device")
+ font.pointSize: 11
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ Item {
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ }
+
+ SettingParaCombobox {
+ id: outputComboBox
+
+ Layout.maximumWidth: 360
+ Layout.preferredWidth: 360
+ Layout.minimumWidth: 360
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ font.pointSize: 10
+ font.kerning: true
+
+ model: audioOutputDeviceModel
+
+ textRole: "ID_UTF8"
+
+ onActivated: {
+ slotAudioOutputIndexChanged(index)
+ }
+ }
+ }
+
+ RowLayout {
+ spacing: 7
+ Layout.leftMargin: 20
+ Layout.fillWidth: true
+ Layout.maximumHeight: 30
+
+ Label {
+ Layout.maximumWidth: 77
+ Layout.preferredWidth: 77
+ Layout.minimumWidth: 77
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ text: qsTr("Ringtone Device")
+ font.pointSize: 11
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ Item {
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ }
+
+ SettingParaCombobox {
+ id: ringtoneDeviceComboBox
+
+ Layout.maximumWidth: 360
+ Layout.preferredWidth: 360
+ Layout.minimumWidth: 360
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ font.pointSize: 10
+ font.kerning: true
+
+ model: audioOutputDeviceModel
+
+ textRole: "ID_UTF8"
+
+ onActivated: {
+ slotRingtoneDeviceIndexChanged(index)
+ }
+ }
+ }
+
+ RowLayout {
+ id: audioManagerRowLayout
+
+ spacing: 7
+ Layout.leftMargin: 20
+ Layout.fillWidth: true
+ Layout.maximumHeight: 30
+
+ Label {
+ Layout.maximumWidth: 77
+ Layout.preferredWidth: 77
+ Layout.minimumWidth: 77
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ text: qsTr("Audio Manager")
+ font.pointSize: 11
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ Item {
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ }
+
+ SettingParaCombobox {
+ id: audioManagerComboBox
+
+ Layout.maximumWidth: 360
+ Layout.preferredWidth: 360
+ Layout.minimumWidth: 360
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ font.pointSize: 10
+ font.kerning: true
+
+ model: audioManagerListModel
+
+ textRole: "ID_UTF8"
+
+ onActivated: {
+ slotAudioManagerIndexChanged(index)
+ }
+ }
+ }
+ }
+ }
+
+ Item {
+ Layout.fillWidth: true
+
+ Layout.minimumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.maximumHeight: 20
+ }
+
+ ColumnLayout {
+ spacing: 7
+ Layout.fillWidth: true
+
+ Label {
+ Layout.fillWidth: true
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ text: qsTr("Video")
+ font.pointSize: 13
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ Item {
+ Layout.fillWidth: true
+
+ Layout.minimumHeight: 10
+ Layout.preferredHeight: 10
+ Layout.maximumHeight: 10
+ }
+
+ ColumnLayout {
+ spacing: 6
+ RowLayout {
+ spacing: 7
+ Layout.fillWidth: true
+ Layout.leftMargin: 20
+ Layout.maximumHeight: 30
+
+ Label {
+ id: labelVideoDevice
+
+ Layout.maximumWidth: 44
+ Layout.preferredWidth: 44
+ Layout.minimumWidth: 44
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ text: qsTr("Device")
+ font.pointSize: 11
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ Item {
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ }
+
+ SettingParaCombobox {
+ id: deviceBox
+
+ Layout.maximumWidth: 360
+ Layout.preferredWidth: 360
+ Layout.minimumWidth: 360
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ font.pointSize: 10
+ font.kerning: true
+
+ model: videoInputDeviceModel
+
+ textRole: "DeviceName_UTF8"
+
+ onActivated: {
+ slotDeviceBoxCurrentIndexChanged(index)
+ }
+ }
+ }
+
+ RowLayout {
+ spacing: 7
+ Layout.fillWidth: true
+ Layout.leftMargin: 20
+ Layout.maximumHeight: 30
+
+ Label {
+ id: labelVideoResolution
+
+ Layout.maximumWidth: 47
+ Layout.preferredWidth: 47
+ Layout.minimumWidth: 47
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ text: qsTr("Resolution")
+ font.pointSize: 11
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ Item {
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ }
+
+ SettingParaCombobox {
+ id: resolutionBox
+
+ Layout.maximumWidth: 360
+ Layout.preferredWidth: 360
+ Layout.minimumWidth: 360
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ font.pointSize: 10
+ font.kerning: true
+
+ model: videoFormatResolutionModel
+ textRole: "Resolution_UTF8"
+
+ onActivated: {
+ slotFormatCurrentIndexChanged(index,true)
+ }
+ }
+ }
+
+ RowLayout {
+ spacing: 7
+ Layout.fillWidth: true
+ Layout.leftMargin: 20
+ Layout.maximumHeight: 30
+
+ Label {
+ id: labelVideoFps
+
+ Layout.maximumWidth: 47
+ Layout.preferredWidth: 47
+ Layout.minimumWidth: 47
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ text: qsTr("Fps")
+ font.pointSize: 11
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ Item {
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ }
+
+ SettingParaCombobox {
+ id: fpsBox
+
+ Layout.maximumWidth: 360
+ Layout.preferredWidth: 360
+ Layout.minimumWidth: 360
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ font.pointSize: 10
+ font.kerning: true
+
+ model: videoFormatFpsModel
+ textRole: "FPS_ToDisplay_UTF8"
+
+ onActivated: {
+ slotFormatCurrentIndexChanged(index,false)
+ }
+ }
+ }
+ }
+ }
+
+ Item {
+ Layout.fillWidth: true
+ Layout.minimumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.maximumHeight: 20
+ }
+
+ RowLayout{
+ Layout.alignment: Qt.AlignHCenter
+
+ Layout.preferredWidth: 580
+ Layout.minimumWidth: 580
+
+ Layout.minimumHeight: 224
+ Layout.preferredHeight: 224
+ Layout.maximumHeight: 224
+
+ Rectangle {
+ Layout.alignment: Qt.AlignHCenter
+ Layout.fillHeight: true
+ Layout.minimumWidth: 580
+
+ color: "black"
+
+ PreviewRenderer{
+ id: peviewWidget
+
+ visible: previewAvailable
+ height: parent.height
+ width: 224
+ x: (parent.width - width) /2
+ y: 0
+ }
+ }
+ }
+
+ Label {
+ visible: !previewAvailable
+
+ Layout.fillWidth: true
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ text: qsTr("Preview unavailable")
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ // Toggle switch to enable hardware acceleration
+ ToggleSwitch {
+ id: hardwareAccelControl
+
+ labelText: "Enable hardware acceleration"
+
+ onSwitchToggled: {
+ slotSetHardwareAccel(checked)
+ }
+ }
+
+ Item {
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ }
+ }
+
+ Item {
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ }
+ }
+
+ }
+}
diff --git a/src/settingsview/components/BannedItemDelegate.qml b/src/settingsview/components/BannedItemDelegate.qml
new file mode 100644
index 0000000..980d539
--- /dev/null
+++ b/src/settingsview/components/BannedItemDelegate.qml
@@ -0,0 +1,206 @@
+/*
+ * Copyright (C) 2019-2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+import QtQuick 2.15
+import QtQuick.Window 2.15
+import QtQuick.Controls 2.15
+import QtQuick.Controls.Universal 2.12
+import QtQuick.Layouts 1.3
+import QtGraphicalEffects 1.14
+import QtQuick.Controls.Styles 1.4
+import net.jami.Models 1.0
+
+import "../../commoncomponents"
+
+ItemDelegate {
+ id: deviceItemDelegate
+
+ property string contactName : ""
+ property string contactID: ""
+ property string contactPicture_base64:""
+
+ signal btnReAddContactClicked
+
+ function btnReAddContactEnter(){
+ btnReAddContact.enterBtn()
+ }
+
+ function btnReAddContactExit(){
+ btnReAddContact.exitBtn()
+ }
+
+ function btnReAddContactPress(){
+ btnReAddContact.pressBtn()
+ }
+
+ function btnReAddContactRelease(){
+ btnReAddContact.releaseBtn()
+ }
+
+ highlighted: ListView.isCurrentItem
+
+ RowLayout{
+ anchors.fill: parent
+
+ spacing: 7
+
+ Label{
+ id: labelContactAvatar
+
+ Layout.alignment: Qt.AlignVCenter
+
+ Layout.leftMargin: 7
+ Layout.topMargin: 7
+ Layout.bottomMargin: 7
+
+ Layout.minimumWidth: 48
+ Layout.preferredWidth: 48
+ Layout.maximumWidth: 48
+
+ Layout.minimumHeight: 48
+ Layout.preferredHeight: 48
+ Layout.maximumHeight: 48
+
+ background: Rectangle{
+ anchors.fill: parent
+ color: "transparent"
+ Image {
+ id: avatarImg
+
+ anchors.fill: parent
+ source: "data:image/png;base64," + contactPicture_base64
+ fillMode: Image.PreserveAspectCrop
+ layer.enabled: true
+ layer.effect: OpacityMask {
+ maskSource: Rectangle{
+ width: avatarImg.width
+ height: avatarImg.height
+ radius: {
+ var size = ((avatarImg.width <= avatarImg.height)? avatarImg.width:avatarImg.height)
+ return size /2
+ }
+ }
+ }
+ }
+ }
+ }
+
+ Item{
+ Layout.minimumWidth: 8
+ Layout.preferredWidth: 8
+ Layout.maximumWidth: 8
+
+ Layout.minimumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.maximumHeight: 20
+ }
+
+ ColumnLayout{
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+
+ Layout.topMargin: 7
+ Layout.bottomMargin: 7
+
+ Layout.alignment: Qt.AlignVCenter
+
+ spacing: 7
+
+ Label{
+ id: labelContactName
+
+ Layout.fillWidth: true
+ Layout.minimumWidth: 0
+ Layout.maximumWidth: 16777215
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ font.pointSize: 8
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+
+ text: contactName === "" ? qsTr("name") : contactName
+ }
+
+ Label{
+ id: labelContactId
+
+ Layout.fillWidth: true
+ Layout.minimumWidth: 0
+ Layout.maximumWidth: 16777215
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ font.pointSize: 8
+ font.kerning: true
+
+ horizontalAlignment: Qt.AlignLeft
+ verticalAlignment: Qt.AlignVCenter
+
+ text: contactID === "" ? qsTr("id") : contactID
+ }
+ }
+
+ HoverableRadiusButton{
+ id: btnReAddContact
+
+ Layout.topMargin: 7
+ Layout.bottomMargin: 7
+
+ Layout.minimumWidth: 30
+ Layout.preferredWidth: 30
+ Layout.maximumWidth: 30
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ font.pointSize: 8
+ font.kerning: true
+
+ buttonImageHeight: height
+ buttonImageWidth: height
+
+ source:"qrc:/images/icons/ic_person_add_black_24dp_2x.png"
+
+ ToolTip.visible: isHovering
+ ToolTip.text: qsTr("Add as contact")
+
+ onClicked: {
+ btnReAddContactClicked()
+ }
+ }
+
+ Item{
+ Layout.rightMargin: 7
+
+ Layout.minimumWidth: 8
+ Layout.preferredWidth: 8
+ Layout.maximumWidth: 8
+
+ Layout.minimumHeight: 20
+ }
+ }
+}
+
diff --git a/src/settingsview/components/CurrentAccountSettingsScrollPage.qml b/src/settingsview/components/CurrentAccountSettingsScrollPage.qml
new file mode 100644
index 0000000..b3d4392
--- /dev/null
+++ b/src/settingsview/components/CurrentAccountSettingsScrollPage.qml
@@ -0,0 +1,1376 @@
+/*
+ * Copyright (C) 2019-2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+import QtQuick 2.15
+import QtQuick.Window 2.14
+import QtQuick.Controls 2.14
+import QtQuick.Controls.Universal 2.12
+import QtQuick.Layouts 1.3
+import QtGraphicalEffects 1.14
+import QtQuick.Controls.Styles 1.4
+import QtQuick.Dialogs 1.3
+import Qt.labs.platform 1.1
+import net.jami.Models 1.0
+
+import "../../commoncomponents"
+
+Rectangle {
+ id: accountViewRect
+
+ enum RegName {
+ BLANK,
+ INVALIDFORM,
+ TAKEN,
+ FREE,
+ SEARCHING
+ }
+
+ property int regNameUi: CurrentAccountSettingsScrollPage.BLANK
+ property string registeredName: ""
+ property bool registeredIdNeedsSet: false
+
+ property int refreshVariable : 0
+
+ signal navigateToMainView
+ signal navigateToNewWizardView
+
+ function refreshRelevantUI(){
+ refreshVariable++
+ refreshVariable--
+ }
+
+ Connections {
+ id: btnRegisterNameClickConnection
+ target: btnRegisterName
+
+ enabled: {
+ refreshVariable
+ switch (regNameUi) {
+ case CurrentAccountSettingsScrollPage.FREE:
+ return true
+ default:
+ return false
+ }
+ }
+
+ function onClicked() {
+ slotRegisterName()
+ }
+ }
+
+ function updateAccountInfoDisplayed() {
+ setAvatar()
+
+ accountEnableCheckBox.checked = ClientWrapper.settingsAdaptor.get_CurrentAccountInfo_Enabled()
+ displayNameLineEdit.text = ClientWrapper.settingsAdaptor.getCurrentAccount_Profile_Info_Alias()
+
+ var showLocalAccountConfig = (ClientWrapper.settingsAdaptor.getAccountConfig_Manageruri() === "")
+ passwdPushButton.visible = showLocalAccountConfig
+ btnExportAccount.visible = showLocalAccountConfig
+ linkDevPushButton.visible = showLocalAccountConfig
+
+ registeredIdNeedsSet = (ClientWrapper.settingsAdaptor.get_CurrentAccountInfo_RegisteredName() === "")
+
+ if(!registeredIdNeedsSet){
+ currentRegisteredID.text = ClientWrapper.settingsAdaptor.get_CurrentAccountInfo_RegisteredName()
+ } else {
+ currentRegisteredID.text = ""
+ }
+
+ currentRingID.text = ClientWrapper.settingsAdaptor.getCurrentAccount_Profile_Info_Uri()
+
+ // update device list view
+ updateAndShowDevicesSlot()
+
+ bannedContactsListWidget.visible = false
+ bannedContactsLayoutWidget.visible = (bannedListModel.rowCount() > 0)
+
+ if (advanceSettingsView.visible) {
+ advanceSettingsView.updateAccountInfoDisplayedAdvance()
+ }
+ refreshRelevantUI()
+ }
+
+ function connectCurrentAccount() {
+ accountConnections_ContactModel.enabled = true
+ accountConnections_DeviceModel.enabled = true
+ }
+
+ function disconnectAccountConnections() {
+ accountConnections_ContactModel.enabled = false
+ accountConnections_DeviceModel.enabled = false
+ }
+
+ function isPhotoBoothOpened() {
+ return currentAccountAvatar.takePhotoState
+ }
+
+ function setAvatar() {
+ currentAccountAvatar.setAvatarPixmap(
+ ClientWrapper.settingsAdaptor.getAvatarImage_Base64(
+ currentAccountAvatar.boothWidht),
+ ClientWrapper.settingsAdaptor.getIsDefaultAvatar())
+ }
+
+ function stopBooth() {
+ currentAccountAvatar.stopBooth()
+ }
+
+ function toggleBannedContacts(){
+ var bannedContactsVisible = bannedContactsListWidget.visible
+ bannedContactsListWidget.visible = !bannedContactsVisible
+ updateAndShowBannedContactsSlot()
+ }
+
+ function unban(index){
+ ClientWrapper.settingsAdaptor.unbanContact(index)
+ updateAndShowBannedContactsSlot()
+ }
+
+ Connections {
+ id: accountConnections_ContactModel
+ target: ClientWrapper.contactModel
+
+ function onModelUpdated(uri, needsSorted) {
+ updateAndShowBannedContactsSlot()
+ }
+
+ function onContactAdded(contactUri){
+ updateAndShowBannedContactsSlot()
+ }
+
+ function onContactRemoved(contactUri){
+ updateAndShowBannedContactsSlot()
+ }
+ }
+
+ Connections {
+ id: accountConnections_DeviceModel
+ target: ClientWrapper.deviceModel
+
+ function onDeviceAdded(id) {
+ updateAndShowDevicesSlot()
+ }
+
+ function onDeviceRevoked(id, status) {
+ updateAndShowDevicesSlot()
+ }
+
+ function onDeviceUpdated(id) {
+ updateAndShowDevicesSlot()
+ }
+ }
+
+ // slots
+ function verifyRegisteredNameSlot() {
+ if (ClientWrapper.settingsAdaptor.get_CurrentAccountInfo_RegisteredName() !== "") {
+ regNameUi = CurrentAccountSettingsScrollPage.BLANK
+ } else {
+ registeredName = ClientWrapper.utilsAdaptor.stringSimplifier(
+ currentRegisteredID.text)
+ if (registeredName !== "") {
+ if (ClientWrapper.utilsAdaptor.validateRegNameForm(registeredName)) {
+ regNameUi = CurrentAccountSettingsScrollPage.SEARCHING
+ lookUpLabelTimer.restart()
+ } else {
+ regNameUi = CurrentAccountSettingsScrollPage.INVALIDFORM
+ }
+ } else {
+ regNameUi = CurrentAccountSettingsScrollPage.BLANK
+ }
+ }
+ }
+
+ Timer {
+ id: lookUpLabelTimer
+
+ interval: 300
+ onTriggered: {
+ beforeNameLookup()
+ }
+ }
+
+ function beforeNameLookup() {
+ ClientWrapper.nameDirectory.lookupName("", registeredName)
+ }
+
+ Connections {
+ target: ClientWrapper.nameDirectory
+ enabled: true
+
+ function onRegisteredNameFound(status, address, name) {
+ afterNameLookup(status, name)
+ }
+ }
+
+ function afterNameLookup(status, regName) {
+ if (registeredName === regName && regName.length > 2) {
+ switch (status) {
+ case NameDirectory.LookupStatus.NOT_FOUND:
+ regNameUi = CurrentAccountSettingsScrollPage.FREE
+ break
+ default:
+ regNameUi = CurrentAccountSettingsScrollPage.TAKEN
+ break
+ }
+ } else {
+ regNameUi = CurrentAccountSettingsScrollPage.BLANK
+ }
+ }
+
+ function setAccEnableSlot(state) {
+ ClientWrapper.accountModel.setAccountEnabled(ClientWrapper.utilsAdaptor.getCurrAccId(), state)
+ }
+
+ /*
+ * JamiFileDialog for exporting account
+ */
+ JamiFileDialog {
+ id: exportBtn_Dialog
+
+ mode: JamiFileDialog.SaveFile
+
+ title: qsTr("Export Account Here")
+ folder: StandardPaths.writableLocation(StandardPaths.DesktopLocation)
+
+ nameFilters: [qsTr("Jami archive files") + " (*.gz)", qsTr(
+ "All files") + " (*)"]
+
+ onAccepted: {
+ // is there password? If so, go to password dialog, else, go to following directly
+ var exportPath = ClientWrapper.utilsAdaptor.getAbsPath(file.toString())
+ if (ClientWrapper.accountAdaptor.hasPassword()) {
+ passwordDialog.openDialog(PasswordDialog.ExportAccount,exportPath)
+ return
+ } else {
+ if (exportPath.length > 0) {
+ var isSuccessful = ClientWrapper.accountAdaptor.accoundModel().exportToFile(ClientWrapper.utilsAdaptor.getCurrAccId(), exportPath,"")
+ var title = isSuccessful ? qsTr("Success") : qsTr("Error")
+ var iconMode = isSuccessful ? StandardIcon.Information : StandardIcon.Critical
+ var info = isSuccessful ? qsTr("Export Successful") : qsTr("Export Failed")
+ msgDialog.openWithParameters(title,info, iconMode, StandardButton.Ok)
+ }
+ }
+ }
+
+ onRejected: {}
+
+ onVisibleChanged: {
+ if (!visible) {
+ rejected()
+ }
+ }
+ }
+
+ function exportAccountSlot() {
+ exportBtn_Dialog.open()
+ }
+
+ PasswordDialog {
+ id: passwordDialog
+
+ onDoneSignal: {
+ var success = (code === successCode)
+ var title = success ? qsTr("Success") : qsTr("Error")
+ var iconMode = success ? StandardIcon.Information : StandardIcon.Critical
+
+ var info
+ switch(currentPurpose){
+ case PasswordDialog.ExportAccount:
+ info = success ? qsTr("Export Successful") : qsTr("Export Failed")
+ break
+ case PasswordDialog.ChangePassword:
+ info = success ? qsTr("Password Changed Successfully") : qsTr("Password Change Failed")
+ break
+ case PasswordDialog.SetPassword:
+ info = success ? qsTr("Password Set Successfully") : qsTr("Password Set Failed")
+ passwdPushButton.text = success ? qsTr("Change Password") : qsTr("Set Password")
+ break
+ }
+
+ msgDialog.openWithParameters(title,info, iconMode, StandardButton.Ok)
+ }
+ }
+
+ MessageBox {
+ id: msgDialog
+ }
+
+ function passwordClicked() {
+ if (ClientWrapper.accountAdaptor.hasPassword()){
+ passwordDialog.openDialog(PasswordDialog.ChangePassword)
+ } else {
+ passwordDialog.openDialog(PasswordDialog.SetPassword)
+ }
+ }
+
+ function delAccountSlot() {
+ deleteAccountDialog.open()
+ }
+
+ DeleteAccountDialog{
+ id: deleteAccountDialog
+
+ anchors.centerIn: parent.Center
+ x: (parent.width - width) / 2
+ y: (parent.height - height) / 2
+
+ onAccepted: {
+ ClientWrapper.accountAdaptor.setSelectedAccountId()
+ ClientWrapper.accountAdaptor.setSelectedConvId()
+
+ if(ClientWrapper.utilsAdaptor.getAccountListSize() > 0){
+ navigateToMainView()
+ } else {
+ navigateToNewWizardView()
+ }
+ }
+ }
+
+ NameRegistrationDialog{
+ id : nameRegistrationDialog
+
+ onAccepted: {
+ registeredIdNeedsSet = false
+ }
+ }
+
+ function slotRegisterName() {
+ refreshRelevantUI()
+ nameRegistrationDialog.openNameRegistrationDialog(registeredName)
+ }
+
+ LinkDeviceDialog{
+ id: linkDeviceDialog
+
+ onAccepted: {
+ updateAndShowDevicesSlot()
+ }
+ }
+
+ function showLinkDevSlot() {
+ linkDeviceDialog.openLinkDeviceDialog()
+ }
+
+ RevokeDevicePasswordDialog{
+ id: revokeDevicePasswordDialog
+
+ onRevokeDeviceWithPassword:{
+ revokeDeviceWithIDAndPassword(idOfDevice, password)
+ }
+ }
+
+ MessageBox{
+ id: revokeDeviceMessageBox
+
+ property string idOfDev: ""
+
+ title:qsTr("Remove Device")
+ text :qsTr("Are you sure you wish to remove this device?")
+ icon :StandardIcon.Information
+ standardButtons: StandardButton.Ok | StandardButton.Cancel
+
+ onYes: {
+ accepted()
+ }
+
+ onNo:{
+ rejected()
+ }
+
+ onDiscard: {
+ rejected()
+ }
+
+ onAccepted: {
+ revokeDeviceWithIDAndPassword(idOfDev,"")
+ }
+
+ onRejected: {}
+ }
+
+ function removeDeviceSlot(index){
+ var idOfDevice = deviceItemListModel.data(deviceItemListModel.index(index,0), DeviceItemListModel.DeviceID)
+ if(ClientWrapper.accountAdaptor.hasPassword()){
+ revokeDevicePasswordDialog.openRevokeDeviceDialog(idOfDevice)
+ } else {
+ revokeDeviceMessageBox.idOfDev = idOfDevice
+ revokeDeviceMessageBox.open()
+ }
+ }
+
+ function revokeDeviceWithIDAndPassword(idDevice, password){
+ ClientWrapper.deviceModel.revokeDevice(idDevice, password)
+ updateAndShowDevicesSlot()
+ }
+
+ function updateAndShowBannedContactsSlot() {
+ if(bannedListModel.rowCount() <= 0){
+ bannedContactsLayoutWidget.visible = false
+ return
+ }
+
+ bannedListModel.reset()
+ }
+
+ function updateAndShowDevicesSlot() {
+ if(ClientWrapper.settingsAdaptor.getAccountConfig_Manageruri() === ""){
+ linkDevPushButton.visible = true
+ }
+
+ deviceItemListModel.reset()
+ }
+
+ DeviceItemListModel {
+ id: deviceItemListModel
+ }
+
+ BannedListModel{
+ id: bannedListModel
+ }
+
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+
+ ColumnLayout {
+ anchors.fill: parent
+ spacing: 0
+
+ Item {
+ Layout.fillWidth: true
+
+ Layout.maximumHeight: 10
+ Layout.minimumHeight: 10
+ Layout.preferredHeight: 10
+
+ Layout.alignment: Qt.AlignTop
+ }
+
+ RowLayout {
+ spacing: 6
+
+ Layout.alignment: Qt.AlignTop
+
+ Layout.fillWidth: true
+ Layout.maximumHeight: 30
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: accountPageTitle.height
+
+ Item {
+ Layout.fillHeight: true
+
+ Layout.maximumWidth: 30
+ Layout.preferredWidth: 30
+ Layout.minimumWidth: 30
+ }
+
+ Label {
+ id: accountPageTitle
+
+ Layout.preferredWidth: 117
+
+ Layout.maximumHeight: 25
+ Layout.preferredHeight: 25
+ Layout.minimumHeight: 25
+
+ text: qsTr("Jami Account")
+
+ font.pointSize: 15
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ Item {
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ }
+ }
+
+ ScrollView {
+ id: accoutScrollView
+
+ property ScrollBar hScrollBar: ScrollBar.horizontal
+ property ScrollBar vScrollBar: ScrollBar.vertical
+
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+
+ ScrollBar.horizontal.policy: ScrollBar.AsNeeded
+ ScrollBar.vertical.policy: ScrollBar.AsNeeded
+
+ font.pointSize: 8
+ font.kerning: true
+ clip: true
+
+ ColumnLayout {
+ id: accoutnViewLayout
+
+ Layout.fillHeight: true
+ Layout.maximumWidth: 625
+
+ Item {
+ Layout.fillHeight: true
+
+ Layout.maximumWidth: 30
+ Layout.preferredWidth: 30
+ Layout.minimumWidth: 30
+ }
+
+ ColumnLayout {
+ spacing: 6
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+
+ Layout.leftMargin: 30
+
+ Item {
+ Layout.fillHeight: true
+
+ Layout.maximumWidth: 24
+ Layout.preferredWidth: 24
+ Layout.minimumWidth: 24
+ }
+
+ ToggleSwitch {
+ id: accountEnableCheckBox
+
+ labelText: qsTr("Enable")
+ fontPointSize: 11
+
+ onSwitchToggled: {
+ setAccEnableSlot(checked)
+ }
+ }
+
+ Item {
+ Layout.fillHeight: true
+
+ Layout.maximumWidth: 20
+ Layout.preferredWidth: 20
+ Layout.minimumWidth: 20
+ }
+
+ ColumnLayout {
+ Layout.fillWidth: true
+
+ Label {
+ Layout.fillWidth: true
+
+ Layout.maximumHeight: 21
+ Layout.preferredHeight: 21
+ Layout.minimumHeight: 21
+
+ text: qsTr("Profile")
+ font.pointSize: 13
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ Item {
+ Layout.fillWidth: true
+
+ Layout.maximumHeight: 10
+ Layout.preferredHeight: 10
+ Layout.minimumHeight: 10
+ }
+
+ ColumnLayout {
+ Layout.fillWidth: true
+ layoutDirection: Qt.LeftToRight
+
+ spacing: 6
+
+ PhotoboothView {
+ id: currentAccountAvatar
+
+ Layout.alignment: Qt.AlignHCenter
+
+ Layout.maximumWidth: 261
+ Layout.preferredWidth: 261
+ Layout.minimumWidth: 261
+ Layout.maximumHeight: 261
+ Layout.preferredHeight: 261
+ Layout.minimumHeight: 261
+
+ Layout.leftMargin: 20
+
+ onImageAcquired: {
+ ClientWrapper.settingsAdaptor.setCurrAccAvatar(imgBase64)
+ }
+
+ onImageCleared: {
+ ClientWrapper.settingsAdaptor.clearCurrentAvatar()
+ setAvatar()
+ }
+ }
+
+ InfoLineEdit {
+ id: displayNameLineEdit
+
+ fieldLayoutWidth: 261
+
+ Layout.leftMargin: 20
+
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+
+ onEditingFinished: {
+ ClientWrapper.accountAdaptor.setCurrAccDisplayName(
+ displayNameLineEdit.text)
+ }
+ }
+ }
+ }
+
+ Item {
+ Layout.fillHeight: true
+
+ Layout.maximumWidth: 20
+ Layout.preferredWidth: 20
+ Layout.minimumWidth: 20
+ }
+
+ ColumnLayout {
+ Layout.fillWidth: true
+
+ Label {
+ Layout.fillWidth: true
+
+ Layout.maximumHeight: 21
+ Layout.preferredHeight: 21
+ Layout.minimumHeight: 21
+
+ text: qsTr("Identity")
+ font.pointSize: 13
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ Item {
+ Layout.fillHeight: true
+
+ Layout.maximumWidth: 10
+ Layout.preferredWidth: 10
+ Layout.minimumWidth: 10
+ }
+
+ ColumnLayout {
+ spacing: 7
+
+ Layout.fillWidth: true
+
+ RowLayout {
+ spacing: 6
+ Layout.fillWidth: true
+ Layout.maximumHeight: 30
+
+ Layout.leftMargin: 20
+
+ Layout.maximumWidth: 625
+
+ Label {
+ Layout.maximumWidth: 13
+ Layout.preferredWidth: 13
+ Layout.minimumWidth: 13
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ text: qsTr("Id")
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ TextField {
+ id: currentRingID
+
+ property var backgroundColor: "transparent"
+ property var borderColor: "transparent"
+
+ Layout.fillWidth: true
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ font.pointSize: 10
+ font.kerning: true
+ font.bold: true
+
+ readOnly: true
+ selectByMouse: true
+
+ text: { refreshVariable
+ return ClientWrapper.settingsAdaptor.getCurrentAccount_Profile_Info_Uri()}
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+
+ background: Rectangle {
+ anchors.fill: parent
+ radius: 0
+ border.color: currentRingID.borderColor
+ border.width: 0
+ color: currentRingID.backgroundColor
+ }
+ }
+ }
+
+ RowLayout {
+ spacing: 6
+ Layout.fillWidth: true
+ Layout.maximumHeight: 32
+
+ Layout.leftMargin: 20
+
+ layoutDirection: Qt.LeftToRight
+
+ Label {
+ id: lblRegisteredName
+
+ Layout.maximumWidth: 127
+ Layout.preferredWidth: 127
+ Layout.minimumWidth: 127
+
+ Layout.minimumHeight: 32
+ Layout.preferredHeight: 32
+ Layout.maximumHeight: 32
+
+ text: qsTr("Registered name")
+
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ RowLayout {
+ spacing: 6
+ Layout.fillWidth: true
+ Layout.maximumHeight: 30
+ Layout.alignment: Qt.AlignVCenter
+
+ TextField {
+ id: currentRegisteredID
+
+ Layout.maximumWidth: 300
+ Layout.preferredWidth: 300
+ Layout.minimumWidth: 300
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ placeholderText: { refreshVariable
+ var result = registeredIdNeedsSet ? qsTr("Type here to register a username") : ""
+ return result}
+
+ text: {
+ refreshVariable
+ if (!registeredIdNeedsSet){
+ return ClientWrapper.settingsAdaptor.get_CurrentAccountInfo_RegisteredName()
+ } else {
+ return ""
+ }
+ }
+ selectByMouse: true
+ readOnly: { refreshVariable
+ return !registeredIdNeedsSet}
+
+ font.pointSize: 10
+ font.kerning: true
+ font.bold: { refreshVariable
+ return !registeredIdNeedsSet}
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+
+ background: Rectangle {
+ anchors.fill: parent
+ radius: {refreshVariable
+ var result = registeredIdNeedsSet ? height / 2 : 0
+ return result}
+ border.color: "transparent"
+ border.width: {refreshVariable
+ var result = registeredIdNeedsSet ? 2 : 0
+ return result}
+ color: {refreshVariable
+ var result = registeredIdNeedsSet ? Qt.rgba(
+ 240 / 256, 240 / 256,
+ 240 / 256,
+ 1.0) : "transparent"
+ return result}
+ }
+
+ onTextEdited: {
+ verifyRegisteredNameSlot()
+ }
+
+ onEditingFinished: {
+ verifyRegisteredNameSlot()
+ }
+ }
+
+ LookupStatusLabel {
+ id: lookupStatusLabel
+
+ visible:{refreshVariable
+ var result = registeredIdNeedsSet
+ && (regNameUi
+ !== CurrentAccountSettingsScrollPage.BLANK)
+ return result}
+
+ MouseArea {
+ id: lookupStatusLabelArea
+ anchors.fill: parent
+ property bool isHovering: false
+
+ onEntered: isHovering = true
+ onExited: isHovering = false
+
+ hoverEnabled: true
+ }
+
+ ToolTip.visible: lookupStatusLabelArea.isHovering
+ ToolTip.text: {
+ switch (regNameUi) {
+ case CurrentAccountSettingsScrollPage.BLANK:
+ return qsTr("")
+ case CurrentAccountSettingsScrollPage.INVALIDFORM:
+ return qsTr("A registered name should not have any spaces and must be at least three letters long")
+ case CurrentAccountSettingsScrollPage.TAKEN:
+ return qsTr("This name is already taken")
+ case CurrentAccountSettingsScrollPage.FREE:
+ return qsTr("Register this name")
+ case CurrentAccountSettingsScrollPage.SEARCHING:
+ return qsTr("")
+ default:
+ return qsTr("")
+ }
+ }
+
+ lookupStatusState: {
+ switch (regNameUi) {
+ case CurrentAccountSettingsScrollPage.BLANK:
+ return "Blank"
+ case CurrentAccountSettingsScrollPage.INVALIDFORM:
+ return "Invalid"
+ case CurrentAccountSettingsScrollPage.TAKEN:
+ return "Taken"
+ case CurrentAccountSettingsScrollPage.FREE:
+ return "Free"
+ case CurrentAccountSettingsScrollPage.SEARCHING:
+ return "Searching"
+ default:
+ return "Blank"
+ }
+ }
+ }
+
+ HoverableRadiusButton {
+ id: btnRegisterName
+
+ visible: {refreshVariable
+ var result = registeredIdNeedsSet
+ && (regNameUi
+ === CurrentAccountSettingsScrollPage.FREE)
+ return result}
+
+ Layout.maximumWidth: 80
+ Layout.preferredWidth: 80
+ Layout.minimumWidth: 80
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ text: qsTr("Register")
+ font.pointSize: 10
+ font.kerning: true
+
+ radius: height / 2
+ }
+
+ Item {
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ }
+ }
+ }
+
+ RowLayout {
+ spacing: 6
+ Layout.fillWidth: true
+ Layout.maximumHeight: 30
+
+ Layout.leftMargin: 20
+
+ HoverableButtonTextItem {
+ id: passwdPushButton
+
+ visible: ClientWrapper.settingsAdaptor.getAccountConfig_Manageruri() === ""
+
+ Layout.maximumWidth: 261
+ Layout.preferredWidth: 261
+ Layout.minimumWidth: 261
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+ text: ClientWrapper.accountAdaptor.hasPassword() ? qsTr("Change Password") : qsTr("Set Password")
+
+ font.pointSize: 10
+ font.kerning: true
+
+ radius: height / 2
+
+ onClicked: {
+ passwordClicked()
+ }
+ }
+
+ Item {
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ }
+ }
+
+ RowLayout {
+ spacing: 6
+ Layout.fillWidth: true
+ Layout.maximumHeight: 30
+
+ Layout.leftMargin: 20
+
+ HoverableButtonTextItem {
+ id: btnExportAccount
+
+ visible: ClientWrapper.settingsAdaptor.getAccountConfig_Manageruri() === ""
+
+ Layout.maximumWidth: 261
+ Layout.preferredWidth: 261
+ Layout.minimumWidth: 261
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ text: qsTr("Export Account")
+ font.pointSize: 10
+ font.kerning: true
+
+ radius: height / 2
+
+ onClicked: {
+ exportAccountSlot()
+ }
+ }
+
+ Item {
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ }
+ }
+
+ RowLayout {
+ spacing: 6
+ Layout.fillWidth: true
+ Layout.maximumHeight: 30
+
+ Layout.leftMargin: 20
+
+ HoverableButtonTextItem {
+ id: btnDeletAccount
+
+ backgroundColor: "red"
+ onEnterColor: Qt.rgba(150 / 256, 0, 0, 0.7)
+ onDisabledBackgroundColor: Qt.rgba(
+ 255 / 256,
+ 0, 0, 0.8)
+ onPressColor: backgroundColor
+ textColor: "white"
+
+ Layout.maximumWidth: 261
+ Layout.preferredWidth: 261
+ Layout.minimumWidth: 261
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ text: qsTr("Delete Account")
+ font.pointSize: 10
+ font.kerning: true
+
+ radius: height / 2
+
+ onClicked: {
+ delAccountSlot()
+ }
+ }
+
+ Item {
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ }
+ }
+ }
+ }
+
+ Item {
+ Layout.fillWidth: true
+
+ Layout.minimumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.maximumHeight: 20
+ }
+
+ ColumnLayout {
+ Layout.fillWidth: true
+
+ Label {
+ Layout.fillWidth: true
+
+ Layout.maximumHeight: 27
+ Layout.preferredHeight: 27
+ Layout.minimumHeight: 27
+
+ text: qsTr("Linked Device")
+ font.pointSize: 13
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ Item {
+ Layout.fillHeight: true
+
+ Layout.maximumWidth: 10
+ Layout.preferredWidth: 10
+ Layout.minimumWidth: 10
+ }
+
+ ColumnLayout {
+ spacing: 7
+
+ Layout.fillWidth: true
+
+ ListViewJami {
+ id: settingsListView
+
+ Layout.leftMargin: 20
+
+ Layout.fillWidth: true
+
+ Layout.minimumWidth: 580
+ Layout.preferredWidth: 605
+
+ Layout.minimumHeight: 164
+ Layout.preferredHeight: 164
+ Layout.maximumHeight: 164
+
+ model: deviceItemListModel
+
+ delegate: DeviceItemDelegate{
+ id: settingsListDelegate
+
+ width: settingsListView.width
+ height: 85
+
+ deviceName : DeviceName
+ deviceId: DeviceID
+ isCurrent: IsCurrent
+
+ onClicked: {
+ settingsListView.currentIndex = index
+ }
+
+ onBtnRemoveDeviceClicked:{
+ removeDeviceSlot(index)
+ }
+ }
+ }
+
+ HoverableRadiusButton {
+ id: linkDevPushButton
+
+ visible: ClientWrapper.settingsAdaptor.getAccountConfig_Manageruri() === ""
+
+ Layout.leftMargin: 20
+
+ Layout.fillWidth: true
+
+ Layout.maximumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.minimumHeight: 30
+
+ radius: height / 2
+
+ text: qsTr("+Link Another Device")
+ font.pointSize: 10
+ font.kerning: true
+
+ onClicked: {
+ showLinkDevSlot()
+ }
+ }
+ }
+ }
+
+ Item {
+ Layout.fillWidth: true
+
+ Layout.minimumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.maximumHeight: 20
+ }
+
+ // banned list view
+ ColumnLayout {
+ id: bannedContactsLayoutWidget
+
+ Layout.fillWidth: true
+ spacing: 6
+
+ RowLayout {
+ Layout.leftMargin: 9
+ Layout.rightMargin: 8
+ Layout.topMargin: 1
+
+ Layout.fillWidth: true
+ Layout.maximumHeight: 30
+
+ Label {
+ Layout.preferredWidth: 164
+ Layout.minimumWidth: 164
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ text: qsTr("Banned Contact")
+ font.pointSize: 13
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ Item {
+ Layout.fillHeight: true
+
+ Layout.maximumWidth: 10
+ Layout.preferredWidth: 10
+ Layout.minimumWidth: 10
+ }
+
+ HoverableRadiusButton {
+ id: bannedContactsBtn
+
+ Layout.maximumWidth: 30
+ Layout.preferredWidth: 30
+ Layout.minimumWidth: 30
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ buttonImageHeight: height
+ buttonImageWidth: height
+
+ radius: height / 2
+
+ icon.source: bannedContactsListWidget.visible? "qrc:/images/icons/round-arrow_drop_up-24px.svg" : "qrc:/images/icons/round-arrow_drop_down-24px.svg"
+ icon.height: 32
+ icon.width: 32
+
+ onClicked: {
+ toggleBannedContacts()
+ }
+ }
+
+ Item {
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ }
+ }
+
+ ColumnLayout {
+ id: bannedContactsListWidget
+
+ spacing: 6
+
+ Layout.leftMargin: 9
+ Layout.rightMargin: 8
+ Layout.bottomMargin: 9
+ Item {
+ Layout.fillWidth: true
+
+ Layout.minimumHeight: 10
+ Layout.preferredHeight: 10
+ Layout.maximumHeight: 10
+ }
+
+ ListViewJami {
+ id: bannedListWidget
+
+ Layout.leftMargin: 20
+ Layout.fillWidth: true
+
+ Layout.minimumWidth: 580
+
+ Layout.minimumHeight: 150
+ Layout.preferredHeight: 150
+ Layout.maximumHeight: 150
+
+ model: bannedListModel
+
+ delegate: BannedItemDelegate{
+ id: bannedListDelegate
+
+ width: bannedListWidget.width
+ height: 74
+
+ contactName : ContactName
+ contactID: ContactID
+ contactPicture_base64: ContactPicture
+
+ onClicked: {
+ bannedListWidget.currentIndex = index
+ }
+
+ onBtnReAddContactClicked: {
+ unban(index)
+ }
+ }
+ }
+ }
+ }
+
+ Item {
+ Layout.fillWidth: true
+
+ Layout.minimumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.maximumHeight: 20
+ }
+
+ RowLayout {
+ Layout.fillWidth: true
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ Item {
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ }
+
+ HoverableRadiusButton {
+ id: advancedAccountSettingsPButton
+
+ Layout.minimumWidth: 180
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ radius: height / 2
+
+ text: qsTr("Advanced Account Settings")
+ font.pointSize: 10
+ font.kerning: true
+
+ icon.source: {
+ if (advanceSettingsView.visible) {
+ return "qrc:/images/icons/round-arrow_drop_up-24px.svg"
+ } else {
+ return "qrc:/images/icons/round-arrow_drop_down-24px.svg"
+ }
+ }
+
+ icon.height: 24
+ icon.width: 24
+
+ onClicked: {
+ advanceSettingsView.visible = !advanceSettingsView.visible
+ if (advanceSettingsView.visible) {
+ advanceSettingsView.updateAccountInfoDisplayedAdvance()
+ var mappedCoor = advancedAccountSettingsPButton.mapToItem(accoutnViewLayout,advancedAccountSettingsPButton.x,advancedAccountSettingsPButton.y)
+ accoutScrollView.vScrollBar.position = mappedCoor.y / accoutnViewLayout.height
+ } else {
+ accoutScrollView.vScrollBar.position = 0
+ }
+ }
+ }
+
+ Item {
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ }
+ }
+ }
+
+ Item {
+ Layout.fillWidth: true
+
+ Layout.minimumHeight: 48
+ Layout.preferredHeight: 48
+ Layout.maximumHeight: 48
+ }
+
+ ColumnLayout {
+ spacing: 6
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+
+ Layout.leftMargin: 30
+
+ // instantiate advance setting page
+ AdvancedSettingsView {
+ id: advanceSettingsView
+
+ Layout.leftMargin: 10
+ visible: false
+ }
+ }
+ }
+ }
+
+ Item {
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ }
+ }
+}
diff --git a/src/settingsview/components/CurrentSIPAccountSettingScrollPage.qml b/src/settingsview/components/CurrentSIPAccountSettingScrollPage.qml
new file mode 100644
index 0000000..b5d1d2c
--- /dev/null
+++ b/src/settingsview/components/CurrentSIPAccountSettingScrollPage.qml
@@ -0,0 +1,633 @@
+/*
+ * Copyright (C) 2019-2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+import QtQuick 2.15
+import QtQuick.Window 2.14
+import QtQuick.Controls 2.14
+import QtQuick.Controls.Universal 2.12
+import QtQuick.Layouts 1.3
+import QtGraphicalEffects 1.14
+import net.jami.Models 1.0
+
+import "../../commoncomponents"
+
+Rectangle {
+ signal navigateToMainView
+ signal navigateToNewWizardView
+
+ function updateAccountInfoDisplayed() {
+ displaySIPNameLineEdit.text = ClientWrapper.settingsAdaptor.getCurrentAccount_Profile_Info_Alias()
+ usernameSIP.text = ClientWrapper.settingsAdaptor.getAccountConfig_Username()
+ hostnameSIP.text = ClientWrapper.settingsAdaptor.getAccountConfig_Hostname()
+ passSIPlineEdit.text = ClientWrapper.settingsAdaptor.getAccountConfig_Password()
+ proxySIP.text = ClientWrapper.settingsAdaptor.getAccountConfig_ProxyServer()
+
+ accountSIPEnableCheckBox.checked = ClientWrapper.settingsAdaptor.get_CurrentAccountInfo_Enabled()
+
+ setAvatar()
+
+ if (advanceSIPSettingsView.visible) {
+ advanceSIPSettingsView.updateAccountInfoDisplayedAdvanceSIP()
+ }
+ }
+
+ function isPhotoBoothOpened() {
+ return currentSIPAccountAvatar.takePhotoState
+ }
+
+ function setAvatar() {
+ currentSIPAccountAvatar.setAvatarPixmap(
+ ClientWrapper.settingsAdaptor.getAvatarImage_Base64(
+ currentSIPAccountAvatar.boothWidht),
+ ClientWrapper.settingsAdaptor.getIsDefaultAvatar())
+ }
+
+ function stopBooth() {
+ currentSIPAccountAvatar.stopBooth()
+ }
+
+ // slots
+ function setAccEnableSlot(state) {
+ ClientWrapper.accountModel.setAccountEnabled(ClientWrapper.utilsAdaptor.getCurrAccId(), state)
+ }
+
+ function delAccountSlot() {
+ deleteAccountDialog_SIP.open()
+ }
+
+ DeleteAccountDialog{
+ id: deleteAccountDialog_SIP
+
+ anchors.centerIn: parent.Center
+ x: (parent.width - width) / 2
+ y: (parent.height - height) / 2
+
+ onAccepted: {
+ ClientWrapper.accountAdaptor.setSelectedAccountId()
+ ClientWrapper.accountAdaptor.setSelectedConvId()
+
+ if(ClientWrapper.utilsAdaptor.getAccountListSize() > 0){
+ navigateToMainView()
+ } else {
+ navigateToNewWizardView()
+ }
+ }
+ }
+
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+
+ ColumnLayout {
+ anchors.fill: parent
+ spacing: 0
+
+ Item {
+ Layout.fillWidth: true
+
+ Layout.maximumHeight: 10
+ Layout.minimumHeight: 10
+ Layout.preferredHeight: 10
+
+ Layout.alignment: Qt.AlignTop
+ }
+
+ RowLayout {
+ spacing: 6
+
+ Layout.alignment: Qt.AlignTop
+
+ Layout.fillWidth: true
+ Layout.maximumHeight: 31
+ Layout.minimumHeight: 0
+ Layout.preferredHeight: accountPageTitleSIP.height
+
+ Item {
+ Layout.fillHeight: true
+
+ Layout.maximumWidth: 48
+ Layout.preferredWidth: 48
+ Layout.minimumWidth: 48
+ }
+
+ Label {
+ id: accountPageTitleSIP
+
+ Layout.preferredWidth: 133
+
+ Layout.preferredHeight: 31
+ Layout.minimumHeight: 25
+
+ text: qsTr("SIP Account")
+
+ font.pointSize: 15
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ Item {
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ }
+ }
+
+ ScrollView {
+ id: accountSIPScrollView
+
+ property ScrollBar hScrollBar: ScrollBar.horizontal
+ property ScrollBar vScrollBar: ScrollBar.vertical
+
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+
+ ScrollBar.horizontal.policy: ScrollBar.AsNeeded
+ ScrollBar.vertical.policy: ScrollBar.AsNeeded
+
+ font.pointSize: 8
+ font.kerning: true
+ clip: true
+
+ ColumnLayout {
+ id: accountSIPLayout
+
+ Layout.fillHeight: true
+ Layout.maximumWidth: 598
+
+ Item {
+ Layout.fillHeight: true
+
+ Layout.maximumWidth: 30
+ Layout.preferredWidth: 30
+ Layout.minimumWidth: 30
+ }
+
+ ColumnLayout {
+ spacing: 6
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+
+ Layout.leftMargin: 48
+
+ Item {
+ Layout.fillHeight: true
+
+ Layout.maximumWidth: 24
+ Layout.preferredWidth: 24
+ Layout.minimumWidth: 24
+ }
+
+ ToggleSwitch {
+ id: accountSIPEnableCheckBox
+
+ labelText: qsTr("Enable")
+ fontPointSize: 10
+
+ onSwitchToggled: {
+ setAccEnableSlot(checked)
+ }
+ }
+
+ Item {
+ Layout.fillHeight: true
+
+ Layout.maximumWidth: 20
+ Layout.preferredWidth: 20
+ Layout.minimumWidth: 20
+ }
+
+ ColumnLayout {
+ Layout.fillWidth: true
+
+ Label {
+ Layout.fillWidth: true
+
+ Layout.maximumHeight: 21
+ Layout.preferredHeight: 21
+ Layout.minimumHeight: 21
+
+ text: qsTr("Profile")
+ font.pointSize: 13
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ Item {
+ Layout.fillWidth: true
+
+ Layout.maximumHeight: 10
+ Layout.preferredHeight: 10
+ Layout.minimumHeight: 10
+ }
+
+ ColumnLayout {
+ Layout.fillWidth: true
+ layoutDirection: Qt.LeftToRight
+
+ spacing: 6
+
+ PhotoboothView {
+ id: currentSIPAccountAvatar
+
+ Layout.alignment: Qt.AlignHCenter
+
+ Layout.maximumWidth: 261
+ Layout.preferredWidth: 261
+ Layout.minimumWidth: 261
+ Layout.maximumHeight: 261
+ Layout.preferredHeight: 261
+ Layout.minimumHeight: 261
+
+ Layout.leftMargin: 20
+
+ onImageAcquired: {
+ ClientWrapper.settingsAdaptor.setCurrAccAvatar(imgBase64)
+ }
+
+ onImageCleared: {
+ ClientWrapper.settingsAdaptor.clearCurrentAvatar()
+ setAvatar()
+ }
+ }
+
+ InfoLineEdit {
+ id: displaySIPNameLineEdit
+
+ fieldLayoutWidth: 261
+
+ Layout.leftMargin: 20
+
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+
+ onEditingFinished: {
+ ClientWrapper.accountAdaptor.setCurrAccDisplayName(
+ displaySIPNameLineEdit.text)
+ }
+ }
+ }
+ }
+
+ Item {
+ Layout.fillWidth: true
+
+ Layout.maximumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.minimumHeight: 20
+ }
+
+ ColumnLayout {
+ Layout.fillWidth: true
+ spacing: 6
+
+ Label {
+ Layout.fillWidth: true
+
+ Layout.maximumHeight: 27
+ Layout.preferredHeight: 27
+ Layout.minimumHeight: 27
+
+ text: qsTr("Identity")
+ font.pointSize: 13
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ Item {
+ Layout.fillWidth: true
+
+ Layout.maximumHeight: 10
+ Layout.preferredHeight: 10
+ Layout.minimumHeight: 10
+ }
+
+ ColumnLayout {
+ Layout.fillWidth: true
+ spacing: 6
+
+ GridLayout {
+ rows: 4
+ columns: 2
+ flow: GridLayout.LeftToRight
+ rowSpacing: 14
+ columnSpacing: 6
+
+ Layout.fillWidth: true
+
+ Layout.leftMargin: 20
+
+ // user name
+ Label {
+ Layout.maximumWidth: 76
+ Layout.preferredWidth: 76
+ Layout.minimumWidth: 76
+
+ Layout.maximumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.minimumHeight: 30
+
+ text: qsTr("Username")
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ InfoLineEdit {
+ id: usernameSIP
+
+ fieldLayoutWidth: 300
+
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+
+ onEditingFinished: {
+ ClientWrapper.settingsAdaptor.setAccountConfig_Username(
+ usernameSIP.text)
+ }
+ }
+
+ // host name
+ Label {
+ Layout.maximumWidth: 76
+ Layout.preferredWidth: 76
+ Layout.minimumWidth: 76
+
+ Layout.maximumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.minimumHeight: 30
+
+ text: qsTr("Hostname")
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ InfoLineEdit {
+ id: hostnameSIP
+
+ fieldLayoutWidth: 300
+
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+
+ onEditingFinished: {
+ ClientWrapper.settingsAdaptor.setAccountConfig_Hostname(
+ hostnameSIP.text)
+ }
+ }
+
+ // proxy
+ Label {
+ Layout.maximumWidth: 76
+ Layout.preferredWidth: 76
+ Layout.minimumWidth: 76
+
+ Layout.maximumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.minimumHeight: 30
+
+ text: qsTr("Proxy")
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ InfoLineEdit {
+ id: proxySIP
+
+ fieldLayoutWidth: 300
+
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+
+ onEditingFinished: {
+ ClientWrapper.settingsAdaptor.setAccountConfig_ProxyServer(
+ proxySIP.text)
+ }
+ }
+
+ // password
+ Label {
+ Layout.maximumWidth: 76
+ Layout.preferredWidth: 76
+ Layout.minimumWidth: 76
+
+ Layout.maximumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.minimumHeight: 30
+
+ text: qsTr("Password")
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ InfoLineEdit {
+ id: passSIPlineEdit
+
+ fieldLayoutWidth: 300
+
+ font.pointSize: 10
+ font.kerning: true
+
+ echoMode: TextInput.Password
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+
+ onEditingFinished: {
+ ClientWrapper.settingsAdaptor.setAccountConfig_Password(
+ passSIPlineEdit.text)
+ }
+ }
+ }
+
+ Item {
+ Layout.fillWidth: true
+
+ Layout.maximumHeight: 10
+ Layout.preferredHeight: 10
+ Layout.minimumHeight: 10
+ }
+
+ RowLayout {
+ Layout.fillWidth: true
+ Layout.maximumHeight: 30
+ Layout.leftMargin: 20
+
+ HoverableButtonTextItem {
+ id: btnSIPDeletAccount
+
+ backgroundColor: "red"
+ onEnterColor: Qt.rgba(150 / 256, 0, 0, 0.7)
+ onDisabledBackgroundColor: Qt.rgba(
+ 255 / 256,
+ 0, 0, 0.8)
+ onPressColor: backgroundColor
+ textColor: "white"
+
+ Layout.maximumWidth: 261
+ Layout.preferredWidth: 261
+ Layout.minimumWidth: 261
+
+ Layout.maximumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.minimumHeight: 30
+
+ radius: height / 2
+
+ text: qsTr("Delete Account")
+ font.pointSize: 10
+ font.kerning: true
+
+ onClicked: {
+ delAccountSlot()
+ }
+ }
+
+ Item {
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ }
+ }
+ }
+ }
+
+ Item {
+ Layout.fillWidth: true
+
+ Layout.maximumHeight: 40
+ Layout.preferredHeight: 40
+ Layout.minimumHeight: 40
+ }
+
+ RowLayout {
+ Layout.fillWidth: true
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ Layout.minimumWidth: 598
+ Layout.preferredWidth: 598
+
+ Item {
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ }
+
+ HoverableRadiusButton {
+ id: advancedAccountSettingsSIPButton
+
+ Layout.minimumWidth: 180
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ radius: height / 2
+
+ text: qsTr("Advanced Account Settings")
+ font.pointSize: 10
+ font.kerning: true
+
+ icon.source: {
+ if (advanceSIPSettingsView.visible) {
+ return "qrc:/images/icons/round-arrow_drop_up-24px.svg"
+ } else {
+ return "qrc:/images/icons/round-arrow_drop_down-24px.svg"
+ }
+ }
+
+ icon.height: 24
+ icon.width: 24
+
+ onClicked: {
+ advanceSIPSettingsView.visible = !advanceSIPSettingsView.visible
+ if(advanceSIPSettingsView.visible){
+ advanceSIPSettingsView.updateAccountInfoDisplayedAdvanceSIP()
+ var coor = advancedAccountSettingsSIPButton.mapToItem(accountSIPLayout,advancedAccountSettingsSIPButton.x,advancedAccountSettingsSIPButton.y)
+ accountSIPScrollView.vScrollBar.position = coor.y / accountSIPLayout.height
+ } else {
+ accountSIPScrollView.vScrollBar.position = 0
+ }
+ }
+ }
+
+ Item {
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ }
+ }
+ }
+
+ Item {
+ Layout.fillWidth: true
+
+ Layout.minimumHeight: 48
+ Layout.preferredHeight: 48
+ Layout.maximumHeight: 48
+ }
+
+ ColumnLayout {
+ spacing: 6
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+
+ Layout.leftMargin: 30
+
+ // instantiate advance setting page
+ AdvancedSIPSettingsView {
+ id: advanceSIPSettingsView
+
+ Layout.leftMargin: 10
+ visible: false
+ }
+ }
+ }
+ }
+
+ Item {
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ }
+ }
+}
diff --git a/src/settingsview/components/DeviceItemDelegate.qml b/src/settingsview/components/DeviceItemDelegate.qml
new file mode 100644
index 0000000..f250261
--- /dev/null
+++ b/src/settingsview/components/DeviceItemDelegate.qml
@@ -0,0 +1,220 @@
+/*
+ * Copyright (C) 2019-2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+import QtQuick 2.15
+import QtQuick.Window 2.15
+import QtQuick.Controls 2.15
+import QtQuick.Controls.Universal 2.12
+import QtQuick.Layouts 1.3
+import QtGraphicalEffects 1.14
+import QtQuick.Controls.Styles 1.4
+import net.jami.Models 1.0
+
+import "../../commoncomponents"
+
+ItemDelegate {
+ id: deviceItemDelegate
+
+ property string deviceName : ""
+ property string deviceId: ""
+ property bool isCurrent : false
+
+ property bool editable : false
+
+ signal btnRemoveDeviceClicked
+
+ function btnEditDeviceEnter(){
+ btnEditDevice.enterBtn()
+ }
+
+ function btnEditDeviceExit(){
+ btnEditDevice.exitBtn()
+ }
+
+ function btnEditPress(){
+ btnEditDevice.pressBtn()
+ }
+
+ function btnEditRelease(){
+ btnEditDevice.releaseBtn()
+ }
+
+ function toggleEditable(){
+ editable = !editable
+ if(editable){
+ ClientWrapper.settingsAdaptor.setDeviceName(editDeviceName.text)
+ }
+ }
+
+ highlighted: ListView.isCurrentItem
+
+ RowLayout{
+ anchors.fill: parent
+
+ spacing: 7
+
+ Label{
+ Layout.leftMargin: 7
+ Layout.topMargin: 7
+ Layout.bottomMargin: 7
+
+ Layout.minimumWidth: 30
+ Layout.preferredWidth: 30
+ Layout.maximumWidth: 30
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ background: Rectangle{
+ anchors.fill: parent
+ Image {
+ anchors.fill: parent
+ source: "qrc:/images/icons/baseline-desktop_windows-24px.svg"
+ }
+ }
+ }
+
+ ColumnLayout{
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+
+ Layout.topMargin: 7
+ Layout.bottomMargin: 7
+
+ InfoLineEdit{
+ id: editDeviceName
+
+ Layout.fillWidth: true
+ Layout.minimumWidth: 0
+ Layout.maximumWidth: 16777215
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ font.pointSize: 8
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+
+ readOnly: !editable
+
+ text: deviceName
+ }
+
+ RowLayout{
+ Layout.maximumWidth: editDeviceName.fieldLayoutWidth
+
+ Layout.minimumHeight: 30
+
+ Label{
+ id: labelDeviceId
+
+ //Layout.minimumWidth: 71
+ Layout.minimumHeight: 30
+
+ font.pointSize: 8
+ font.kerning: true
+ text: deviceId === "" ? qsTr("Device Id") : deviceId
+ }
+
+ Item{
+ Layout.fillWidth: true
+
+ Layout.minimumWidth: 0
+ Layout.minimumHeight: 20
+ }
+
+ Label{
+ id: labelThisDevice
+
+ //Layout.minimumWidth: 80
+ Layout.minimumHeight: 30
+
+ visible: isCurrent
+
+ font.pointSize: 8
+ font.kerning: true
+ font.italic: true
+ color: "green"
+ text: qsTr("this device")
+ }
+ }
+ }
+
+ HoverableRadiusButton{
+ id: btnEditDevice
+
+ Layout.topMargin: 7
+ Layout.bottomMargin: 7
+
+ Layout.minimumWidth: 30
+ Layout.preferredWidth: 30
+ Layout.maximumWidth: 30
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ buttonImageHeight: height
+ buttonImageWidth: height
+
+ source:{
+ if(isCurrent) {
+ var path = editable ? "qrc:/images/icons/round-edit-24px.svg" : "qrc:/images/icons/round-save_alt-24px.svg"
+ return path
+ } else {
+ return "qrc:/images/icons/round-remove_circle-24px.svg"
+ }
+ }
+
+ ToolTip.visible: isHovering
+ ToolTip.text: {
+ if(isCurrent) {
+ if(editable){
+ return qsTr("Edit Device Name")
+ } else {
+ return qsTr("Save new device name")
+ }
+ } else {
+ return qsTr("Unlink Device From Account")
+ }
+ }
+
+ onClicked: {
+ if(isCurrent) {
+ toggleEditable()
+ } else {
+ btnRemoveDeviceClicked()
+ }
+ }
+ }
+
+ Item{
+ Layout.rightMargin: 7
+
+ Layout.minimumWidth: 8
+ Layout.preferredWidth: 8
+ Layout.maximumWidth: 8
+
+ Layout.minimumHeight: 20
+ }
+ }
+}
diff --git a/src/settingsview/components/GeneralSettingsPage.qml b/src/settingsview/components/GeneralSettingsPage.qml
new file mode 100644
index 0000000..72eb4d1
--- /dev/null
+++ b/src/settingsview/components/GeneralSettingsPage.qml
@@ -0,0 +1,678 @@
+/*
+ * Copyright (C) 2019-2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+import QtQuick 2.15
+import QtQuick.Window 2.14
+import QtQuick.Controls 2.14
+import QtQuick.Controls.Universal 2.12
+import QtQuick.Layouts 1.3
+import Qt.labs.platform 1.1
+import QtGraphicalEffects 1.14
+import net.jami.Models 1.0
+import "../../commoncomponents"
+
+Rectangle {
+ id: generalSettingsRect
+
+ function populateGeneralSettings(){
+ // settings
+ closeOrMinCheckBox.checked = ClientWrapper.settingsAdaptor.getSettingsValue_CloseOrMinimized()
+ applicationOnStartUpCheckBox.checked = ClientWrapper.utilsAdaptor.checkStartupLink()
+ notificationCheckBox.checked = ClientWrapper.settingsAdaptor.getSettingsValue_EnableNotifications()
+
+ alwaysRecordingCheckBox.checked = ClientWrapper.avmodel.getAlwaysRecord()
+ recordPreviewCheckBox.checked = ClientWrapper.avmodel.getRecordPreview()
+ recordQualityValueLabel.text = ClientWrapper.utilsAdaptor.getRecordQualityString(ClientWrapper.avmodel.getRecordQuality() / 100)
+ recordQualitySlider.value = ClientWrapper.avmodel.getRecordQuality() / 100
+
+ ClientWrapper.avmodel.setRecordPath(ClientWrapper.settingsAdaptor.getDir_Document())
+
+ autoUpdateCheckBox.checked = ClientWrapper.settingsAdaptor.getSettingsValue_AutoUpdate()
+ }
+
+ function slotSetNotifications(state){
+ ClientWrapper.settingsAdaptor.setNotifications(state)
+ }
+
+ function slotSetClosedOrMin(state){
+ ClientWrapper.settingsAdaptor.setClosedOrMin(state)
+ }
+
+ function slotSetRunOnStartUp(state){
+ ClientWrapper.settingsAdaptor.setRunOnStartUp(state)
+ }
+
+ function slotSetUpdateAutomatic(state){
+ ClientWrapper.settingsAdaptor.setUpdateAutomatic(state)
+ }
+
+ function slotAlwaysRecordingClicked(state){
+ ClientWrapper.avmodel.setAlwaysRecord(state)
+ }
+
+ function slotRecordPreviewClicked(state){
+ ClientWrapper.avmodel.setRecordPreview(state)
+ }
+
+ function slotRecordQualitySliderValueChanged(value){
+ recordQualityValueLabel.text = ClientWrapper.utilsAdaptor.getRecordQualityString(value)
+ updateRecordQualityTimer.restart()
+ }
+
+ Timer{
+ id: updateRecordQualityTimer
+
+ interval: 500
+
+ onTriggered: {
+ slotRecordQualitySliderSliderReleased()
+ }
+ }
+
+ function slotRecordQualitySliderSliderReleased(){
+ var value = recordQualitySlider.value
+ ClientWrapper.avmodel.setRecordQuality(value * 100)
+ }
+
+ function openDownloadFolderSlot(){
+ downloadPathDialog.open()
+ }
+
+ FolderDialog {
+ id: downloadPathDialog
+
+ title: qsTr("Select A Folder For Your Downloads")
+ currentFolder: StandardPaths.writableLocation(StandardPaths.DownloadLocation)
+
+ onAccepted: {
+ var dir = ClientWrapper.utilsAdaptor.getAbsPath(folder.toString())
+ downloadPath = dir
+ }
+
+ onRejected: {}
+
+ onVisibleChanged: {
+ if (!visible) {
+ rejected()
+ }
+ }
+ }
+
+ function openRecordFolderSlot(){
+ recordPathDialog.open()
+ }
+
+ FolderDialog {
+ id: recordPathDialog
+
+ title: qsTr("Select A Folder For Your Recordings")
+ currentFolder: StandardPaths.writableLocation(StandardPaths.HomeLocation)
+
+ onAccepted: {
+ var dir = ClientWrapper.utilsAdaptor.getAbsPath(folder.toString())
+ recordPath = dir
+ }
+
+ onRejected: {}
+
+ onVisibleChanged: {
+ if (!visible) {
+ rejected()
+ }
+ }
+ }
+
+ //TODO: complete check for update and check for Beta slot functions
+ function checkForUpdateSlot(){}
+ function installBetaSlot(){}
+
+ // settings
+ property string downloadPath: ClientWrapper.settingsAdaptor.getDir_Download()
+
+ // recording
+ //property AVModel avmodel: ClientWrapper.accountAdaptor.avModel()
+ property string recordPath: ClientWrapper.settingsAdaptor.getDir_Document()
+
+ onDownloadPathChanged: {
+ if(downloadPath === "") return
+ ClientWrapper.settingsAdaptor.setDownloadPath(downloadPath)
+ }
+
+ onRecordPathChanged: {
+ if(recordPath === "") return
+
+ if(ClientWrapper.avmodel){
+ ClientWrapper.avmodel.setRecordPath(recordPath)
+ }
+ }
+
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+
+ ScrollView{
+ anchors.fill: parent
+ clip: true
+
+ RowLayout {
+ width: generalSettingsRect.width
+ height: generalSettingsRect.height
+
+ spacing: 0
+
+ Item {
+ Layout.fillHeight: true
+ Layout.maximumWidth: 48
+ Layout.preferredWidth: 48
+ Layout.minimumWidth: 48
+ }
+
+ ColumnLayout {
+ spacing: 6
+
+ Layout.fillHeight: true
+ Layout.maximumWidth: 580
+ Layout.preferredWidth: 580
+ Layout.minimumWidth: 580
+
+ Item {
+ Layout.fillWidth: true
+ Layout.minimumHeight: 10
+ Layout.preferredHeight: 10
+ Layout.maximumHeight: 10
+ }
+
+ Label {
+ Layout.fillWidth: true
+ Layout.minimumHeight: 25
+ Layout.preferredHeight: 25
+ Layout.maximumHeight: 25
+
+ text: qsTr("General")
+ font.pointSize: 15
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ Item {
+ Layout.fillWidth: true
+ Layout.minimumHeight: 24
+ Layout.preferredHeight: 24
+ Layout.maximumHeight: 24
+ }
+
+ // system setting panel
+ ColumnLayout {
+ spacing: 6
+ Layout.fillWidth: true
+
+ Label {
+ Layout.fillWidth: true
+ Layout.minimumHeight: 21
+ Layout.preferredHeight: 21
+ Layout.maximumHeight: 21
+
+ text: qsTr("System")
+ font.pointSize: 13
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ Item {
+ Layout.fillWidth: true
+
+ Layout.minimumHeight: 10
+ Layout.preferredHeight: 10
+ Layout.maximumHeight: 10
+ }
+
+ ColumnLayout {
+ spacing: 6
+ Layout.fillWidth: true
+
+ ToggleSwitch {
+ id: notificationCheckBox
+
+ Layout.leftMargin: 20
+
+ labelText: "Enable desktop notifications"
+ fontPointSize: 11
+
+ onSwitchToggled: {
+ slotSetNotifications(checked)
+ }
+ }
+
+ ToggleSwitch {
+ id: closeOrMinCheckBox
+
+ Layout.leftMargin: 20
+
+ labelText: "Keep minimize on close"
+ fontPointSize: 11
+
+ onSwitchToggled: {
+ slotSetClosedOrMin(checked)
+ }
+ }
+
+ ToggleSwitch {
+ id: applicationOnStartUpCheckBox
+
+ Layout.leftMargin: 20
+
+ labelText: "Run on Startup"
+ fontPointSize: 11
+
+ onSwitchToggled: {
+ slotSetRunOnStartUp(checked)
+ }
+ }
+
+ RowLayout {
+ spacing: 6
+
+ Layout.leftMargin: 20
+ Layout.fillWidth: true
+ Layout.maximumHeight: 30
+
+ Label {
+ Layout.fillHeight: true
+
+ Layout.maximumWidth: 94
+ Layout.preferredWidth: 94
+ Layout.minimumWidth: 94
+
+ text: qsTr("Download folder")
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ Item {
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ }
+
+ HoverableRadiusButton {
+ id: downloadButton
+
+ Layout.maximumWidth: 320
+ Layout.preferredWidth: 320
+ Layout.minimumWidth: 320
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ radius: height / 2
+
+ icon.source: "qrc:/images/icons/round-folder-24px.svg"
+ icon.height: 24
+ icon.width: 24
+
+ text: downloadPath
+ fontPointSize: 10
+
+ onClicked: {
+ openDownloadFolderSlot()
+ }
+ }
+ }
+ }
+ }
+
+ Item {
+ Layout.fillWidth: true
+ Layout.minimumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.maximumHeight: 20
+ }
+
+ // call recording setting panel
+ ColumnLayout {
+ spacing: 6
+ Layout.fillWidth: true
+
+ Label {
+ Layout.fillWidth: true
+ Layout.minimumHeight: 21
+ Layout.preferredHeight: 21
+ Layout.maximumHeight: 21
+
+ text: qsTr("Call Recording")
+ font.pointSize: 13
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ Item {
+ Layout.fillWidth: true
+
+ Layout.minimumHeight: 10
+ Layout.preferredHeight: 10
+ Layout.maximumHeight: 10
+ }
+
+ ColumnLayout {
+ spacing: 6
+ Layout.fillWidth: true
+
+ ToggleSwitch {
+ id: alwaysRecordingCheckBox
+
+ Layout.leftMargin: 20
+
+ labelText: "Always record calls"
+ fontPointSize: 11
+
+ onSwitchToggled: {
+ slotAlwaysRecordingClicked(checked)
+ }
+ }
+
+ ToggleSwitch {
+ id: recordPreviewCheckBox
+
+ Layout.leftMargin: 20
+
+ labelText: "Record preview video for a call"
+ fontPointSize: 11
+
+ onSwitchToggled: {
+ slotRecordPreviewClicked(checked)
+ }
+ }
+
+ RowLayout {
+ spacing: 6
+ Layout.leftMargin: 20
+ Layout.fillWidth: true
+ Layout.maximumHeight: 30
+
+ Label {
+ Layout.fillHeight: true
+
+ Layout.maximumWidth: 42
+ Layout.preferredWidth: 42
+ Layout.minimumWidth: 42
+
+ text: qsTr("Quality")
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ Item {
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ }
+
+ ColumnLayout {
+ spacing: 0
+ Layout.fillHeight: true
+
+ Layout.maximumWidth: recordQualityValueLabel.width
+ Item {
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ }
+
+ Label {
+ id: recordQualityValueLabel
+
+ Layout.minimumWidth: 40
+
+ Layout.minimumHeight: 16
+ Layout.preferredHeight: 16
+ Layout.maximumHeight: 16
+
+ text: qsTr("VALUE ")
+
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ Item {
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ }
+ }
+
+ Slider{
+ id: recordQualitySlider
+
+ Layout.fillHeight: true
+
+ Layout.maximumWidth: 320
+ Layout.preferredWidth: 320
+ Layout.minimumWidth: 320
+
+ from: 0
+ to: 500
+ stepSize: 1
+
+ onMoved: {
+ slotRecordQualitySliderValueChanged(value)
+ }
+ }
+ }
+
+ RowLayout {
+ spacing: 6
+
+ Layout.leftMargin: 20
+ Layout.fillWidth: true
+ Layout.maximumHeight: 30
+
+ Label {
+ Layout.fillHeight: true
+
+ Layout.maximumWidth: 42
+ Layout.preferredWidth: 42
+ Layout.minimumWidth: 42
+
+ text: qsTr("Save in")
+ font.pointSize: 10
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ Item {
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ }
+
+ HoverableRadiusButton {
+ id: recordPathButton
+
+ Layout.maximumWidth: 320
+ Layout.preferredWidth: 320
+ Layout.minimumWidth: 320
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ radius: height / 2
+
+ icon.source: "qrc:/images/icons/round-folder-24px.svg"
+ icon.height: 24
+ icon.width: 24
+
+ text: recordPath
+ fontPointSize: 10
+
+ onClicked: {
+ openRecordFolderSlot()
+ }
+ }
+ }
+ }
+ }
+
+ Item {
+ Layout.fillWidth: true
+ Layout.minimumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.maximumHeight: 20
+ }
+
+ // update setting panel
+ ColumnLayout {
+ spacing: 6
+ Layout.fillWidth: true
+ visible: Qt.platform.os == "windows"? true : false
+
+ Label {
+ Layout.fillWidth: true
+ Layout.minimumHeight: 21
+ Layout.preferredHeight: 21
+ Layout.maximumHeight: 21
+
+ text: qsTr("Updates")
+ font.pointSize: 13
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ Item {
+ Layout.fillWidth: true
+
+ Layout.minimumHeight: 10
+ Layout.preferredHeight: 10
+ Layout.maximumHeight: 10
+ }
+
+ ColumnLayout {
+ spacing: 6
+ Layout.fillWidth: true
+
+ ToggleSwitch {
+ id: autoUpdateCheckBox
+
+ Layout.leftMargin: 20
+
+ labelText: "Check for updates automatically"
+ fontPointSize: 11
+
+ onSwitchToggled: {
+ slotSetUpdateAutomatic(checked)
+ }
+ }
+
+ RowLayout {
+ spacing: 6
+
+ Layout.leftMargin: 20
+ Layout.fillWidth: true
+ Layout.maximumHeight: 30
+
+ HoverableRadiusButton {
+ id: checkUpdateButton
+
+ Layout.maximumWidth: 275
+ Layout.preferredWidth: 275
+ Layout.minimumWidth: 275
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ radius: height / 2
+
+ text: "Check for updates now"
+ fontPointSize: 10
+
+ onClicked: {
+ checkForUpdateSlot()
+ }
+ }
+
+ Item {
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ }
+ }
+
+ RowLayout {
+ spacing: 6
+
+ Layout.leftMargin: 20
+ Layout.fillWidth: true
+ Layout.maximumHeight: 30
+
+ HoverableRadiusButton {
+ id: installBetaButton
+
+ Layout.maximumWidth: 275
+ Layout.preferredWidth: 275
+ Layout.minimumWidth: 275
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ radius: height / 2
+
+ text: "Install the latest beta version"
+ fontPointSize: 10
+
+ onClicked: {
+ installBetaSlot()
+ }
+ }
+
+ Item {
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ }
+ }
+ }
+ }
+
+ // spacer on the bottom
+ Item {
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ }
+ }
+
+ Item {
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ }
+ }
+ }
+}
diff --git a/src/settingsview/components/IconButton.qml b/src/settingsview/components/IconButton.qml
new file mode 100644
index 0000000..7e992a9
--- /dev/null
+++ b/src/settingsview/components/IconButton.qml
@@ -0,0 +1,131 @@
+/*
+ * Copyright (C) 2019-2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+import QtQuick 2.15
+import QtQuick.Window 2.14
+import QtQuick.Controls 2.14
+import QtQuick.Layouts 1.14
+import QtQuick.Controls.Universal 2.12
+import QtGraphicalEffects 1.14
+
+import "../../constant"
+
+Button {
+ id: button
+ checkable: true
+ hoverEnabled: true
+
+ property alias imageSource: buttonPix.source
+ property alias buttonText: buttonText.text
+
+ property string backgroundColor: JamiTheme.releaseColor
+ property string onPressColor: JamiTheme.pressColor
+ property string onReleaseColor: JamiTheme.releaseColor
+ property string onEnterColor: JamiTheme.hoverColor
+ property string onExitColor: JamiTheme.transparentColor
+ property string checkedColor: JamiTheme.releaseColor
+
+ signal checkedToggledForLeftPanel(var checked)
+ signal checkedToggledForRightPanel(var checked)
+
+ function setCheckedState(check, triggerSignal) {
+ button.checked = check
+ if (triggerSignal) {
+ checkedToggledForLeftPanel(check)
+ checkedToggledForRightPanel(check)
+ }
+ button.background.color = check ? button.checkedColor : button.onExitColor
+ }
+
+ onClicked: {
+ setCheckedState(true, true)
+ }
+
+ Layout.minimumHeight: 60
+ Layout.preferredHeight: 60
+ Layout.maximumHeight: 60
+
+ Layout.fillWidth: true
+
+ background: Rectangle {
+ anchors.fill: parent
+ color: parent.checked ? button.checkedColor : button.onExitColor
+
+ RowLayout {
+ anchors.fill: parent
+ spacing: 24
+ Image {
+ id: buttonPix
+ Layout.minimumHeight: 24
+ Layout.preferredHeight: 24
+ Layout.maximumHeight: 24
+
+ Layout.minimumWidth: 24
+ Layout.preferredWidth: 24
+ Layout.maximumWidth: 24
+
+ Layout.leftMargin: 24
+
+ Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
+ }
+
+ Label {
+ id: buttonText
+
+ Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
+
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+
+ font.pointSize: 11
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+ }
+
+ MouseArea {
+ anchors.fill: parent
+
+ hoverEnabled: true
+
+ onPressed: {
+ if (!button.checked) {
+ parent.color = button.onPressColor
+ }
+ }
+ onReleased: {
+ button.clicked()
+ if (!button.checked) {
+ parent.color = button.onExitColor
+ }
+ }
+ onEntered: {
+ if (!button.checked) {
+ parent.color = button.onEnterColor
+ }
+ }
+ onExited: {
+ if (!button.checked) {
+ parent.color = button.onExitColor
+ }
+ }
+ }
+ }
+}
diff --git a/src/settingsview/components/LeftPanelView.qml b/src/settingsview/components/LeftPanelView.qml
new file mode 100644
index 0000000..f11fe23
--- /dev/null
+++ b/src/settingsview/components/LeftPanelView.qml
@@ -0,0 +1,191 @@
+/*
+ * Copyright (C) 2019-2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+import QtQuick 2.15
+import QtQuick.Window 2.14
+import QtQuick.Controls 1.4 as CT
+import QtQuick.Controls 2.14
+import QtQuick.Controls.Universal 2.12
+import QtQuick.Layouts 1.3
+import QtGraphicalEffects 1.14
+
+import "../../commoncomponents"
+
+ScrollView{
+ id: leftPanelView
+
+ property int contentViewportWidth: 200
+ property int contentViewPortHeight: 768
+
+ property alias btnAccountSettings: accountSettingsButton
+ property alias btnGeneralSettings: generalSettingsButton
+ property alias btnMediaSettings: mediaSettingsButton
+ property alias btnPluginSettings: pluginSettingsButton
+
+ signal btnExitClicked
+
+ Component.onCompleted: {
+ accountSettingsButton.setCheckedState(true, true)
+ }
+
+ anchors.fill: parent
+ clip: true
+
+ ColumnLayout {
+ spacing: 0
+
+ width: contentViewportWidth
+ height: contentViewPortHeight
+
+ Item {
+ Layout.fillWidth: true
+ Layout.maximumHeight: 13
+ Layout.preferredHeight: 13
+ Layout.minimumHeight: 13
+ }
+
+ RowLayout {
+ Layout.fillWidth: true
+ Layout.maximumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.minimumHeight: 20
+
+ Layout.rightMargin: 14
+
+ Item {
+ Layout.fillHeight: true
+
+ Layout.maximumWidth: 20
+ Layout.preferredWidth: 20
+ Layout.minimumWidth: 20
+ }
+
+ Label {
+ Layout.maximumWidth: 57
+ Layout.preferredWidth: 57
+ Layout.minimumWidth: 57
+
+ Layout.maximumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.minimumHeight: 30
+
+ text: qsTr("Settings")
+ font.pointSize: 12
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ Item {
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ }
+
+ HoverableRadiusButton {
+ id: btnExitSettings
+ Layout.maximumWidth: 30
+ Layout.preferredWidth: 30
+ Layout.minimumWidth: 30
+
+ Layout.maximumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.minimumHeight: 30
+
+ buttonImageHeight: height
+ buttonImageWidth: height
+ backgroundColor: "transparent"
+
+ radius: height / 2
+
+ icon.source: "qrc:/images/icons/round-close-24px.svg"
+ icon.height: 24
+ icon.width: 24
+
+ onClicked: {
+ btnExitClicked()
+ }
+ }
+ }
+ Item {
+ Layout.fillWidth: true
+ Layout.maximumHeight: 13
+ Layout.preferredHeight: 13
+ Layout.minimumHeight: 13
+ }
+
+ IconButton {
+ id: accountSettingsButton
+
+ buttonText: qsTr("Account")
+ imageSource: "qrc:/images/icons/baseline-people-24px.svg"
+
+ onCheckedToggledForLeftPanel: {
+ generalSettingsButton.setCheckedState(!checked, false)
+ mediaSettingsButton.setCheckedState(!checked, false)
+ pluginSettingsButton.setCheckedState(!checked, false)
+ }
+ }
+
+ IconButton {
+ id: generalSettingsButton
+
+ buttonText: qsTr("General")
+ imageSource: "qrc:/images/icons/round-settings-24px.svg"
+
+ onCheckedToggledForLeftPanel: {
+ accountSettingsButton.setCheckedState(!checked, false)
+ mediaSettingsButton.setCheckedState(!checked, false)
+ pluginSettingsButton.setCheckedState(!checked, false)
+ }
+ }
+
+ IconButton {
+ id: mediaSettingsButton
+
+ buttonText: qsTr("Audio/Video")
+ imageSource: "qrc:/images/icons/baseline-desktop_windows-24px.svg"
+
+ onCheckedToggledForLeftPanel: {
+ generalSettingsButton.setCheckedState(!checked, false)
+ accountSettingsButton.setCheckedState(!checked, false)
+ pluginSettingsButton.setCheckedState(!checked, false)
+ }
+ }
+
+ IconButton {
+ id: pluginSettingsButton
+
+ buttonText: qsTr("Plugins")
+ imageSource: "qrc:/images/icons/extension_24dp.svg"
+
+ onCheckedToggledForLeftPanel: {
+ generalSettingsButton.setCheckedState(!checked, false)
+ accountSettingsButton.setCheckedState(!checked, false)
+ mediaSettingsButton.setCheckedState(!checked, false)
+ }
+ }
+
+ Item {
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ }
+ }
+
+}
+
diff --git a/src/settingsview/components/LevelMeter.qml b/src/settingsview/components/LevelMeter.qml
new file mode 100644
index 0000000..045d329
--- /dev/null
+++ b/src/settingsview/components/LevelMeter.qml
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2019-2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+import QtQuick 2.15
+import QtQuick.Controls 2.15
+
+ProgressBar {
+ id: levelMeter
+
+ value: {
+ return clamp(rmsLevel * 300.0, 0.0, 100.0)
+ }
+
+ property real rmsLevel: 0
+
+ function clamp(num,a,b){
+ return Math.max(Math.min(num, Math.max(a, b)), Math.min(a, b))
+ }
+
+ function start(){
+ rmsLevel = 0
+ }
+
+ function stop(){
+
+ }
+
+ function setLevel(rmsLevelIn){
+ rmsLevel = rmsLevelIn
+ }
+
+}
diff --git a/src/settingsview/components/LinkDeviceDialog.qml b/src/settingsview/components/LinkDeviceDialog.qml
new file mode 100644
index 0000000..c1caca1
--- /dev/null
+++ b/src/settingsview/components/LinkDeviceDialog.qml
@@ -0,0 +1,678 @@
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+import QtQuick 2.15
+import QtQuick.Controls 2.14
+import QtQuick.Layouts 1.14
+import QtQuick.Controls.Styles 1.4
+import net.jami.Models 1.0
+
+import "../../commoncomponents"
+
+Dialog {
+ id: linkDeviceDialog
+
+ function openLinkDeviceDialog(){
+ infoLabel.text = qsTr("This pin and the account password should be entered in your device within 10 minutes.")
+ passwordEdit.clear()
+ linkDeviceDialog.open()
+ if(ClientWrapper.accountAdaptor.hasPassword()){
+ stackedWidget.currentIndex = 0
+ } else {
+ setGeneratingPage()
+ }
+ }
+
+ function setGeneratingPage(){
+ if(passwordEdit.length === 0 && ClientWrapper.accountAdaptor.hasPassword()){
+ setExportPage(NameDirectory.ExportOnRingStatus.WRONG_PASSWORD, "")
+ return
+ }
+
+ stackedWidget.currentIndex = 1
+ spinnerMovie.playing = true
+
+ timerForExport.restart()
+ }
+
+ function slotExportOnRing(){
+ ClientWrapper.accountModel.exportOnRing(ClientWrapper.utilsAdaptor.getCurrAccId(),passwordEdit.text)
+ }
+
+ Timer{
+ id: timerForExport
+
+ repeat: false
+ interval: 200
+
+ onTriggered: {
+ timeOut.restart()
+ slotExportOnRing()
+ }
+ }
+
+ Timer{
+ id: timeOut
+
+ repeat: false
+ interval: exportTimeout
+
+ onTriggered: {
+ setExportPage(NameDirectory.ExportOnRingStatus.NETWORK_ERROR, "")
+ }
+ }
+
+ function setExportPage(status, pin){
+ timeOut.stop()
+
+ if(status === NameDirectory.ExportOnRingStatus.SUCCESS){
+ infoLabel.isSucessState = true
+ yourPinLabel.visible = true
+ exportedPIN.visible = true
+ infoLabel.text = qsTr("This pin and the account password should be entered in your device within 10 minutes.")
+ exportedPIN.text = pin
+ } else {
+ infoLabel.isSucessState = false
+ yourPinLabel.visible = false
+ exportedPIN.visible = false
+
+ switch(status){
+ case NameDirectory.ExportOnRingStatus.WRONG_PASSWORD:
+ infoLabel.text = qsTr("Incorrect password")
+
+ break
+ case NameDirectory.ExportOnRingStatus.NETWORK_ERROR:
+ infoLabel.text = qsTr("Error connecting to the network.\nPlease try again later.")
+
+ break
+ case NameDirectory.ExportOnRingStatus.INVALID:
+ infoLabel.text = qsTr("Something went wrong.\n")
+
+ break
+ }
+ }
+ stackedWidget.currentIndex = 2
+ }
+
+ property int exportTimeout : 20000
+
+ Connections{
+ target: ClientWrapper.nameDirectory
+
+ function onExportOnRingEnded(status, pin){
+ setExportPage(status, pin)
+ }
+ }
+
+ visible: false
+
+ anchors.centerIn: parent.Center
+ x: (parent.width - width) / 2
+ y: (parent.height - height) / 2
+
+ title: qsTr("Link another device")
+
+ onClosed: {
+ if(infoLabel.isSucessState){
+ accept()
+ } else {
+ reject()
+ }
+ }
+
+ contentItem: Rectangle{
+ implicitWidth: 365
+ implicitHeight: 208
+
+ StackLayout{
+ id: stackedWidget
+ anchors.fill: parent
+
+ currentIndex: 2
+
+ Rectangle{
+ id: passwordConfirmPage
+
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+
+ Layout.leftMargin: 11
+ Layout.rightMargin: 11
+ Layout.topMargin: 11
+ Layout.bottomMargin: 11
+
+ ColumnLayout{
+ anchors.fill: parent
+ spacing: 7
+
+ Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter
+
+ Item{
+ Layout.alignment: Qt.AlignHCenter
+
+ Layout.fillHeight: true
+ Layout.maximumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.minimumHeight: 20
+ }
+
+ Label{
+ Layout.preferredWidth: 219
+ Layout.alignment: Qt.AlignHCenter
+ wrapMode: Text.Wrap
+ text: qsTr("Enter your account password")
+ font.pointSize: 8
+ font.kerning: true
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ Item{
+ Layout.alignment: Qt.AlignHCenter
+
+ Layout.fillHeight: true
+
+ Layout.maximumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.minimumHeight: 20
+ }
+
+ InfoLineEdit{
+ id: passwordEdit
+
+ Layout.alignment: Qt.AlignHCenter
+
+ Layout.minimumWidth: 294
+ Layout.preferredWidth: 294
+
+ Layout.preferredHeight: 30
+ Layout.minimumHeight: 30
+
+ echoMode: TextInput.Password
+
+ placeholderText: qsTr("Password")
+ }
+
+ Item{
+ Layout.alignment: Qt.AlignHCenter
+
+ Layout.fillHeight: true
+
+ Layout.maximumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.minimumHeight: 20
+ }
+
+ RowLayout{
+ spacing: 7
+
+ Layout.alignment: Qt.AlignHCenter
+ Layout.fillWidth: true
+
+ Item{
+ Layout.fillWidth: true
+
+ Layout.maximumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.minimumHeight: 20
+ }
+
+ HoverableRadiusButton{
+ id: btnPasswordOk
+
+ Layout.maximumWidth: 130
+ Layout.preferredWidth: 130
+ Layout.minimumWidth: 130
+
+ Layout.maximumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.minimumHeight: 30
+
+ radius: height /2
+
+ text: qsTr("Register")
+ font.pointSize: 10
+ font.kerning: true
+
+ onClicked: {
+ setGeneratingPage()
+ }
+ }
+
+ Item{
+ Layout.fillWidth: true
+ Layout.minimumWidth: 40
+
+ Layout.maximumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.minimumHeight: 20
+ }
+
+ HoverableButtonTextItem {
+ id: btnCancel
+
+ Layout.maximumWidth: 130
+ Layout.preferredWidth: 130
+ Layout.minimumWidth: 130
+
+ Layout.maximumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.minimumHeight: 30
+
+ backgroundColor: "red"
+ onEnterColor: Qt.rgba(150 / 256, 0, 0, 0.7)
+ onDisabledBackgroundColor: Qt.rgba(
+ 255 / 256,
+ 0, 0, 0.8)
+ onPressColor: backgroundColor
+ textColor: "white"
+
+ radius: height /2
+
+ text: qsTr("Cancel")
+ font.pointSize: 10
+ font.kerning: true
+
+ onClicked: {
+ reject()
+ }
+ }
+
+ Item{
+ Layout.fillWidth: true
+ Layout.minimumWidth: 40
+
+ Layout.maximumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.minimumHeight: 20
+ }
+ }
+
+ Item{
+ Layout.alignment: Qt.AlignHCenter
+
+ Layout.fillHeight: true
+
+ Layout.maximumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.minimumHeight: 20
+ }
+ }
+ }
+
+ Rectangle{
+ id: exportingPage
+
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+
+ Layout.leftMargin: 11
+ Layout.rightMargin: 11
+ Layout.topMargin: 11
+ Layout.bottomMargin: 11
+
+ ColumnLayout{
+ anchors.fill: parent
+ spacing: 7
+
+ Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter
+
+ Item{
+ Layout.alignment: Qt.AlignHCenter
+
+ Layout.fillHeight: true
+ Layout.minimumHeight: 40
+
+ Layout.maximumWidth: 20
+ Layout.preferredWidth: 20
+ Layout.minimumWidth: 20
+ }
+
+ RowLayout{
+ Layout.fillWidth: true
+ spacing: 0
+
+ Layout.maximumHeight: 30
+
+ Item{
+ Layout.fillWidth: true
+
+ Layout.maximumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.minimumHeight: 20
+ }
+
+ Label{
+ Layout.alignment: Qt.AlignHCenter
+
+ Layout.maximumWidth: 0
+ Layout.preferredWidth: 341
+
+ Layout.minimumHeight: 0
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ wrapMode: Text.Wrap
+ text: qsTr("Exporting Account")
+ font.pointSize: 8
+ font.kerning: true
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ Item{
+ Layout.fillWidth: true
+
+ Layout.maximumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.minimumHeight: 20
+ }
+ }
+
+ Item{
+ Layout.alignment: Qt.AlignHCenter
+
+ Layout.fillHeight: true
+
+ Layout.maximumWidth: 20
+ Layout.preferredWidth: 20
+ Layout.minimumWidth: 20
+ }
+
+ RowLayout{
+ spacing: 7
+
+ Item{
+ Layout.fillWidth: true
+
+ Layout.maximumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.minimumHeight: 20
+ }
+
+ Label{
+ id: exportingSpinner
+
+ Layout.alignment: Qt.AlignHCenter
+
+ Layout.maximumWidth: 96
+ Layout.preferredWidth: 96
+ Layout.minimumWidth: 96
+
+ Layout.maximumHeight: 96
+ Layout.preferredHeight: 96
+ Layout.minimumHeight: 96
+
+ background: Rectangle {
+ anchors.fill: parent
+ AnimatedImage {
+ id: spinnerMovie
+
+ anchors.fill: parent
+
+ source: "qrc:/images/jami_eclipse_spinner.gif"
+
+ playing: exportingSpinner.visible
+ paused: false
+ fillMode: Image.PreserveAspectFit
+ mipmap: true
+ }
+ }
+ }
+
+ Item{
+ Layout.fillWidth: true
+
+ Layout.maximumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.minimumHeight: 20
+ }
+
+ }
+
+ Item{
+ Layout.alignment: Qt.AlignHCenter
+
+ Layout.fillHeight: true
+ Layout.minimumHeight: 40
+
+ Layout.maximumWidth: 20
+ Layout.preferredWidth: 20
+ Layout.minimumWidth: 20
+ }
+ }
+ }
+
+ Rectangle{
+ id: exportedPage
+
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+
+ Layout.leftMargin: 11
+ Layout.rightMargin: 11
+ Layout.topMargin: 11
+ Layout.bottomMargin: 11
+
+ ColumnLayout{
+ anchors.fill: parent
+ spacing: 7
+
+ Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter
+
+ Item{
+ Layout.fillHeight: true
+
+ Layout.maximumWidth: 20
+ Layout.preferredWidth: 20
+ Layout.minimumWidth: 20
+ }
+
+ RowLayout{
+ spacing: 7
+
+ Layout.alignment: Qt.AlignHCenter
+ Layout.fillWidth: true
+
+ Item{
+ Layout.fillWidth: true
+
+ Layout.maximumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.minimumHeight: 20
+ }
+
+ Label{
+ id: yourPinLabel
+
+ Layout.alignment: Qt.AlignHCenter
+
+ Layout.preferredHeight: 25
+
+ wrapMode: Text.Wrap
+ text: "Your PIN is:"
+ font.pointSize: 8
+ font.kerning: true
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ Item{
+ Layout.alignment: Qt.AlignHCenter
+
+ Layout.maximumWidth: 20
+ Layout.preferredWidth: 20
+ Layout.minimumWidth: 20
+
+ Layout.maximumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.minimumHeight: 20
+ }
+
+ Label{
+ id: exportedPIN
+
+ Layout.alignment: Qt.AlignHCenter
+
+ Layout.preferredHeight: 25
+
+ wrapMode: Text.Wrap
+ text: "PIN"
+ font.pointSize: 12
+ font.kerning: true
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ Item{
+ Layout.fillWidth: true
+
+ Layout.maximumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.minimumHeight: 20
+ }
+ }
+
+ RowLayout{
+ spacing: 7
+
+ Layout.alignment: Qt.AlignHCenter
+ Layout.fillWidth: true
+
+ Item{
+ Layout.fillWidth: true
+
+ Layout.maximumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.minimumHeight: 20
+ }
+
+ Label{
+ id: infoLabel
+
+ property bool isSucessState: false
+ property int borderWidth : isSucessState? 1 : 0
+ property int borderRadius : isSucessState? 15 : 0
+ property string backgroundColor : isSucessState? "whitesmoke" : "transparent"
+ property string borderColor : isSucessState? "lightgray" : "transparent"
+ color: isSucessState ? "#2b5084" : "black"
+ padding: isSucessState ? 8 : 0
+
+ Layout.alignment: Qt.AlignHCenter
+ Layout.preferredWidth: 320
+ Layout.preferredHeight: 50
+
+ wrapMode: Text.Wrap
+ text: qsTr("This pin and the account password should be entered in your device within 10 minutes.")
+ font.pointSize: 8
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+
+ background: Rectangle{
+ id: infoLabelBackground
+
+ anchors.fill: parent
+ border.width: infoLabel.borderWidth
+ border.color: infoLabel.borderColor
+ radius: infoLabel.borderRadius
+ color: infoLabel.backgroundColor
+ }
+ }
+
+ Item{
+ Layout.fillWidth: true
+
+ Layout.maximumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.minimumHeight: 20
+ }
+ }
+
+ Item{
+ Layout.fillHeight: true
+
+ Layout.maximumWidth: 20
+ Layout.preferredWidth: 20
+ Layout.minimumWidth: 20
+ }
+
+ RowLayout{
+ spacing: 7
+
+ Layout.alignment: Qt.AlignHCenter
+ Layout.fillWidth: true
+
+ Item{
+ Layout.fillWidth: true
+
+ Layout.maximumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.minimumHeight: 20
+ }
+
+ HoverableRadiusButton{
+ id: btnCloseExportDialog
+
+ Layout.alignment: Qt.AlignHCenter
+
+ Layout.maximumWidth: 130
+ Layout.preferredWidth: 130
+ Layout.minimumWidth: 130
+
+ Layout.maximumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.minimumHeight: 30
+
+ radius: height /2
+
+ text: qsTr("Close")
+ font.pointSize: 10
+ font.kerning: true
+
+ onClicked: {
+ if(infoLabel.isSucessState){
+ accept()
+ } else {
+ reject()
+ }
+ }
+ }
+
+ Item{
+ Layout.fillWidth: true
+
+ Layout.maximumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.minimumHeight: 20
+ }
+ }
+
+ Item{
+ Layout.fillHeight: true
+
+ Layout.maximumWidth: 20
+ Layout.preferredWidth: 20
+ Layout.minimumWidth: 20
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/src/settingsview/components/NameRegistrationDialog.qml b/src/settingsview/components/NameRegistrationDialog.qml
new file mode 100644
index 0000000..ab9988d
--- /dev/null
+++ b/src/settingsview/components/NameRegistrationDialog.qml
@@ -0,0 +1,555 @@
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+import QtQuick 2.15
+import QtQuick.Controls 2.14
+import QtQuick.Layouts 1.14
+import QtQuick.Controls.Styles 1.4
+import net.jami.Models 1.0
+
+import "../../commoncomponents"
+
+Dialog {
+ id: nameRegistrationDialog
+
+ property string registerdName : ""
+
+ function openNameRegistrationDialog(registerNameIn){
+ registerdName = registerNameIn
+ lblRegistrationError.text = qsTr("Something went wrong")
+ passwordEdit.clear()
+ if(ClientWrapper.accountAdaptor.hasPassword()){
+ stackedWidget.currentIndex = 0
+ } else {
+ startRegistration()
+ }
+
+ nameRegistrationDialog.open()
+ }
+
+ function startRegistration(){
+ startSpinner()
+ timerForStartRegistration.restart()
+ }
+
+ function slotStartNameRegistration(){
+ var password = passwordEdit.text
+ ClientWrapper.accountModel.registerName(ClientWrapper.utilsAdaptor.getCurrAccId(), password, registerdName)
+ }
+
+ function startSpinner(){
+ stackedWidget.currentIndex = 1
+ spinnerLabel.visible = true
+ spinnerMovie.playing = true
+ }
+
+ Timer{
+ id: timerForStartRegistration
+
+ interval: 100
+ repeat: false
+
+ onTriggered: {
+ slotStartNameRegistration()
+ }
+ }
+
+ Connections{
+ target: ClientWrapper.nameDirectory
+
+ function onNameRegistrationEnded(status, name){
+ if(status === NameDirectory.RegisterNameStatus.SUCCESS){
+ accept()
+ } else {
+ switch(status){
+ case NameDirectory.RegisterNameStatus.WRONG_PASSWORD:
+ lblRegistrationError.text = qsTr("Incorrect password")
+ break
+
+ case NameDirectory.RegisterNameStatus.NETWORK_ERROR:
+ lblRegistrationError.text = qsTr("Network error")
+ break
+ default:
+ break
+ }
+ stackedWidget.currentIndex = 2
+ }
+ }
+ }
+
+ visible: false
+
+ anchors.centerIn: parent.Center
+ x: (parent.width - width) / 2
+ y: (parent.height - height) / 2
+
+ title: qsTr("Set Registered Name")
+
+ onClosed: {
+ reject()
+ }
+
+ contentItem: Rectangle{
+ implicitWidth: 365
+ implicitHeight: 208
+
+ StackLayout{
+ id: stackedWidget
+ anchors.fill: parent
+
+ currentIndex: 0
+
+ Rectangle{
+ id: passwordConfirmPage
+
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+
+ Layout.leftMargin: 11
+ Layout.rightMargin: 11
+ Layout.topMargin: 11
+ Layout.bottomMargin: 11
+
+ ColumnLayout{
+ anchors.fill: parent
+ spacing: 7
+
+ Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter
+
+ Item{
+ Layout.alignment: Qt.AlignHCenter
+
+ Layout.fillHeight: true
+ Layout.maximumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.minimumHeight: 20
+ }
+
+ Label{
+ Layout.preferredWidth: 219
+ Layout.alignment: Qt.AlignHCenter
+ wrapMode: Text.Wrap
+ text: qsTr("Enter your account password")
+ font.pointSize: 8
+ font.kerning: true
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ Item{
+ Layout.alignment: Qt.AlignHCenter
+
+ Layout.fillHeight: true
+
+ Layout.maximumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.minimumHeight: 20
+ }
+
+ InfoLineEdit{
+ id: passwordEdit
+
+ Layout.alignment: Qt.AlignHCenter
+
+ Layout.minimumWidth: 294
+ Layout.preferredWidth: 294
+
+ Layout.preferredHeight: 30
+ Layout.minimumHeight: 30
+
+ echoMode: TextInput.Password
+
+ placeholderText: qsTr("Password")
+ }
+
+ Item{
+ Layout.alignment: Qt.AlignHCenter
+
+ Layout.fillHeight: true
+
+ Layout.maximumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.minimumHeight: 20
+ }
+
+ RowLayout{
+ spacing: 7
+
+ Layout.alignment: Qt.AlignHCenter
+
+ Layout.fillWidth: true
+
+ Item{
+ Layout.fillWidth: true
+
+ Layout.maximumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.minimumHeight: 20
+ }
+
+ HoverableRadiusButton{
+ id: btnRegister
+
+ Layout.maximumWidth: 130
+ Layout.preferredWidth: 130
+ Layout.minimumWidth: 130
+
+ Layout.maximumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.minimumHeight: 30
+
+ radius: height /2
+
+ text: qsTr("Register")
+ font.pointSize: 10
+ font.kerning: true
+
+ onClicked: {
+ startRegistration()
+ }
+ }
+
+ Item{
+ Layout.fillWidth: true
+ Layout.minimumWidth: 40
+
+ Layout.maximumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.minimumHeight: 20
+ }
+
+ HoverableButtonTextItem {
+ id: btnCancel
+
+ Layout.maximumWidth: 130
+ Layout.preferredWidth: 130
+ Layout.minimumWidth: 130
+
+ Layout.maximumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.minimumHeight: 30
+
+ backgroundColor: "red"
+ onEnterColor: Qt.rgba(150 / 256, 0, 0, 0.7)
+ onDisabledBackgroundColor: Qt.rgba(
+ 255 / 256,
+ 0, 0, 0.8)
+ onPressColor: backgroundColor
+ textColor: "white"
+
+ radius: height /2
+
+ text: qsTr("Cancel")
+ font.pointSize: 10
+ font.kerning: true
+
+ onClicked: {
+ reject()
+ }
+ }
+
+ Item{
+ Layout.fillWidth: true
+ Layout.minimumWidth: 40
+
+ Layout.maximumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.minimumHeight: 20
+ }
+ }
+
+ Item{
+ Layout.alignment: Qt.AlignHCenter
+
+ Layout.fillHeight: true
+
+ Layout.maximumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.minimumHeight: 20
+ }
+ }
+ }
+
+ Rectangle{
+ id: registeringPage
+
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+
+ Layout.leftMargin: 11
+ Layout.rightMargin: 11
+ Layout.topMargin: 11
+ Layout.bottomMargin: 11
+
+ ColumnLayout{
+ anchors.fill: parent
+ spacing: 7
+
+ Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter
+
+ Item{
+ Layout.alignment: Qt.AlignHCenter
+
+ Layout.fillHeight: true
+ Layout.minimumHeight: 40
+
+ Layout.maximumWidth: 20
+ Layout.preferredWidth: 20
+ Layout.minimumWidth: 20
+ }
+
+ RowLayout{
+ Layout.fillWidth: true
+ spacing: 0
+
+ Layout.maximumHeight: 30
+
+ Item{
+ Layout.fillWidth: true
+
+ Layout.maximumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.minimumHeight: 20
+ }
+
+ Label{
+ Layout.alignment: Qt.AlignHCenter
+
+ Layout.maximumWidth: 0
+ Layout.preferredWidth: 341
+
+ Layout.minimumHeight: 0
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ wrapMode: Text.Wrap
+ text: qsTr("Registering Name")
+ font.pointSize: 8
+ font.kerning: true
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ Item{
+ Layout.fillWidth: true
+
+ Layout.maximumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.minimumHeight: 20
+ }
+ }
+
+ Item{
+ Layout.alignment: Qt.AlignHCenter
+
+ Layout.fillHeight: true
+
+ Layout.maximumWidth: 20
+ Layout.preferredWidth: 20
+ Layout.minimumWidth: 20
+ }
+
+ RowLayout{
+ spacing: 7
+
+ Item{
+ Layout.fillWidth: true
+
+ Layout.maximumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.minimumHeight: 20
+ }
+
+ Label{
+ id: spinnerLabel
+
+ Layout.alignment: Qt.AlignHCenter
+
+ Layout.maximumWidth: 96
+ Layout.preferredWidth: 96
+ Layout.minimumWidth: 96
+
+ Layout.maximumHeight: 96
+ Layout.preferredHeight: 96
+ Layout.minimumHeight: 96
+
+ background: Rectangle {
+ anchors.fill: parent
+ AnimatedImage {
+ id: spinnerMovie
+
+ anchors.fill: parent
+
+ source: "qrc:/images/jami_eclipse_spinner.gif"
+
+ playing: spinnerLabel.visible
+ paused: false
+ fillMode: Image.PreserveAspectFit
+ mipmap: true
+ }
+ }
+ }
+
+ Item{
+ Layout.fillWidth: true
+
+ Layout.maximumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.minimumHeight: 20
+ }
+
+ }
+
+ Item{
+ Layout.alignment: Qt.AlignHCenter
+
+ Layout.fillHeight: true
+ Layout.minimumHeight: 40
+
+ Layout.maximumWidth: 20
+ Layout.preferredWidth: 20
+ Layout.minimumWidth: 20
+ }
+ }
+ }
+
+ Rectangle{
+ id: nameNotRegisteredPage
+
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+
+ ColumnLayout{
+ anchors.fill: parent
+
+ Item{
+ Layout.fillHeight: true
+ Layout.minimumHeight: 40
+
+ Layout.maximumWidth: 20
+ Layout.preferredWidth: 20
+ Layout.minimumWidth: 20
+ }
+
+ RowLayout{
+ spacing: 7
+ Layout.fillWidth: true
+
+ Item{
+ Layout.fillWidth: true
+
+ Layout.maximumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.minimumHeight: 20
+ }
+
+ Label{
+ id: lblRegistrationError
+
+ Layout.alignment: Qt.AlignHCenter
+
+ Layout.maximumWidth: 0
+ Layout.preferredWidth: 341
+
+ Layout.minimumHeight: 0
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ wrapMode: Text.Wrap
+ text: qsTr("Something went wrong")
+ font.pointSize: 8
+ font.kerning: true
+ color: "red"
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ Item{
+ Layout.fillWidth: true
+
+ Layout.maximumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.minimumHeight: 20
+ }
+ }
+
+ Item{
+ Layout.fillHeight: true
+ Layout.minimumHeight: 40
+
+ Layout.maximumWidth: 20
+ Layout.preferredWidth: 20
+ Layout.minimumWidth: 20
+ }
+
+ RowLayout{
+ spacing: 7
+ Layout.fillWidth: true
+
+ Item{
+ Layout.fillWidth: true
+
+ Layout.maximumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.minimumHeight: 20
+ }
+
+ HoverableRadiusButton{
+ id: btnCloseRegisterDialog
+
+ Layout.maximumWidth: 130
+ Layout.preferredWidth: 130
+ Layout.minimumWidth: 130
+
+ Layout.maximumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.minimumHeight: 30
+
+ radius: height /2
+
+ text: qsTr("Close")
+ font.pointSize: 10
+ font.kerning: true
+
+ onClicked: {
+ reject()
+ }
+ }
+
+ Item{
+ Layout.fillWidth: true
+
+ Layout.maximumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.minimumHeight: 20
+ }
+ }
+
+ Item{
+ Layout.fillHeight: true
+ Layout.minimumHeight: 40
+
+ Layout.maximumWidth: 20
+ Layout.preferredWidth: 20
+ Layout.minimumWidth: 20
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/src/settingsview/components/PluginItemDelegate.qml b/src/settingsview/components/PluginItemDelegate.qml
new file mode 100644
index 0000000..3946a15
--- /dev/null
+++ b/src/settingsview/components/PluginItemDelegate.qml
@@ -0,0 +1,176 @@
+/*
+ * Copyright (C) 2019-2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+import QtQuick 2.15
+import QtQuick.Window 2.15
+import QtQuick.Controls 2.15
+import QtQuick.Controls.Universal 2.12
+import QtQuick.Layouts 1.3
+import QtGraphicalEffects 1.14
+import QtQuick.Controls.Styles 1.4
+import net.jami.Models 1.0
+
+import "../../commoncomponents"
+
+ItemDelegate {
+ id: pluginItemDelegate
+
+ property string pluginName : ""
+ property string pluginId: ""
+ property string pluginIcon: ""
+ property bool isLoaded: false
+
+ signal btnLoadPluginToggled
+ signal btnPreferencesPluginClicked
+
+ highlighted: ListView.isCurrentItem
+
+ RowLayout{
+ anchors.fill: parent
+
+ Label{
+ Layout.leftMargin: 7
+ Layout.bottomMargin: 7
+
+ Layout.minimumWidth: 30
+ Layout.preferredWidth: 30
+ Layout.maximumWidth: 30
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ background: Rectangle{
+ anchors.fill: parent
+ Image {
+ anchors.fill: parent
+ source: "file:"+pluginIcon
+ }
+ }
+ }
+
+ ColumnLayout{
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+
+ Layout.leftMargin: 7
+ Layout.topMargin: 7
+ Layout.bottomMargin: 7
+
+ RowLayout{
+
+ Layout.minimumHeight: 30
+
+ Label{
+ id: labelDeviceId
+
+ Layout.minimumHeight: 20
+
+ font.pointSize: 10
+ font.kerning: true
+ text: pluginName === "" ? pluginId : pluginName
+ }
+
+ Item{
+ Layout.fillWidth: true
+
+ Layout.minimumWidth: 0
+ Layout.minimumHeight: 20
+ }
+ }
+ }
+
+ Switch {
+ id: loadSwitch
+ property bool isHovering: false
+
+ Layout.bottomMargin: 7
+ Layout.rightMargin: 15
+
+ Layout.maximumWidth: 30
+ Layout.preferredWidth: 30
+ Layout.minimumWidth: 30
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ ToolTip.visible: isHovering
+ ToolTip.text: {
+ return qsTr("Load/Unload")
+ }
+
+ checked: isLoaded
+ onClicked: {
+ btnLoadPluginToggled()
+ }
+
+ background: Rectangle {
+ id: switchBackground
+ MouseArea {
+ id: btnMouseArea
+ anchors.fill: parent
+ hoverEnabled: true
+ onPressed: {
+ }
+ onReleased: {
+ loadSwitch.clicked()
+ }
+ onEntered: {
+ loadSwitch.isHovering = true
+ }
+ onExited: {
+ loadSwitch.isHovering = false
+ }
+ }
+ }
+ }
+
+ HoverableRadiusButton{
+ id: btnPreferencesPlugin
+
+ Layout.bottomMargin: 7
+ Layout.rightMargin: 7
+ Layout.alignment: Qt.AlignRight
+
+ Layout.minimumWidth: 30
+ Layout.preferredWidth: 30
+ Layout.maximumWidth: 30
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ buttonImageHeight: height
+ buttonImageWidth: height
+
+ source:{
+ return "qrc:/images/icons/round-settings-24px.svg"
+ }
+
+ ToolTip.visible: isHovering
+ ToolTip.text: {
+ return qsTr("Edit preferences")
+ }
+
+ onClicked: {
+ btnPreferencesPluginClicked()
+ }
+ }
+ }
+}
diff --git a/src/settingsview/components/PluginListPreferencesView.qml b/src/settingsview/components/PluginListPreferencesView.qml
new file mode 100644
index 0000000..9b8c03a
--- /dev/null
+++ b/src/settingsview/components/PluginListPreferencesView.qml
@@ -0,0 +1,334 @@
+/*
+ * Copyright (C) 2019-2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+import QtQuick 2.15
+import QtQuick.Window 2.14
+import QtQuick.Controls 2.14
+import QtQuick.Controls.Universal 2.12
+import QtQuick.Layouts 1.3
+import Qt.labs.platform 1.1
+import QtGraphicalEffects 1.14
+import net.jami.Models 1.0
+import "../../commoncomponents"
+
+Rectangle {
+ id: pluginListPreferencesViewRect
+
+ enum Type {
+ LIST,
+ DEFAULT
+ }
+
+ signal updatePluginList
+
+ property string pluginName: ""
+ property string pluginIcon: ""
+ property string pluginId: ""
+ property bool isLoaded: false
+ property int size: 0
+
+ visible: false
+
+ function updatePreferenceListDisplayed(show){
+ // settings
+ getSize(pluginId, show)
+ preferenceItemListModel.pluginId = pluginId
+ preferenceItemListModel.reset()
+ }
+
+ function resetPluginSlot(){
+ resetPluginMessageBox.open()
+ }
+
+ function resetPlugin(){
+ ClientWrapper.pluginModel.resetPluginPreferencesValues(pluginId, isLoaded)
+ updatePluginList()
+ }
+
+ function uninstallPluginSlot(){
+ uninstallPluginMessageBox.open()
+ }
+
+ function uninstallPlugin(){
+ ClientWrapper.pluginModel.uninstallPlugin(pluginId)
+ updatePluginList()
+ }
+
+ function getSize(pluginId, show){
+ size = 50 * ClientWrapper.pluginModel.getPluginPreferences(pluginId).length
+ if (show) {
+ height = 200 + size
+ pluginPreferenceView.height = size
+ } else {
+ height = 25
+ }
+ }
+
+ function editPreferenceSlot(preferenceType, preferenceName, preferenceEntryValues){
+ switch (preferenceType){
+ case PluginListPreferencesView.LIST:
+ console.log("LIST")
+ editListMessageBox.preferenceName = preferenceName
+ editListMessageBox.preferenceEntryValues = preferenceEntryValues
+ editListMessageBox.open()
+ break
+ case PluginListPreferencesView.DEFAULT:
+ console.log("Unrecognizable Type")
+ break
+ default:
+ console.log("Unrecognizable Type")
+ break
+ }
+ }
+
+ function setPreference(pluginId, preferenceKey, preferenceNewValue)
+ {
+ ClientWrapper.pluginModel.setPluginPreferences(pluginId, preferenceKey, preferenceNewValue, isLoaded)
+ preferenceItemListModel.reset()
+ }
+
+ MessageBox{
+ id: uninstallPluginMessageBox
+
+ title:qsTr("Uninstall plugin")
+ text :qsTr("Are you sure you wish to uninstall " + pluginName + " ?")
+ standardButtons: StandardButton.Ok | StandardButton.Cancel
+
+ onYes: {
+ accepted()
+ }
+
+ onNo:{
+ rejected()
+ }
+
+ onDiscard: {
+ rejected()
+ }
+
+ onAccepted: {
+ uninstallPlugin()
+ pluginListPreferencesViewRect.visible = false
+ }
+
+ onRejected: {}
+ }
+
+ MessageBox{
+ id: resetPluginMessageBox
+
+ title:qsTr("Reset preferences")
+ text :qsTr("Are you sure you wish to reset "+ pluginName + " preferences?")
+
+ standardButtons: StandardButton.Ok | StandardButton.Cancel
+
+ onYes: {
+ accepted()
+ }
+
+ onNo:{
+ rejected()
+ }
+
+ onDiscard: {
+ rejected()
+ }
+
+ onAccepted: {
+ resetPlugin()
+ }
+
+ onRejected: {}
+ }
+
+ MessageBox{
+ id: editListMessageBox
+
+ property string preferenceName: ""
+ property var preferenceEntryValues: []
+
+ title:qsTr("Edit " + preferenceName)
+ text :qsTr(preferenceName + " options: " + preferenceEntryValues)
+
+ standardButtons: StandardButton.Ok | StandardButton.Cancel
+
+ onYes: {
+ accepted()
+ }
+
+ onNo:{
+ rejected()
+ }
+
+ onDiscard: {
+ rejected()
+ }
+
+ onAccepted: {
+ // setPreference(pluginId, preferenceItemDelegate.preferenceKey, preferenceItemDelegate.preferenceNewValue)
+ }
+
+ onRejected: {}
+ }
+
+ PreferenceItemListModel {
+ id: preferenceItemListModel
+ }
+
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+
+ ColumnLayout {
+ spacing: 6
+ Layout.fillHeight: true
+ Layout.maximumWidth: 580
+ Layout.preferredWidth: 580
+ Layout.minimumWidth: 580
+
+ Label{
+ Layout.alignment: Qt.AlignHCenter
+
+ Layout.minimumWidth: 30
+ Layout.preferredWidth: 30
+ Layout.maximumWidth: 30
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ background: Rectangle{
+ anchors.fill: parent
+ Image {
+ anchors.fill: parent
+ source: "file:"+pluginIcon
+ }
+ }
+ }
+
+ Label {
+ Layout.alignment: Qt.AlignHCenter
+ Layout.topMargin: 10
+ Layout.fillWidth: true
+ Layout.minimumHeight: 25
+ Layout.preferredHeight: 25
+ Layout.maximumHeight: 25
+
+ text: qsTr(pluginName + "\npreferences")
+ font.pointSize: 13
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ RowLayout {
+ spacing: 6
+ Layout.fillWidth: true
+ Layout.topMargin: 10
+ Layout.maximumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.minimumHeight: 30
+
+ HoverableRadiusButton {
+ id: resetButton
+
+ Layout.maximumWidth: 157
+ Layout.preferredWidth: 157
+ Layout.minimumWidth: 157
+
+ Layout.fillHeight: true
+
+ radius: height / 2
+
+ icon.source: "qrc:/images/icons/settings_backup_restore-black-18dp.svg"
+ icon.height: 24
+ icon.width: 24
+
+ text: qsTr("Reset")
+ fontPointSize: 10
+ font.kerning: true
+
+ onClicked: {
+ resetPluginSlot()
+ }
+ }
+
+ HoverableRadiusButton {
+ id: uninstallButton
+
+ Layout.maximumWidth: 157
+ Layout.preferredWidth: 157
+ Layout.minimumWidth: 157
+
+ Layout.fillHeight: true
+
+ radius: height / 2
+
+ icon.source: "qrc:/images/icons/ic_delete_black_18dp_2x.png"
+ icon.height: 24
+ icon.width: 24
+
+ text: qsTr("Uninstall")
+ fontPointSize: 10
+ font.kerning: true
+
+ onClicked: {
+ uninstallPluginSlot()
+ }
+ }
+ }
+
+ ListViewJami {
+ id: pluginPreferenceView
+
+ Layout.minimumWidth: 320
+ Layout.preferredWidth: 320
+ Layout.maximumWidth: 320
+
+ Layout.minimumHeight: 0
+ Layout.preferredHeight: height
+ Layout.maximumHeight: 1000
+
+ model: preferenceItemListModel
+
+ delegate: PreferenceItemDelegate{
+ id: preferenceItemDelegate
+
+ width: pluginPreferenceView.width
+ height: 50
+
+ preferenceKey : PreferenceKey
+ preferenceName: PreferenceName
+ preferenceSummary: PreferenceSummary
+ preferenceType: PreferenceType
+ preferenceDefaultValue: PreferenceDefaultValue
+ preferenceEntries: PreferenceEntries
+ preferenceEntryValues: PreferenceEntryValues
+
+ onClicked: {
+ pluginPreferenceView.currentIndex = index
+ }
+ onBtnPreferenceClicked: {
+ console.log("edit preference ", preferenceName)
+ console.log("preference type ", preferenceType)
+ console.log("preference entry values ", preferenceEntryValues.length)
+ editPreferenceSlot(preferenceType, preferenceName, preferenceEntryValues)
+ }
+ }
+ }
+ }
+}
diff --git a/src/settingsview/components/PluginListSettingsView.qml b/src/settingsview/components/PluginListSettingsView.qml
new file mode 100644
index 0000000..09434a3
--- /dev/null
+++ b/src/settingsview/components/PluginListSettingsView.qml
@@ -0,0 +1,200 @@
+/*
+ * Copyright (C) 2019-2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+import QtQuick 2.15
+import QtQuick.Window 2.14
+import QtQuick.Controls 2.14
+import QtQuick.Controls.Universal 2.12
+import QtQuick.Layouts 1.3
+import Qt.labs.platform 1.1
+import QtGraphicalEffects 1.14
+import net.jami.Models 1.0
+import "../../commoncomponents"
+
+Rectangle {
+ id: pluginListSettingsViewRect
+
+ property PluginListPreferencesView pluginListPreferencesView
+ visible: false
+ signal scrollView
+
+ function updatePluginListDisplayed() {
+ // settings
+ }
+
+ function openPluginFileSlot(){
+ pluginPathDialog.open()
+ }
+
+ function updateAndShowPluginsSlot()
+ {
+ pluginItemListModel.reset()
+ }
+
+ function loadPluginSlot(pluginId, isLoaded){
+ var loaded = false
+ if (isLoaded)
+ ClientWrapper.pluginModel.unloadPlugin(pluginId)
+ else
+ loaded = ClientWrapper.pluginModel.loadPlugin(pluginId)
+ if(pluginListPreferencesView.pluginId === pluginId)
+ pluginListPreferencesView.isLoaded = loaded
+ updateAndShowPluginsSlot()
+ }
+
+ function openPreferencesPluginSlot(pluginName, pluginIcon, pluginId, isLoaded){
+ updateAndShowPluginPreferenceSlot(pluginName, pluginIcon, pluginId, isLoaded)
+ }
+
+ function updateAndShowPluginPreferenceSlot(pluginName, pluginIcon, pluginId, isLoaded){
+ pluginListPreferencesView.pluginName = pluginName
+ pluginListPreferencesView.pluginIcon = pluginIcon
+ pluginListPreferencesView.pluginId = pluginId
+ pluginListPreferencesView.isLoaded = isLoaded
+ pluginListPreferencesView.updatePreferenceListDisplayed(!pluginListPreferencesView.visible)
+ pluginListPreferencesView.visible = !pluginListPreferencesView.visible
+ scrollView()
+ }
+
+ JamiFileDialog {
+ id: pluginPathDialog
+
+ mode: JamiFileDialog.OpenFile
+ title: qsTr("Select A Plugin to Install")
+ folder: StandardPaths.writableLocation(StandardPaths.DownloadLocation)
+
+ nameFilters: [qsTr("Plugin Files") + " (*.jpl)", qsTr(
+ "All files") + " (*)"]
+
+ onRejected: {}
+
+ onVisibleChanged: {
+ if (!visible) {
+ rejected()
+ }
+ }
+
+ onAccepted: {
+ var url = ClientWrapper.utilsAdaptor.getAbsPath(file.toString())
+ ClientWrapper.pluginModel.installPlugin(url, true)
+ updateAndShowPluginsSlot()
+ }
+ }
+
+ PluginItemListModel {
+ id: pluginItemListModel
+ }
+
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+
+ ColumnLayout {
+ id: pluginListViewLayout
+
+ Layout.fillHeight: true
+ Layout.maximumWidth: 580
+ Layout.preferredWidth: 580
+ Layout.minimumWidth: 580
+
+ Label {
+ Layout.fillWidth: true
+ Layout.minimumHeight: 25
+ Layout.preferredHeight: 25
+ Layout.maximumHeight: 25
+
+ text: qsTr("Installed plugins")
+ font.pointSize: 13
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ ColumnLayout {
+ spacing: 6
+
+ Layout.fillWidth: true
+ Layout.topMargin: 6
+
+ HoverableRadiusButton {
+ id: installButton
+
+ Layout.leftMargin: 20
+
+ Layout.maximumWidth: 320
+ Layout.preferredWidth: 320
+ Layout.minimumWidth: 320
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ radius: height / 2
+
+ text: qsTr("+ Install plugin")
+ fontPointSize: 10
+ font.kerning: true
+
+ onClicked: {
+ openPluginFileSlot()
+ }
+ }
+
+ ListViewJami {
+ id: pluginListView
+
+ Layout.leftMargin: 20
+
+ Layout.minimumWidth: 320
+ Layout.preferredWidth: 320
+ Layout.maximumWidth: 320
+
+ Layout.minimumHeight: 175
+ Layout.preferredHeight: 175
+ Layout.maximumHeight: 175
+
+ model: pluginItemListModel
+
+ delegate: PluginItemDelegate{
+ id: pluginItemDelegate
+
+ width: pluginListView.width
+ height: 50
+
+ pluginName : PluginName
+ pluginId: PluginId
+ pluginIcon: PluginIcon
+ isLoaded: IsLoaded
+
+ onClicked: {
+ pluginListView.currentIndex = index
+ }
+
+ onBtnLoadPluginToggled:{
+ loadPluginSlot(pluginId, isLoaded)
+ }
+
+ onBtnPreferencesPluginClicked:{
+ openPreferencesPluginSlot(pluginName, pluginIcon, pluginId, isLoaded)
+ }
+ }
+ }
+ }
+ }
+}
+
\ No newline at end of file
diff --git a/src/settingsview/components/PluginSettingsPage.qml b/src/settingsview/components/PluginSettingsPage.qml
new file mode 100644
index 0000000..b71f7aa
--- /dev/null
+++ b/src/settingsview/components/PluginSettingsPage.qml
@@ -0,0 +1,148 @@
+/*
+ * Copyright (C) 2019-2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+import QtQuick 2.15
+import QtQuick.Window 2.14
+import QtQuick.Controls 2.14
+import QtQuick.Controls.Universal 2.12
+import QtQuick.Layouts 1.3
+import Qt.labs.platform 1.1
+import QtGraphicalEffects 1.14
+import net.jami.Models 1.0
+import "../../commoncomponents"
+
+Rectangle {
+ id: pluginSettingsRect
+
+ function populatePluginSettings(){
+ // settings
+ enabledplugin.checked = ClientWrapper.pluginModel.getPluginsEnabled()
+ pluginListSettingsView.visible = enabledplugin.checked
+ if (pluginListSettingsView.visible) {
+ pluginListSettingsView.updatePluginListDisplayed()
+ }
+ }
+
+ function slotSetPluginEnabled(state){
+ ClientWrapper.pluginModel.setPluginsEnabled(state)
+ }
+
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+
+ ColumnLayout {
+ anchors.fill: parent
+ spacing: 6
+
+ width: parent.width
+ height: parent.height
+
+ Label {
+ width: parent.width
+ height: parent.height
+
+ Layout.leftMargin: 35
+ Layout.topMargin: 15
+ Layout.alignment: Qt.AlignTop
+
+ text: qsTr("Plugin")
+
+ font.pointSize: 15
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignBottom
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ ScrollView {
+ id: pluginScrollView
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+
+ width: parent.width
+ height: parent.height
+ focus: true
+
+ clip: true
+
+ ColumnLayout {
+ id: pluginViewLayout
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+
+ ToggleSwitch {
+ id: enabledplugin
+
+ Layout.topMargin: 15
+ Layout.leftMargin: 36
+
+ labelText: "Enable"
+ fontPointSize: 13
+
+ onSwitchToggled: {
+ slotSetPluginEnabled(checked)
+
+ pluginListSettingsView.visible = checked
+ if (!checked) {
+ pluginListPreferencesView.visible = checked
+ }
+ if (pluginListSettingsView.visible) {
+ pluginListSettingsView.updatePluginListDisplayed()
+ }
+ }
+ }
+ ColumnLayout {
+ spacing: 6
+ Layout.fillHeight: true
+ width:380
+ height:100
+
+ // instantiate plugin list setting page
+ PluginListSettingsView {
+ id: pluginListSettingsView
+
+ width:380
+ height:265
+ Layout.leftMargin: 35
+ Layout.topMargin: 15
+ Layout.alignment: Qt.AlignHCenter
+
+ pluginListPreferencesView: pluginListPreferencesView
+
+ onScrollView:{ }
+ }
+
+ PluginListPreferencesView {
+ id: pluginListPreferencesView
+
+ width:380
+ Layout.minimumHeight: 175
+ Layout.preferredHeight: height
+ Layout.maximumHeight: 1000
+ Layout.alignment: Qt.AlignHCenter
+ Layout.leftMargin: 55
+
+ onUpdatePluginList:{
+ pluginListSettingsView.updateAndShowPluginsSlot()
+ }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/src/settingsview/components/PreferenceItemDelegate.qml b/src/settingsview/components/PreferenceItemDelegate.qml
new file mode 100644
index 0000000..88574f2
--- /dev/null
+++ b/src/settingsview/components/PreferenceItemDelegate.qml
@@ -0,0 +1,102 @@
+/*
+ * Copyright (C) 2019-2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+import QtQuick 2.15
+import QtQuick.Window 2.15
+import QtQuick.Controls 2.15
+import QtQuick.Controls.Universal 2.12
+import QtQuick.Layouts 1.3
+import QtGraphicalEffects 1.14
+import QtQuick.Controls.Styles 1.4
+import net.jami.Models 1.0
+
+import "../../commoncomponents"
+
+ItemDelegate {
+ id: preferenceItemDelegate
+
+ property string preferenceKey: ""
+ property string preferenceName: ""
+ property string preferenceSummary: ""
+ property int preferenceType: -1
+ property string preferenceDefaultValue: ""
+ property var preferenceEntries: []
+ property var preferenceEntryValues: []
+ property string preferenceNewValue: ""
+
+ signal btnPreferenceClicked
+
+ highlighted: ListView.isCurrentItem
+
+ RowLayout{
+ anchors.fill: parent
+
+ ColumnLayout{
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+
+ Layout.topMargin: 7
+ Layout.bottomMargin: 7
+ Layout.leftMargin: 7
+
+ Layout.minimumHeight: 30
+
+ Label{
+ Layout.minimumHeight: 10
+ width: 320 - 36
+
+ font.pointSize: 10
+ font.kerning: true
+ font.bold: true
+ text: preferenceName
+ }
+ }
+
+ HoverableRadiusButton{
+ id: btnPreference
+
+ Layout.alignment: Qt.AlignRight
+ Layout.bottomMargin: 7
+ Layout.rightMargin: 7
+
+ Layout.minimumWidth: 30
+ Layout.preferredWidth: 30
+ Layout.maximumWidth: 30
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ buttonImageHeight: height
+ buttonImageWidth: height
+
+ source:{
+ return "qrc:/images/icons/round-settings-24px.svg"
+ }
+
+ ToolTip.visible: isHovering
+ ToolTip.text: {
+ return qsTr("Modify preference")
+ }
+
+ onClicked: {
+ btnPreferenceClicked()
+ }
+ }
+ }
+}
diff --git a/src/settingsview/components/RevokeDevicePasswordDialog.qml b/src/settingsview/components/RevokeDevicePasswordDialog.qml
new file mode 100644
index 0000000..69d433f
--- /dev/null
+++ b/src/settingsview/components/RevokeDevicePasswordDialog.qml
@@ -0,0 +1,193 @@
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+import QtQuick 2.15
+import QtQuick.Controls 2.14
+import QtQuick.Layouts 1.14
+import QtQuick.Controls.Styles 1.4
+
+import "../../commoncomponents"
+
+Dialog {
+ id: revokeDevicePasswordDialog
+
+ property string deviceId : ""
+
+ signal revokeDeviceWithPassword(string idOfDevice, string password)
+
+ function openRevokeDeviceDialog(deviceIdIn){
+ deviceId = deviceIdIn
+ passwordEdit.clear()
+ revokeDevicePasswordDialog.open()
+ }
+
+ visible: false
+
+ anchors.centerIn: parent.Center
+ x: (parent.width - width) / 2
+ y: (parent.height - height) / 2
+
+ title: qsTr("Enter this account's password to confirm the removal of this device")
+
+ onClosed: {
+ reject()
+ }
+
+ onAccepted:{
+ revokeDeviceWithPassword(deviceId,passwordEdit.text)
+ }
+
+ contentItem: Rectangle{
+ implicitWidth: 365
+ implicitHeight: 120
+
+ ColumnLayout{
+ anchors.fill: parent
+ spacing: 7
+
+ Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter
+
+ Item{
+ Layout.fillHeight: true
+
+ Layout.maximumWidth: 20
+ Layout.preferredWidth: 20
+ Layout.minimumWidth: 20
+ }
+
+ InfoLineEdit{
+ id: passwordEdit
+
+ Layout.alignment: Qt.AlignHCenter
+
+ Layout.minimumWidth: 294
+ Layout.preferredWidth: 294
+
+ Layout.preferredHeight: 30
+ Layout.minimumHeight: 30
+
+ echoMode: TextInput.Password
+
+ placeholderText: qsTr("Password")
+ }
+
+ Item{
+ Layout.fillHeight: true
+
+ Layout.maximumWidth: 20
+ Layout.preferredWidth: 20
+ Layout.minimumWidth: 20
+ }
+
+ RowLayout{
+ spacing: 7
+
+ Layout.alignment: Qt.AlignHCenter
+
+ Layout.fillWidth: true
+
+ Item{
+ Layout.fillWidth: true
+
+ Layout.maximumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.minimumHeight: 20
+ }
+
+ HoverableRadiusButton{
+ id: btnOkay
+
+ Layout.maximumWidth: 130
+ Layout.preferredWidth: 130
+ Layout.minimumWidth: 130
+
+ Layout.maximumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.minimumHeight: 30
+
+ radius: height /2
+
+ text: qsTr("Okay")
+ font.pointSize: 10
+ font.kerning: true
+
+ onClicked: {
+ accept()
+ }
+ }
+
+ Item{
+ Layout.fillWidth: true
+ Layout.minimumWidth: 40
+
+ Layout.maximumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.minimumHeight: 20
+ }
+
+ HoverableButtonTextItem {
+ id: btnCancel
+
+ Layout.maximumWidth: 130
+ Layout.preferredWidth: 130
+ Layout.minimumWidth: 130
+
+ Layout.maximumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.minimumHeight: 30
+
+ backgroundColor: "red"
+ onEnterColor: Qt.rgba(150 / 256, 0, 0, 0.7)
+ onDisabledBackgroundColor: Qt.rgba(
+ 255 / 256,
+ 0, 0, 0.8)
+ onPressColor: backgroundColor
+ textColor: "white"
+
+ radius: height /2
+
+ text: qsTr("Cancel")
+ font.pointSize: 10
+ font.kerning: true
+
+ onClicked: {
+ reject()
+ }
+ }
+
+ Item{
+ Layout.fillWidth: true
+ Layout.minimumWidth: 40
+
+ Layout.maximumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.minimumHeight: 20
+ }
+
+ }
+
+ Item{
+ Layout.fillHeight: true
+
+ Layout.maximumWidth: 20
+ Layout.preferredWidth: 20
+ Layout.minimumWidth: 20
+ }
+ }
+ }
+}
diff --git a/src/settingsview/components/SettingParaCombobox.qml b/src/settingsview/components/SettingParaCombobox.qml
new file mode 100644
index 0000000..b691acb
--- /dev/null
+++ b/src/settingsview/components/SettingParaCombobox.qml
@@ -0,0 +1,110 @@
+/*
+ * Copyright (C) 2019-2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+import QtQuick 2.15
+import QtQuick.Window 2.15
+import QtQuick.Controls 2.15
+import QtQuick.Controls.Universal 2.12
+import QtQuick.Layouts 1.3
+import QtGraphicalEffects 1.14
+import QtQuick.Controls.Styles 1.4
+
+ComboBox {
+ id: control
+
+ delegate: ItemDelegate {
+ width: control.width
+ contentItem: Text {
+ text: {
+ var currentItem = control.delegateModel.items.get(index)
+ return currentItem.model[control.textRole].toString()
+ }
+ color: "black"
+ font: control.font
+ elide: Text.ElideRight
+ verticalAlignment: Text.AlignVCenter
+ }
+ highlighted: control.highlightedIndex === index
+ }
+
+ indicator: Canvas {
+ id: canvas
+ x: control.width - width - control.rightPadding
+ y: control.topPadding + (control.availableHeight - height) / 2
+ width: 12
+ height: 8
+ contextType: "2d"
+
+ Connections {
+ target: control
+ function onPressedChanged(){
+ canvas.requestPaint()
+ }
+ }
+
+ onPaint: {
+ context.reset();
+ context.moveTo(0, 0);
+ context.lineTo(width, 0);
+ context.lineTo(width / 2, height);
+ context.closePath();
+ context.fillStyle = control.pressed ? "#17a81a" : "#21be2b";
+ context.fill();
+ }
+ }
+
+ contentItem: Text {
+ leftPadding: 0
+ rightPadding: control.indicator.width + control.spacing
+
+ text: control.displayText
+ font: control.font
+ color: "black"
+ verticalAlignment: Text.AlignVCenter
+ elide: Text.ElideRight
+ }
+
+ background: Rectangle {
+ implicitWidth: 120
+ implicitHeight: 40
+ border.color: "white"
+ border.width: control.visualFocus ? 2 : 1
+ radius: 2
+ }
+
+ popup: Popup {
+ y: control.height - 1
+ width: control.width
+ implicitHeight: contentItem.implicitHeight
+ padding: 1
+
+ contentItem: ListView {
+ clip: true
+ implicitHeight: contentHeight
+ model: control.delegateModel
+ currentIndex: control.highlightedIndex
+
+ ScrollIndicator.vertical: ScrollIndicator { }
+ }
+
+ background: Rectangle {
+ border.color: "gray"
+ radius: 2
+ }
+ }
+}
diff --git a/src/settingsview/components/ToggleSwitch.qml b/src/settingsview/components/ToggleSwitch.qml
new file mode 100644
index 0000000..27c84bd
--- /dev/null
+++ b/src/settingsview/components/ToggleSwitch.qml
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2019-2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+import QtQuick 2.15
+import QtQuick.Window 2.14
+import QtQuick.Controls 2.14
+import QtQuick.Controls.Universal 2.12
+import QtQuick.Layouts 1.3
+import QtGraphicalEffects 1.14
+import QtQuick.Controls.Styles 1.4
+
+RowLayout {
+ property string labelText: value
+ property int widthOfSwitch: 50
+ property int heightOfSwitch: 10
+ property int heightOfLayout: 30
+ property int fontPointSize: 13
+
+ property alias toggleSwitch: switchOfLayout
+ property alias checked: switchOfLayout.checked
+
+ signal switchToggled
+
+ spacing: 18
+ Layout.fillWidth: true
+ Layout.maximumHeight: 30
+
+ Switch {
+ id: switchOfLayout
+ Layout.alignment: Qt.AlignVCenter
+
+ Layout.maximumWidth: widthOfSwitch
+ Layout.preferredWidth: widthOfSwitch
+ Layout.minimumWidth: widthOfSwitch
+
+ Layout.minimumHeight: heightOfSwitch
+ Layout.preferredHeight: heightOfSwitch
+ Layout.maximumHeight: heightOfSwitch
+
+ onToggled: {
+ switchToggled()
+ }
+ }
+
+ Label {
+ Layout.fillWidth: true
+
+ Layout.minimumHeight: heightOfLayout
+ Layout.preferredHeight: heightOfLayout
+ Layout.maximumHeight: heightOfLayout
+
+ text: qsTr(labelText)
+ font.pointSize: fontPointSize
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ }
+}
diff --git a/src/settingsview/components/VideoCodecDelegate.qml b/src/settingsview/components/VideoCodecDelegate.qml
new file mode 100644
index 0000000..a01fd28
--- /dev/null
+++ b/src/settingsview/components/VideoCodecDelegate.qml
@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 2019-2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+import QtQuick 2.15
+import QtQuick.Window 2.15
+import QtQuick.Controls 2.15
+import QtQuick.Controls.Universal 2.12
+import QtQuick.Layouts 1.3
+import QtGraphicalEffects 1.14
+import QtQuick.Controls.Styles 1.4
+import net.jami.Models 1.0
+
+ItemDelegate {
+ id: videoCodecDelegate
+
+ property string videoCodecName : ""
+ property bool isEnabled : false
+ property int videoCodecId
+
+ signal videoCodecStateChange(string idToSet , bool isToBeEnabled)
+
+ property int checkBoxWidth: 10
+
+ highlighted: ListView.isCurrentItem
+
+ RowLayout{
+ anchors.fill: parent
+
+ spacing: 10
+
+ CheckBox{
+ id: checkBoxIsEnabled
+
+ Layout.leftMargin: 20
+
+ Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
+ Layout.fillHeight: true
+
+ Layout.minimumWidth: checkBoxWidth
+ Layout.preferredWidth: checkBoxWidth
+ Layout.maximumWidth: checkBoxWidth
+
+ tristate: false
+ checkState: isEnabled ? Qt.Checked : Qt.Unchecked
+
+ indicator.implicitWidth: checkBoxWidth
+ indicator.implicitHeight:checkBoxWidth
+
+ indicator.layer.textureSize.width: checkBoxWidth
+ indicator.layer.textureSize.height: checkBoxWidth
+
+ text: ""
+
+ nextCheckState: function() {
+ var result
+ var result_bool
+
+ if (checkState === Qt.Checked){
+ result = Qt.Unchecked
+ result_bool = false
+ } else {
+ result = Qt.Checked
+ result_bool = true
+ }
+ videoCodecStateChange(videoCodecId,result_bool)
+ return result
+ }
+ }
+
+ Label{
+ id: formatNameLabel
+
+ Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+
+ text: videoCodecName
+ font.pointSize: 8
+ font.kerning: true
+ }
+ }
+}
diff --git a/src/smartlistmodel.cpp b/src/smartlistmodel.cpp
new file mode 100644
index 0000000..8fd0d5c
--- /dev/null
+++ b/src/smartlistmodel.cpp
@@ -0,0 +1,383 @@
+/*
+ * Copyright (C) 2017-2020 by Savoir-faire Linux
+ * Author: Anthony Léonard <anthony.leonard@savoirfairelinux.com>
+ * Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "smartlistmodel.h"
+
+#include "lrcinstance.h"
+#include "pixbufmanipulator.h"
+#include "utils.h"
+
+#include "api/contactmodel.h"
+#include "globalinstances.h"
+
+#include <QDateTime>
+
+SmartListModel::SmartListModel(const QString &accId,
+ QObject *parent,
+ SmartListModel::Type listModelType,
+ const QString &convUid)
+ : QAbstractListModel(parent)
+ , accountId_(accId)
+ , listModelType_(listModelType)
+ , convUid_(convUid)
+{
+ if (listModelType_ == Type::CONFERENCE) {
+ setConferenceableFilter();
+ }
+}
+
+SmartListModel::~SmartListModel() {}
+
+int
+SmartListModel::rowCount(const QModelIndex &parent) const
+{
+ if (!parent.isValid()) {
+ auto &accInfo = LRCInstance::accountModel().getAccountInfo(accountId_);
+ auto &convModel = accInfo.conversationModel;
+ if (listModelType_ == Type::TRANSFER) {
+ auto filterType = accInfo.profileInfo.type;
+ return convModel->getFilteredConversations(filterType).size();
+ } else if (listModelType_ == Type::CONFERENCE) {
+ auto calls = conferenceables_[ConferenceableItem::CALL];
+ auto contacts = conferenceables_[ConferenceableItem::CONTACT];
+ auto rowCount = contacts.size();
+ if (calls.size()) {
+ rowCount = 2;
+ rowCount += sectionState_[tr("Calls")] ? calls.size() : 0;
+ rowCount += sectionState_[tr("Contacts")] ? contacts.size() : 0;
+ }
+ return rowCount;
+ }
+ return accInfo.conversationModel->allFilteredConversations().size();
+ }
+ return 0;
+}
+
+int
+SmartListModel::columnCount(const QModelIndex &parent) const
+{
+ Q_UNUSED(parent);
+ return 1;
+}
+
+QVariant
+SmartListModel::data(const QModelIndex &index, int role) const
+{
+ if (!index.isValid()) {
+ return QVariant();
+ }
+
+ try {
+ auto &accountInfo = LRCInstance::accountModel().getAccountInfo(accountId_);
+ auto &convModel = accountInfo.conversationModel;
+ lrc::api::conversation::Info item;
+ if (listModelType_ == Type::TRANSFER) {
+ auto filterType = accountInfo.profileInfo.type;
+ item = convModel->getFilteredConversations(filterType).at(index.row());
+ return getConversationItemData(item, accountInfo, role);
+ } else if (listModelType_ == Type::CONFERENCE) {
+ auto calls = conferenceables_[ConferenceableItem::CALL];
+ auto contacts = conferenceables_[ConferenceableItem::CONTACT];
+ QString itemConvUid{}, itemAccId{};
+ if (calls.size() == 0) {
+ itemConvUid = contacts.at(index.row()).at(0).convId;
+ itemAccId = contacts.at(index.row()).at(0).accountId;
+ } else {
+ bool callsOpen = sectionState_[tr("Calls")];
+ bool contactsOpen = sectionState_[tr("Contacts")];
+ auto callSectionEnd = callsOpen ? calls.size() + 1 : 1;
+ auto contactSectionEnd = contactsOpen ? callSectionEnd + contacts.size() + 1
+ : callSectionEnd + 1;
+ if (index.row() < callSectionEnd) {
+ if (index.row() == 0) {
+ return QVariant(role == Role::SectionName
+ ? (callsOpen ? "➖ " : "➕ ") + QString(tr("Calls"))
+ : "");
+ } else {
+ auto idx = index.row() - 1;
+ itemConvUid = calls.at(idx).at(0).convId;
+ itemAccId = calls.at(idx).at(0).accountId;
+ }
+ } else if (index.row() < contactSectionEnd) {
+ if (index.row() == callSectionEnd) {
+ return QVariant(role == Role::SectionName
+ ? (contactsOpen ? "➖ " : "➕ ") + QString(tr("Contacts"))
+ : "");
+ } else {
+ auto idx = index.row() - (callSectionEnd + 1);
+ itemConvUid = contacts.at(idx).at(0).convId;
+ itemAccId = contacts.at(idx).at(0).accountId;
+ }
+ }
+ }
+ if (role == Role::AccountId) {
+ return QVariant(itemAccId);
+ }
+ item = LRCInstance::getConversationFromConvUid(itemConvUid, itemAccId);
+ auto &itemAccountInfo = LRCInstance::accountModel().getAccountInfo(itemAccId);
+ return getConversationItemData(item, itemAccountInfo, role);
+ } else if (listModelType_ == Type::CONVERSATION) {
+ item = convModel->filteredConversation(index.row());
+ return getConversationItemData(item, accountInfo, role);
+ }
+ } catch (const std::exception &e) {
+ qWarning() << e.what();
+ }
+ return QVariant();
+}
+
+QHash<int, QByteArray>
+SmartListModel::roleNames() const
+{
+ QHash<int, QByteArray> roles;
+ roles[DisplayName] = "DisplayName";
+ roles[DisplayID] = "DisplayID";
+ roles[Picture] = "Picture";
+ roles[Presence] = "Presence";
+ roles[URI] = "URI";
+ roles[UnreadMessagesCount] = "UnreadMessagesCount";
+ roles[LastInteractionDate] = "LastInteractionDate";
+ roles[LastInteraction] = "LastInteraction";
+ roles[ContactType] = "ContactType";
+ roles[UID] = "UID";
+ roles[InCall] = "InCall";
+ roles[IsAudioOnly] = "IsAudioOnly";
+ roles[CallStackViewShouldShow] = "CallStackViewShouldShow";
+ roles[CallStateStr] = "CallStateStr";
+ roles[SectionName] = "SectionName";
+ roles[AccountId] = "AccountId";
+ roles[Draft] = "Draft";
+ return roles;
+}
+
+void
+SmartListModel::setConferenceableFilter(const QString &filter)
+{
+ beginResetModel();
+ auto &accountInfo = LRCInstance::accountModel().getAccountInfo(accountId_);
+ auto &convModel = accountInfo.conversationModel;
+ conferenceables_ = convModel->getConferenceableConversations(convUid_, filter);
+ sectionState_[tr("Calls")] = true;
+ sectionState_[tr("Contacts")] = true;
+ endResetModel();
+}
+
+void
+SmartListModel::toggleSection(const QString §ion)
+{
+ beginResetModel();
+ if (section.contains(tr("Calls"))) {
+ sectionState_[tr("Calls")] ^= true;
+ } else if (section.contains(tr("Contacts"))) {
+ sectionState_[tr("Contacts")] ^= true;
+ }
+ endResetModel();
+}
+
+int
+SmartListModel::currentUidSmartListModelIndex()
+{
+ auto convUid = LRCInstance::getCurrentConvUid();
+ for (int i = 0; i < rowCount(); i++) {
+ if (convUid == data(index(i, 0), Role::UID))
+ return i;
+ }
+
+ return -1;
+}
+
+QVariant
+SmartListModel::getConversationItemData(const conversation::Info &item,
+ const account::Info &accountInfo,
+ int role) const
+{
+ if (item.participants.size() <= 0) {
+ return QVariant();
+ }
+ auto &contactModel = accountInfo.contactModel;
+ switch (role) {
+ case Role::Picture: {
+ auto contactImage
+ = GlobalInstances::pixmapManipulator().decorationRole(item, accountInfo).value<QImage>();
+ return QString::fromLatin1(Utils::QImageToByteArray(contactImage).toBase64().data());
+ }
+ case Role::DisplayName: {
+ if (!item.participants.isEmpty()) {
+ auto &contact = contactModel->getContact(item.participants[0]);
+ return QVariant(Utils::bestNameForContact(contact));
+ }
+ return QVariant("");
+ }
+ case Role::DisplayID: {
+ if (!item.participants.isEmpty()) {
+ auto &contact = contactModel->getContact(item.participants[0]);
+ return QVariant(Utils::bestIdForContact(contact));
+ }
+ return QVariant("");
+ }
+ case Role::Presence: {
+ if (!item.participants.isEmpty()) {
+ auto &contact = contactModel->getContact(item.participants[0]);
+ return QVariant(contact.isPresent);
+ }
+ return QVariant(false);
+ }
+ case Role::URI: {
+ if (!item.participants.isEmpty()) {
+ auto &contact = contactModel->getContact(item.participants[0]);
+ return QVariant(contact.profileInfo.uri);
+ }
+ return QVariant("");
+ }
+ case Role::UnreadMessagesCount:
+ return QVariant(item.unreadMessages);
+ case Role::LastInteractionDate: {
+ if (!item.interactions.empty()) {
+ auto &date = item.interactions.at(item.lastMessageUid).timestamp;
+ return QVariant(QString::fromStdString(Utils::formatTimeString(date)));
+ }
+ return QVariant("");
+ }
+ case Role::LastInteraction: {
+ if (!item.interactions.empty()) {
+ return QVariant(item.interactions.at(item.lastMessageUid).body);
+ }
+ return QVariant("");
+ }
+ case Role::LastInteractionType: {
+ if (!item.interactions.empty()) {
+ return QVariant(
+ Utils::toUnderlyingValue(item.interactions.at(item.lastMessageUid).type));
+ }
+ return QVariant(0);
+ }
+ case Role::ContactType: {
+ if (!item.participants.isEmpty()) {
+ auto &contact = contactModel->getContact(item.participants[0]);
+ return QVariant(Utils::toUnderlyingValue(contact.profileInfo.type));
+ }
+ return QVariant(0);
+ }
+ case Role::UID:
+ return QVariant(item.uid);
+ case Role::InCall: {
+ auto &convInfo = LRCInstance::getConversationFromConvUid(item.uid);
+ if (!convInfo.uid.isEmpty()) {
+ auto callModel = LRCInstance::getCurrentCallModel();
+ return QVariant(callModel->hasCall(convInfo.callId));
+ }
+ return QVariant(false);
+ }
+ case Role::IsAudioOnly: {
+ auto &convInfo = LRCInstance::getConversationFromConvUid(item.uid);
+ if (!convInfo.uid.isEmpty()) {
+ auto call = LRCInstance::getCallInfoForConversation(convInfo);
+ if (call) {
+ return QVariant(call->isAudioOnly);
+ }
+ }
+ return QVariant();
+ }
+ case Role::CallStackViewShouldShow: {
+ auto &convInfo = LRCInstance::getConversationFromConvUid(item.uid);
+ if (!convInfo.uid.isEmpty()) {
+ auto callModel = LRCInstance::getCurrentCallModel();
+ auto call = callModel->getCall(convInfo.callId);
+ return QVariant(callModel->hasCall(convInfo.callId)
+ && ((!call.isOutgoing
+ && (call.status == lrc::api::call::Status::IN_PROGRESS
+ || call.status == lrc::api::call::Status::PAUSED))
+ || call.isOutgoing));
+ }
+ return QVariant(false);
+ }
+ case Role::CallStateStr: {
+ auto &convInfo = LRCInstance::getConversationFromConvUid(item.uid);
+ if (!convInfo.uid.isEmpty()) {
+ auto call = LRCInstance::getCallInfoForConversation(convInfo);
+ if (call) {
+ auto statusString = call::to_string(call->status);
+ return QVariant(statusString);
+ }
+ }
+ return QVariant();
+ }
+ case Role::SectionName:
+ return QVariant(QString());
+ case Role::Draft: {
+ if (!item.uid.isEmpty()) {
+ auto draft = LRCInstance::getContentDraft(item.uid, accountInfo.id);
+ if (!draft.isEmpty()) {
+ /*
+ * Pencil Emoji
+ */
+ uint cp = 0x270F;
+ auto emojiString = QString::fromUcs4(&cp, 1);
+ return emojiString + LRCInstance::getContentDraft(item.uid, accountInfo.id);
+ }
+ }
+ return QVariant("");
+ }
+ }
+ return QVariant();
+}
+
+QModelIndex
+SmartListModel::index(int row, int column, const QModelIndex &parent) const
+{
+ Q_UNUSED(parent);
+ if (column != 0) {
+ return QModelIndex();
+ }
+
+ if (row >= 0 && row < rowCount()) {
+ return createIndex(row, column);
+ }
+ return QModelIndex();
+}
+
+QModelIndex
+SmartListModel::parent(const QModelIndex &child) const
+{
+ Q_UNUSED(child);
+ return QModelIndex();
+}
+
+Qt::ItemFlags
+SmartListModel::flags(const QModelIndex &index) const
+{
+ auto flags = QAbstractItemModel::flags(index) | Qt::ItemNeverHasChildren | Qt::ItemIsSelectable;
+ auto type = Utils::toEnum<lrc::api::profile::Type>(data(index, Role::ContactType).value<int>());
+ auto uid = data(index, Role::UID).value<QString>();
+ if (!index.isValid()) {
+ return QAbstractItemModel::flags(index);
+ } else if ((type == lrc::api::profile::Type::TEMPORARY && uid.isEmpty())) {
+ flags &= ~(Qt::ItemIsSelectable);
+ }
+ return flags;
+}
+
+void
+SmartListModel::setAccount(const QString &accountId)
+{
+ beginResetModel();
+ accountId_ = accountId;
+ endResetModel();
+}
diff --git a/src/smartlistmodel.h b/src/smartlistmodel.h
new file mode 100644
index 0000000..8ae7dca
--- /dev/null
+++ b/src/smartlistmodel.h
@@ -0,0 +1,99 @@
+/*
+ * Copyright (C) 2017-2020 by Savoir-faire Linux
+ * Author: Anthony Léonard <anthony.leonard@savoirfairelinux.com>
+ * Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "api/account.h"
+#include "api/contact.h"
+#include "api/conversation.h"
+#include "api/conversationmodel.h"
+
+#include <QAbstractItemModel>
+
+using namespace lrc::api;
+
+class SmartListModel : public QAbstractListModel
+{
+ Q_OBJECT
+public:
+ using AccountInfo = lrc::api::account::Info;
+ using ConversationInfo = lrc::api::conversation::Info;
+ using ContactInfo = lrc::api::contact::Info;
+
+ enum class Type { CONVERSATION, CONFERENCE, TRANSFER, COUNT__ };
+
+ enum Role {
+ DisplayName = Qt::UserRole + 1,
+ DisplayID,
+ Picture,
+ Presence,
+ URI,
+ UnreadMessagesCount,
+ LastInteractionDate,
+ LastInteraction,
+ LastInteractionType,
+ ContactType,
+ UID,
+ ContextMenuOpen,
+ InCall,
+ IsAudioOnly,
+ CallStackViewShouldShow,
+ CallStateStr,
+ SectionName,
+ AccountId,
+ Draft
+ };
+
+ explicit SmartListModel(const QString &accId,
+ QObject *parent = 0,
+ SmartListModel::Type listModelType = Type::CONVERSATION,
+ const QString &convUid = {});
+ ~SmartListModel();
+
+ /*
+ * QAbstractListModel.
+ */
+ int rowCount(const QModelIndex &parent = QModelIndex()) const override;
+ int columnCount(const QModelIndex &parent) const override;
+ QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
+ QHash<int, QByteArray> roleNames() const override;
+ QModelIndex index(int row, int column = 0, const QModelIndex &parent = QModelIndex()) const;
+ QModelIndex parent(const QModelIndex &child) const;
+ Qt::ItemFlags flags(const QModelIndex &index) const;
+
+ Q_INVOKABLE void setAccount(const QString &accId);
+ Q_INVOKABLE void setConferenceableFilter(const QString &filter = {});
+ Q_INVOKABLE void toggleSection(const QString §ion);
+ Q_INVOKABLE int currentUidSmartListModelIndex();
+
+private:
+ QString accountId_;
+
+ QVariant getConversationItemData(const ConversationInfo &item,
+ const AccountInfo &accountInfo,
+ int role) const;
+ /*
+ * List sectioning.
+ */
+ QString convUid_;
+ Type listModelType_;
+ QMap<QString, bool> sectionState_;
+ QMap<ConferenceableItem, ConferenceableValue> conferenceables_;
+};
\ No newline at end of file
diff --git a/src/tintedbuttonimageprovider.h b/src/tintedbuttonimageprovider.h
new file mode 100644
index 0000000..384989b
--- /dev/null
+++ b/src/tintedbuttonimageprovider.h
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "lrcinstance.h"
+#include "utils.h"
+
+#include <QImage>
+#include <QObject>
+#include <QPair>
+#include <QQuickImageProvider>
+#include <QString>
+
+class TintedButtonImageProvider : public QObject, public QQuickImageProvider
+{
+public:
+ TintedButtonImageProvider()
+ : QQuickImageProvider(QQuickImageProvider::Pixmap,
+ QQmlImageProviderBase::ForceAsynchronousImageLoading)
+ {}
+
+ QPixmap
+ requestPixmap(const QString &id, QSize *size, const QSize &requestedSize) override
+ {
+ Q_UNUSED(size);
+
+ QColor tintedColor;
+
+ auto list = id.split('+', QString::SkipEmptyParts);
+
+ if (list.size() == 2) {
+ QPixmap pixmapToSend(":/images/icons/" + list[0]);
+ if (!requestedSize.isEmpty()) {
+ pixmapToSend = pixmapToSend.scaled(requestedSize, Qt::KeepAspectRatio);
+ } else {
+ pixmapToSend = pixmapToSend.scaled(QSize(30, 30), Qt::KeepAspectRatio);
+ }
+ tintedColor.setNamedColor(list[1]);
+
+ return Utils::generateTintedPixmap(pixmapToSend, tintedColor);
+ }
+
+ return QPixmap();
+ }
+};
\ No newline at end of file
diff --git a/src/utils.cpp b/src/utils.cpp
new file mode 100644
index 0000000..a397cab
--- /dev/null
+++ b/src/utils.cpp
@@ -0,0 +1,1082 @@
+/*
+ * Copyright (C) 2015-2020 by Savoir-faire Linux
+ * Author: Edric Ladent Milaret <edric.ladent-milaret@savoirfairelinux.com>
+ * Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
+ * Author: Isa Nanic <isa.nanic@savoirfairelinux.com
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "utils.h"
+
+#ifdef Q_OS_WIN
+#include <lmcons.h>
+#include <shlguid.h>
+#include <shlobj.h>
+#include <shlwapi.h>
+#include <shobjidl.h>
+#include <windows.h>
+#endif
+
+#include "globalsystemtray.h"
+#include "jamiavatartheme.h"
+#include "lrcinstance.h"
+#include "pixbufmanipulator.h"
+#include "version.h"
+
+#include <globalinstances.h>
+#include <qrencode.h>
+
+#include <QApplication>
+#include <QBitmap>
+#include <QErrorMessage>
+#include <QFile>
+#include <QMessageBox>
+#include <QObject>
+#include <QPainter>
+#include <QPropertyAnimation>
+#include <QScreen>
+#include <QStackedWidget>
+#include <QSvgRenderer>
+#include <QTranslator>
+#include <QtConcurrent/QtConcurrent>
+
+bool
+Utils::CreateStartupLink(const std::wstring &wstrAppName)
+{
+#ifdef Q_OS_WIN
+ TCHAR szPath[MAX_PATH];
+ GetModuleFileName(NULL, szPath, MAX_PATH);
+
+ std::wstring programPath(szPath);
+
+ TCHAR startupPath[MAX_PATH];
+ SHGetFolderPathW(NULL, CSIDL_STARTUP, NULL, 0, startupPath);
+
+ std::wstring linkPath(startupPath);
+ linkPath += std::wstring(TEXT("\\") + wstrAppName + TEXT(".lnk"));
+
+ return Utils::CreateLink(programPath.c_str(), linkPath.c_str());
+#else
+ return true;
+#endif
+}
+
+bool
+Utils::CreateLink(LPCWSTR lpszPathObj, LPCWSTR lpszPathLink)
+{
+#ifdef Q_OS_WIN
+ HRESULT hres;
+ IShellLink *psl;
+
+ hres = CoCreateInstance(CLSID_ShellLink,
+ NULL,
+ CLSCTX_INPROC_SERVER,
+ IID_IShellLink,
+ (LPVOID *) &psl);
+ if (SUCCEEDED(hres)) {
+ IPersistFile *ppf;
+ psl->SetPath(lpszPathObj);
+ psl->SetArguments(TEXT("--minimized"));
+
+ hres = psl->QueryInterface(IID_IPersistFile, (LPVOID *) &ppf);
+ if (SUCCEEDED(hres)) {
+ hres = ppf->Save(lpszPathLink, TRUE);
+ ppf->Release();
+ }
+ psl->Release();
+ }
+ return hres;
+#else
+ Q_UNUSED(lpszPathObj)
+ Q_UNUSED(lpszPathLink)
+ return true;
+#endif
+}
+
+void
+Utils::DeleteStartupLink(const std::wstring &wstrAppName)
+{
+#ifdef Q_OS_WIN
+ TCHAR startupPath[MAX_PATH];
+ SHGetFolderPathW(NULL, CSIDL_STARTUP, NULL, 0, startupPath);
+
+ std::wstring linkPath(startupPath);
+ linkPath += std::wstring(TEXT("\\") + wstrAppName + TEXT(".lnk"));
+
+ DeleteFile(linkPath.c_str());
+#endif
+}
+
+bool
+Utils::CheckStartupLink(const std::wstring &wstrAppName)
+{
+#ifdef Q_OS_WIN
+ TCHAR startupPath[MAX_PATH];
+ SHGetFolderPathW(NULL, CSIDL_STARTUP, NULL, 0, startupPath);
+
+ std::wstring linkPath(startupPath);
+ linkPath += std::wstring(TEXT("\\") + wstrAppName + TEXT(".lnk"));
+ return PathFileExists(linkPath.c_str());
+#else
+ return true;
+#endif
+}
+
+const char *
+Utils::WinGetEnv(const char *name)
+{
+#ifdef Q_OS_WIN
+ const DWORD buffSize = 65535;
+ static char buffer[buffSize];
+ if (GetEnvironmentVariableA(name, buffer, buffSize)) {
+ return buffer;
+ } else {
+ return 0;
+ }
+#else
+ return 0;
+#endif
+}
+
+void
+Utils::removeOldVersions()
+{
+#ifdef Q_OS_WIN
+ /*
+ * As per: https://git.jami.net/savoirfairelinux/ring-client-windows/issues/429
+ * NB: As only the 64-bit version of this application is distributed, we will only
+ * remove 1. the configuration reg keys for Ring-x64, 2. the startup links for Ring,
+ * 3. the winsparkle reg keys. The NSIS uninstall reg keys for Jami-x64 are removed
+ * by the MSI installer.
+ * Uninstallation of Ring, either 32 or 64 bit, is left to the user.
+ * The current version of Jami will attempt to kill Ring.exe upon start if a startup
+ * link is found.
+ */
+ QString node64 = "HKEY_LOCAL_MACHINE\\SOFTWARE\\WOW6432Node";
+ QString hkcuSoftwareKey = "HKEY_CURRENT_USER\\Software\\";
+ QString uninstKey = "\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\";
+ QString company = "Savoir-Faire Linux";
+
+ /*
+ * 1. Configuration reg keys for Ring-x64.
+ */
+ QSettings(hkcuSoftwareKey + "jami.net\\Ring", QSettings::NativeFormat).remove("");
+ QSettings(hkcuSoftwareKey + "ring.cx", QSettings::NativeFormat).remove("");
+ /*
+ * 2. Unset Ring as a startup application.
+ */
+ if (Utils::CheckStartupLink(TEXT("Ring"))) {
+ qDebug() << "Found startup link for Ring. Removing it and killing Ring.exe.";
+ Utils::DeleteStartupLink(TEXT("Ring"));
+ QProcess::execute("taskkill /im Ring.exe /f");
+ }
+ /*
+ * 3. Remove registry entries for winsparkle(both Jami-x64 and Ring-x64).
+ */
+ QSettings(hkcuSoftwareKey + company, QSettings::NativeFormat).remove("");
+#else
+ return;
+#endif
+}
+
+QString
+Utils::GetRingtonePath()
+{
+#ifdef Q_OS_WIN
+ TCHAR workingDirectory[MAX_PATH];
+ GetCurrentDirectory(MAX_PATH, workingDirectory);
+
+ QString ringtonePath = QString::fromWCharArray(workingDirectory);
+ ringtonePath += QStringLiteral("\\ringtones\\default.opus");
+ return ringtonePath;
+#else
+ return QString("/usr/local");
+#endif
+}
+
+QString
+Utils::GenGUID()
+{
+#ifdef Q_OS_WIN
+ GUID gidReference;
+ wchar_t *str;
+ HRESULT hCreateGuid = CoCreateGuid(&gidReference);
+ if (hCreateGuid == S_OK) {
+ StringFromCLSID(gidReference, &str);
+ auto gStr = QString::fromWCharArray(str);
+ return gStr.remove("{").remove("}").toLower();
+ } else
+ return QString();
+#else
+ return QString("");
+#endif
+}
+
+QString
+Utils::GetISODate()
+{
+#ifdef Q_OS_WIN
+ SYSTEMTIME lt;
+ GetSystemTime(<);
+ return QString("%1-%2-%3T%4:%5:%6Z")
+ .arg(lt.wYear)
+ .arg(lt.wMonth, 2, 10, QChar('0'))
+ .arg(lt.wDay, 2, 10, QChar('0'))
+ .arg(lt.wHour, 2, 10, QChar('0'))
+ .arg(lt.wMinute, 2, 10, QChar('0'))
+ .arg(lt.wSecond, 2, 10, QChar('0'));
+#else
+ return QString();
+#endif
+}
+
+void
+Utils::InvokeMailto(const QString &subject, const QString &body, const QString &attachement)
+{
+#ifdef Q_OS_WIN
+ HKEY hKey;
+ LONG lRes = RegOpenKeyExW(HKEY_CLASSES_ROOT, L"mailto", 0, KEY_READ, &hKey);
+ if (lRes != ERROR_FILE_NOT_FOUND) {
+ auto addr = QString("mailto:?subject=%1&body=%2").arg(subject).arg(body);
+ if (not attachement.isEmpty())
+ addr += QString("&attachement=%1").arg(attachement);
+ ShellExecute(nullptr, L"open", addr.toStdWString().c_str(), NULL, NULL, SW_SHOWNORMAL);
+ } else {
+ QErrorMessage errorMessage;
+ errorMessage.showMessage(QObject::tr("No default mail client found"));
+ }
+#endif
+}
+
+QString
+Utils::getContactImageString(const QString &accountId, const QString &uid)
+{
+ return QString::fromLatin1(
+ Utils::QImageToByteArray(
+ Utils::conversationPhoto(uid, LRCInstance::getAccountInfo(accountId)))
+ .toBase64()
+ .data());
+}
+
+QImage
+Utils::getCirclePhoto(const QImage original, int sizePhoto)
+{
+ QImage target(sizePhoto, sizePhoto, QImage::Format_ARGB32_Premultiplied);
+ target.fill(Qt::transparent);
+
+ QPainter painter(&target);
+ painter.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform);
+ painter.setBrush(QBrush(Qt::white));
+ auto scaledPhoto = original
+ .scaled(sizePhoto,
+ sizePhoto,
+ Qt::KeepAspectRatioByExpanding,
+ Qt::SmoothTransformation)
+ .convertToFormat(QImage::Format_ARGB32_Premultiplied);
+ int margin = 0;
+ if (scaledPhoto.width() > sizePhoto) {
+ margin = (scaledPhoto.width() - sizePhoto) / 2;
+ }
+ painter.drawEllipse(0, 0, sizePhoto, sizePhoto);
+ painter.setCompositionMode(QPainter::CompositionMode_SourceIn);
+ painter.drawImage(0, 0, scaledPhoto, margin, 0);
+ return target;
+}
+
+void
+Utils::setStackWidget(QStackedWidget *stack, QWidget *widget)
+{
+ if (stack->indexOf(widget) != -1 && stack->currentWidget() != widget) {
+ stack->setCurrentWidget(widget);
+ }
+}
+
+void
+Utils::showSystemNotification(QWidget *widget,
+ const QString &message,
+ long delay,
+ const QString &triggeredAccountId)
+{
+ QSettings settings("jami.net", "Jami");
+ if (settings.value(SettingsKey::enableNotifications).toBool()) {
+ GlobalSystemTray::instance().setTriggeredAccountId(triggeredAccountId);
+ GlobalSystemTray::instance().showMessage(message, "", QIcon(":images/jami.png"));
+ QApplication::alert(widget, delay);
+ }
+}
+
+void
+Utils::showSystemNotification(QWidget *widget,
+ const QString &sender,
+ const QString &message,
+ long delay,
+ const QString &triggeredAccountId)
+{
+ QSettings settings("jami.net", "Jami");
+ if (settings.value(SettingsKey::enableNotifications).toBool()) {
+ GlobalSystemTray::instance().setTriggeredAccountId(triggeredAccountId);
+ GlobalSystemTray::instance().showMessage(sender, message, QIcon(":images/jami.png"));
+ QApplication::alert(widget, delay);
+ }
+}
+
+QSize
+Utils::getRealSize(QScreen *screen)
+{
+#ifdef Q_OS_WIN
+ DEVMODE dmThisScreen;
+ ZeroMemory(&dmThisScreen, sizeof(dmThisScreen));
+ EnumDisplaySettings((const wchar_t *) screen->name().utf16(),
+ ENUM_CURRENT_SETTINGS,
+ (DEVMODE *) &dmThisScreen);
+ return QSize(dmThisScreen.dmPelsWidth, dmThisScreen.dmPelsHeight);
+#else
+ return {};
+#endif
+}
+
+void
+Utils::forceDeleteAsync(const QString &path)
+{
+ /*
+ * Keep deleting file until the process holding it let go,
+ * or the file itself does not exist anymore.
+ */
+ QtConcurrent::run([path] {
+ QFile file(path);
+ if (!QFile::exists(path))
+ return;
+ int retries{0};
+ while (!file.remove() && retries < 5) {
+ qDebug().noquote() << "\n" << file.errorString() << "\n";
+ QThread::msleep(10);
+ ++retries;
+ }
+ });
+}
+
+UtilsAdapter &
+UtilsAdapter::instance()
+{
+ static auto instance = new UtilsAdapter;
+ return *instance;
+}
+
+QString
+Utils::getChangeLog()
+{
+ QString logs;
+ QFile changeLogFile(":/changelog.html");
+ if (!changeLogFile.open(QIODevice::ReadOnly | QIODevice::Text)) {
+ qDebug().noquote() << " Change log file failed to load";
+ return {};
+ }
+ QTextStream in(&changeLogFile);
+ in.setCodec("UTF-8");
+ while (!in.atEnd()) {
+ logs += in.readLine();
+ }
+ return logs;
+}
+
+QString
+Utils::getProjectCredits()
+{
+ QString credits;
+ QFile projectCreditsFile(":/projectcredits.html");
+ if (!projectCreditsFile.open(QIODevice::ReadOnly | QIODevice::Text)) {
+ qDebug().noquote() << " Project Credits failed to load";
+ return {};
+ }
+ QTextStream in(&projectCreditsFile);
+ in.setCodec("UTF-8");
+ while (!in.atEnd()) {
+ QString currentLine = in.readLine();
+ if (credits.isEmpty()) {
+ credits += "<h3 align=\"center\" style=\" margin-top:0px; "
+ + QString("margin-bottom:0px; margin-left:0px; margin-right:0px; ")
+ + "-qt-block-indent:0; text-indent:0px;\"><span style=\" font-weight:600;\">"
+ + UtilsAdapter::tr("Created by:") + "</span></h3>";
+ } else if (currentLine.contains("Marianne Forget")) {
+ credits
+ += "<h3 align=\"center\" style=\" margin-top:0px; margin-bottom:0px; "
+ + QString(
+ "margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">")
+ + "<span style=\" font-weight:600;\">" + UtilsAdapter::tr("Artwork by:")
+ + "</span></h3>";
+ }
+ credits += currentLine;
+ }
+ credits += "<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; "
+ + QString(
+ "margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">")
+ + UtilsAdapter::tr("Based on the SFLPhone project") + "</p>";
+
+ return credits;
+}
+
+void
+Utils::cleanUpdateFiles()
+{
+ /*
+ * Delete all logs and msi in the %TEMP% directory before launching.
+ */
+ QString dir = QString(Utils::WinGetEnv("TEMP"));
+ QDir log_dir(dir, {"jami*.log"});
+ for (const QString &filename : log_dir.entryList()) {
+ log_dir.remove(filename);
+ }
+ QDir msi_dir(dir, {"jami*.msi"});
+ for (const QString &filename : msi_dir.entryList()) {
+ msi_dir.remove(filename);
+ }
+ QDir version_dir(dir, {"version"});
+ for (const QString &filename : version_dir.entryList()) {
+ version_dir.remove(filename);
+ }
+}
+
+void
+Utils::checkForUpdates(bool withUI, QWidget *parent)
+{
+ Q_UNUSED(withUI)
+ Q_UNUSED(parent)
+ /*
+ * TODO: check update logic.
+ */
+}
+
+void
+Utils::applyUpdates(bool updateToBeta, QWidget *parent)
+{
+ Q_UNUSED(updateToBeta)
+ Q_UNUSED(parent)
+ /*
+ * TODO: update logic.
+ */
+}
+
+inline QString
+removeEndlines(const QString &str)
+{
+ QString trimmed(str);
+ trimmed.remove(QChar('\n'));
+ trimmed.remove(QChar('\r'));
+ return trimmed;
+}
+
+QString
+Utils::bestIdForConversation(const lrc::api::conversation::Info &conv,
+ const lrc::api::ConversationModel &model)
+{
+ auto contact = model.owner.contactModel->getContact(conv.participants[0]);
+ if (!contact.registeredName.isEmpty()) {
+ return removeEndlines(contact.registeredName);
+ }
+ return removeEndlines(contact.profileInfo.uri);
+}
+
+QString
+Utils::bestIdForAccount(const lrc::api::account::Info &account)
+{
+ if (!account.registeredName.isEmpty()) {
+ return removeEndlines(account.registeredName);
+ }
+ return removeEndlines(account.profileInfo.uri);
+}
+
+QString
+Utils::bestNameForAccount(const lrc::api::account::Info &account)
+{
+ if (account.profileInfo.alias.isEmpty()) {
+ return bestIdForAccount(account);
+ }
+ return account.profileInfo.alias;
+}
+
+QString
+Utils::bestIdForContact(const lrc::api::contact::Info &contact)
+{
+ if (!contact.registeredName.isEmpty()) {
+ return removeEndlines(contact.registeredName);
+ }
+ return removeEndlines(contact.profileInfo.uri);
+}
+
+QString
+Utils::bestNameForContact(const lrc::api::contact::Info &contact)
+{
+ auto alias = removeEndlines(contact.profileInfo.alias);
+ if (alias.length() == 0) {
+ return bestIdForContact(contact);
+ }
+ return alias;
+}
+
+QString
+Utils::bestNameForConversation(const lrc::api::conversation::Info &conv,
+ const lrc::api::ConversationModel &model)
+{
+ try {
+ auto contact = model.owner.contactModel->getContact(conv.participants[0]);
+ auto alias = removeEndlines(contact.profileInfo.alias);
+ if (alias.length() == 0) {
+ return bestIdForConversation(conv, model);
+ }
+ return alias;
+ } catch (...) {
+ }
+ return {};
+}
+
+/*
+ * Returns empty string if only infoHash is available, second best identifier otherwise.
+ */
+QString
+Utils::secondBestNameForAccount(const lrc::api::account::Info &account)
+{
+ auto alias = removeEndlines(account.profileInfo.alias);
+ auto registeredName = removeEndlines(account.registeredName);
+ auto infoHash = account.profileInfo.uri;
+
+ if (!alias.length() == 0) {
+ /*
+ * If alias exists.
+ */
+ if (!registeredName.length() == 0) {
+ /*
+ * If registeredName exists.
+ */
+ return registeredName;
+ } else {
+ return infoHash;
+ }
+ } else {
+ if (!registeredName.length() == 0) {
+ /*
+ * If registeredName exists.
+ */
+ return infoHash;
+ } else {
+ return "";
+ }
+ }
+}
+
+lrc::api::profile::Type
+Utils::profileType(const lrc::api::conversation::Info &conv,
+ const lrc::api::ConversationModel &model)
+{
+ try {
+ auto contact = model.owner.contactModel->getContact(conv.participants[0]);
+ return contact.profileInfo.type;
+ } catch (...) {
+ return lrc::api::profile::Type::INVALID;
+ }
+}
+
+std::string
+Utils::formatTimeString(const std::time_t ×tamp)
+{
+ std::time_t now = std::time(nullptr);
+ char interactionDay[64];
+ char nowDay[64];
+ std::strftime(interactionDay, sizeof(interactionDay), "%D", std::localtime(×tamp));
+ std::strftime(nowDay, sizeof(nowDay), "%D", std::localtime(&now));
+ if (std::string(interactionDay) == std::string(nowDay)) {
+ char interactionTime[64];
+ std::strftime(interactionTime, sizeof(interactionTime), "%R", std::localtime(×tamp));
+ return interactionTime;
+ } else {
+ return interactionDay;
+ }
+}
+
+bool
+Utils::isInteractionGenerated(const lrc::api::interaction::Type &type)
+{
+ return type == lrc::api::interaction::Type::CALL
+ || type == lrc::api::interaction::Type::CONTACT;
+}
+
+bool
+Utils::isContactValid(const QString &contactUid, const lrc::api::ConversationModel &model)
+{
+ auto contact = model.owner.contactModel->getContact(contactUid);
+ return (contact.profileInfo.type == lrc::api::profile::Type::PENDING
+ || contact.profileInfo.type == lrc::api::profile::Type::TEMPORARY
+ || contact.profileInfo.type == lrc::api::profile::Type::RING
+ || contact.profileInfo.type == lrc::api::profile::Type::SIP)
+ && !contact.profileInfo.uri.isEmpty();
+}
+
+bool
+Utils::getReplyMessageBox(QWidget *widget, const QString &title, const QString &text)
+{
+ if (QMessageBox::question(widget, title, text, QMessageBox::Yes | QMessageBox::No)
+ == QMessageBox::Yes)
+ return true;
+ return false;
+}
+
+QImage
+Utils::conversationPhoto(const QString &convUid,
+ const lrc::api::account::Info &accountInfo,
+ bool filtered)
+{
+ auto convInfo = LRCInstance::getConversationFromConvUid(convUid, accountInfo.id, filtered);
+ if (!convInfo.uid.isEmpty()) {
+ return GlobalInstances::pixmapManipulator()
+ .decorationRole(convInfo, accountInfo)
+ .value<QImage>();
+ }
+ return QImage();
+}
+
+QColor
+Utils::getAvatarColor(const QString &canonicalUri)
+{
+ if (canonicalUri.isEmpty()) {
+ return JamiAvatarTheme::defaultAvatarColor_;
+ }
+ auto h = QString(
+ QCryptographicHash::hash(canonicalUri.toLocal8Bit(), QCryptographicHash::Md5).toHex());
+ if (h.isEmpty() || h.isNull()) {
+ return JamiAvatarTheme::defaultAvatarColor_;
+ }
+ auto colorIndex = std::string("0123456789abcdef").find(h.at(0).toLatin1());
+ return JamiAvatarTheme::avatarColors_[colorIndex];
+}
+
+/* Generate a QImage representing a dummy user avatar, when user doesn't provide it.
+ * Current rendering is a flat colored circle with a centered letter.
+ * The color of the letter is computed from the circle color to be visible whaterver be the circle color.
+ */
+QImage
+Utils::fallbackAvatar(const QSize size, const QString &canonicalUriStr, const QString &letterStr)
+{
+ /*
+ * We start with a transparent avatar.
+ */
+ QImage avatar(size, QImage::Format_ARGB32);
+ avatar.fill(Qt::transparent);
+
+ /*
+ * We pick a color based on the passed character.
+ */
+ QColor avColor = getAvatarColor(canonicalUriStr);
+
+ /*
+ * We draw a circle with this color.
+ */
+ QPainter painter(&avatar);
+ painter.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform);
+ painter.setPen(Qt::transparent);
+ painter.setBrush(avColor.lighter(110));
+ painter.drawEllipse(avatar.rect());
+
+ /*
+ * If a letter was passed, then we paint a letter in the circle,
+ * otherwise we draw the default avatar icon.
+ */
+ QString letterStrCleaned(letterStr);
+ letterStrCleaned.remove(QRegExp("[\\n\\t\\r]"));
+ if (!letterStr.isEmpty()) {
+ auto unicode = letterStr.toUcs4().at(0);
+ if (unicode >= 0x1F000 && unicode <= 0x1FFFF) {
+ /*
+ * Is Emoticon.
+ */
+ auto letter = QString::fromUcs4(&unicode, 1);
+ QFont font(QStringLiteral("Segoe UI Emoji"), avatar.height() / 2.66667, QFont::Medium);
+ painter.setFont(font);
+ QRect emojiRect(avatar.rect());
+ emojiRect.moveTop(-6);
+ painter.drawText(emojiRect, letter, QTextOption(Qt::AlignCenter));
+ } else if (unicode >= 0x0000 && unicode <= 0x00FF) {
+ /*
+ * Is Basic Latin.
+ */
+ auto letter = letterStr.at(0).toUpper();
+ QFont font("Arial", avatar.height() / 2.66667, QFont::Medium);
+ painter.setFont(font);
+ painter.setPen(Qt::white);
+ painter.drawText(avatar.rect(), QString(letter), QTextOption(Qt::AlignCenter));
+ } else {
+ auto letter = QString::fromUcs4(&unicode, 1);
+ QFont font("Arial", avatar.height() / 2.66667, QFont::Medium);
+ painter.setFont(font);
+ painter.setPen(Qt::white);
+ painter.drawText(avatar.rect(), QString(letter), QTextOption(Qt::AlignCenter));
+ }
+ } else {
+ QRect overlayRect = avatar.rect();
+ qreal margin = (0.05 * overlayRect.width());
+ overlayRect.moveLeft(overlayRect.left() + margin * 0.5);
+ overlayRect.moveTop(overlayRect.top() + margin * 0.5);
+ overlayRect.setWidth(overlayRect.width() - margin);
+ overlayRect.setHeight(overlayRect.height() - margin);
+ painter.drawPixmap(overlayRect, QPixmap(":/images/default_avatar_overlay.svg"));
+ }
+
+ return avatar;
+}
+
+QImage
+Utils::fallbackAvatar(const QSize size, const std::string &alias, const std::string &uri)
+{
+ return fallbackAvatar(size, QString::fromStdString(uri), QString::fromStdString(alias));
+}
+
+QByteArray
+Utils::QImageToByteArray(QImage image)
+{
+ QByteArray ba;
+ QBuffer buffer(&ba);
+ buffer.open(QIODevice::WriteOnly);
+ image.save(&buffer, "PNG");
+ return ba;
+}
+
+QImage
+Utils::cropImage(const QImage &img)
+{
+ QRect rect;
+ auto w = img.width();
+ auto h = img.height();
+ if (w > h) {
+ return img.copy({(w - h) / 2, 0, h, h});
+ }
+ return img.copy({0, (h - w) / 2, w, w});
+}
+
+QPixmap
+Utils::pixmapFromSvg(const QString &svg_resource, const QSize &size)
+{
+ QSvgRenderer svgRenderer(svg_resource);
+ QPixmap pixmap(size);
+ pixmap.fill(Qt::transparent);
+ QPainter pixPainter(&pixmap);
+ svgRenderer.render(&pixPainter);
+ return pixmap;
+}
+
+QImage
+Utils::setupQRCode(QString ringID, int margin)
+{
+ auto rcode = QRcode_encodeString(ringID.toStdString().c_str(),
+ 0, // Let the version be decided by libqrencode
+ QR_ECLEVEL_L, // Lowest level of error correction
+ QR_MODE_8, // 8-bit data mode
+ 1);
+ if (not rcode) {
+ qWarning() << "Failed to generate QR code: " << strerror(errno);
+ return QImage();
+ }
+
+ int qrwidth = rcode->width + margin * 2;
+ QImage result(QSize(qrwidth, qrwidth), QImage::Format_Mono);
+ QPainter painter;
+ painter.begin(&result);
+ painter.setClipRect(QRect(0, 0, qrwidth, qrwidth));
+ painter.setPen(QPen(Qt::black, 0.1, Qt::SolidLine, Qt::FlatCap, Qt::MiterJoin));
+ painter.setBrush(Qt::black);
+ painter.fillRect(QRect(0, 0, qrwidth, qrwidth), Qt::white);
+ unsigned char *p;
+ p = rcode->data;
+ for (int y = 0; y < rcode->width; y++) {
+ unsigned char *row = (p + (y * rcode->width));
+ for (int x = 0; x < rcode->width; x++) {
+ if (*(row + x) & 0x1) {
+ painter.drawRect(margin + x, margin + y, 1, 1);
+ }
+ }
+ }
+ painter.end();
+ QRcode_free(rcode);
+ return result;
+}
+
+float
+Utils::getCurrentScalingRatio()
+{
+ return CURRENT_SCALING_RATIO;
+}
+
+void
+Utils::setCurrentScalingRatio(float ratio)
+{
+ CURRENT_SCALING_RATIO = ratio;
+}
+
+QString
+Utils::formattedTime(int duration)
+{
+ if (duration == 0)
+ return {};
+ std::string formattedString;
+ auto minutes = duration / 60;
+ auto seconds = duration % 60;
+ if (minutes > 0) {
+ formattedString += std::to_string(minutes) + ":";
+ if (formattedString.length() == 2) {
+ formattedString = "0" + formattedString;
+ }
+ } else {
+ formattedString += "00:";
+ }
+ if (seconds < 10)
+ formattedString += "0";
+ formattedString += std::to_string(seconds);
+ return QString::fromStdString(formattedString);
+}
+
+QByteArray
+Utils::QByteArrayFromFile(const QString &filename)
+{
+ QFile file(filename);
+ if (file.open(QIODevice::ReadOnly)) {
+ return file.readAll();
+ } else {
+ qDebug() << "can't open file";
+ return QByteArray();
+ }
+}
+
+QPixmap
+Utils::generateTintedPixmap(const QString &filename, QColor color)
+{
+ QPixmap px(filename);
+ QImage tmpImage = px.toImage();
+ for (int y = 0; y < tmpImage.height(); y++) {
+ for (int x = 0; x < tmpImage.width(); x++) {
+ color.setAlpha(tmpImage.pixelColor(x, y).alpha());
+ tmpImage.setPixelColor(x, y, color);
+ }
+ }
+ return QPixmap::fromImage(tmpImage);
+}
+
+QPixmap
+Utils::generateTintedPixmap(const QPixmap &pix, QColor color)
+{
+ QPixmap px = pix;
+ QImage tmpImage = px.toImage();
+ for (int y = 0; y < tmpImage.height(); y++) {
+ for (int x = 0; x < tmpImage.width(); x++) {
+ color.setAlpha(tmpImage.pixelColor(x, y).alpha());
+ tmpImage.setPixelColor(x, y, color);
+ }
+ }
+ return QPixmap::fromImage(tmpImage);
+}
+
+QImage
+Utils::scaleAndFrame(const QImage photo, const QSize &size)
+{
+ return photo.scaled(size, Qt::KeepAspectRatio, Qt::SmoothTransformation);
+}
+
+QImage
+Utils::accountPhoto(const lrc::api::account::Info &accountInfo, const QSize &size)
+{
+ QImage photo;
+ if (!accountInfo.profileInfo.avatar.isEmpty()) {
+ QByteArray ba = accountInfo.profileInfo.avatar.toLocal8Bit();
+ photo = GlobalInstances::pixmapManipulator().personPhoto(ba, nullptr).value<QImage>();
+ } else {
+ auto bestId = bestIdForAccount(accountInfo);
+ auto bestName = bestNameForAccount(accountInfo);
+ QString letterStr = bestId == bestName ? QString() : bestName;
+ QString prefix = accountInfo.profileInfo.type == lrc::api::profile::Type::RING ? "ring:"
+ : "sip:";
+ photo = fallbackAvatar(size, prefix + accountInfo.profileInfo.uri, letterStr);
+ }
+ return scaleAndFrame(photo, size);
+}
+
+QString
+Utils::humanFileSize(qint64 fileSize)
+{
+ float fileSizeF = static_cast<float>(fileSize);
+ float thresh = 1024;
+
+ if (abs(fileSizeF) < thresh) {
+ return QString::number(fileSizeF) + " B";
+ }
+ QString units[] = {"kB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"};
+ int unit_position = -1;
+ do {
+ fileSizeF /= thresh;
+ ++unit_position;
+ } while (abs(fileSizeF) >= thresh && unit_position < units->size() - 1);
+ /*
+ * Round up to two decimal.
+ */
+ fileSizeF = roundf(fileSizeF * 100) / 100;
+ return QString::number(fileSizeF) + " " + units[unit_position];
+}
+
+const QString
+UtilsAdapter::getBestName(const QString &accountId, const QString &uid)
+{
+ auto convModel = LRCInstance::getAccountInfo(accountId).conversationModel.get();
+ return Utils::bestNameForConversation(LRCInstance::getConversationFromConvUid(uid, accountId),
+ *convModel);
+}
+
+const QString
+UtilsAdapter::getBestId(const QString &accountId, const QString &uid)
+{
+ auto convModel = LRCInstance::getAccountInfo(accountId).conversationModel.get();
+ return Utils::bestIdForConversation(LRCInstance::getConversationFromConvUid(uid, accountId),
+ *convModel);
+}
+
+int
+UtilsAdapter::getTotalUnreadMessages()
+{
+ int totalUnreadMessages{0};
+ if (LRCInstance::getCurrentAccountInfo().profileInfo.type != lrc::api::profile::Type::SIP) {
+ auto convModel = LRCInstance::getCurrentConversationModel();
+ auto ringConversations = convModel->getFilteredConversations(lrc::api::profile::Type::RING);
+ std::for_each(ringConversations.begin(),
+ ringConversations.end(),
+ [&totalUnreadMessages, convModel](const auto &conversation) {
+ totalUnreadMessages += conversation.unreadMessages;
+ });
+ }
+ return totalUnreadMessages;
+}
+
+int
+UtilsAdapter::getTotalPendingRequest()
+{
+ auto &accountInfo = LRCInstance::getCurrentAccountInfo();
+ return accountInfo.contactModel->pendingRequestCount();
+}
+
+void
+UtilsAdapter::setConversationFilter(const QString &filter)
+{
+ LRCInstance::getCurrentConversationModel()->setFilter(filter);
+}
+
+void
+UtilsAdapter::clearConversationHistory(const QString &accountId, const QString &uid)
+{
+ LRCInstance::getAccountInfo(accountId).conversationModel->clearHistory(uid);
+}
+
+void
+UtilsAdapter::removeConversation(const QString &accountId, const QString &uid, bool banContact)
+{
+ LRCInstance::getAccountInfo(accountId).conversationModel->removeConversation(uid, banContact);
+}
+
+const QString
+UtilsAdapter::getCurrAccId()
+{
+ return LRCInstance::getCurrAccId();
+}
+
+const QStringList
+UtilsAdapter::getCurrAccList()
+{
+ return LRCInstance::accountModel().getAccountList();
+}
+
+int
+UtilsAdapter::getAccountListSize()
+{
+ return getCurrAccList().size();
+}
+
+void
+UtilsAdapter::setCurrentCall(const QString &accountId, const QString &convUid)
+{
+ auto convInfo = LRCInstance::getConversationFromConvUid(convUid, accountId);
+ auto &accInfo = LRCInstance::getAccountInfo(accountId);
+ accInfo.callModel->setCurrentCall(convInfo.callId);
+}
+
+void
+UtilsAdapter::startPreviewing(bool force)
+{
+ LRCInstance::renderer()->startPreviewing(force);
+}
+
+void
+UtilsAdapter::stopPreviewing()
+{
+ if (!LRCInstance::hasVideoCall()) {
+ LRCInstance::renderer()->stopPreviewing();
+ }
+}
+
+bool
+UtilsAdapter::hasVideoCall()
+{
+ return LRCInstance::hasVideoCall();
+}
+
+const QString
+UtilsAdapter::getCallId(const QString &accountId, const QString &convUid)
+{
+ auto convInfo = LRCInstance::getConversationFromConvUid(convUid, accountId);
+ if (convInfo.uid.isEmpty()) {
+ return "";
+ }
+
+ auto call = LRCInstance::getCallInfoForConversation(convInfo, false);
+ if (!call) {
+ return "";
+ }
+
+ return call->id;
+}
+
+// returns true if name is valid registered name
+bool
+UtilsAdapter::validateRegNameForm(const QString ®Name)
+{
+ QRegularExpression regExp(" ");
+
+ if (regName.size() > 2 && !regName.contains(regExp)) {
+ return true;
+
+ } else {
+ return false;
+ }
+}
+
+QString
+UtilsAdapter::getStringUTF8(QString string)
+{
+ return string.toUtf8();
+}
+
+QString
+UtilsAdapter::getRecordQualityString(int value)
+{
+ return value ? QString::number(static_cast<float>(value) / 100, 'f', 1) + " Mbps" : "Default";
+}
+
+QString
+UtilsAdapter::getCurrentPath()
+{
+ return QDir::currentPath();
+}
diff --git a/src/utils.h b/src/utils.h
new file mode 100644
index 0000000..64db451
--- /dev/null
+++ b/src/utils.h
@@ -0,0 +1,562 @@
+/*
+ * Copyright (C) 2015-2020 by Savoir-faire Linux
+ * Author: Edric Ladent Milaret <edric.ladent-milaret@savoirfairelinux.com>
+ * Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
+ * Author: Isa Nanic <isa.nanic@savoirfairelinux.com>
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "version.h"
+
+#include <string>
+
+#include <QClipboard>
+#include <QCryptographicHash>
+#include <QDir>
+#include <QApplication>
+#include <QImage>
+#include <QItemDelegate>
+#include <QLabel>
+#include <QListWidget>
+#include <QMessageBox>
+#include <QQmlEngine>
+#include <QSettings>
+#include <QStackedWidget>
+#include <QStandardPaths>
+#include <QString>
+#include <QTextDocument>
+#include <QtGlobal>
+#include <QPainterPath>
+
+#ifdef Q_OS_WIN
+#include <ciso646>
+#include <windows.h>
+#undef ERROR
+#else
+#define LPCWSTR char *
+#endif
+
+#include "api/account.h"
+#include "api/contact.h"
+#include "api/contactmodel.h"
+#include "api/conversationmodel.h"
+
+static const QSize IMAGE_SIZE{128, 128};
+static float CURRENT_SCALING_RATIO{1.0};
+
+#ifdef BETA
+static constexpr bool isBeta = true;
+#else
+static constexpr bool isBeta = false;
+#endif
+
+namespace Utils {
+
+/*
+ * Qml type register.
+ */
+#define QML_REGISTERSINGLETONTYPE(T, MAJ, MIN) \
+ qmlRegisterSingletonType<T>("net.jami.Models", \
+ MAJ, \
+ MIN, \
+ #T, \
+ [](QQmlEngine *e, QJSEngine *se) -> QObject * { \
+ Q_UNUSED(e); \
+ Q_UNUSED(se); \
+ T *obj = new T(); \
+ return obj; \
+ });
+#define QML_REGISTERSINGLETONTYPE_WITH_INSTANCE(T, MAJ, MIN) \
+ qmlRegisterSingletonType<T>("net.jami.Models", \
+ MAJ, \
+ MIN, \
+ #T, \
+ [](QQmlEngine *e, QJSEngine *se) -> QObject * { \
+ Q_UNUSED(e); \
+ Q_UNUSED(se); \
+ return &(T::instance()); \
+ });
+
+#define QML_REGISTERSINGLETONTYPE_URL(URL, T, MAJ, MIN) \
+ qmlRegisterSingletonType(QUrl(URL), "net.jami.Models", MAJ, MIN, #T);
+
+#define QML_REGISTERTYPE(T, MAJ, MIN) qmlRegisterType<T>("net.jami.Models", MAJ, MIN, #T);
+
+#define QML_REGISTERNAMESPACE(T, NAME, MAJ, MIN) \
+ qmlRegisterUncreatableMetaObject(T, "net.jami.Models", MAJ, MIN, NAME, "")
+
+#define QML_REGISTERUNCREATABLE(T, MAJ, MIN) \
+ qmlRegisterUncreatableType<T>("net.jami.Models", \
+ MAJ, \
+ MIN, \
+ #T, \
+ "Don't try to add to a qml definition of " #T);
+
+#define QML_REGISTERUNCREATABLE_IN_NAMESPACE(T, NAMESPACE, MAJ, MIN) \
+ qmlRegisterUncreatableType<NAMESPACE::T>("net.jami.Models", \
+ MAJ, \
+ MIN, \
+ #T, \
+ "Don't try to add to a qml definition of " #T);
+
+/*
+ * System.
+ */
+bool CreateStartupLink(const std::wstring &wstrAppName);
+void DeleteStartupLink(const std::wstring &wstrAppName);
+bool CreateLink(LPCWSTR lpszPathObj, LPCWSTR lpszPathLink);
+bool CheckStartupLink(const std::wstring &wstrAppName);
+void removeOldVersions();
+const char *WinGetEnv(const char *name);
+QString GetRingtonePath();
+QString GenGUID();
+QString GetISODate();
+void InvokeMailto(const QString &subject,
+ const QString &body,
+ const QString &attachement = QString());
+void setStackWidget(QStackedWidget *stack, QWidget *widget);
+void showSystemNotification(QWidget *widget,
+ const QString &message,
+ long delay = 5000,
+ const QString &triggeredAccountId = "");
+void showSystemNotification(QWidget *widget,
+ const QString &sender,
+ const QString &message,
+ long delay = 5000,
+ const QString &triggeredAccountId = "");
+QSize getRealSize(QScreen *screen);
+void forceDeleteAsync(const QString &path);
+QString getChangeLog();
+QString getProjectCredits();
+float getCurrentScalingRatio();
+void setCurrentScalingRatio(float ratio);
+
+/*
+ * Updates.
+ */
+void cleanUpdateFiles();
+void checkForUpdates(bool withUI, QWidget *parent = nullptr);
+void applyUpdates(bool updateToBeta, QWidget *parent = nullptr);
+
+/*
+ * Names.
+ */
+QString bestIdForConversation(const lrc::api::conversation::Info &conv,
+ const lrc::api::ConversationModel &model);
+QString bestIdForAccount(const lrc::api::account::Info &account);
+QString bestNameForAccount(const lrc::api::account::Info &account);
+QString bestIdForContact(const lrc::api::contact::Info &contact);
+QString bestNameForContact(const lrc::api::contact::Info &contact);
+QString bestNameForConversation(const lrc::api::conversation::Info &conv,
+ const lrc::api::ConversationModel &model);
+/*
+ * Returns empty string if only infoHash is available.
+ */
+QString secondBestNameForAccount(const lrc::api::account::Info &account);
+lrc::api::profile::Type profileType(const lrc::api::conversation::Info &conv,
+ const lrc::api::ConversationModel &model);
+
+/*
+ * Interactions.
+ */
+std::string formatTimeString(const std::time_t ×tamp);
+bool isInteractionGenerated(const lrc::api::interaction::Type &interaction);
+bool isContactValid(const QString &contactUid, const lrc::api::ConversationModel &model);
+bool getReplyMessageBox(QWidget *widget, const QString &title, const QString &text);
+
+/*
+ * Image.
+ */
+QString getContactImageString(const QString &accountId, const QString &uid);
+QImage getCirclePhoto(const QImage original, int sizePhoto);
+QImage conversationPhoto(const QString &convUid,
+ const lrc::api::account::Info &accountInfo,
+ bool filtered = false);
+QColor getAvatarColor(const QString &canonicalUri);
+QImage fallbackAvatar(const QSize size,
+ const QString &canonicalUriStr,
+ const QString &letterStr = QString());
+QImage fallbackAvatar(const QSize size, const std::string &alias, const std::string &uri);
+QByteArray QImageToByteArray(QImage image);
+QByteArray QByteArrayFromFile(const QString &filename);
+QPixmap generateTintedPixmap(const QString &filename, QColor color);
+QPixmap generateTintedPixmap(const QPixmap &pix, QColor color);
+QImage scaleAndFrame(const QImage photo, const QSize &size = IMAGE_SIZE);
+QImage accountPhoto(const lrc::api::account::Info &accountInfo, const QSize &size = IMAGE_SIZE);
+QImage cropImage(const QImage &img);
+QPixmap pixmapFromSvg(const QString &svg_resource, const QSize &size);
+QImage setupQRCode(QString ringID, int margin);
+
+/*
+ * Rounded corner.
+ */
+template<typename T>
+void
+fillRoundRectPath(QPainter &painter,
+ const T &brushType,
+ const QRect &rectToDraw,
+ qreal cornerRadius,
+ int xTransFormOffset = 0,
+ int yTransFormOffset = 0)
+{
+ QBrush brush(brushType);
+ brush.setTransform(QTransform::fromTranslate(rectToDraw.x() + xTransFormOffset,
+ rectToDraw.y() + yTransFormOffset));
+ QPainterPath painterPath;
+ painterPath.addRoundRect(rectToDraw, cornerRadius);
+ painter.fillPath(painterPath, brush);
+}
+
+/*
+ * Time.
+ */
+QString formattedTime(int seconds);
+
+/*
+ * Byte to human readable size.
+ */
+QString humanFileSize(qint64 fileSize);
+
+/*
+ * Device plug or unplug enum.
+ */
+enum class DevicePlugStatus { Plugged, Unplugged, Unchanged };
+
+class OneShotDisconnectConnection : public QObject
+{
+ Q_OBJECT
+
+public:
+ explicit OneShotDisconnectConnection(const QObject *sender,
+ const char *signal,
+ QMetaObject::Connection *connection,
+ QObject *parent = nullptr)
+ : QObject(parent)
+ {
+ connection_ = connection;
+ disconnectConnection_ = new QMetaObject::Connection;
+ *disconnectConnection_ = QObject::connect(sender,
+ signal,
+ this,
+ SLOT(slotOneShotDisconnectConnection()));
+ }
+ ~OneShotDisconnectConnection()
+ {
+ if (!connection_) {
+ delete connection_;
+ }
+ if (!disconnectConnection_) {
+ delete disconnectConnection_;
+ }
+ if (!this) {
+ delete this;
+ }
+ }
+
+public slots:
+ void
+ slotOneShotDisconnectConnection()
+ {
+ if (connection_) {
+ QObject::disconnect(*connection_);
+ delete connection_;
+ }
+ if (disconnectConnection_) {
+ QObject::disconnect(*disconnectConnection_);
+ delete disconnectConnection_;
+ }
+ delete this;
+ }
+
+private:
+ QMetaObject::Connection *connection_;
+ QMetaObject::Connection *disconnectConnection_;
+};
+
+template<typename Func1, typename Func2>
+void
+oneShotConnect(const typename QtPrivate::FunctionPointer<Func1>::Object *sender,
+ Func1 signal,
+ Func2 slot)
+{
+ QMetaObject::Connection *const connection = new QMetaObject::Connection;
+ *connection = QObject::connect(sender, signal, slot);
+ QMetaObject::Connection *const disconnectConnection = new QMetaObject::Connection;
+ *disconnectConnection = QObject::connect(sender, signal, [connection, disconnectConnection] {
+ if (connection) {
+ QObject::disconnect(*connection);
+ delete connection;
+ }
+ if (disconnectConnection) {
+ QObject::disconnect(*disconnectConnection);
+ delete disconnectConnection;
+ }
+ });
+}
+
+template<typename Func1, typename Func2>
+void
+oneShotConnect(const typename QtPrivate::FunctionPointer<Func1>::Object *sender,
+ Func1 signal,
+ const typename QtPrivate::FunctionPointer<Func2>::Object *receiver,
+ Func2 slot)
+{
+ QMetaObject::Connection *const connection = new QMetaObject::Connection;
+ *connection = QObject::connect(sender, signal, receiver, slot);
+ QMetaObject::Connection *const disconnectConnection = new QMetaObject::Connection;
+ *disconnectConnection = QObject::connect(sender, signal, [connection, disconnectConnection] {
+ if (connection) {
+ QObject::disconnect(*connection);
+ delete connection;
+ }
+ if (disconnectConnection) {
+ QObject::disconnect(*disconnectConnection);
+ delete disconnectConnection;
+ }
+ });
+}
+
+inline void
+oneShotConnect(const QObject *sender, const char *signal, const QObject *receiver, const char *slot)
+{
+ QMetaObject::Connection *const connection = new QMetaObject::Connection;
+ *connection = QObject::connect(sender, signal, receiver, slot);
+ OneShotDisconnectConnection *disconnectConnection = new OneShotDisconnectConnection(sender,
+ signal,
+ connection);
+ Q_UNUSED(disconnectConnection)
+}
+
+template<class T>
+class Blocker
+{
+ T *blocked;
+ bool previous;
+
+public:
+ Blocker(T *blocked)
+ : blocked(blocked)
+ , previous(blocked->blockSignals(true))
+ {}
+ ~Blocker() { blocked->blockSignals(previous); }
+ T *
+ operator->()
+ {
+ return blocked;
+ }
+};
+
+template<class T>
+inline Blocker<T>
+whileBlocking(T *blocked)
+{
+ return Blocker<T>(blocked);
+}
+
+template<typename T>
+void
+setElidedText(T *object,
+ const QString &text,
+ Qt::TextElideMode mode = Qt::ElideMiddle,
+ int padding = 32)
+{
+ QFontMetrics metrics(object->font());
+ QString clippedText = metrics.elidedText(text, mode, object->width() - padding);
+ object->setText(clippedText);
+}
+
+template<typename E>
+constexpr inline
+ typename std::enable_if<std::is_enum<E>::value, typename std::underlying_type<E>::type>::type
+ toUnderlyingValue(E e) noexcept
+{
+ return static_cast<typename std::underlying_type<E>::type>(e);
+}
+
+template<typename E, typename T>
+constexpr inline
+ typename std::enable_if<std::is_enum<E>::value && std::is_integral<T>::value, E>::type
+ toEnum(T value) noexcept
+{
+ return static_cast<E>(value);
+}
+} // namespace Utils
+
+class UtilsAdapter : public QObject
+{
+ Q_OBJECT
+public:
+ explicit UtilsAdapter(QObject *parent = nullptr)
+ : QObject(parent)
+ {
+ clipboard_ = QApplication::clipboard();
+ }
+ ~UtilsAdapter() {}
+
+ ///Singleton
+ static UtilsAdapter &instance();
+
+ Q_INVOKABLE const QString
+ getChangeLog()
+ {
+ return Utils::getChangeLog();
+ }
+
+ Q_INVOKABLE const QString
+ getProjectCredits()
+ {
+ return Utils::getProjectCredits();
+ }
+
+ Q_INVOKABLE const QString
+ getVersionStr()
+ {
+ return QString(VERSION_STRING);
+ }
+
+ Q_INVOKABLE void
+ setText(QString text)
+ {
+ clipboard_->setText(text, QClipboard::Clipboard);
+ }
+
+ Q_INVOKABLE const QString
+ qStringFromFile(const QString &filename)
+ {
+ return Utils::QByteArrayFromFile(filename);
+ }
+
+ Q_INVOKABLE const QString
+ getStyleSheet(const QString &name, const QString &source)
+ {
+ auto simplifiedCSS = source.simplified().replace("'", "\"");
+ QString s = QString::fromLatin1("(function() {"
+ " var node = document.createElement('style');"
+ " node.id = '%1';"
+ " node.innerHTML = '%2';"
+ " document.head.appendChild(node);"
+ "})()")
+ .arg(name)
+ .arg(simplifiedCSS);
+ return s;
+ }
+
+ Q_INVOKABLE const QString
+ getCachePath()
+ {
+ QDir dataDir(QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation));
+ dataDir.cdUp();
+ return dataDir.absolutePath() + "/jami";
+ }
+ Q_INVOKABLE bool
+ createStartupLink()
+ {
+ return Utils::CreateStartupLink(L"Jami");
+ }
+ Q_INVOKABLE QString
+ GetRingtonePath()
+ {
+ return Utils::GetRingtonePath();
+ }
+ Q_INVOKABLE bool
+ checkStartupLink()
+ {
+ return Utils::CheckStartupLink(L"Jami");
+ }
+
+ Q_INVOKABLE const QString
+ getContactImageString(const QString &accountId, const QString &uid)
+ {
+ return Utils::getContactImageString(accountId, uid);
+ }
+
+ Q_INVOKABLE void removeConversation(const QString &accountId,
+ const QString &uid,
+ bool banContact = false);
+ Q_INVOKABLE void clearConversationHistory(const QString &accountId, const QString &uid);
+ Q_INVOKABLE void setConversationFilter(const QString &filter);
+ Q_INVOKABLE int getTotalUnreadMessages();
+ Q_INVOKABLE int getTotalPendingRequest();
+ Q_INVOKABLE const QString getBestName(const QString &accountId, const QString &uid);
+ Q_INVOKABLE const QString getBestId(const QString &accountId, const QString &uid);
+
+ Q_INVOKABLE const QString getCurrAccId();
+ Q_INVOKABLE const QStringList getCurrAccList();
+ Q_INVOKABLE int getAccountListSize();
+ Q_INVOKABLE void setCurrentCall(const QString &accountId, const QString &convUid);
+ Q_INVOKABLE void startPreviewing(bool force);
+ Q_INVOKABLE void stopPreviewing();
+ Q_INVOKABLE bool hasVideoCall();
+ Q_INVOKABLE const QString getCallId(const QString &accountId, const QString &convUid);
+ Q_INVOKABLE QString getStringUTF8(QString string);
+ Q_INVOKABLE bool validateRegNameForm(const QString ®Name);
+ Q_INVOKABLE QString getRecordQualityString(int value);
+ Q_INVOKABLE QString getCurrentPath();
+ Q_INVOKABLE QString
+ stringSimplifier(QString input)
+ {
+ return input.simplified();
+ }
+
+ Q_INVOKABLE QString
+ toNativeSeparators(QString inputDir)
+ {
+ return QDir::toNativeSeparators(inputDir);
+ }
+
+ Q_INVOKABLE QString
+ toFileInfoName(QString inputFileName)
+ {
+ QFileInfo fi(inputFileName);
+ return fi.fileName();
+ }
+
+ Q_INVOKABLE QString
+ toFileAbsolutepath(QString inputFileName)
+ {
+ QFileInfo fi(inputFileName);
+ return fi.absolutePath();
+ }
+
+ Q_INVOKABLE QString
+ getAbsPath(QString path)
+ {
+#ifdef Q_OS_WIN
+ return path.replace("file:///", "").replace("\n", "").replace("\r", "");
+#else
+ return path.replace("file:///", "/").replace("\n", "").replace("\r", "");
+#endif
+ }
+
+ Q_INVOKABLE QString
+ getCroppedImageBase64FromFile(QString fileName, int size)
+ {
+ auto image = Utils::cropImage(QImage(fileName));
+ auto croppedImage = image.scaled(size,
+ size,
+ Qt::KeepAspectRatioByExpanding,
+ Qt::SmoothTransformation);
+ return QString::fromLatin1(Utils::QImageToByteArray(croppedImage).toBase64().data());
+ }
+
+private:
+ QClipboard *clipboard_;
+};
+#if QT_VERSION >= QT_VERSION_CHECK(5, 8, 0)
+Q_DECLARE_METATYPE(UtilsAdapter *)
+#endif
diff --git a/src/version.h b/src/version.h
new file mode 100644
index 0000000..d5eea6d
--- /dev/null
+++ b/src/version.h
@@ -0,0 +1,57 @@
+#pragma once
+
+#define BUILD_YEAR_CH0 (__DATE__[ 7])
+#define BUILD_YEAR_CH1 (__DATE__[ 8])
+#define BUILD_YEAR_CH2 (__DATE__[ 9])
+#define BUILD_YEAR_CH3 (__DATE__[10])
+
+#define BUILD_MONTH_IS_JAN (__DATE__[0] == 'J' && __DATE__[1] == 'a' && __DATE__[2] == 'n')
+#define BUILD_MONTH_IS_FEB (__DATE__[0] == 'F')
+#define BUILD_MONTH_IS_MAR (__DATE__[0] == 'M' && __DATE__[1] == 'a' && __DATE__[2] == 'r')
+#define BUILD_MONTH_IS_APR (__DATE__[0] == 'A' && __DATE__[1] == 'p')
+#define BUILD_MONTH_IS_MAY (__DATE__[0] == 'M' && __DATE__[1] == 'a' && __DATE__[2] == 'y')
+#define BUILD_MONTH_IS_JUN (__DATE__[0] == 'J' && __DATE__[1] == 'u' && __DATE__[2] == 'n')
+#define BUILD_MONTH_IS_JUL (__DATE__[0] == 'J' && __DATE__[1] == 'u' && __DATE__[2] == 'l')
+#define BUILD_MONTH_IS_AUG (__DATE__[0] == 'A' && __DATE__[1] == 'u')
+#define BUILD_MONTH_IS_SEP (__DATE__[0] == 'S')
+#define BUILD_MONTH_IS_OCT (__DATE__[0] == 'O')
+#define BUILD_MONTH_IS_NOV (__DATE__[0] == 'N')
+#define BUILD_MONTH_IS_DEC (__DATE__[0] == 'D')
+
+#define BUILD_MONTH_CH0 \
+ ((BUILD_MONTH_IS_OCT || BUILD_MONTH_IS_NOV || BUILD_MONTH_IS_DEC) ? '1' : '0')
+
+#define BUILD_MONTH_CH1 \
+ ( \
+ (BUILD_MONTH_IS_JAN) ? '1' : \
+ (BUILD_MONTH_IS_FEB) ? '2' : \
+ (BUILD_MONTH_IS_MAR) ? '3' : \
+ (BUILD_MONTH_IS_APR) ? '4' : \
+ (BUILD_MONTH_IS_MAY) ? '5' : \
+ (BUILD_MONTH_IS_JUN) ? '6' : \
+ (BUILD_MONTH_IS_JUL) ? '7' : \
+ (BUILD_MONTH_IS_AUG) ? '8' : \
+ (BUILD_MONTH_IS_SEP) ? '9' : \
+ (BUILD_MONTH_IS_OCT) ? '0' : \
+ (BUILD_MONTH_IS_NOV) ? '1' : \
+ (BUILD_MONTH_IS_DEC) ? '2' : \
+ /* error default */ '?' \
+ )
+
+#define BUILD_DAY_CH0 ((__DATE__[4] >= '0') ? (__DATE__[4]) : '0')
+#define BUILD_DAY_CH1 (__DATE__[ 5])
+
+#define BUILD_HOUR_CH0 (__TIME__[0])
+#define BUILD_HOUR_CH1 (__TIME__[1])
+
+#define BUILD_MIN_CH0 (__TIME__[ 3])
+#define BUILD_MIN_CH1 (__TIME__[ 4])
+
+const char VERSION_STRING[] = {
+ BUILD_YEAR_CH0, BUILD_YEAR_CH1, BUILD_YEAR_CH2, BUILD_YEAR_CH3,
+ BUILD_MONTH_CH0, BUILD_MONTH_CH1,
+ BUILD_DAY_CH0, BUILD_DAY_CH1,
+ BUILD_HOUR_CH0, BUILD_HOUR_CH1,
+ BUILD_MIN_CH0, BUILD_MIN_CH1,
+ '\0'
+};
\ No newline at end of file
diff --git a/src/videocodeclistmodel.cpp b/src/videocodeclistmodel.cpp
new file mode 100644
index 0000000..d77a207
--- /dev/null
+++ b/src/videocodeclistmodel.cpp
@@ -0,0 +1,130 @@
+/*
+ * Copyright (C) 2019-2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "videocodeclistmodel.h"
+
+#include <QList>
+
+VideoCodecListModel::VideoCodecListModel(QObject *parent)
+ : QAbstractListModel(parent)
+{}
+
+VideoCodecListModel::~VideoCodecListModel() {}
+
+int
+VideoCodecListModel::rowCount(const QModelIndex &parent) const
+{
+ if (!parent.isValid()) {
+ /*
+ * Count.
+ */
+ QList<lrc::api::Codec> realCodecList;
+ auto videoCodecListOld = LRCInstance::getCurrentAccountInfo().codecModel->getVideoCodecs();
+
+ for (auto codec : videoCodecListOld) {
+ if (codec.name.length()) {
+ realCodecList.append(codec);
+ }
+ }
+
+ return realCodecList.size();
+ }
+ /*
+ * A valid QModelIndex returns 0 as no entry has sub-elements.
+ */
+ return 0;
+}
+
+int
+VideoCodecListModel::columnCount(const QModelIndex &parent) const
+{
+ Q_UNUSED(parent);
+ /*
+ * Only need one column.
+ */
+ return 1;
+}
+
+QVariant
+VideoCodecListModel::data(const QModelIndex &index, int role) const
+{
+ auto videoCodecList = LRCInstance::getCurrentAccountInfo().codecModel->getVideoCodecs();
+ if (!index.isValid() || videoCodecList.size() <= index.row()) {
+ return QVariant();
+ }
+
+ QList<lrc::api::Codec> realCodecList;
+
+ for (auto codec : videoCodecList) {
+ if (codec.name.length()) {
+ realCodecList.append(codec);
+ }
+ }
+
+ switch (role) {
+ case Role::VideoCodecName:
+ return QVariant(realCodecList.at(index.row()).name);
+ case Role::IsEnabled:
+ return QVariant(realCodecList.at(index.row()).enabled);
+ case Role::VideoCodecID:
+ return QVariant(realCodecList.at(index.row()).id);
+ }
+ return QVariant();
+}
+
+QHash<int, QByteArray>
+VideoCodecListModel::roleNames() const
+{
+ QHash<int, QByteArray> roles;
+ roles[VideoCodecName] = "VideoCodecName";
+ roles[IsEnabled] = "IsEnabled";
+ roles[VideoCodecID] = "VideoCodecID";
+ return roles;
+}
+
+QModelIndex
+VideoCodecListModel::index(int row, int column, const QModelIndex &parent) const
+{
+ Q_UNUSED(parent);
+ if (column != 0) {
+ return QModelIndex();
+ }
+
+ if (row >= 0 && row < rowCount()) {
+ return createIndex(row, column);
+ }
+ return QModelIndex();
+}
+
+QModelIndex
+VideoCodecListModel::parent(const QModelIndex &child) const
+{
+ Q_UNUSED(child);
+ return QModelIndex();
+}
+
+Qt::ItemFlags
+VideoCodecListModel::flags(const QModelIndex &index) const
+{
+ auto flags = QAbstractItemModel::flags(index) | Qt::ItemNeverHasChildren | Qt::ItemIsSelectable
+ | Qt::ItemIsUserCheckable | Qt::ItemIsEnabled;
+ if (!index.isValid()) {
+ return QAbstractItemModel::flags(index);
+ }
+ return flags;
+}
diff --git a/src/videocodeclistmodel.h b/src/videocodeclistmodel.h
new file mode 100644
index 0000000..96a34a7
--- /dev/null
+++ b/src/videocodeclistmodel.h
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2019-2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include <QAbstractItemModel>
+
+#include "api/account.h"
+#include "api/contact.h"
+#include "api/conversation.h"
+#include "api/newdevicemodel.h"
+
+#include "lrcinstance.h"
+
+class VideoCodecListModel : public QAbstractListModel
+{
+ Q_OBJECT
+public:
+ enum Role { VideoCodecName = Qt::UserRole + 1, IsEnabled, VideoCodecID };
+ Q_ENUM(Role)
+
+ explicit VideoCodecListModel(QObject *parent = 0);
+ ~VideoCodecListModel();
+
+ /*
+ * QAbstractListModel override.
+ */
+ int rowCount(const QModelIndex &parent = QModelIndex()) const override;
+ int columnCount(const QModelIndex &parent) const override;
+ QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
+ /*
+ * Override role name as access point in qml.
+ */
+ QHash<int, QByteArray> roleNames() const override;
+ QModelIndex index(int row, int column = 0, const QModelIndex &parent = QModelIndex()) const;
+ QModelIndex parent(const QModelIndex &child) const;
+ Qt::ItemFlags flags(const QModelIndex &index) const;
+};
diff --git a/src/videoformatfpsmodel.cpp b/src/videoformatfpsmodel.cpp
new file mode 100644
index 0000000..4c5fe15
--- /dev/null
+++ b/src/videoformatfpsmodel.cpp
@@ -0,0 +1,216 @@
+/*
+ * Copyright (C) 2019-2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "videoformatfpsmodel.h"
+
+VideoFormatFpsModel::VideoFormatFpsModel(QObject *parent)
+ : QAbstractListModel(parent)
+{
+ try {
+ QString currentDeviceId = LRCInstance::avModel().getCurrentVideoCaptureDevice();
+ auto currentSettings = LRCInstance::avModel().getDeviceSettings(currentDeviceId);
+ currentResolution_ = currentSettings.size;
+ } catch (const std::exception &e) {
+ qWarning() << "Constructor of VideoFormatFpsModel, exception: " << e.what();
+ }
+}
+
+VideoFormatFpsModel::~VideoFormatFpsModel() {}
+
+int
+VideoFormatFpsModel::rowCount(const QModelIndex &parent) const
+{
+ if (!parent.isValid()) {
+ /*
+ * Count.
+ */
+ QString currentDeviceId = LRCInstance::avModel().getCurrentVideoCaptureDevice();
+ auto deviceCapabilities = LRCInstance::avModel().getDeviceCapabilities(currentDeviceId);
+ if (deviceCapabilities.size() == 0) {
+ return 0;
+ }
+ try {
+ auto currentSettings = LRCInstance::avModel().getDeviceSettings(currentDeviceId);
+ auto currentChannel = currentSettings.channel;
+ currentChannel = currentChannel.isEmpty() ? "default" : currentChannel;
+ auto channelCaps = deviceCapabilities[currentChannel];
+
+ bool resolutionFound = false;
+ int indexOfCurrentResolutionInResRateList = 0;
+
+ for (int i = 0; i < channelCaps.size(); i++) {
+ if (channelCaps[i].first == currentResolution_) {
+ indexOfCurrentResolutionInResRateList = i;
+ resolutionFound = true;
+ break;
+ }
+ }
+
+ if (resolutionFound) {
+ auto fpsList = channelCaps[indexOfCurrentResolutionInResRateList].second;
+ return fpsList.size();
+ }
+ } catch (const std::exception &e) {
+ qWarning() << e.what();
+ }
+ return 0;
+ }
+ /*
+ * A valid QModelIndex returns 0 as no entry has sub-elements.
+ */
+ return 0;
+}
+
+int
+VideoFormatFpsModel::columnCount(const QModelIndex &parent) const
+{
+ Q_UNUSED(parent);
+ /*
+ * Only need one column.
+ */
+ return 1;
+}
+
+QVariant
+VideoFormatFpsModel::data(const QModelIndex &index, int role) const
+{
+ try {
+ QString currentDeviceId = LRCInstance::avModel().getCurrentVideoCaptureDevice();
+ auto deviceCapabilities = LRCInstance::avModel().getDeviceCapabilities(currentDeviceId);
+
+ auto currentSettings = LRCInstance::avModel().getDeviceSettings(currentDeviceId);
+ auto currentChannel = currentSettings.channel;
+ currentChannel = currentChannel.isEmpty() ? "default" : currentChannel;
+ auto channelCaps = deviceCapabilities[currentChannel];
+
+ bool resolutionFound = false;
+ int indexOfCurrentResolutionInResRateList = 0;
+
+ for (int i = 0; i < channelCaps.size(); i++) {
+ if (channelCaps[i].first == currentResolution_) {
+ indexOfCurrentResolutionInResRateList = i;
+ resolutionFound = true;
+ break;
+ }
+ }
+
+ if (!index.isValid() || channelCaps.size() <= index.row() || deviceCapabilities.size() == 0
+ || !resolutionFound) {
+ return QVariant();
+ }
+
+ auto fpsList = channelCaps[indexOfCurrentResolutionInResRateList].second;
+
+ switch (role) {
+ case Role::FPS:
+ return QVariant(fpsList[index.row()]);
+ case Role::FPS_ToDisplay_UTF8:
+ QString rateDisplayUtf8 = QString("%1 fps").arg((int) fpsList[index.row()]);
+ return QVariant(rateDisplayUtf8.toUtf8());
+ }
+
+ } catch (const std::exception &e) {
+ qWarning() << e.what();
+ }
+
+ return QVariant();
+}
+
+QHash<int, QByteArray>
+VideoFormatFpsModel::roleNames() const
+{
+ QHash<int, QByteArray> roles;
+ roles[FPS] = "FPS";
+ roles[FPS_ToDisplay_UTF8] = "FPS_ToDisplay_UTF8";
+ return roles;
+}
+
+QModelIndex
+VideoFormatFpsModel::index(int row, int column, const QModelIndex &parent) const
+{
+ Q_UNUSED(parent);
+ if (column != 0) {
+ return QModelIndex();
+ }
+
+ if (row >= 0 && row < rowCount()) {
+ return createIndex(row, column);
+ }
+ return QModelIndex();
+}
+
+QModelIndex
+VideoFormatFpsModel::parent(const QModelIndex &child) const
+{
+ Q_UNUSED(child);
+ return QModelIndex();
+}
+
+Qt::ItemFlags
+VideoFormatFpsModel::flags(const QModelIndex &index) const
+{
+ auto flags = QAbstractItemModel::flags(index) | Qt::ItemNeverHasChildren | Qt::ItemIsSelectable;
+ if (!index.isValid()) {
+ return QAbstractItemModel::flags(index);
+ }
+ return flags;
+}
+
+void
+VideoFormatFpsModel::reset()
+{
+ beginResetModel();
+ endResetModel();
+}
+
+int
+VideoFormatFpsModel::getCurrentSettingIndex()
+{
+ int resultRowIndex = 0;
+ try {
+ QString currentDeviceId = LRCInstance::avModel().getCurrentVideoCaptureDevice();
+ auto currentSettings = LRCInstance::avModel().getDeviceSettings(currentDeviceId);
+ float currentFps = currentSettings.rate;
+ auto resultList = match(index(0, 0), FPS, QVariant(currentFps));
+
+ if (resultList.size() > 0) {
+ resultRowIndex = resultList[0].row();
+ }
+
+ } catch (const std::exception &e) {
+ qWarning() << e.what();
+ }
+
+ return resultRowIndex;
+}
+
+QString
+VideoFormatFpsModel::getCurrentResolution()
+{
+ return currentResolution_;
+}
+
+void
+VideoFormatFpsModel::setCurrentResolution(QString resNew)
+{
+ if (currentResolution_ != resNew) {
+ currentResolution_ = resNew;
+ reset();
+ emit currentResolutionChanged(resNew);
+ }
+}
diff --git a/src/videoformatfpsmodel.h b/src/videoformatfpsmodel.h
new file mode 100644
index 0000000..cd165cc
--- /dev/null
+++ b/src/videoformatfpsmodel.h
@@ -0,0 +1,77 @@
+/*
+ * Copyright (C) 2019-2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include <QAbstractItemModel>
+
+#include "api/account.h"
+#include "api/contact.h"
+#include "api/conversation.h"
+#include "api/newdevicemodel.h"
+
+#include "lrcinstance.h"
+
+class VideoFormatFpsModel : public QAbstractListModel
+{
+ Q_OBJECT
+ Q_PROPERTY(QString currentResolution READ getCurrentResolution WRITE setCurrentResolution NOTIFY
+ currentResolutionChanged);
+
+public:
+ enum Role { FPS = Qt::UserRole + 1, FPS_ToDisplay_UTF8 };
+ Q_ENUM(Role)
+
+ explicit VideoFormatFpsModel(QObject *parent = 0);
+ ~VideoFormatFpsModel();
+
+ /*
+ * QAbstractListModel override.
+ */
+ int rowCount(const QModelIndex &parent = QModelIndex()) const override;
+ int columnCount(const QModelIndex &parent) const override;
+ QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
+ /*
+ * Override role name as access point in qml.
+ */
+ QHash<int, QByteArray> roleNames() const override;
+ QModelIndex index(int row, int column = 0, const QModelIndex &parent = QModelIndex()) const;
+ QModelIndex parent(const QModelIndex &child) const;
+ Qt::ItemFlags flags(const QModelIndex &index) const;
+
+ /*
+ * This function is to reset the model when there's new account added.
+ */
+ Q_INVOKABLE void reset();
+ /*
+ * This function is to get the current device id in the demon.
+ */
+ Q_INVOKABLE int getCurrentSettingIndex();
+
+ /*
+ * Getters and setters
+ */
+ QString getCurrentResolution();
+ void setCurrentResolution(QString resNew);
+
+signals:
+ void currentResolutionChanged(QString resNew);
+
+private:
+ QString currentResolution_;
+};
diff --git a/src/videoformatresolutionmodel.cpp b/src/videoformatresolutionmodel.cpp
new file mode 100644
index 0000000..dea9635
--- /dev/null
+++ b/src/videoformatresolutionmodel.cpp
@@ -0,0 +1,164 @@
+/*
+ * Copyright (C) 2019-2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "videoformatresolutionmodel.h"
+
+VideoFormatResolutionModel::VideoFormatResolutionModel(QObject *parent)
+ : QAbstractListModel(parent)
+{}
+
+VideoFormatResolutionModel::~VideoFormatResolutionModel() {}
+
+int
+VideoFormatResolutionModel::rowCount(const QModelIndex &parent) const
+{
+ if (!parent.isValid()) {
+ /*
+ * Count.
+ */
+ QString currentDeviceId = LRCInstance::avModel().getCurrentVideoCaptureDevice();
+ auto deviceCapabilities = LRCInstance::avModel().getDeviceCapabilities(currentDeviceId);
+ if (deviceCapabilities.size() == 0) {
+ return 0;
+ }
+ try {
+ auto currentSettings = LRCInstance::avModel().getDeviceSettings(currentDeviceId);
+ auto currentChannel = currentSettings.channel;
+ currentChannel = currentChannel.isEmpty() ? "default" : currentChannel;
+ auto channelCaps = deviceCapabilities[currentChannel];
+
+ return channelCaps.size();
+ } catch (const std::exception &e) {
+ qWarning() << e.what();
+ return 0;
+ }
+ }
+ /*
+ * A valid QModelIndex returns 0 as no entry has sub-elements.
+ */
+ return 0;
+}
+
+int
+VideoFormatResolutionModel::columnCount(const QModelIndex &parent) const
+{
+ Q_UNUSED(parent);
+ /*
+ * Only need one column.
+ */
+ return 1;
+}
+
+QVariant
+VideoFormatResolutionModel::data(const QModelIndex &index, int role) const
+{
+ try {
+ QString currentDeviceId = LRCInstance::avModel().getCurrentVideoCaptureDevice();
+ auto deviceCapabilities = LRCInstance::avModel().getDeviceCapabilities(currentDeviceId);
+
+ auto currentSettings = LRCInstance::avModel().getDeviceSettings(currentDeviceId);
+ auto currentChannel = currentSettings.channel;
+ currentChannel = currentChannel.isEmpty() ? "default" : currentChannel;
+ auto channelCaps = deviceCapabilities[currentChannel];
+
+ if (!index.isValid() || channelCaps.size() <= index.row()
+ || deviceCapabilities.size() == 0) {
+ return QVariant();
+ }
+
+ switch (role) {
+ case Role::Resolution:
+ return QVariant(channelCaps.at(index.row()).first);
+ case Role::Resolution_UTF8:
+ return QVariant(channelCaps.at(index.row()).first.toUtf8());
+ }
+
+ } catch (const std::exception &e) {
+ qWarning() << e.what();
+ }
+
+ return QVariant();
+}
+
+QHash<int, QByteArray>
+VideoFormatResolutionModel::roleNames() const
+{
+ QHash<int, QByteArray> roles;
+ roles[Resolution] = "Resolution";
+ roles[Resolution_UTF8] = "Resolution_UTF8";
+ return roles;
+}
+
+QModelIndex
+VideoFormatResolutionModel::index(int row, int column, const QModelIndex &parent) const
+{
+ Q_UNUSED(parent);
+ if (column != 0) {
+ return QModelIndex();
+ }
+
+ if (row >= 0 && row < rowCount()) {
+ return createIndex(row, column);
+ }
+ return QModelIndex();
+}
+
+QModelIndex
+VideoFormatResolutionModel::parent(const QModelIndex &child) const
+{
+ Q_UNUSED(child);
+ return QModelIndex();
+}
+
+Qt::ItemFlags
+VideoFormatResolutionModel::flags(const QModelIndex &index) const
+{
+ auto flags = QAbstractItemModel::flags(index) | Qt::ItemNeverHasChildren | Qt::ItemIsSelectable;
+ if (!index.isValid()) {
+ return QAbstractItemModel::flags(index);
+ }
+ return flags;
+}
+
+void
+VideoFormatResolutionModel::reset()
+{
+ beginResetModel();
+ endResetModel();
+}
+
+int
+VideoFormatResolutionModel::getCurrentSettingIndex()
+{
+ int resultRowIndex = 0;
+ try {
+ QString currentDeviceId = LRCInstance::avModel().getCurrentVideoCaptureDevice();
+ auto currentSettings = LRCInstance::avModel().getDeviceSettings(currentDeviceId);
+ QString currentResolution = currentSettings.size;
+ auto resultList = match(index(0, 0), Resolution, QVariant(currentResolution));
+
+ if (resultList.size() > 0) {
+ resultRowIndex = resultList[0].row();
+ }
+
+ } catch (const std::exception &e) {
+ qWarning() << e.what();
+ }
+
+ return resultRowIndex;
+}
diff --git a/src/videoformatresolutionmodel.h b/src/videoformatresolutionmodel.h
new file mode 100644
index 0000000..8a3c803
--- /dev/null
+++ b/src/videoformatresolutionmodel.h
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2019-2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include <QAbstractItemModel>
+
+#include "api/account.h"
+#include "api/contact.h"
+#include "api/conversation.h"
+#include "api/newdevicemodel.h"
+
+#include "lrcinstance.h"
+
+class VideoFormatResolutionModel : public QAbstractListModel
+{
+ Q_OBJECT
+public:
+ enum Role { Resolution = Qt::UserRole + 1, Resolution_UTF8 };
+ Q_ENUM(Role)
+
+ explicit VideoFormatResolutionModel(QObject *parent = 0);
+ ~VideoFormatResolutionModel();
+
+ /*
+ * QAbstractListModel override.
+ */
+ int rowCount(const QModelIndex &parent = QModelIndex()) const override;
+ int columnCount(const QModelIndex &parent) const override;
+ QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
+ /*
+ * Override role name as access point in qml.
+ */
+ QHash<int, QByteArray> roleNames() const override;
+ QModelIndex index(int row, int column = 0, const QModelIndex &parent = QModelIndex()) const;
+ QModelIndex parent(const QModelIndex &child) const;
+ Qt::ItemFlags flags(const QModelIndex &index) const;
+
+ /*
+ * This function is to reset the model when there's new account added.
+ */
+ Q_INVOKABLE void reset();
+ /*
+ * This function is to get the current device id in the demon.
+ */
+ Q_INVOKABLE int getCurrentSettingIndex();
+};
diff --git a/src/videoinputdevicemodel.cpp b/src/videoinputdevicemodel.cpp
new file mode 100644
index 0000000..dfc349b
--- /dev/null
+++ b/src/videoinputdevicemodel.cpp
@@ -0,0 +1,166 @@
+/*
+ * Copyright (C) 2019-2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "videoinputdevicemodel.h"
+
+VideoInputDeviceModel::VideoInputDeviceModel(QObject *parent)
+ : QAbstractListModel(parent)
+{}
+
+VideoInputDeviceModel::~VideoInputDeviceModel() {}
+
+int
+VideoInputDeviceModel::rowCount(const QModelIndex &parent) const
+{
+ if (!parent.isValid()) {
+ /*
+ * Count.
+ */
+ int deviceListSize = LRCInstance::avModel().getDevices().size();
+ if (deviceListSize > 0) {
+ return deviceListSize;
+ } else {
+ return 1;
+ }
+ }
+ /*
+ * A valid QModelIndex returns 0 as no entry has sub-elements.
+ */
+ return 0;
+}
+
+int
+VideoInputDeviceModel::columnCount(const QModelIndex &parent) const
+{
+ Q_UNUSED(parent);
+ /*
+ * Only need one column.
+ */
+ return 1;
+}
+
+QVariant
+VideoInputDeviceModel::data(const QModelIndex &index, int role) const
+{
+ auto deviceList = LRCInstance::avModel().getDevices();
+ if (!index.isValid()) {
+ return QVariant();
+ }
+
+ if (deviceList.size() == 0 && index.row() == 0) {
+ switch (role) {
+ case Role::DeviceName:
+ return QVariant(QObject::tr("No Device"));
+ case Role::DeviceName_UTF8:
+ return QVariant(QObject::tr("No Device").toUtf8());
+ }
+ }
+
+ if (deviceList.size() <= index.row()) {
+ return QVariant();
+ }
+
+ auto currentDeviceSetting = LRCInstance::avModel().getDeviceSettings(deviceList[index.row()]);
+
+ switch (role) {
+ case Role::DeviceChannel:
+ return QVariant((QString) currentDeviceSetting.channel);
+ case Role::DeviceName:
+ return QVariant(currentDeviceSetting.name);
+ case Role::DeviceId:
+ return QVariant(currentDeviceSetting.id);
+ case Role::CurrentFrameRate:
+ return QVariant((float) currentDeviceSetting.rate);
+ case Role::CurrentResolution:
+ return QVariant((QString) currentDeviceSetting.size);
+ case Role::DeviceName_UTF8:
+ return QVariant(currentDeviceSetting.name.toUtf8());
+ }
+ return QVariant();
+}
+
+QHash<int, QByteArray>
+VideoInputDeviceModel::roleNames() const
+{
+ QHash<int, QByteArray> roles;
+ roles[DeviceChannel] = "DeviceChannel";
+ roles[DeviceName] = "DeviceName";
+ roles[DeviceId] = "DeviceId";
+ roles[CurrentFrameRate] = "CurrentFrameRate";
+ roles[CurrentResolution] = "CurrentResolution";
+ roles[DeviceName_UTF8] = "DeviceName_UTF8";
+ return roles;
+}
+
+QModelIndex
+VideoInputDeviceModel::index(int row, int column, const QModelIndex &parent) const
+{
+ Q_UNUSED(parent);
+ if (column != 0) {
+ return QModelIndex();
+ }
+
+ if (row >= 0 && row < rowCount()) {
+ return createIndex(row, column);
+ }
+ return QModelIndex();
+}
+
+QModelIndex
+VideoInputDeviceModel::parent(const QModelIndex &child) const
+{
+ Q_UNUSED(child);
+ return QModelIndex();
+}
+
+Qt::ItemFlags
+VideoInputDeviceModel::flags(const QModelIndex &index) const
+{
+ auto flags = QAbstractItemModel::flags(index) | Qt::ItemNeverHasChildren | Qt::ItemIsSelectable;
+ if (!index.isValid()) {
+ return QAbstractItemModel::flags(index);
+ }
+ return flags;
+}
+
+void
+VideoInputDeviceModel::reset()
+{
+ beginResetModel();
+ endResetModel();
+}
+
+int
+VideoInputDeviceModel::deviceCount()
+{
+ return LRCInstance::avModel().getDevices().size();
+}
+
+int
+VideoInputDeviceModel::getCurrentSettingIndex()
+{
+ QString currentId = LRCInstance::avModel().getCurrentVideoCaptureDevice();
+ auto resultList = match(index(0, 0), DeviceId, QVariant(currentId));
+
+ int resultRowIndex = 0;
+ if (resultList.size() > 0) {
+ resultRowIndex = resultList[0].row();
+ }
+
+ return resultRowIndex;
+}
diff --git a/src/videoinputdevicemodel.h b/src/videoinputdevicemodel.h
new file mode 100644
index 0000000..99d5898
--- /dev/null
+++ b/src/videoinputdevicemodel.h
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2019-2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include <QAbstractItemModel>
+
+#include "api/account.h"
+#include "api/contact.h"
+#include "api/conversation.h"
+#include "api/newdevicemodel.h"
+
+#include "lrcinstance.h"
+
+class VideoInputDeviceModel : public QAbstractListModel
+{
+ Q_OBJECT
+public:
+ enum Role {
+ DeviceChannel = Qt::UserRole + 1,
+ DeviceName,
+ DeviceId,
+ CurrentFrameRate,
+ CurrentResolution,
+ DeviceName_UTF8
+ };
+ Q_ENUM(Role)
+
+ explicit VideoInputDeviceModel(QObject *parent = 0);
+ ~VideoInputDeviceModel();
+
+ /*
+ * QAbstractListModel override.
+ */
+ int rowCount(const QModelIndex &parent = QModelIndex()) const override;
+ int columnCount(const QModelIndex &parent) const override;
+ QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
+ /*
+ * Override role name as access point in qml.
+ */
+ QHash<int, QByteArray> roleNames() const override;
+ QModelIndex index(int row, int column = 0, const QModelIndex &parent = QModelIndex()) const;
+ QModelIndex parent(const QModelIndex &child) const;
+ Qt::ItemFlags flags(const QModelIndex &index) const;
+
+ /*
+ * This function is to reset the model when there's new account added.
+ */
+ Q_INVOKABLE void reset();
+ /*
+ * This function is to reset the model when there's new account added.
+ */
+ Q_INVOKABLE int deviceCount();
+ /*
+ * This function is to get the current device id in the demon.
+ */
+ Q_INVOKABLE int getCurrentSettingIndex();
+};
diff --git a/src/webchathelpers.cpp b/src/webchathelpers.cpp
new file mode 100644
index 0000000..273948c
--- /dev/null
+++ b/src/webchathelpers.cpp
@@ -0,0 +1,150 @@
+/*
+ * Copyright (C) 2017-2020 by Savoir-faire Linux
+ * Author: Alexandre Viau <alexandre.viau@savoirfairelinux.com>
+ * Author: S�bastien Blin <sebastien.blin@savoirfairelinux.com>
+ * Author: Hugo Lefeuvre <hugo.lefeuvre@savoirfairelinux.com>
+ * Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "webchathelpers.h"
+
+QJsonObject
+buildInteractionJson(lrc::api::ConversationModel &conversationModel,
+ const uint64_t msgId,
+ const lrc::api::interaction::Info &inter)
+{
+
+ QRegExp reg(".(jpeg|jpg|gif|png)$");
+ auto interaction = inter;
+ if (interaction.type == lrc::api::interaction::Type::DATA_TRANSFER &&
+ interaction.body.toLower().contains(reg)) {
+ interaction.body = "file://" + interaction.body;
+ }
+
+ auto sender = interaction.authorUri;
+ auto timestamp = QString::number(interaction.timestamp);
+ auto direction = lrc::api::interaction::isOutgoing(interaction) ? QString("out")
+ : QString("in");
+
+ QJsonObject interactionObject = QJsonObject();
+ interactionObject.insert("text", QJsonValue(interaction.body));
+ interactionObject.insert("id", QJsonValue(QString::number(msgId)));
+ interactionObject.insert("sender", QJsonValue(sender));
+ interactionObject.insert("sender_contact_method", QJsonValue(sender));
+ interactionObject.insert("timestamp", QJsonValue(timestamp));
+ interactionObject.insert("direction", QJsonValue(direction));
+ interactionObject.insert("duration", QJsonValue(static_cast<int>(interaction.duration)));
+
+ switch (interaction.type) {
+ case lrc::api::interaction::Type::TEXT:
+ interactionObject.insert("type", QJsonValue("text"));
+ break;
+ case lrc::api::interaction::Type::CALL:
+ interactionObject.insert("type", QJsonValue("call"));
+ break;
+ case lrc::api::interaction::Type::CONTACT:
+ interactionObject.insert("type", QJsonValue("contact"));
+ break;
+ case lrc::api::interaction::Type::DATA_TRANSFER: {
+ interactionObject.insert("type", QJsonValue("data_transfer"));
+ lrc::api::datatransfer::Info info = {};
+ conversationModel.getTransferInfo(msgId, info);
+ if (info.status != lrc::api::datatransfer::Status::INVALID) {
+ interactionObject.insert("totalSize", QJsonValue(qint64(info.totalSize)));
+ interactionObject.insert("progress", QJsonValue(qint64(info.progress)));
+ }
+ break;
+ }
+ case lrc::api::interaction::Type::INVALID:
+ default:
+ return {};
+ }
+
+ if (interaction.isRead) {
+ interactionObject.insert("delivery_status", QJsonValue("read"));
+ }
+
+ switch (interaction.status) {
+ case lrc::api::interaction::Status::SUCCESS:
+ interactionObject.insert("delivery_status", QJsonValue("sent"));
+ break;
+ case lrc::api::interaction::Status::FAILURE:
+ case lrc::api::interaction::Status::TRANSFER_ERROR:
+ interactionObject.insert("delivery_status", QJsonValue("failure"));
+ break;
+ case lrc::api::interaction::Status::TRANSFER_UNJOINABLE_PEER:
+ interactionObject.insert("delivery_status", QJsonValue("unjoinable peer"));
+ break;
+ case lrc::api::interaction::Status::SENDING:
+ interactionObject.insert("delivery_status", QJsonValue("sending"));
+ break;
+ case lrc::api::interaction::Status::TRANSFER_CREATED:
+ interactionObject.insert("delivery_status", QJsonValue("connecting"));
+ break;
+ case lrc::api::interaction::Status::TRANSFER_ACCEPTED:
+ interactionObject.insert("delivery_status", QJsonValue("accepted"));
+ break;
+ case lrc::api::interaction::Status::TRANSFER_CANCELED:
+ interactionObject.insert("delivery_status", QJsonValue("canceled"));
+ break;
+ case lrc::api::interaction::Status::TRANSFER_ONGOING:
+ interactionObject.insert("delivery_status", QJsonValue("ongoing"));
+ break;
+ case lrc::api::interaction::Status::TRANSFER_AWAITING_PEER:
+ interactionObject.insert("delivery_status", QJsonValue("awaiting peer"));
+ break;
+ case lrc::api::interaction::Status::TRANSFER_AWAITING_HOST:
+ interactionObject.insert("delivery_status", QJsonValue("awaiting host"));
+ break;
+ case lrc::api::interaction::Status::TRANSFER_TIMEOUT_EXPIRED:
+ interactionObject.insert("delivery_status", QJsonValue("awaiting peer timeout"));
+ break;
+ case lrc::api::interaction::Status::TRANSFER_FINISHED:
+ interactionObject.insert("delivery_status", QJsonValue("finished"));
+ break;
+ case lrc::api::interaction::Status::INVALID:
+ case lrc::api::interaction::Status::UNKNOWN:
+ default:
+ interactionObject.insert("delivery_status", QJsonValue("unknown"));
+ break;
+ }
+ return interactionObject;
+}
+
+QString
+interactionToJsonInteractionObject(lrc::api::ConversationModel &conversationModel,
+ const uint64_t msgId,
+ const lrc::api::interaction::Info &interaction)
+{
+ auto interactionObject = buildInteractionJson(conversationModel, msgId, interaction);
+ return QString(QJsonDocument(interactionObject).toJson(QJsonDocument::Compact));
+}
+
+QString
+interactionsToJsonArrayObject(lrc::api::ConversationModel &conversationModel,
+ const std::map<uint64_t, lrc::api::interaction::Info> interactions)
+{
+ QJsonArray array;
+ for (const auto &interaction : interactions) {
+ auto interactionObject = buildInteractionJson(conversationModel,
+ interaction.first,
+ interaction.second);
+ if (!interactionObject.isEmpty()) {
+ array.append(interactionObject);
+ }
+ }
+ return QString(QJsonDocument(array).toJson(QJsonDocument::Compact));
+}
diff --git a/src/webchathelpers.h b/src/webchathelpers.h
new file mode 100644
index 0000000..f44dd62
--- /dev/null
+++ b/src/webchathelpers.h
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2017-2020 by Savoir-faire Linux
+ * Author: Alexandre Viau <alexandre.viau@savoirfairelinux.com>
+ * Author: Sébastien Blin <sebastien.blin@savoirfairelinux.com>
+ * Author: Hugo Lefeuvre <hugo.lefeuvre@savoirfairelinux.com>
+ * Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include <QFile>
+#include <QJsonArray>
+#include <QJsonDocument>
+#include <QJsonObject>
+
+#include "api/conversationmodel.h"
+
+QJsonObject buildInteractionJson(lrc::api::ConversationModel &conversationModel,
+ const uint64_t msgId,
+ const lrc::api::interaction::Info &interaction);
+QString interactionToJsonInteractionObject(lrc::api::ConversationModel &conversationModel,
+ const uint64_t msgId,
+ const lrc::api::interaction::Info &interaction);
+QString interactionsToJsonArrayObject(
+ lrc::api::ConversationModel &conversationModel,
+ const std::map<uint64_t, lrc::api::interaction::Info> interactions);
diff --git a/src/wizardview/WizardView.qml b/src/wizardview/WizardView.qml
new file mode 100644
index 0000000..0f3c29d
--- /dev/null
+++ b/src/wizardview/WizardView.qml
@@ -0,0 +1,736 @@
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+import QtQuick 2.14
+import QtQuick.Window 2.14
+import QtQuick.Controls 1.4 as CT
+import QtQuick.Controls 2.14
+import QtQuick.Controls.Universal 2.12
+import QtQuick.Layouts 1.3
+import QtGraphicalEffects 1.14
+import net.jami.Models 1.0
+
+import "../commoncomponents"
+import "../constant"
+import "components"
+
+Window {
+ id: wizardViewWindow
+
+ enum Mode {
+ CREATE,
+ IMPORT,
+ MIGRATE,
+ CREATESIP,
+ CONNECTMANAGER
+ }
+
+ enum NameRegistrationState {
+ BLANK,
+ INVALID,
+ TAKEN,
+ FREE,
+ SEARCHING
+ }
+
+ property int layoutWidth: 768
+ property int layoutHeight: 768
+ property int textFontSize: 9
+ property int wizardMode: WizardView.CREATE
+ property int addedAccountIndex: -1
+ property bool registrationStateOk: false
+ property string fileToImport: ""
+ property string registedName: ""
+
+ property var inputParaObject: ({})
+
+ /*
+ * signal to redirect the page to main view
+ */
+ signal needToShowMainViewWindow(int accountIndex)
+ signal wizardViewIsClosed
+
+ title: "Jami"
+ visible: true
+ width: layoutWidth
+ height: layoutHeight
+
+ onClosing: {
+ close.accepted = false
+ changePageQML(controlPanelStackView.welcomePageStackId)
+ wizardViewWindow.hide()
+ wizardViewWindow.wizardViewIsClosed()
+ }
+
+ Component.onCompleted: {
+ changePageQML(
+ controlPanelStackView.welcomePageStackId)
+ }
+
+ Connections{
+ target: ClientWrapper.accountAdaptor
+
+ function onAccountAdded(showBackUp, index) {
+ addedAccountIndex = index
+ if (showBackUp) {
+ changePageQML(controlPanelStackView.backupKeysPageId)
+ } else {
+ wizardViewWindow.hide()
+ changePageQML(controlPanelStackView.welcomePageStackId)
+ needToShowMainViewWindow(addedAccountIndex)
+ ClientWrapper.lrcInstance.accountListChanged()
+ }
+ }
+
+ // reportFailure
+ function onReportFailure() {
+ reportFailureQML()
+ }
+ }
+
+ Connections {
+ id: registeredNameFoundConnection
+ target: ClientWrapper.nameDirectory
+ enabled: false
+
+ function onRegisteredNameFound(status, address, name) {
+ slotRegisteredNameFound(status, address, name)
+ }
+ }
+
+ // failure redirect timer and qml object holder
+ Timer {
+ id: failureRedirectPageTimer
+
+ repeat: false
+ triggeredOnStart: false
+ interval: 1000
+
+ onTriggered: {
+ spinnerPage.successState = true
+ }
+ }
+
+ function reportFailureQML() {
+ spinnerPage.successState = false
+ failureRedirectPageTimer.restart()
+ }
+
+ function createAccountQML() {
+ switch (wizardMode) {
+ case WizardView.CONNECTMANAGER:
+ ClientWrapper.accountAdaptor.createJAMSAccount(inputParaObject)
+ break
+ case WizardView.CREATE:
+ case WizardView.IMPORT:
+ ClientWrapper.accountAdaptor.createJamiAccount(registedName,
+ inputParaObject,
+ createAccountPage.boothImgBase64,
+ (wizardMode === WizardView.CREATE))
+ break
+ default:
+ ClientWrapper.accountAdaptor.createSIPAccount(inputParaObject,createSIPAccountPage.boothImgBase64)
+ }
+
+ changePageQML(controlPanelStackView.spinnerPageId)
+ update()
+ }
+
+ function slotRegisteredNameFound(status, address, name) {
+ if (name.length < 3) {
+ registrationStateOk = false
+ createAccountPage.nameRegistrationUIState = WizardView.INVALID
+ } else if (registedName === name) {
+ switch (status) {
+ case NameDirectory.LookupStatus.NOT_FOUND:
+ case NameDirectory.LookupStatus.ERROR:
+ registrationStateOk = true
+ createAccountPage.nameRegistrationUIState = WizardView.FREE
+ break
+ case NameDirectory.LookupStatus.INVALID_NAME:
+ case NameDirectory.LookupStatus.INVALID:
+ registrationStateOk = false
+ createAccountPage.nameRegistrationUIState = WizardView.INVALID
+ break
+ case NameDirectory.LookupStatus.SUCCESS:
+ registrationStateOk = false
+ createAccountPage.nameRegistrationUIState = WizardView.TAKEN
+ break
+ }
+ }
+ validateWizardProgressionQML()
+ }
+
+ // function to set up nav bar visibility and the three buttons' visibiliy
+ function setNavBarVisibility(navVisible, back) {
+ navBarView.visible = (navVisible == true) || (back == true)
+ btnNext.visible = (navVisible == true)
+ btnPevious.visible = (navVisible == true)
+ btnBack.visible = (back == true)
+ && (ClientWrapper.utilsAdaptor.getAccountListSize() != 0)
+ }
+
+ function processWizardInformationsQML() {
+ inputParaObject = {}
+ switch (wizardMode) {
+ case WizardView.CREATE:
+ spinnerPage.progressLabelEditText = qsTr(
+ "Generating your Jami account...")
+ inputParaObject["alias"] = createAccountPage.text_fullNameEditAlias
+
+ inputParaObject["password"] = createAccountPage.text_confirmPasswordEditAlias
+
+ createAccountPage.clearAllTextFields()
+ break
+ case WizardView.IMPORT:
+ registedName = ""
+ spinnerPage.progressLabelEditText = qsTr(
+ "Importing account archive...")
+ // should only work in import from backup page or import from device page
+ if (controlPanelStackView.currentIndex
+ == controlPanelStackView.importFromBackupPageId) {
+ inputParaObject["password"]
+ = importFromBackupPage.text_passwordFromDeviceAlias
+ importFromBackupPage.clearAllTextFields()
+ } else if (controlPanelStackView.currentIndex
+ == controlPanelStackView.importFromDevicePageId) {
+ inputParaObject["archivePin"] = importFromBackupPage.text_pinFromDeviceAlias
+ inputParaObject["password"]
+ = importFromDevicePage.text_passwordFromDeviceAlias
+ importFromDevicePage.clearAllTextFields()
+ }
+ break
+ case WizardView.MIGRATE:
+ spinnerPage.progressLabelEditText = qsTr(
+ "Migrating your Jami account...")
+ break
+ case WizardView.CREATESIP:
+ spinnerPage.progressLabelEditText = qsTr(
+ "Generating your SIP account...")
+ if (createSIPAccountPage.text_sipFullNameEditAlias.length == 0) {
+ inputParaObject["alias"] = "SIP"
+ } else {
+ inputParaObject["alias"] = createSIPAccountPage.text_sipFullNameEditAlias
+ }
+
+ inputParaObject["hostname"] = createSIPAccountPage.text_sipServernameEditAlias
+ inputParaObject["username"] = createSIPAccountPage.text_sipUsernameEditAlias
+ inputParaObject["password"] = createSIPAccountPage.text_sipPasswordEditAlias
+ inputParaObject["proxy"] = createSIPAccountPage.text_sipProxyEditAlias
+
+ break
+ case WizardView.CONNECTMANAGER:
+ spinnerPage.progressLabelEditText = qsTr(
+ "Connecting to account manager...")
+ inputParaObject["username"]
+ = connectToAccountManagerPage.text_usernameManagerEditAlias
+ inputParaObject["password"]
+ = connectToAccountManagerPage.text_passwordManagerEditAlias
+ inputParaObject["manager"]
+ = connectToAccountManagerPage.text_accountManagerEditAlias
+ connectToAccountManagerPage.clearAllTextFields()
+ break
+ }
+
+ inputParaObject["archivePath"] = fileToImport
+
+ if (!("archivePin" in inputParaObject)) {
+ inputParaObject["archivePath"] = ""
+ }
+
+ // change page to spinner page
+ changePageQML(controlPanelStackView.spinnerPageId)
+ //create account
+ createAccountQML()
+ ClientWrapper.utilsAdaptor.createStartupLink()
+ }
+
+ function changePageQML(pageIndex) {
+ if (pageIndex == controlPanelStackView.spinnerPageId) {
+ setNavBarVisibility(false)
+ }
+ controlPanelStackView.currentIndex = pageIndex
+ if (pageIndex == controlPanelStackView.welcomePageStackId) {
+ fileToImport = ""
+ setNavBarVisibility(false, true)
+ createAccountPage.nameRegistrationUIState = WizardView.BLANK
+ } else if (pageIndex == controlPanelStackView.createAccountPageId) {
+ createAccountPage.initializeOnShowUp()
+ setNavBarVisibility(true)
+ // connection between register name found and its slot
+ registeredNameFoundConnection.enabled = true
+ // validate wizard progression
+ validateWizardProgressionQML()
+ // start photobooth
+ createAccountPage.startBooth()
+ } else if (pageIndex == controlPanelStackView.createSIPAccountPageId) {
+ createSIPAccountPage.initializeOnShowUp()
+ setNavBarVisibility(true)
+ btnNext.enabled = true
+ // start photo booth
+ createSIPAccountPage.startBooth()
+ } else if (pageIndex == controlPanelStackView.importFromDevicePageId) {
+ importFromDevicePage.initializeOnShowUp()
+ setNavBarVisibility(true)
+ } else if (pageIndex == controlPanelStackView.spinnerPageId) {
+ createAccountPage.nameRegistrationUIState = WizardView.BLANK
+ createAccountPage.isToSetPassword_checkState_choosePasswordCheckBox = false
+ } else if (pageIndex == controlPanelStackView.connectToAccountManagerPageId) {
+ setNavBarVisibility(true)
+ connectToAccountManagerPage.initializeOnShowUp()
+ btnNext.enabled = false
+ } else if (pageIndex == controlPanelStackView.importFromBackupPageId) {
+ setNavBarVisibility(true)
+ importFromBackupPage.clearAllTextFields()
+ fileToImport = ""
+ btnNext.enabled = false
+ } else if (pageIndex == controlPanelStackView.backupKeysPageId) {
+ setNavBarVisibility(false)
+ }
+ }
+
+ function validateWizardProgressionQML() {
+ if (controlPanelStackView.currentIndex
+ == controlPanelStackView.importFromDevicePageId) {
+ var validPin = !(importFromDevicePage.text_pinFromDeviceAlias.length == 0)
+ btnNext.enabled = validPin
+ return
+ } else if (controlPanelStackView.currentIndex
+ == controlPanelStackView.connectToAccountManagerPageId) {
+ var validUsername = !(connectToAccountManagerPage.text_usernameManagerEditAlias.length == 0)
+ var validPassword = !(connectToAccountManagerPage.text_passwordManagerEditAlias.length == 0)
+ var validManager = !(connectToAccountManagerPage.text_accountManagerEditAlias.length == 0)
+ btnNext.enabled = validUsername && validPassword
+ && validManager
+ return
+ } else if (controlPanelStackView.currentIndex
+ == controlPanelStackView.importFromBackupPageId) {
+ var validImport = !(fileToImport.length == 0)
+ btnNext.enabled = validImport
+ return
+ }
+
+ var usernameOk = !createAccountPage.checkState_signUpCheckboxAlias
+ || (createAccountPage.checkState_signUpCheckboxAlias
+ && !(registedName.length == 0)
+ && (registedName == createAccountPage.text_usernameEditAlias)
+ && (registrationStateOk == true))
+ var passwordOk = (createAccountPage.text_passwordEditAlias
+ == createAccountPage.text_confirmPasswordEditAlias)
+
+ // set password status label
+ if (passwordOk
+ && !(createAccountPage.text_passwordEditAlias.length == 0)) {
+ createAccountPage.displayState_passwordStatusLabelAlias = "Success"
+ } else if (!passwordOk) {
+ createAccountPage.displayState_passwordStatusLabelAlias = "Fail"
+ } else {
+ createAccountPage.displayState_passwordStatusLabelAlias = "Hide"
+ }
+ //set enable state of next button
+ btnNext.enabled = (usernameOk && passwordOk)
+ }
+
+ PasswordDialog {
+ id: passwordDialog
+
+ anchors.centerIn: parent.Center
+ x: (parent.width - width) / 2
+ y: (parent.height - height) / 2
+
+ visible: false
+ purpose: PasswordDialog.ExportAccount
+
+ onDoneSignal: {
+ if (currentPurpose === passwordDialog.ExportAccount) {
+ var success = (code === successCode)
+
+ var title = success ? qsTr("Success") : qsTr("Error")
+ var info = success ? qsTr("Export Successful") : qsTr(
+ "Export Failed")
+
+ ClientWrapper.accountAdaptor.passwordSetStatusMessageBox(success,
+ title, info)
+ if (success) {
+ console.log("Account Export Succeed")
+ wizardViewWindow.hide()
+ needToShowMainViewWindow(addedAccountIndex)
+ ClientWrapper.lrcInstance.accountListChanged()
+ }
+ }
+ }
+ }
+
+ MouseArea {
+ anchors.fill: parent
+ onClicked: forceActiveFocus()
+ }
+
+ // main frame rectangle
+ ScrollView {
+ id: wizardViewRect
+ anchors.fill: parent
+
+ clip: true
+
+ ColumnLayout {
+ id: content
+ width: wizardViewWindow.width // ensure correct width
+ height: wizardViewWindow.height // ensure correct height
+
+ Layout.alignment: Qt.AlignHCenter
+ RowLayout {
+ Layout.alignment: Qt.AlignHCenter
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+
+ StackLayout {
+ id: controlPanelStackView
+ currentIndex: welcomePageStackId
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+
+ property int welcomePageStackId: 0
+ property int createAccountPageId: 1
+ property int createSIPAccountPageId: 2
+ property int importFromBackupPageId: 3
+ property int backupKeysPageId: 4
+ property int importFromDevicePageId: 5
+ property int connectToAccountManagerPageId: 6
+ property int spinnerPageId: 7
+
+ WelcomePageLayout {
+ // welcome page, index 0
+ id: welcomePage
+
+ onWelcomePageRedirectPage: {
+ changePageQML(toPageIndex)
+ }
+
+ onVisibleChanged: {
+ if (visible)
+ setNavBarVisibility(false,
+ true)
+ }
+
+ Component.onCompleted: {
+ setNavBarVisibility(false, true)
+ }
+ }
+
+ CreateAccountPage {
+ // create account page, index 1
+ id: createAccountPage
+
+ onText_usernameEditAliasChanged: {
+ registrationStateOk = false
+ if (createAccountPage.checkState_signUpCheckboxAlias
+ && (createAccountPage.text_usernameEditAlias.length != 0)) {
+ registedName = ClientWrapper.utilsAdaptor.stringSimplifier(
+ createAccountPage.text_usernameEditAlias)
+ lookupTimer.restart()
+ } else {
+ createAccountPage.nameRegistrationUIState = WizardView.BLANK
+ lookupTimer.stop()
+ if (createAccountPage.text_usernameEditAlias.length == 0) {
+ lookupTimer.restart()
+ }
+ }
+ validateWizardProgressionQML()
+ }
+
+ onValidateWizardProgressionCreateAccountPage: {
+ validateWizardProgressionQML()
+ }
+
+ onText_passwordEditAliasChanged: {
+ validateWizardProgressionQML()
+ }
+
+ onText_confirmPasswordEditAliasChanged: {
+ validateWizardProgressionQML()
+ }
+
+ Timer {
+ id: lookupTimer
+
+ repeat: false
+ triggeredOnStart: false
+ interval: 200
+
+ onTriggered: {
+ if (createAccountPage.checkState_signUpCheckboxAlias
+ && (createAccountPage.text_usernameEditAlias.length != 0)) {
+ createAccountPage.nameRegistrationUIState = WizardView.SEARCHING
+ ClientWrapper.nameDirectory.lookupName("", registedName)
+ }
+ }
+ }
+ }
+
+ CreateSIPAccountPage {
+ // create SIP account page, index 2
+ id: createSIPAccountPage
+ }
+
+ ImportFromBackupPage {
+ // import from backup page, index 3
+ id: importFromBackupPage
+
+ onText_passwordFromBackupEditAliasChanged: {
+ validateWizardProgressionQML()
+ }
+
+ onImportFromFile_Dialog_Accepted: {
+ fileToImport = ClientWrapper.utilsAdaptor.toNativeSeparators(fileDir)
+ inputParaObject[""]
+
+ if (fileToImport.length != 0) {
+ importFromBackupPage.fileImportBtnText = ClientWrapper.utilsAdaptor.toFileInfoName(
+ fileToImport)
+ } else {
+ importFromBackupPage.fileImportBtnText = qsTr(
+ "Archive(none)")
+ }
+ validateWizardProgressionQML()
+ }
+ }
+
+ BackupKeyPage {
+ // backup keys page, index 4
+ id: backupKeysPage
+
+ onNeverShowAgainBoxClicked: {
+ ClientWrapper.accountAdaptor.settingsNeverShowAgain(isChecked)
+ }
+
+ onExport_Btn_FileDialogAccepted: {
+ if (accepted) {
+ // is there password? If so, go to password dialog, else, go to following directly
+ if (ClientWrapper.accountAdaptor.hasPassword()) {
+ passwordDialog.path = ClientWrapper.utilsAdaptor.getAbsPath(folderDir)
+ passwordDialog.open()
+ return
+ } else {
+ if (folderDir.length > 0) {
+ ClientWrapper.accountAdaptor.exportToFile(
+ ClientWrapper.utilsAdaptor.getCurrAccId(),
+ ClientWrapper.utilsAdaptor.getAbsPath(folderDir))
+ }
+ }
+ }
+
+ wizardViewWindow.hide()
+ changePageQML(controlPanelStackView.welcomePageStackId)
+ needToShowMainViewWindow(addedAccountIndex)
+ ClientWrapper.lrcInstance.accountListChanged()
+ }
+
+
+ onSkip_Btn_Clicked: {
+ wizardViewWindow.hide()
+ changePageQML(controlPanelStackView.welcomePageStackId)
+ needToShowMainViewWindow(addedAccountIndex)
+ ClientWrapper.lrcInstance.accountListChanged()
+ }
+ }
+
+ ImportFromDevicePage {
+ // import from device page, index 5
+ id: importFromDevicePage
+
+ onText_pinFromDeviceAliasChanged: {
+ validateWizardProgressionQML()
+ }
+
+ onText_passwordFromDeviceAliasChanged: {
+ validateWizardProgressionQML()
+ }
+ }
+
+ ConnectToAccountManagerPage {
+ // connect to account manager Page, index 6
+ id: connectToAccountManagerPage
+
+ onText_usernameManagerEditAliasChanged: {
+ validateWizardProgressionQML()
+ }
+
+ onText_passwordManagerEditAliasChanged: {
+ validateWizardProgressionQML()
+ }
+
+ onText_accountManagerEditAliasChanged: {
+ validateWizardProgressionQML()
+ }
+ }
+
+ SpinnerPage {
+ // spinner Page, index 7
+ id: spinnerPage
+ }
+ }
+ }
+
+ RowLayout {
+ id: navBarView
+
+ Layout.alignment: Qt.AlignHCenter | Qt.AlignBottom
+ Layout.fillWidth: true
+
+ Layout.maximumHeight: 52
+ Layout.preferredHeight: 52
+
+ HoverableGradientButton {
+ id: btnPevious
+ Layout.alignment: Qt.AlignLeft
+ width: 85
+ height: 30
+ radius: height / 2
+
+ Layout.leftMargin: 11
+
+ Layout.preferredWidth: 85
+ Layout.preferredHeight: 30
+ text: qsTr("Previous")
+ font.pointSize: 10
+ font.kerning: true
+
+ onClicked: {
+ // stop photobooth previewing
+ if(controlPanelStackView.currentIndex == controlPanelStackView.createAccountPageId) {
+ createAccountPage.stopBooth()
+ }
+ if(controlPanelStackView.currentIndex == controlPanelStackView.createSIPAccountPageId) {
+ createSIPAccountPage.stopBooth()
+ }
+
+ // Disconnect registered name found Connection
+ registeredNameFoundConnection.enabled = false
+ // deal with look up status label and collapsible password widget
+ createAccountPage.nameRegistrationUIState = WizardView.BLANK
+ createAccountPage.isToSetPassword_checkState_choosePasswordCheckBox = false
+ // switch to welcome page
+ if (controlPanelStackView.currentIndex
+ == controlPanelStackView.createAccountPageId
+ || controlPanelStackView.currentIndex
+ == controlPanelStackView.createSIPAccountPageId
+ || controlPanelStackView.currentIndex
+ == controlPanelStackView.importFromBackupPageId
+ || controlPanelStackView.currentIndex
+ == controlPanelStackView.importFromDevicePageId
+ || controlPanelStackView.currentIndex
+ == controlPanelStackView.connectToAccountManagerPageId) {
+ changePageQML(
+ controlPanelStackView.welcomePageStackId)
+ }
+ }
+ }
+
+ Item {
+ Layout.alignment: Qt.AlignHCenter
+ Layout.fillHeight: true
+ Layout.minimumWidth: 40
+ Layout.fillWidth: true
+ }
+
+ HoverableGradientButton {
+ id: btnBack
+ Layout.alignment: Qt.AlignLeft
+ width: 85
+ height: 30
+ radius: height / 2
+
+ Layout.preferredWidth: 85
+ Layout.preferredHeight: 30
+ text: qsTr("Back")
+ font.pointSize: 10
+ font.kerning: true
+
+ onClicked: {
+ wizardViewWindow.hide()
+ needToShowMainViewWindow(addedAccountIndex)
+ }
+ }
+
+ Item {
+ Layout.alignment: Qt.AlignHCenter
+ Layout.fillHeight: true
+ Layout.minimumWidth: 40
+ Layout.fillWidth: true
+ }
+
+ HoverableGradientButton {
+ id: btnNext
+ Layout.alignment: Qt.AlignRight
+ width: 85
+ height: 30
+ radius: height / 2
+
+ Layout.rightMargin: 11
+
+ Layout.minimumWidth: 85
+ Layout.preferredWidth: 85
+ Layout.maximumWidth: 85
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ text: qsTr("Next")
+ font.pointSize: 10
+ font.kerning: true
+
+ onClicked: {
+ // stop photobooth previewing
+ if(controlPanelStackView.currentIndex == controlPanelStackView.createAccountPageId) {
+ createAccountPage.stopBooth()
+ }
+ if(controlPanelStackView.currentIndex == controlPanelStackView.createSIPAccountPageId) {
+ createSIPAccountPage.stopBooth()
+ }
+
+ registeredNameFoundConnection.enabled = false
+
+ if (controlPanelStackView.currentIndex
+ == controlPanelStackView.createAccountPageId) {
+ wizardMode = WizardView.CREATE
+ processWizardInformationsQML()
+ } else if (controlPanelStackView.currentIndex
+ == controlPanelStackView.importFromDevicePageId) {
+ wizardMode = WizardView.IMPORT
+ processWizardInformationsQML()
+ } else if (controlPanelStackView.currentIndex
+ == controlPanelStackView.createSIPAccountPageId) {
+ wizardMode = WizardView.CREATESIP
+ processWizardInformationsQML()
+ } else if (controlPanelStackView.currentIndex
+ == controlPanelStackView.connectToAccountManagerPageId) {
+ wizardMode = WizardView.CONNECTMANAGER
+ processWizardInformationsQML()
+ } else if (controlPanelStackView.currentIndex
+ == controlPanelStackView.importFromBackupPageId) {
+ wizardMode = WizardView.IMPORT
+ processWizardInformationsQML()
+ }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/src/wizardview/components/BackupKeyPage.qml b/src/wizardview/components/BackupKeyPage.qml
new file mode 100644
index 0000000..59ec3ef
--- /dev/null
+++ b/src/wizardview/components/BackupKeyPage.qml
@@ -0,0 +1,200 @@
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+import QtQuick 2.14
+import QtQuick.Layouts 1.3
+import QtQuick.Controls 2.14
+import Qt.labs.platform 1.1
+
+import "../../constant"
+import "../../commoncomponents"
+
+ColumnLayout {
+ signal neverShowAgainBoxClicked(bool isChecked)
+ signal skip_Btn_Clicked
+ signal export_Btn_FileDialogAccepted(bool accepted, string folderDir)
+
+ /*
+ * JamiFileDialog for exporting account
+ */
+ JamiFileDialog {
+ id: exportBtn_Dialog
+
+ mode: JamiFileDialog.SaveFile
+
+ title: qsTr("Export Account Here")
+ folder: StandardPaths.writableLocation(StandardPaths.HomeLocation) + "/Desktop"
+
+ nameFilters: [qsTr("Jami archive files") + " (*.gz)", qsTr(
+ "All files") + " (*)"]
+
+ onAccepted: {
+ export_Btn_FileDialogAccepted(true, file)
+ }
+
+ onRejected: {
+ export_Btn_FileDialogAccepted(false, folder)
+ }
+
+ onVisibleChanged: {
+ if (!visible) {
+ rejected()
+ }
+ }
+ }
+
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+
+ Item {
+ Layout.alignment: Qt.AlignHCenter
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ }
+
+ /*
+ * Main layout for BackupKeyPage which consists of the buttons and "never show again" check box
+ */
+ ColumnLayout {
+ Layout.alignment: Qt.AlignCenter
+ Layout.maximumWidth: 366
+
+ spacing: 12
+
+ Label {
+ id: backupKeysLabel
+ Layout.alignment: Qt.AlignHCenter
+
+ Layout.maximumWidth: 366
+ Layout.maximumHeight: 21
+ Layout.preferredWidth: 366
+ Layout.preferredHeight: 21
+
+ text: qsTr("Backup your account")
+ font.pointSize: 13
+ font.kerning: true
+ }
+ Label {
+ id: backupInfoLabel1
+ Layout.maximumWidth: 366
+ Layout.maximumHeight: 57
+ Layout.preferredWidth: 366
+ Layout.preferredHeight: 57
+
+ text: qsTr("This account only exists on this device. If you lost your device or uninstall the application,your account will be deleted. You can backup your account now or later.")
+ wrapMode: Text.WordWrap
+ horizontalAlignment: Text.AlignJustify
+ verticalAlignment: Text.AlignVCenter
+ }
+ CheckBox {
+ id: neverShowAgainBox
+ checked: false
+
+ Layout.maximumWidth: 366
+ Layout.maximumHeight: 19
+ Layout.preferredWidth: 366
+ Layout.preferredHeight: 19
+
+ indicator.implicitWidth: 10
+ indicator.implicitHeight:10
+
+ text: qsTr("Never show me this again")
+ font.pointSize: 8
+
+ onClicked: {
+ neverShowAgainBoxClicked(checked)
+ }
+ }
+ RowLayout {
+ Layout.fillWidth: true
+ Layout.maximumHeight: 20
+
+ Item {
+ Layout.alignment: Qt.AlignVCenter
+ Layout.fillHeight: true
+ Layout.maximumWidth: 40
+ Layout.minimumWidth: 10
+ }
+
+ HoverableGradientButton {
+ id: exportBtn
+
+ Layout.alignment: Qt.AlignVCenter
+ Layout.minimumWidth: 85
+ Layout.preferredWidth: 85
+ Layout.maximumWidth: 85
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ text: qsTr("Export")
+ font.kerning: true
+ fontPointSize: 10
+ radius: height / 2
+ backgroundColor: JamiTheme.releaseColor
+
+ onClicked: {
+ exportBtn_Dialog.open()
+ }
+ }
+
+ Item {
+ Layout.alignment: Qt.AlignVCenter
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ }
+
+ HoverableGradientButton {
+ id: skipBtn
+
+ Layout.alignment: Qt.AlignVCenter
+ Layout.minimumWidth: 85
+ Layout.preferredWidth: 85
+ Layout.maximumWidth: 85
+
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.maximumHeight: 30
+
+ text: qsTr("Skip")
+ fontPointSize: 10
+ font.kerning: true
+ radius: height / 2
+ backgroundColor: JamiTheme.releaseColor
+
+ onClicked: {
+ skip_Btn_Clicked()
+ }
+ }
+
+ Item {
+ Layout.alignment: Qt.AlignVCenter
+ Layout.fillHeight: true
+ Layout.maximumWidth: 40
+ Layout.minimumWidth: 10
+ }
+ }
+ }
+
+ Item {
+ Layout.alignment: Qt.AlignHCenter
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ }
+}
diff --git a/src/wizardview/components/CollapsiblePasswordWidget.qml b/src/wizardview/components/CollapsiblePasswordWidget.qml
new file mode 100644
index 0000000..82af6e2
--- /dev/null
+++ b/src/wizardview/components/CollapsiblePasswordWidget.qml
@@ -0,0 +1,156 @@
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+import QtQuick 2.14
+import QtQuick.Layouts 1.3
+import QtQuick.Controls 2.14
+
+import "../../constant"
+import "../../commoncomponents"
+
+/*
+ * an independent widget that keeps the password's textfields, including password field and confirm password field
+ */
+
+GridLayout {
+ id: root
+
+ property alias text_passwordEditAlias: passwordEdit.text
+ property alias text_confirmPasswordEditAlias: confirmPasswordEdit.text
+ property alias state_passwordStatusLabelAlias: passwordStatusLabel.passwordStatusState
+
+ property bool visibleCollapsble: false
+
+ function clearAllTextFields() {
+ passwordEdit.clear()
+ confirmPasswordEdit.clear()
+ }
+
+ visible: visibleCollapsble
+ Layout.fillWidth: true
+ rowSpacing: 6
+ columnSpacing: 6
+
+ rows: 2
+ columns: 2
+
+ Layout.leftMargin: 32
+
+ InfoLineEdit {
+ id: passwordEdit
+
+ visible: visibleCollapsble
+
+ Layout.row: 0
+ Layout.column: 0
+
+ fieldLayoutWidth: 261
+
+ Layout.alignment: Qt.AlignHCenter
+
+ selectByMouse: true
+ echoMode: TextInput.Password
+ placeholderText: qsTr("Password")
+ font.pointSize: 10
+ font.kerning: true
+ }
+
+ Item {
+ Layout.row: 0
+ Layout.column: 1
+
+ Layout.maximumWidth: 32
+ Layout.preferredWidth: 32
+ Layout.minimumWidth: 32
+
+ Layout.maximumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.minimumHeight: 30
+ }
+
+ InfoLineEdit {
+ id: confirmPasswordEdit
+
+ visible: visibleCollapsble
+
+ Layout.row: 1
+ Layout.column: 0
+
+ fieldLayoutWidth: 261
+
+ Layout.alignment: Qt.AlignHCenter
+
+ selectByMouse: true
+ echoMode: TextInput.Password
+ placeholderText: qsTr("Confirm Password")
+ font.pointSize: 10
+ font.kerning: true
+ }
+
+ Label {
+ id: passwordStatusLabel
+
+ visible: visibleCollapsble
+
+ Layout.row: 1
+ Layout.column: 1
+
+ Layout.maximumWidth: 32
+ Layout.preferredWidth: 32
+ Layout.minimumWidth: 32
+
+ Layout.maximumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.minimumHeight: 30
+
+ Layout.alignment: Qt.AlignRight
+
+ property string passwordStatusState: "Hide"
+
+ background: {
+ switch (passwordStatusState) {
+ case "Hide":
+ return Qt.createQmlObject("import QtQuick 2.14;
+import \"qrc:/src/constant/\";
+Rectangle {
+anchors.fill: parent;
+color: \"transparent\"; }", passwordStatusLabel)
+ case "Fail":
+ return Qt.createQmlObject("import QtQuick 2.14;
+import \"qrc:/src/constant/\";
+Rectangle {
+anchors.fill: parent;
+Image{
+anchors.fill: parent;
+source: \"image://tintedPixmap/\"+ (\"qrc:/images/icons/baseline-close-24px.svg\").replace(\"qrc:/images/icons/\",\"\") + \"+\" + JamiTheme.red_;
+mipmap: true;}
+}", passwordStatusLabel)
+ case "Success":
+ return Qt.createQmlObject("import QtQuick 2.14;
+import \"qrc:/src/constant/\";
+Rectangle {
+anchors.fill: parent;
+Image {
+anchors.fill: parent;
+source: \"image://tintedPixmap/\"+ (\"qrc:/images/icons/baseline-done-24px.svg\").replace(\"qrc:/images/icons/\",\"\") + \"+\" + JamiTheme.presenceGreen_;
+mipmap: true;}
+}", passwordStatusLabel)
+ }
+ }
+ }
+}
diff --git a/src/wizardview/components/ConnectToAccountManagerPage.qml b/src/wizardview/components/ConnectToAccountManagerPage.qml
new file mode 100644
index 0000000..c41dcef
--- /dev/null
+++ b/src/wizardview/components/ConnectToAccountManagerPage.qml
@@ -0,0 +1,102 @@
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+import QtQuick 2.14
+import QtQuick.Layouts 1.3
+import QtQuick.Controls 2.14
+
+import "../../constant"
+import "../../commoncomponents"
+
+ColumnLayout {
+ property alias text_usernameManagerEditAlias: usernameManagerEdit.text
+ property alias text_passwordManagerEditAlias: passwordManagerEdit.text
+ property alias text_accountManagerEditAlias: accountManagerEdit.text
+
+ function initializeOnShowUp() {
+ clearAllTextFields()
+ }
+
+ function clearAllTextFields() {
+ usernameManagerEdit.clear()
+ passwordManagerEdit.clear()
+ accountManagerEdit.clear()
+ }
+
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+
+ Item {
+ Layout.alignment: Qt.AlignHCenter
+ Layout.preferredHeight: 40
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ }
+
+ ColumnLayout {
+ Layout.alignment: Qt.AlignCenter
+ Layout.fillWidth: true
+
+ spacing: 12
+
+ Label {
+ id: signInLabel
+
+ Layout.alignment: Qt.AlignHCenter
+ Layout.minimumWidth: 256
+ Layout.preferredHeight: 21
+ text: qsTr("Sign in")
+ font.pointSize: 13
+ font.kerning: true
+ }
+
+ InfoLineEdit {
+ id: usernameManagerEdit
+
+ Layout.alignment: Qt.AlignHCenter
+
+ selectByMouse: true
+ placeholderText: qsTr("Username")
+ }
+
+ InfoLineEdit {
+ id: passwordManagerEdit
+
+ Layout.alignment: Qt.AlignHCenter
+ selectByMouse: true
+ echoMode: TextInput.Password
+ placeholderText: qsTr("Password")
+ }
+
+ InfoLineEdit {
+ id: accountManagerEdit
+
+ Layout.alignment: Qt.AlignHCenter
+
+ selectByMouse: true
+ placeholderText: qsTr("Account Manager")
+ }
+ }
+
+ Item {
+ Layout.alignment: Qt.AlignHCenter
+ Layout.preferredHeight: 40
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ }
+}
diff --git a/src/wizardview/components/CreateAccountPage.qml b/src/wizardview/components/CreateAccountPage.qml
new file mode 100644
index 0000000..f59b2c6
--- /dev/null
+++ b/src/wizardview/components/CreateAccountPage.qml
@@ -0,0 +1,325 @@
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+import QtQuick 2.14
+import QtQuick.Layouts 1.3
+import QtQuick.Controls 2.14
+
+import "../"
+import "../../constant"
+import "../../commoncomponents"
+
+ColumnLayout {
+ property alias text_fullNameEditAlias: fullNameEdit.text
+ property alias text_usernameEditAlias: usernameEdit.text
+
+ property int nameRegistrationUIState: WizardView.BLANK
+
+ property alias checkState_signUpCheckboxAlias: signUpCheckbox.checked
+ property alias isToSetPassword_checkState_choosePasswordCheckBox: choosePasswordCheckBox.checked
+
+ // photo booth alias
+ property alias boothImgBase64: setAvatarWidget.imgBase64
+
+ // collapse password widget property aliases
+ property alias text_passwordEditAlias: collapsiblePasswordWidget.text_passwordEditAlias
+ property alias text_confirmPasswordEditAlias: collapsiblePasswordWidget.text_confirmPasswordEditAlias
+ property alias displayState_passwordStatusLabelAlias: collapsiblePasswordWidget.state_passwordStatusLabelAlias
+
+ signal validateWizardProgressionCreateAccountPage
+
+ function initializeOnShowUp() {
+ clearAllTextFields()
+
+ signUpCheckbox.checked = true
+ choosePasswordCheckBox.checked = false
+ usernameEdit.enabled = true
+ fullNameEdit.enabled = true
+ }
+
+ function clearAllTextFields() {
+ usernameEdit.clear()
+ fullNameEdit.clear()
+
+ collapsiblePasswordWidget.clearAllTextFields()
+ }
+
+ function setCollapsiblePasswordWidgetVisibility(visible) {
+ choosePasswordCheckBox.checked = visible
+ if (visible) {
+ choosePasswordCheckBox.visible = true
+ }
+ }
+
+ function startBooth(){
+ setAvatarWidget.startBooth()
+ }
+
+ function stopBooth(){
+ setAvatarWidget.stopBooth()
+ }
+
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+
+ spacing: 6
+
+ Item {
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ }
+
+ ColumnLayout {
+ Layout.alignment: Qt.AlignHCenter
+
+ spacing: 5
+
+ ColumnLayout {
+ Layout.fillWidth: true
+ spacing: 6
+
+ Layout.alignment: Qt.AlignHCenter
+
+ Label {
+ id: profileSectionLabel
+
+
+ Layout.alignment: Qt.AlignHCenter
+
+ text: qsTr("Profile")
+ font.pointSize: 13
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ PhotoboothView{
+ id: setAvatarWidget
+
+ Layout.alignment: Qt.AlignHCenter
+
+ Layout.maximumWidth: 261
+ Layout.preferredWidth: 261
+ Layout.minimumWidth: 261
+ Layout.maximumHeight: 261
+ Layout.preferredHeight: 261
+ Layout.minimumHeight: 261
+ }
+
+ RowLayout {
+ spacing: 6
+ Layout.alignment: Qt.AlignHCenter
+ Layout.maximumHeight: 30
+
+ Item {
+ Layout.fillWidth: true
+ Layout.maximumHeight: 10
+ }
+
+ InfoLineEdit {
+ id: fullNameEdit
+
+ fieldLayoutWidth: 261
+
+ Layout.alignment: Qt.AlignCenter
+
+ selectByMouse: true
+ placeholderText: qsTr("Profile name")
+ font.pointSize: 10
+ font.kerning: true
+ }
+
+ Item {
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ }
+ }
+ }
+ }
+
+ Item {
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ }
+
+ ColumnLayout {
+ Layout.alignment: Qt.AlignHCenter
+
+ spacing: 5
+ Label {
+ id: accountSectionLabel
+ Layout.alignment: Qt.AlignHCenter
+
+ Layout.maximumWidth: 261
+ Layout.preferredWidth: 261
+ Layout.minimumWidth: 261
+ Layout.maximumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.minimumHeight: 30
+
+ text: qsTr("Account")
+ font.pointSize: 13
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ ColumnLayout {
+ Layout.fillWidth: true
+ spacing: 6
+
+ CheckBox {
+ id: signUpCheckbox
+ checked: true
+
+ indicator.width: 10
+ indicator.height: 10
+
+ Layout.leftMargin: 32
+
+ Layout.minimumWidth: 261
+
+ Layout.maximumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.minimumHeight: 25
+
+ Layout.alignment: Qt.AlignLeft
+
+ text: qsTr("Register public username")
+ font.pointSize: 10
+ font.kerning: true
+
+ indicator.implicitWidth: 20
+ indicator.implicitHeight:20
+
+ onClicked: {
+ if (!checked) {
+ usernameEdit.clear()
+ }
+
+ validateWizardProgressionCreateAccountPage()
+ }
+ }
+ }
+
+ RowLayout {
+ spacing: 6
+ Layout.fillWidth: true
+
+ Layout.leftMargin: 32
+
+ InfoLineEdit {
+ id: usernameEdit
+
+ fieldLayoutWidth: 261
+
+ Layout.alignment: Qt.AlignHCenter
+
+ selectByMouse: true
+ placeholderText: qsTr("Choose your username")
+ font.pointSize: 10
+ font.kerning: true
+
+ enabled: signUpCheckbox.visible && signUpCheckbox.checked
+ }
+
+ LookupStatusLabel{
+ id: lookupStatusLabel
+
+ visible: true
+
+ lookupStatusState: {
+ switch (nameRegistrationUIState) {
+ case WizardView.BLANK:
+ return "Blank"
+ case WizardView.INVALID:
+ return "Invalid"
+ case WizardView.TAKEN:
+ return "Taken"
+ case WizardView.FREE:
+ return "Free"
+ case WizardView.SEARCHING:
+ return "Searching"
+ default:
+ return "Blank"
+ }
+ }
+ }
+ }
+
+ ColumnLayout {
+ Layout.fillWidth: true
+ spacing: 6
+
+ CheckBox {
+ id: choosePasswordCheckBox
+ checked: false
+
+ indicator.width: 10
+ indicator.height: 10
+
+ Layout.leftMargin: 32
+
+ Layout.minimumWidth: 261
+
+ Layout.preferredHeight: 30
+ Layout.minimumHeight: 25
+
+ indicator.implicitWidth: 20
+ indicator.implicitHeight:20
+
+ Layout.alignment: Qt.AlignLeft
+
+ text: qsTr("Choose a password for enhanced security")
+ font.pointSize: 8
+ font.kerning: true
+
+ onClicked: {
+ if (!checked) {
+ collapsiblePasswordWidget.clearAllTextFields()
+ }
+
+ validateWizardProgressionCreateAccountPage()
+ }
+ }
+
+ CollapsiblePasswordWidget {
+ id: collapsiblePasswordWidget
+
+ Layout.alignment: Qt.AlignHCenter
+
+ visibleCollapsble: choosePasswordCheckBox.checked
+ && choosePasswordCheckBox.visible
+ }
+ }
+
+ Item {
+ Layout.maximumWidth: 261
+ Layout.preferredWidth: 261
+ Layout.minimumWidth: 261
+
+ Layout.maximumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.minimumHeight: 30
+
+ Layout.alignment: Qt.AlignHCenter
+ }
+ }
+}
diff --git a/src/wizardview/components/CreateSIPAccountPage.qml b/src/wizardview/components/CreateSIPAccountPage.qml
new file mode 100644
index 0000000..3f3da17
--- /dev/null
+++ b/src/wizardview/components/CreateSIPAccountPage.qml
@@ -0,0 +1,202 @@
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+import QtQuick 2.14
+import QtQuick.Layouts 1.3
+import QtQuick.Controls 2.14
+
+import "../../constant"
+import "../../commoncomponents"
+
+ColumnLayout {
+ property alias text_sipFullNameEditAlias: sipFullNameEdit.text
+ property alias text_sipServernameEditAlias: sipServernameEdit.text
+ property alias text_sipProxyEditAlias: sipProxyEdit.text
+ property alias text_sipUsernameEditAlias: sipUsernameEdit.text
+ property alias text_sipPasswordEditAlias: sipPasswordEdit.text
+
+ property alias boothImgBase64: setSIPAvatarWidget.imgBase64
+
+ function initializeOnShowUp() {
+ clearAllTextFields()
+ }
+
+ function clearAllTextFields() {
+ sipUsernameEdit.clear()
+ sipPasswordEdit.clear()
+ sipServernameEdit.clear()
+ sipProxyEdit.clear()
+ sipFullNameEdit.clear()
+ sipUsernameEdit.clear()
+ }
+
+ function startBooth(){
+ setSIPAvatarWidget.startBooth()
+ }
+
+ function stopBooth(){
+ setSIPAvatarWidget.stopBooth()
+ }
+
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+
+ spacing: 6
+
+ Item {
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ }
+
+ Label {
+ id: sipProfileSectionLabel
+
+ Layout.maximumWidth: 368
+ Layout.preferredWidth: 368
+ Layout.maximumHeight: 21
+ Layout.preferredHeight: 21
+
+ Layout.alignment: Qt.AlignHCenter
+
+ text: qsTr("Profile")
+ font.pointSize: 13
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ PhotoboothView{
+ id: setSIPAvatarWidget
+
+ Layout.alignment: Qt.AlignHCenter
+
+ Layout.maximumWidth: 261
+ Layout.preferredWidth: 261
+ Layout.minimumWidth: 261
+ Layout.maximumHeight: 261
+ Layout.preferredHeight: 261
+ Layout.minimumHeight: 261
+ }
+
+ RowLayout {
+ spacing: 0
+ Layout.alignment: Qt.AlignHCenter
+ Layout.maximumHeight: 30
+
+ Item {
+ Layout.fillWidth: true
+ Layout.maximumHeight: 10
+ }
+
+ InfoLineEdit {
+ id: sipFullNameEdit
+
+ fieldLayoutWidth : 261
+ Layout.alignment: Qt.AlignCenter
+ selectByMouse: true
+ placeholderText: qsTr("Profile name")
+ font.pointSize: 10
+ font.kerning: true
+ }
+
+ Item {
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ }
+ }
+ Item {
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ }
+
+ Label {
+ id: sipAccountSectionLabel
+ Layout.maximumWidth: 368
+ Layout.preferredWidth: 368
+ Layout.maximumHeight: 21
+ Layout.preferredHeight: 21
+
+ Layout.alignment: Qt.AlignHCenter
+
+ text: qsTr("SIP Account")
+ font.pointSize: 12
+ font.kerning: true
+
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ ColumnLayout {
+ Layout.alignment: Qt.AlignHCenter
+ spacing: 7
+
+ Item {
+ Layout.fillWidth: true
+ Layout.alignment: Qt.AlignHCenter
+ Layout.maximumHeight: 40
+ Layout.minimumHeight: 30
+ Layout.preferredHeight: 40
+ }
+
+ InfoLineEdit {
+ id: sipServernameEdit
+ Layout.alignment: Qt.AlignHCenter
+ fieldLayoutWidth: 261
+
+ selectByMouse: true
+ placeholderText: qsTr("Server")
+ font.pointSize: 10
+ font.kerning: true
+ }
+
+ InfoLineEdit {
+ id: sipProxyEdit
+ Layout.alignment: Qt.AlignHCenter
+ fieldLayoutWidth: 261
+
+ selectByMouse: true
+ placeholderText: qsTr("Proxy")
+ font.pointSize: 10
+ font.kerning: true
+ }
+
+ InfoLineEdit {
+ id: sipUsernameEdit
+ Layout.alignment: Qt.AlignHCenter
+ fieldLayoutWidth: 261
+
+ selectByMouse: true
+ placeholderText: qsTr("Username")
+ font.pointSize: 10
+ font.kerning: true
+ }
+
+ InfoLineEdit {
+ id: sipPasswordEdit
+ Layout.alignment: Qt.AlignHCenter
+ fieldLayoutWidth: 261
+
+ selectByMouse: true
+ echoMode: TextInput.Password
+ placeholderText: qsTr("Password")
+ font.pointSize: 10
+ font.kerning: true
+ }
+ }
+}
diff --git a/src/wizardview/components/HoverableGradientButton.qml b/src/wizardview/components/HoverableGradientButton.qml
new file mode 100644
index 0000000..905bd41
--- /dev/null
+++ b/src/wizardview/components/HoverableGradientButton.qml
@@ -0,0 +1,142 @@
+
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+import QtQuick 2.15
+import QtQuick.Controls 2.14
+import QtGraphicalEffects 1.15
+import net.jami.Models 1.0
+
+
+/*
+ * HoverableButton contains the following configurable properties:
+ * 1. Color changes on different button state
+ * 2. Radius control (rounded)
+ * 3. Text content or image content
+ * 4. Can use OnClicked slot to implement some click logic
+ */
+Button {
+ id: hoverableButton
+ property int fontPointSize: 9
+ property string backgroundColor: JamiTheme.releaseColor
+ property string backgroundColorDisabled : Qt.rgba(242/256, 242/256, 242/256, 0.8)
+
+ property string startColor :"#109ede"
+ property string endColor : "#2b5084"
+
+ property string startColorPressed :"#043161"
+ property string endColorPressed : "#00113f"
+
+ property string startColorHovered :"#2b4b7e"
+ property string endColorHovered : "#001d4d"
+
+ property string onPressColor: JamiTheme.pressColor
+ property string onReleaseColor: backgroundColor
+ property string onEnterColor: JamiTheme.hoverColor
+ property string onExitColor: backgroundColor
+ property string textColor: "white"
+
+ property alias radius: hoverableButtonBackground.radius
+
+ property bool isHovering: false
+ property bool isBeingPressed: false
+
+ radius: height / 2
+ font.pointSize: fontPointSize
+ font.kerning: true
+ hoverEnabled: true
+
+ contentItem: Text {
+ text: hoverableButton.text
+ font: hoverableButton.font
+ opacity: enabled ? 1.0 : 0.3
+ color: enabled? textColor : "grey"
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ elide: Text.ElideRight
+ }
+
+ background: Rectangle {
+ id: hoverableButtonBackground
+ color: backgroundColor
+
+ MouseArea {
+ id: btnMouseArea
+ anchors.fill: hoverableButtonBackground
+ hoverEnabled: true
+ onPressed: {
+ hoverableButtonBackground.color = onPressColor
+ isBeingPressed = true
+ }
+ onReleased: {
+ hoverableButtonBackground.color = onReleaseColor
+ isBeingPressed = false
+ hoverableButton.clicked()
+ }
+ onEntered: {
+ hoverableButtonBackground.color = onEnterColor
+ isHovering = true
+ }
+ onExited: {
+ hoverableButtonBackground.color = onExitColor
+ isHovering = false
+ }
+ }
+ }
+
+ LinearGradient {
+ id: backgroundGradient
+
+ source: hoverableButtonBackground
+ anchors.fill: hoverableButtonBackground
+ start: Qt.point(0, 0)
+ end: Qt.point(width, 0)
+ gradient: Gradient {
+ GradientStop { position: 0.0; color: {
+ if(!hoverableButton.enabled){
+ return backgroundColorDisabled
+ }
+
+ if(isBeingPressed){
+ return startColorPressed
+ } else {
+ if(isHovering){
+ return startColorHovered
+ } else {
+ return startColor
+ }
+ }
+ } }
+
+ GradientStop { position: 1.0; color: {
+ if(!hoverableButton.enabled){
+ return backgroundColorDisabled
+ }
+
+ if(isBeingPressed){
+ return endColorPressed
+ } else {
+ if(isHovering){
+ return endColorHovered
+ } else {
+ return endColor
+ }
+ }
+ } }
+ }
+ }
+}
diff --git a/src/wizardview/components/ImportFromBackupPage.qml b/src/wizardview/components/ImportFromBackupPage.qml
new file mode 100644
index 0000000..bd7d26e
--- /dev/null
+++ b/src/wizardview/components/ImportFromBackupPage.qml
@@ -0,0 +1,176 @@
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+import QtQuick 2.14
+import QtQuick.Layouts 1.3
+import QtQuick.Controls 2.14
+import Qt.labs.platform 1.1
+
+import "../../constant"
+import "../../commoncomponents"
+
+ColumnLayout {
+ property alias text_passwordFromBackupEditAlias: passwordFromBackupEdit.text
+ property string fileImportBtnText: qsTr("Archive(none)")
+
+ signal importFromFile_Dialog_Accepted(string fileDir)
+
+ function clearAllTextFields() {
+ passwordFromBackupEdit.clear()
+ fileImportBtnText = qsTr("Archive(none)")
+ }
+
+ JamiFileDialog {
+ id: importFromFile_Dialog
+
+ mode: JamiFileDialog.OpenFile
+ title: qsTr("Open File")
+ folder: StandardPaths.writableLocation(StandardPaths.HomeLocation) + "/Desktop"
+
+ nameFilters: [qsTr("Jami archive files") + " (*.gz)", qsTr(
+ "All files") + " (*)"]
+
+ onAccepted: {
+ importFromFile_Dialog_Accepted(file)
+ }
+ }
+
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+
+ Item {
+ Layout.alignment: Qt.AlignHCenter
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ }
+
+ ColumnLayout {
+ Layout.alignment: Qt.AlignCenter
+ Layout.maximumWidth: 366
+
+ spacing: 12
+
+ RowLayout {
+ Layout.fillWidth: true
+ Layout.maximumHeight: 24
+ spacing: 0
+
+ Item {
+ Layout.alignment: Qt.AlignVCenter
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ }
+
+ Label {
+ id: importFromBackupLabel
+ Layout.minimumHeight: 24
+ Layout.minimumWidth: 234
+ text: qsTr("Import from backup")
+ font.pointSize: 13
+ font.kerning: true
+ horizontalAlignment: Qt.AlignLeft
+ verticalAlignment: Qt.AlignVCenter
+ }
+
+ HoverableRadiusButton {
+ id: backupInfoBtn
+
+ buttonImageHeight: height
+ buttonImageWidth: width
+
+ Layout.alignment: Qt.AlignVCenter
+ Layout.minimumWidth: 24
+ Layout.preferredWidth: 24
+ Layout.maximumWidth: 24
+
+ Layout.minimumHeight: 24
+ Layout.preferredHeight: 24
+ Layout.maximumHeight: 24
+
+ radius: height / 2
+ icon.source: "/images/icons/info-24px.svg"
+ icon.height: 24
+ icon.width: 24
+
+ backgroundColor: JamiTheme.releaseColor
+ onClicked: {
+ backupInfoLabel.visible = !backupInfoLabel.visible
+ }
+ }
+ Item {
+ Layout.alignment: Qt.AlignVCenter
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ }
+ }
+
+ HoverableGradientButton {
+ id: fileImportBtn
+
+ Layout.alignment: Qt.AlignHCenter
+ Layout.maximumWidth: 256
+ Layout.preferredWidth: 256
+
+ Layout.maximumHeight: 30
+ Layout.preferredHeight: 30
+ Layout.minimumHeight: 30
+
+ text: fileImportBtnText
+ font.pointSize: 10
+ font.kerning: true
+
+ radius: height / 2
+ backgroundColor: JamiTheme.releaseColor
+
+ onClicked: {
+ importFromFile_Dialog.open()
+ }
+ }
+
+ InfoLineEdit {
+ id: passwordFromBackupEdit
+
+ Layout.alignment: Qt.AlignHCenter
+
+ selectByMouse: true
+ echoMode: TextInput.Password
+ placeholderText: qsTr("Password")
+ }
+
+ Label {
+ id: backupInfoLabel
+
+ Layout.alignment: Qt.AlignHCenter
+ Layout.maximumWidth: 366
+ Layout.preferredWidth: 366
+
+ text: qsTr("You can obtain an archive by clicking on \"Export account\" in the account settings. This will create a .gz file on your device.")
+ wrapMode: Text.WordWrap
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+
+ visible: false
+ }
+ }
+
+ Item {
+ Layout.alignment: Qt.AlignHCenter
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ }
+}
diff --git a/src/wizardview/components/ImportFromDevicePage.qml b/src/wizardview/components/ImportFromDevicePage.qml
new file mode 100644
index 0000000..5181635
--- /dev/null
+++ b/src/wizardview/components/ImportFromDevicePage.qml
@@ -0,0 +1,142 @@
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+import QtQuick 2.14
+import QtQuick.Layouts 1.3
+import QtQuick.Controls 2.14
+
+import "../../constant"
+import "../../commoncomponents"
+
+ColumnLayout {
+ property alias text_pinFromDeviceAlias: pinFromDevice.text
+ property alias text_passwordFromDeviceAlias: passwordFromDevice.text
+
+ function initializeOnShowUp() {
+ clearAllTextFields()
+ }
+
+ function clearAllTextFields() {
+ pinFromDevice.clear()
+ passwordFromDevice.clear()
+ }
+
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+
+ Item {
+ Layout.alignment: Qt.AlignHCenter
+ Layout.preferredHeight: 40
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ }
+
+ ColumnLayout {
+ Layout.alignment: Qt.AlignCenter
+ Layout.fillWidth: true
+
+ spacing: 12
+
+ RowLayout {
+ Layout.fillWidth: true
+ Layout.maximumHeight: 24
+ spacing: 0
+
+ Item {
+ Layout.alignment: Qt.AlignVCenter
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ }
+
+ Label {
+ id: importFromDeviceLabel
+ Layout.minimumHeight: 24
+ Layout.minimumWidth: 234
+ text: qsTr("Import from device")
+ font.pointSize: 13
+ font.kerning: true
+ }
+
+ HoverableRadiusButton {
+ id: pinInfoBtn
+
+ buttonImageHeight: height
+ buttonImageWidth: width
+
+ Layout.alignment: Qt.AlignVCenter
+ Layout.minimumWidth: 24
+ Layout.maximumWidth: 24
+ Layout.minimumHeight: 24
+ Layout.maximumHeight: 24
+
+ radius: height / 2
+ icon.source: "/images/icons/info-24px.svg"
+ backgroundColor: JamiTheme.releaseColor
+
+ onClicked: {
+ pinInfoLabel.visible = !pinInfoLabel.visible
+ }
+ }
+ Item {
+ Layout.alignment: Qt.AlignVCenter
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ }
+ }
+ InfoLineEdit {
+ id: pinFromDevice
+
+ Layout.alignment: Qt.AlignHCenter
+
+ selectByMouse: true
+ placeholderText: qsTr("PIN")
+ }
+
+ InfoLineEdit {
+ id: passwordFromDevice
+
+ Layout.alignment: Qt.AlignHCenter
+
+ selectByMouse: true
+ echoMode: TextInput.Password
+ placeholderText: qsTr("Password")
+ }
+
+ Label {
+ id: pinInfoLabel
+
+ Layout.alignment: Qt.AlignHCenter
+ Layout.minimumWidth: 256
+ Layout.maximumWidth: 256
+
+ text: qsTr("To obtain a PIN (valid for 10 minutes), you need to open the account settings on the other device and click on \"Link to another device\".")
+ wrapMode: Text.WordWrap
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+
+ visible: false
+ }
+ }
+
+ Item {
+ Layout.alignment: Qt.AlignHCenter
+ Layout.preferredHeight: 40
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ }
+}
diff --git a/src/wizardview/components/SpinnerPage.qml b/src/wizardview/components/SpinnerPage.qml
new file mode 100644
index 0000000..2fb3f8d
--- /dev/null
+++ b/src/wizardview/components/SpinnerPage.qml
@@ -0,0 +1,110 @@
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+import QtQuick 2.14
+import QtQuick.Layouts 1.3
+import QtQuick.Controls 2.14
+
+import "../../constant"
+
+ColumnLayout {
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ spacing: 6
+
+ property bool successState: true
+ property string progressLabelEditText: "Generating your Jami account"
+
+ Item {
+ Layout.alignment: Qt.AlignHCenter
+ Layout.preferredHeight: 40
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ }
+ Label {
+ id: spinnerLabel
+ Layout.alignment: Qt.AlignHCenter
+ Layout.minimumWidth: 200
+ Layout.minimumHeight: 200
+
+ Layout.maximumWidth: 16777215
+ Layout.maximumHeight: 16777215
+
+ property string spinnerDisplyState: successState ? "spinnerLabel_Regular" : "spinnerLabel_Failure"
+ onSpinnerDisplyStateChanged: {
+ switch (spinnerDisplyState) {
+ case "spinnerLabel_Regular":
+ background = Qt.createQmlObject("import QtQuick 2.14;
+AnimatedImage {
+source: \"qrc:/images/jami_eclipse_spinner.gif\"
+
+playing: true
+paused: false
+fillMode: Image.PreserveAspectFit
+mipmap: true
+}", spinnerLabel)
+ break
+ case "spinnerLabel_Failure":
+ background = Qt.createQmlObject("import QtQuick 2.14;
+import \"qrc:/src/constant/\";
+Image {
+anchors.fill: parent;
+source:\"image://tintedPixmap/\" + (\"qrc:/images/icons/baseline-error_outline-24px.svg\").replace(\"qrc:/images/icons/\", \"\") + \"+\" + JamiTheme.urgentOrange_;
+mipmap: true;}", spinnerLabel)
+ break
+ }
+ }
+ }
+ Item {
+ Layout.alignment: Qt.AlignHCenter
+ Layout.preferredHeight: 40
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ }
+ Label {
+ id: progressLabel
+ Layout.alignment: Qt.AlignHCenter
+ text: successState ? progressLabelEditText : "Error creating account"
+ font.pointSize: 11
+ font.kerning: true
+
+ property string progressLabelState: successState ? "color_success" : "color_fail"
+ onProgressLabelStateChanged: {
+ switch (progressLabelState) {
+ case "color_success":
+ background = Qt.createQmlObject(
+ "import QtQuick 2.14; Rectangle { anchors.fill: parent; color: \"transparent\"; }",
+ progressLabel)
+ break
+ case "color_fail":
+ background = Qt.createQmlObject(
+ "import QtQuick 2.14; Rectangle { anchors.fill: parent; color: \"red\"; }",
+ progressLabel)
+ break
+ }
+ }
+ }
+ Item {
+ Layout.alignment: Qt.AlignHCenter
+ Layout.minimumHeight: 20
+ Layout.maximumHeight: 20
+ Layout.preferredHeight: 20
+ Layout.fillWidth: true
+ Layout.fillHeight: false
+ }
+}
diff --git a/src/wizardview/components/WelcomePageLayout.qml b/src/wizardview/components/WelcomePageLayout.qml
new file mode 100644
index 0000000..3c7190b
--- /dev/null
+++ b/src/wizardview/components/WelcomePageLayout.qml
@@ -0,0 +1,238 @@
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+import QtQuick 2.14
+import QtQuick.Layouts 1.3
+import QtQuick.Controls 2.14
+
+import "../../constant"
+import "../../commoncomponents"
+
+ColumnLayout {
+ property alias connectAccountManagerButtonAlias: connectAccountManagerButton
+ property alias newSIPAccountButtonAlias: newSIPAccountButton
+
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ spacing: 6
+
+ signal welcomePageRedirectPage(int toPageIndex)
+
+ Item {
+ // put a spacer to make the buttons closs to the middle
+ Layout.minimumHeight: 57
+ Layout.maximumHeight: 57
+ Layout.preferredHeight: 57
+ Layout.fillWidth: true
+ }
+ RowLayout {
+ Layout.fillWidth: true
+ Layout.alignment: Qt.AlignHCenter
+ Label {
+ id: welcomeLabel
+ Layout.maximumHeight: 40
+ Layout.alignment: Qt.AlignCenter
+ text: qsTr("Welcome to")
+ font.pointSize: 30
+ font.kerning: true
+ }
+ }
+ Item {
+ Layout.minimumHeight: 17
+ Layout.maximumHeight: 17
+ Layout.preferredHeight: 17
+ Layout.fillWidth: true
+ }
+
+ RowLayout {
+ Layout.fillWidth: true
+ Layout.alignment: Qt.AlignHCenter
+ Label {
+ id: welcomeLogo
+ Layout.alignment: Qt.AlignCenter
+ Layout.minimumWidth: 100
+ Layout.minimumHeight: 100
+ Layout.maximumWidth: 16777215
+ Layout.maximumHeight: 16777215
+ Layout.preferredWidth: 300
+ Layout.preferredHeight: 150
+ color: "transparent"
+ background: Image {
+ id: logoIMG
+ source: "qrc:/images/logo-jami-standard-coul.png"
+ fillMode: Image.PreserveAspectFit
+ mipmap: true
+ }
+ }
+ }
+ Item {
+ // put a spacer to make the buttons closs to the middle
+ Layout.preferredHeight: 57
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ }
+ RowLayout {
+ spacing: 6
+ Layout.fillWidth: true
+ Layout.maximumHeight: 30
+ Layout.alignment: Qt.AlignHCenter
+ HoverableGradientButton {
+ id: newAccountButton
+
+ Layout.alignment: Qt.AlignCenter
+ Layout.preferredWidth: 256
+ Layout.preferredHeight: 30
+ text: qsTr("Create local account")
+ font.pointSize: 10
+ font.kerning: true
+ radius: height / 2
+
+ onClicked: {
+ welcomePageRedirectPage(1)
+ }
+ }
+ }
+ RowLayout {
+ spacing: 6
+ Layout.fillWidth: true
+
+ Layout.maximumHeight: 30
+ Layout.alignment: Qt.AlignHCenter
+ HoverableGradientButton {
+ id: fromDeviceButton
+ Layout.alignment: Qt.AlignCenter
+ Layout.preferredWidth: 256
+ Layout.preferredHeight: 30
+ text: qsTr("Import from device")
+ font.pointSize: 10
+ font.kerning: true
+
+ backgroundColor: JamiTheme.releaseColor
+ radius: height / 2
+
+ onClicked: {
+ welcomePageRedirectPage(5)
+ }
+ }
+ }
+ RowLayout {
+ spacing: 6
+ Layout.fillWidth: true
+
+ Layout.maximumHeight: 30
+ Layout.alignment: Qt.AlignHCenter
+ HoverableGradientButton {
+ id: fromBackupButton
+ Layout.alignment: Qt.AlignCenter
+ Layout.preferredWidth: 256
+ Layout.preferredHeight: 30
+ text: qsTr("Import from backup")
+ font.pointSize: 10
+ font.kerning: true
+
+ backgroundColor: JamiTheme.releaseColor
+ radius: height / 2
+
+ onClicked: {
+ welcomePageRedirectPage(3)
+ }
+ }
+ }
+ RowLayout {
+ spacing: 6
+ Layout.fillWidth: true
+
+ Layout.maximumHeight: 30
+ Layout.alignment: Qt.AlignHCenter
+ Button {
+ id: showAdvancedButton
+ Layout.preferredWidth: 256
+ Layout.preferredHeight: 30
+ Layout.alignment: Qt.AlignCenter
+ text: qsTr("Show Advanced")
+ font.pointSize: 8
+ font.kerning: true
+
+ background: Rectangle{
+ anchors.fill: parent
+
+ color: "transparent"
+ radius: height /2
+ }
+
+ onClicked: {
+ connectAccountManagerButton.visible = !connectAccountManagerButton.visible
+ newSIPAccountButton.visible = !newSIPAccountButton.visible
+ }
+ }
+ }
+ RowLayout {
+ spacing: 6
+ Layout.fillWidth: true
+ Layout.alignment: Qt.AlignHCenter
+
+ Layout.maximumHeight: 30
+ HoverableGradientButton {
+ id: connectAccountManagerButton
+ Layout.preferredWidth: 256
+ Layout.preferredHeight: 30
+ Layout.alignment: Qt.AlignCenter
+ text: qsTr("Connect to account manager")
+ visible: false
+ font.pointSize: 10
+ font.kerning: true
+
+ backgroundColor: JamiTheme.releaseColor
+ radius: height / 2
+
+ onClicked: {
+ welcomePageRedirectPage(6)
+ }
+ }
+ }
+ RowLayout {
+ spacing: 6
+ Layout.fillWidth: true
+ Layout.alignment: Qt.AlignHCenter
+ Layout.maximumHeight: 30
+
+ HoverableGradientButton {
+ id: newSIPAccountButton
+ Layout.preferredWidth: 256
+ Layout.preferredHeight: 30
+ Layout.alignment: Qt.AlignCenter
+ text: qsTr("Add a new SIP account")
+ visible: false
+ font.pointSize: 10
+ font.kerning: true
+
+ radius: height / 2
+ backgroundColor: JamiTheme.releaseColor
+
+ onClicked: {
+ welcomePageRedirectPage(2)
+ }
+ }
+ }
+ Item {
+ // put a spacer to make the buttons closs to the middle
+ Layout.fillHeight: true
+ Layout.preferredHeight: 65
+ Layout.fillWidth: true
+ }
+}
diff --git a/stylesheet.css b/stylesheet.css
new file mode 100644
index 0000000..c4f8198
--- /dev/null
+++ b/stylesheet.css
@@ -0,0 +1,963 @@
+QToolTip {
+ color: white;
+ background-color: #109ede;
+ border: 1px solid white;
+}
+
+QPushButton {
+ background-color: rgb(242, 242, 242);
+ border-style: solid;
+ border-width: 0px;
+ border-radius: 15px;
+ color: rgb(32, 32, 32);
+}
+
+QPushButton#pinInfoBtn, QPushButton#backupInfoBtn {
+ background: transparent;
+}
+
+QPushButton#takePhotoButton, QPushButton#importButton {
+ background-color: rgb(242, 242, 242);
+ border-radius: 5px;
+ border:solid 0px;
+}
+
+QPushButton#acceptButton{
+ background-color: #4caf50;
+ border-radius: 28px;
+ border:solid 1px;
+}
+
+QPushButton#refuseButton, QPushButton#cancelButton{
+ background-color: #f44336;
+ border-radius: 28px;
+ border:solid 1px;
+}
+
+QPushButton#acceptButton:hover{
+ background-color: #5db761;
+}
+
+QPushButton#acceptButton:pressed{
+ background-color: #449d48;
+}
+
+QPushButton#refuseButton:hover, QPushButton#cancelButton:hover{
+ background-color: #f5554a;
+}
+
+QPushButton#refuseButton:pressed, QPushButton#cancelButton:pressed{
+ background-color: #db3c30;
+}
+
+QWidget#smartListOuterWidget {
+ background-color: rgb(255, 255, 255);
+}
+
+QWidget#previewContainer {
+ background-color: black;
+}
+
+QPushButton#btnConversations, QPushButton#btnInvites {
+ border-radius: 0px;
+ border-top-left-radius: 15px;
+ border-top-right-radius: 15px;
+ color: rgb(32, 32, 32);
+ height: 28px;
+ padding: 0px;
+ background-color: rgb(240, 240, 240);
+ border-top: 2px solid rgb(240, 240, 240);
+ border-right: 2px solid rgb(240, 240, 240);
+ border-bottom: 2px solid rgb(240, 240, 240);
+ border-left: 2px solid rgb(240, 240, 240);
+}
+
+QPushButton#btnConversations:hover, QPushButton#btnInvites:hover {
+ background-color: rgb(188, 185, 184);
+ border-top: 2px solid rgb(188, 185, 184);
+ border-right: 2px solid rgb(188, 185, 184);
+ border-bottom: 2px solid rgb(188, 185, 184);
+ border-left: 2px solid rgb(188, 185, 184);
+}
+
+QPushButton#btnConversations:checked, QPushButton#btnInvites:checked {
+ background-color: rgb(255, 255, 255);
+ border-bottom: 2px solid rgb(255, 255, 255);
+}
+
+QPushButton#btnConversations:hover:checked, QPushButton#btnInvites:hover:checked {
+ border-top: 2px solid rgb(240, 240, 240);
+ border-right: 2px solid rgb(240, 240, 240);
+ border-bottom: 2px solid rgb(255, 255, 255);
+ border-left: 2px solid rgb(240, 240, 240);
+}
+
+QPushButton#imBackButton, QPushButton#btnAcceptInvite, QPushButton#btnIgnoreInvite,
+QPushButton#btnBlockInvite, QPushButton#btnAudioCall, QPushButton#btnVideoCall,
+QPushButton#sendContactRequestButton, QPushButton#sendButton, QPushButton#sendIMButton,
+QPushButton#btnExitSettings {
+ background-color: transparent;
+ border-style: solid;
+ border-width: 0px;
+ border-radius: 15px;
+ padding: 8px;
+ color: rgb(32, 32, 32);
+}
+
+QPushButton#btnAcceptInvite:hover, QPushButton#btnIgnoreInvite:hover, QPushButton#btnBlockInvite:hover {
+ background-color: rgb(212, 212, 212);
+}
+
+QPushButton#btnAcceptInvite:pressed, QPushButton#btnIgnoreInvite:pressed, QPushButton#btnBlockInvite:pressed {
+ background-color: rgb(187, 187, 187);
+}
+
+ QPushButton#imBackButton:hover, QPushButton#btnAudioCall:hover, QPushButton#btnVideoCall:hover,
+ QPushButton#sendContactRequestButton:hover, QPushButton#sendButton:hover, QPushButton#sendIMButton:hover,
+ QPushButton#btnExitSettings:hover, QPushButton#btnDeleteAccept:hover, QPushButton#btnDeleteCancel:hover,
+ QPushButton#changelogButton:hover, QPushButton#creditsButton:hover, QPushButton#changelogButton:hover, QPushButton#updateCancelBtn:hover,
+ QPushButton#updateAcceptBtn:hover, QPushButton#installBetaButton:hover, QPushButton#closeAboutDialogButton:hover {
+ background-color: rgb(237, 237, 237);
+ }
+
+ QPushButton#imBackButton:pressed, QPushButton#btnAudioCall:pressed, QPushButton#btnVideoCall:pressed,
+ QPushButton#sendContactRequestButton:pressed, QPushButton#sendButton:pressed, QPushButton#sendIMButton:pressed,
+ QPushButton#btnExitSettings:pressed, QPushButton#btnDeleteAccept:pressed, QPushButton#btnDeleteCancel:pressed,
+ QPushButton#changelogButton:pressed, QPushButton#creditsButton:pressed, QPushButton#changelogButton:pressed, QPushButton#updateCancelBtn:pressed,
+ QPushButton#updateAcceptBtn:pressed, QPushButton#installBetaButton:pressed, QPushButton#closeAboutDialogButton:pressed {
+ background-color: rgb(212, 212, 212);
+ }
+
+QWidget#searchBarLayoutWidget, QWidget#smartList,
+QWidget#sidePanelLayoutWidget, QWidget#leftSettingsWidget {
+ border-right: 2px solid rgb(240, 240, 240);
+}
+
+RingContactLineEdit{
+ border-radius: 15px;
+ border: 2px solid rgb(240, 240, 240);
+ background-color: rgb(240, 240, 240);
+}
+
+RingContactLineEdit:focus{
+ border: 2px solid rgb(240, 240, 240);
+ background-color: rgb(255, 255, 255);
+}
+
+.QLineEdit{
+ border-color: rgb(240, 240, 240);
+ border-radius: 15px;
+ border-width: 2px;
+ background-color: rgb(240, 240, 240);
+ padding-left: 4px;
+ padding-right: 4px;
+ height: 30px;
+}
+
+QScrollBar:vertical {
+ border: none;
+ background: white;
+ width: 0px;
+}
+
+QScrollBar::handle:vertical {
+ background: white;
+ max-width: 0px;
+}
+
+QScrollBar:horizontal {
+ border: 2px solid grey;
+ background: grey;
+ height: 10px;
+}
+
+QScrollBar::handle:horizontal {
+ background: white;
+ min-width: 20px;
+ border-radius: 10px;
+}
+
+QScrollBar::add-line:horizontal {
+ height: 0px;
+}
+
+QScrollBar::sub-line:horizontal {
+ height: 0px;
+}
+
+QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal {
+ height: 0px;
+}
+
+SmartListView {
+ background-color: white;
+ border: none;
+}
+
+SmartListView::item:selected, QListView#BannedList::item:selected {
+ background-color: rgba(220, 220, 220, 255);
+ border: none;
+}
+
+SmartListView::item:hover, QListView#BannedList::item:hover {
+ background-color: rgba(242, 242, 242, 255);
+}
+
+QWidget#messagingHeaderWidget {
+ background-color: rgba(255, 255, 255, 255);
+ border-bottom: 2px solid rgb(240, 240, 240);
+}
+
+QWidget#messageViewLayoutWidget, QWidget#welcomePage {
+ background-color: rgba(255, 255, 255, 255);
+}
+
+QWidget#newWizardWidgetScrollAreaContents, QWidget#settingsWidgetScrollAreaContents {
+ background-color: rgba(255, 255, 255, 255);
+ border: none;
+}
+
+QScrollArea#newWizardWidgetScrollArea, QScrollArea#settingsWidgetScrollArea {
+ border: none;
+}
+
+QPushButton#holdButton, QPushButton#chatButton, QPushButton#noMicButton, QPushButton#noVideoButton, QPushButton#hangupButton,
+QPushButton#transferButton, QPushButton#addPersonButton, QPushButton#joinButton,
+QPushButton#qualityButton, QPushButton#recButton, QPushButton#transferCallButton,
+QPushButton#sipInputPanelButton, QPushButton#addToConferenceButton {
+ background-color: transparent;
+ border-radius: 18px;
+ border: solid 1px;
+}
+
+ QPushButton#holdButton:hover, QPushButton#chatButton:hover, QPushButton#noMicButton:hover, QPushButton#hangupButton:hover,
+ QPushButton#noVideoButton:hover, QPushButton#transferButton:hover, QPushButton#addPersonButton:hover,
+ QPushButton#joinButton:hover, QPushButton#qualityButton:hover, QPushButton#addToContactButton:hover,
+ QPushButton#recButton:hover, QPushButton#transferCallButton:hover,
+ QPushButton#sipInputPanelButton:hover, QPushButton#addToConferenceButton:hover {
+ background-color: transparent;
+ border-radius: 18px;
+ border: solid 1px;
+ }
+
+ QPushButton#holdButton:pressed, QPushButton#chatButton:pressed, QPushButton#noMicButton:pressed, QPushButton#hangupButton:pressed,
+ QPushButton#noVideoButton:pressed, QPushButton#transferButton:pressed, QPushButton#addPersonButton:pressed,
+ QPushButton#joinButton:pressed, QPushButton#qualityButton:pressed, QPushButton#addToContactButton:pressed,
+ QPushButton#recButton:pressed, QPushButton#addToConferenceButton:pressed {
+ background-color: transparent;
+ border-radius: 18px;
+ border: solid 1px;
+ }
+
+ QPushButton#holdButton:checked, QPushButton#noMicButton:checked, QPushButton#hangupButton:checked,
+ QPushButton#noVideoButton:checked, QPushButton#recButton:checked,
+ QPushButton#chatButton:checked, QPushButton#transferCallButton:checked,
+ QPushButton#sipInputPanelButton:checked, QPushButton#addToConferenceButton:checked {
+ background-color: transparent;
+ border-radius: 18px;
+ border: solid 1px;
+ }
+
+QPushButton#updateCancelButton {
+ padding: 4px;
+ background: #369;
+ color: white;
+ font-size: 12px;
+ border: 0;
+ border-radius: 3px;
+ outline: 0px;
+ width: 50px;
+}
+
+QPushButton#updateCancelButton:hover {
+ background: #47a;
+}
+
+QPushButton#updateCancelButton:pressed {
+ background: #58b;
+}
+
+QMessageBox QPushButton {
+ padding: 4px;
+ background: #369;
+ color: white;
+ font-size: 12px;
+ border: 0;
+ border-radius: 3px;
+ outline: 0px;
+ width: 50px;
+}
+
+QMessageBox QPushButton:hover {
+ background: #47a;
+}
+
+QMessageBox QPushButton:pressed {
+ background: #58b;
+}
+
+QToolButton#qrButton, QToolButton#shareButton {
+ background-color: rgb(242, 242, 242);
+ border-style: solid;
+ border-width: 0px;
+ border-radius: 15px;
+ padding: 8px;
+ color: rgb(32, 32, 32);
+}
+
+ QToolButton#qrButton:hover, QToolButton#shareButton:hover {
+ background-color: rgb(237, 237, 237);
+ }
+
+ QToolButton#qrButton:pressed, QToolButton#shareButton:pressed {
+ background-color: rgb(212, 212, 212);
+ }
+
+QToolButton#qrButton:checked {
+ background-color: rgb(237, 237, 237);
+}
+
+QPushButton#btnvideo{
+ background-color: #109ede;
+ border-radius: 15px;
+ border:solid 1px;
+}
+
+QWidget#messagingPage, QWidget#contactRequestPage,
+QDialog#DeleteAccountDialog, QDialog#UpdateDownloadDialog,
+QDialog#UpdateConfirmDialog, QDialog#AccountMigrationDialog {
+ background: rgb(255, 255, 255);
+}
+
+QWidget#messagingPage {
+ background: rgb(255, 255, 255);
+}
+
+QDialog#PasswordDialog,
+QDialog#LinkDeviceDialog,
+QDialog#DeleteAccountDialog {
+ background: rgb(255, 255, 255);
+}
+
+QPushButton#deleteAccountPushButton {
+ background-color: red;
+ border: 0px;
+ border-radius: 15px;
+ height: 30px;
+ color: white;
+}
+
+QPushButton#deleteAccountPushButton:hover {
+ background-color: rgb(230, 0, 0);
+}
+
+QPushButton#deleteAccountPushButton:disabled {
+ background-color: rgba(255, 0, 0, 0.8);
+}
+
+QPushButton#nextButton, QPushButton#playButton, QPushButton#clearHistoryButton, QPushButton#doTransferButton,
+QPushButton#photoButton, QPushButton#migrationPushButton,
+QPushButton#fromDeviceButton, QPushButton#newAccountButton, QPushButton#previousButton, QPushButton#exportButton, QPushButton#newSIPAccountButton, QPushButton#fromBackupButton, QPushButton#connectAccountManagerButton,
+QPushButton#cancelAddButton, QPushButton#exportOnRingButton, QPushButton#addDeviceButton, QPushButton#exportEndedOkButton,
+QPushButton#errorPushButton, QPushButton#registerButton, QPushButton#acceptCRButton, QPushButton#discardCRButton, QPushButton#deleteCancelBtn,
+QPushButton#skipBtn, QPushButton#exportBtn,
+QPushButton#dhtImportBtn, QPushButton#fileImportBtn, QPushButton#changePassBtn, QPushButton#confirmChangeBtn, QPushButton#backButton {
+ background: qlineargradient(x1: 0, y1: 0, x2: 1, y2: 0, stop: 0 #109ede, stop: 1.0 #2b5084);
+ border: 0px;
+ border-radius: 15px;
+ height: 30px;
+ color: white;
+}
+
+QPushButton#nextButton:disabled, QPushButton#playButton:disabled, QPushButton#clearHistoryButton:disabled,
+QPushButton#doTransferButton:disabled, QPushButton#photoButton:disabled, QPushButton#fromBackupButton:disabled
+QPushButton#existingPushButton:disabled, QPushButton#newAccountButton:disabled, QPushButton#previousButton:disabled, QPushButton#newSIPAccountButton:disabled,
+QPushButton#exportButton:disabled, QPushButton#cancelAddButton:disabled, QPushButton#exportOnRingButton:disabled,
+QPushButton#addDeviceButton:disabled, QPushButton#exportEndedOkButton:disabled, QPushButton#errorPushButton:disabled,
+QPushButton#registerButton:disabled, QPushButton#acceptCRButton:disabled, QPushButton#discardCRButton:disabled,
+QPushButton#deleteCancelBtn:disabled, QPushButton#dhtImportBtn:disabled, QPushButton#fileImportBtn:disabled,
+QPushButton#changePassBtn:disabled, QPushButton#confirmChangeBtn:disabled, QPushButton#backButton:disabled,
+QPushButton#fromDeviceButton:disabled, QPushButton#connectAccountManagerButton:disabled, QPushButton#exportBtn:disabled,
+QPushButton#skipBtn:disabled, QPushButton#migrationPushButton:disabled {
+ background: rgba(242, 242, 242, 0.8);
+ color: grey;
+}
+
+QPushButton#blockCRButton, QPushButton#debanButton, QPushButton#deleteBanBtn,
+QPushButton#cancelChangeBtn {
+ background-color: rgb(251, 72, 71);
+ border: 0px;
+ color: white;
+}
+
+QPushButton#nextButton:hover, QPushButton#playButton:hover, QPushButton#clearHistoryButton:hover,
+QPushButton#doTransferButton:hover, QPushButton#photoButton:hover, QPushButton#fromBackupButton:hover,
+QPushButton#existingPushButton:hover, QPushButton#newAccountButton:hover, QPushButton#previousButton:hover, QPushButton#newSIPAccountButton:hover,
+QPushButton#exportButton:hover, QPushButton#cancelAddButton:hover, QPushButton#exportOnRingButton:hover,
+QPushButton#addDeviceButton:hover, QPushButton#exportEndedOkButton:hover, QPushButton#errorPushButton:hover,
+QPushButton#registerButton:hover, QPushButton#acceptCRButton:hover, QPushButton#discardCRButton:hover,
+QPushButton#deleteCancelBtn:hover, QPushButton#dhtImportBtn:hover, QPushButton#fileImportBtn:hover, QPushButton#migrationPushButton:hover,
+QPushButton#changePassBtn:hover, QPushButton#confirmChangeBtn:hover, QPushButton#backButton:hover, QPushButton#skipBtn:hover,
+QPushButton#fromDeviceButton:hover, QPushButton#connectAccountManagerButton:hover, QPushButton#exportBtn:hover {
+ background: qlineargradient(x1: 0, y1: 0, x2: 1, y2: 0, stop: 0 #2b4b7e, stop: 1.0 #001d4d);
+ color: white;
+}
+
+QPushButton#blockCRButton:hover, QPushButton#deleteAcceptBtn:hover, QPushButton#debanButton:hover,
+QPushButton#deleteButton:hover, QPushButton#deleteBanBtn:hover, QPushButton#cancelChangeBtn:hover {
+ background-color: rgb(252, 91, 90);
+}
+
+QPushButton#nextButton:pressed, QPushButton#playButton:pressed, QPushButton#clearHistoryButton:pressed,
+QPushButton#doTransferButton:pressed, QPushButton#photoButton:pressed, QPushButton#skipBtn:pressed, QPushButton#migrationPushButton:pressed,
+QPushButton#existingPushButton:pressed, QPushButton#newAccountButton:pressed, QPushButton#previousButton:pressed, QPushButton#newSIPAccountButton:pressed,
+QPushButton#exportButton:pressed, QPushButton#cancelAddButton:pressed, QPushButton#exportOnRingButton:pressed,
+QPushButton#addDeviceButton:pressed, QPushButton#exportEndedOkButton:pressed, QPushButton#errorPushButton:pressed,
+QPushButton#registerButton:pressed, QPushButton#acceptCRButton:pressed, QPushButton#discardCRButton:pressed,
+QPushButton#deleteCancelBtn:pressed, QPushButton#dhtImportBtn:pressed, QPushButton#fileImportBtn:pressed,
+QPushButton#changePassBtn:pressed, QPushButton#confirmChangeBtn:pressed, QPushButton#backButton:pressed, QPushButton#exportBtn:pressed {
+ background: qlineargradient(x1: 0, y1: 0, x2: 1, y2: 0, stop: 0 #043161, stop: 1.0 #00113f);
+ color: white;
+}
+
+QPushButton#blockCRButton:pressed, QPushButton#deleteAcceptBtn:pressed, QPushButton#debanButton:pressed,
+QPushButton#deleteBanBtn:pressed, QPushButton#cancelChangeBtn:pressed{
+ background-color: rgb(219, 55, 54);
+}
+
+QPushButton#btnChangePasswordCancel {
+ background-color: rgb(252, 91, 90);
+ color: white;
+}
+
+QPushButton#btnChangePasswordCancel:hover {
+ background-color: red;
+ color: white;
+}
+
+QPushButton#btnChangePasswordCancel:pressed {
+ background-color: darkred;
+ color: white;
+}
+
+QComboBox{
+ background: transparent;
+ border-radius: 0px;
+ border-style: solid;
+ border-width: 2px;
+ border-color: #414141;
+ border-bottom: transparent;
+ border-top: transparent;
+ border-left: transparent;
+ border-right: transparent;
+ font-family: "Sans Serif";
+ padding: 2px;
+}
+
+QComboBox::down-arrow{
+ border-radius: 0px;
+ border-style: solid;
+ border-width: 2px;
+ height: 36;
+ width : 36;
+ image: url(":/images/icons/ic_arrow_drop_down_black_18dp_2x.png");
+}
+
+QComboBox::drop-down{
+ border: 0;
+ width: 36px;
+}
+
+QRadioButton::indicator{
+ width: 1 ;
+ height: 12px;
+ border-radius: 8px;
+ border-width: 2px;
+ border-style: solid;
+}
+
+QRadioButton::indicator:unchecked{
+ border-color: rgb(77, 77, 77);
+ background: transparent;
+}
+
+QRadioButton::indicator:checked{
+ background: #109ede;
+ border-color: #109ede;
+ image: url(":/images/icons/ic_check_white_18dp_2x.png");
+}
+
+QWidget#horizontalWidget{
+ background: transparent;
+}
+
+QCheckBox::indicator{
+ height : 12 px;
+ width : 12 px;
+ border: 2px solid rgb(77, 77, 77);
+ border-radius: 4px;
+ background: none;
+}
+
+QCheckBox::indicator:checked{
+ border-color: #2b4b7e;
+ background: #2b4b7e;
+ image: url(":/images/icons/ic_check_white_18dp_2x.png");
+}
+
+QSpinBox::down-button{
+ height: 9;
+ width : 9;
+ image: url(":/images/icons/ic_arrow_drop_down_black_9dp_2x.png");
+}
+
+QSpinBox::up-button{
+ height: 9;
+ width : 9;
+ image: url(":/images/icons/ic_arrow_drop_up_black_9dp_2x.png");
+}
+
+QLineEdit#lrcfg_alias:focus, QLineEdit#lrcfg_hostname:focus, QLineEdit#lrcfg_password:focus,
+QLineEdit#lrcfg_proxy:focus, QLineEdit#lrcfg_mailbox:focus, QLineEdit#lrcfg_tlsPassword:focus,
+QLineEdit#lrcfg_tlsServerName:focus, QLineEdit#lrcfg_turnServerRealm:focus, QLineEdit#lrcfg_turnServerUsername:focus,
+QLineEdit#lrcfg_turnServerPassword:focus, QLineEdit#lrcfg_turnServer:focus, QLineEdit#lrcfg_publishedAddress:focus,
+QLineEdit#lrcfg_registeredName:focus, QLineEdit#lrcfg_nameServiceURL:focus, QLineEdit#lrcfg_username:focus,
+QLineEdit#profileNameEdit:focus{
+ border-color: #109ede;
+}
+
+QTabWidget#tabWidget{
+ border-color: transparent;
+}
+
+QPushButton#upAudioButton, QPushButton#downAudioButton, QPushButton#upVideoButton, QPushButton#downVideoButton{
+ background: transparent;
+}
+
+QPushButton#avatarButton:hover {
+ border: 2px solid rgb(77, 77, 77);
+ border-radius: 50px;
+}
+
+QWidget#leftPannel{
+ background: white;
+}
+
+QSlider::groove:vertical{
+ background: red;
+ position: absolute; /* absolutely position 4px from the left and right of the widget. setting margins on the widget should work too... */
+ width:2px;
+}
+
+QSlider::handle:vertical{
+ height: 10px;
+ background: #109ede;
+ border-radius: 5px;
+ margin: 0 -4px;
+}
+
+QSlider::sub-page:vertical{
+ background: #777777;
+}
+
+QSlider::add-page:vertical{
+ background: #109ede;
+}
+
+QToolButton::menu-button {image:none;}
+
+QToolButton::menu-arrow {image:none;}
+
+QLabel#accountIdLabel, QLabel#accountAliasLabel, QLabel#deletionLabel1, QLabel#deletionLabel2,
+QLabel#warningLabel{
+ background: transparent;
+}
+
+QLabel#accountAliasLabel, QLabel#deletionLabel1, QLabel#deletionLabel2{
+ color: black;
+}
+
+QLabel#warningLabel{
+ color: red;
+}
+
+QLabel#labelWarning {
+ color: darkorange;
+}
+
+QLabel#accountIdLabel{
+ color: LightSlateGrey;
+ font-style: italic;
+}
+
+QLabel#accountAliasLabel{
+ font-weight: bold;
+}
+
+QLabel#dragDropLabel {
+ /*rgba 0.95 opacity (transparency)*/
+ font-size: 20px;
+ border: 2px dashed black;
+ border-radius: 10px;
+ background: rgba(216, 234, 252, 0.95);
+}
+
+QLabel#wrongPasswordLabel {
+ color: red;
+ margin-left: 8px;
+}
+
+/* setAvatarDialog { */
+QPushButton#pictureButton:default, QPushButton#fileButton:default {
+ background-color: rgb(0, 192, 213,);
+}
+
+QPushButton#pictureButton:checked, QPushButton#fileButton:checked {
+ background-color: rgb(0, 0, 213);
+}
+/* } setAvatarDialog */
+
+QSpinBox {
+ background-color: rgb(240, 240, 240);
+ border-radius: 14px;
+ height: 28px;
+ padding: 2px;
+ margin-bottom: 4px;
+}
+
+QSpinBox::up-button {
+ subcontrol-origin: border;
+ subcontrol-position: top right;
+ width: 16px;
+ height: 18px;
+ padding-right: 4px;
+ margin-top: 3px;
+}
+
+QSpinBox::down-button {
+ subcontrol-origin: border;
+ subcontrol-position: bottom right;
+ width: 16px;
+ height: 18px;
+ padding-right: 4px;
+ margin-bottom: 3px;
+}
+
+/* SettingsWidget { */
+SettingsWidget QLabel#exportedPIN {
+ color: darkblue;
+ margin-bottom: 4px;
+}
+
+SettingsWidget QPushButton {
+ padding-right: 16px;
+ padding-left: 16px;
+ border-style: solid;
+ border-width: 0px;
+ border-radius: 15px;
+ color: rgb(32, 32, 32);
+ background-color: rgb(242, 242, 242);
+}
+
+SettingsWidget QPushButton:hover {
+ background-color: rgb(237, 237, 237);
+}
+
+SettingsWidget QPushButton:pressed {
+ background-color: rgb(212, 212, 212);
+}
+
+SettingsWidget QPushButton:disabled {
+ color: gray;
+}
+
+SettingsWidget QLabel:disabled {
+ color: rgb(160, 160, 160);
+}
+
+SettingsWidget QWidget#leftSettingsWidget,
+SettingsWidget QWidget#rightSettingsWidget,
+SettingsWidget QWidget#DeleteAccountDialog,
+SettingsWidget QWidget#advancedSettingsWidget,
+SettingsWidget QWidget#advancedSIPSettingsWidget,
+SettingsWidget QWidget#NameRegistrationDialog,
+SettingsWidget QWidget#centralWidget,
+SettingsWidget QWidget#centralSIPWidget,
+SettingsWidget QWidget#scrollAreaWidgetContents,
+SettingsWidget QWidget#scrollAreaSIPWidgetContents {
+ background-color: rgba(255, 255, 255, 255);
+}
+
+SettingsWidget .QLineEdit {
+ border-radius: 15px;
+ background-color: rgb(240, 240, 240);
+ padding-left: 8px;
+ padding-right: 8px;
+ height: 30px;
+}
+
+SettingsWidget QLineEdit#currentRingID {
+ border: 0px;
+ border-radius: 0px;
+ padding: 0px;
+ background-color: transparent;
+ font-weight: bold;
+}
+
+SettingsWidget QLineEdit#currentRegisteredID {
+ border: 2px;
+ border-radius: 15px;
+ padding: 1px;
+ padding-left: 8px;
+ margin-right: 4px;
+ border-style: solid;
+ background-color: rgb(240, 240, 240);
+}
+
+SettingsWidget QPushButton#regNameButton {
+ background-color: transparent;
+}
+
+SettingsWidget QWidget#videoLayoutWidget {
+ background-color: black;
+}
+
+SettingsWidget QPushButton#btnDeletAccount,
+SettingsWidget QPushButton#btnSIPDeletAccount {
+ background-color: rgb(252, 91, 90);
+ color: white;
+}
+
+SettingsWidget QPushButton#btnDeletAccount:hover,
+SettingsWidget QPushButton#btnSIPDeletAccount:hover {
+ background-color: red;
+ color: white;
+}
+
+SettingsWidget QPushButton#btnDeletAccount:pressed,
+SettingsWidget QPushButton#btnSIPDeletAccount:pressed {
+ background-color: darkred;
+ color: white;
+}
+
+QListView .QLabel#labelDeviceId {
+ padding-left: 4px;
+ font-weight: 300;
+}
+
+QListView .QLabel#labelThisDevice {
+ margin-right: 16px;
+ font-style: italic;
+ color: green;
+}
+
+QListWidget .QLabel {
+ background-color: transparent;
+}
+
+QListWidget .QLineEdit {
+ background-color: transparent;
+}
+
+QListWidget .QPushButton {
+ background-color: transparent;
+}
+ QListWidget .QPushButton:hover {
+ background-color: transparent;
+ }
+ QListWidget .QPushButton:pressed {
+ background-color: transparent;
+ }
+
+QListView::item:selected {
+ background-color: rgb(220, 220, 220);
+}
+
+SettingsWidget QListView {
+ background-color: whitesmoke;
+ border: 1px solid rgb(212, 212, 212);
+ font-size: 16px;
+}
+
+SettingsWidget QListView::item {
+ height: 30px;
+ font: 30px;
+ padding: 8px;
+}
+
+SettingsWidget QListView::indicator {
+ height: 12 px;
+ width: 12 px;
+ border: 2px solid rgb(77, 77, 77);
+ border-radius: 4px;
+ background: none;
+}
+
+SettingsWidget QListView::indicator:checked {
+ border-color: #2b4b7e;
+ background: #2b4b7e;
+ image: url(":/images/icons/ic_check_white_18dp_2x.png");
+}
+
+SettingsWidget QListView::item:selected {
+ background-color: rgba(220, 220, 220, 255);
+ border: none;
+ color: black;
+}
+
+SettingsWidget QListView::item:hover {
+ background-color: rgba(229, 229, 229, 255);
+}
+
+SettingsWidget QListView::item:disabled {
+ background-color: transparent;
+}
+
+/* } SettingsWidget */
+
+QPushButton#panelButton_0, QPushButton#panelButton_1, QPushButton#panelButton_2,
+QPushButton#panelButton_3, QPushButton#panelButton_4, QPushButton#panelButton_5,
+QPushButton#panelButton_6, QPushButton#panelButton_7, QPushButton#panelButton_8,
+QPushButton#panelButton_9, QPushButton#panelButton_hash, QPushButton#panelButton_A,
+QPushButton#panelButton_B, QPushButton#panelButton_C, QPushButton#panelButton_D {
+ text-align: center;
+ text-decoration: none;
+ background: #369;
+ color: white;
+ border: 0;
+ border-radius: 19px;
+ padding-bottom: 4px;
+}
+
+QPushButton#panelButton_star {
+ text-align: center;
+ text-decoration: none;
+ background: #369;
+ color: white;
+ border: 0;
+ border-radius: 19px;
+ padding-top: 4px;
+}
+
+QPushButton#panelButton_0:hover, QPushButton#panelButton_1:hover, QPushButton#panelButton_2:hover,
+QPushButton#panelButton_3:hover, QPushButton#panelButton_4:hover, QPushButton#panelButton_5:hover,
+QPushButton#panelButton_6:hover, QPushButton#panelButton_7:hover, QPushButton#panelButton_8:hover,
+QPushButton#panelButton_9:hover, QPushButton#panelButton_hash:hover, QPushButton#panelButton_star:hover,
+QPushButton#panelButton_A:hover, QPushButton#panelButton_B:hover, QPushButton#panelButton_C:hover,
+QPushButton#panelButton_D:hover {
+ background: #47a;
+}
+
+QPushButton#panelButton_0:pressed, QPushButton#panelButton_1:pressed, QPushButton#panelButton_2:pressed,
+QPushButton#panelButton_3:pressed, QPushButton#panelButton_4:pressed, QPushButton#panelButton_5:pressed,
+QPushButton#panelButton_6:pressed, QPushButton#panelButton_7:pressed, QPushButton#panelButton_8:pressed,
+QPushButton#panelButton_9:pressed, QPushButton#panelButton_hash:pressed, QPushButton#panelButton_star:pressed,
+QPushButton#panelButton_A:pressed, QPushButton#panelButton_B:pressed, QPushButton#panelButton_C:pressed,
+QPushButton#panelButton_D:pressed {
+ background: #58b;
+}
+
+QProgressBar#audioInputMeter {
+ border: 0px solid #606060;
+ background: lightgrey;
+}
+
+ QProgressBar#audioInputMeter::chunk {
+ background-color: #0c79aa;
+ margin: 2px;
+ }
+
+QLabel#nameLabel {
+ font-size: 20px;
+ font-style: initial;
+ qproperty-alignment: AlignCenter;
+ color: white;
+}
+
+QWidget#videoPage {
+ background: black;
+}
+
+QPushButton#recordOverlayStartOrFinishRecordingBtn, QPushButton#recordOverlayDeleteBtn, QPushButton#recordOverlayPlayBtn, QPushButton#recordOverlayRerecordBtn, QPushButton#recordOverlaySendBtn,
+QPushButton#recordOverlayStopPlayingBtn {
+ background-color: transparent;
+ border-radius: 18px;
+ border: solid 1px;
+}
+
+QPushButton#recordOverlayStartOrFinishRecordingBtn:hover, QPushButton#recordOverlayDeleteBtn:hover, QPushButton#recordOverlayPlayBtn:hover, QPushButton#recordOverlayRerecordBtn:hover, QPushButton#recordOverlaySendBtn:hover,
+QPushButton#recordOverlayStopPlayingBtn:hover {
+ background-color: transparent;
+ border-radius: 18px;
+ border: solid 1px;
+}
+
+QPushButton#recordOverlayStartOrFinishRecordingBtn:pressed, QPushButton#recordOverlayDeleteBtn:pressed, QPushButton#recordOverlayPlayBtn:pressed, QPushButton#recordOverlayRerecordBtn:pressed, QPushButton#recordOverlaySendBtn:pressed,
+QPushButton#recordOverlayStopPlayingBtn:pressed {
+ background-color: transparent;
+ border-radius: 18px;
+ border: solid 1px;
+}
+
+QPushButton#recordOverlayStartOrFinishRecordingBtn:checked, QPushButton#recordOverlayDeleteBtn:checked, QPushButton#recordOverlayPlayBtn:checked, QPushButton#recordOverlayRerecordBtn:checked, QPushButton#recordOverlaySendBtn:checked,
+QPushButton#recordOverlayStopPlayingBtn:checked {
+ background-color: transparent;
+ border-radius: 18px;
+ border: solid 1px;
+}
+
+QWidget#RecordWidget {
+ background-color: transparent;
+}
+
+QLabel#timerLabel {
+ background-color: transparent;
+ color: white;
+}
+
+QProgressBar#levelMeter {
+ border: 2px solid white;
+ text-align: center;
+ background: transparent;
+}
+
+ QProgressBar#levelMeter::chunk {
+ background-color: white;
+ margin: 2px;
+ }
+
+QScrollArea#changeLogScrollArea {
+ background-color: transparent;
+ color: white;
+ border: none;
+}
+
+QWidget#changeLogContents {
+ background-color: transparent;
+ color: white;
+ border: none;
+}
+
+QTextEdit#logTextEdit {
+ background-color: white;
+ color: black;
+}
+
+QPushButton#logCloseButton {
+ background-color: rgb(189, 189, 189);
+}
+
+ QPushButton#logCloseButton:hover {
+ background-color: rgb(170, 170, 170);
+ }
+ QPushButton#logCloseButton:pressed {
+ background-color: rgb(180, 180, 180);
+ }
+
+FullScreenNotification {
+ font-size: 24px;
+ color: white;
+ background-color: black;
+ border: 2px solid white;
+ padding: 100px;
+}
\ No newline at end of file
diff --git a/stylesheet.linux.css b/stylesheet.linux.css
new file mode 100644
index 0000000..44eeecf
--- /dev/null
+++ b/stylesheet.linux.css
@@ -0,0 +1,930 @@
+
+QPushButton {
+ background-color: rgb(242, 242, 242);
+ border-style: solid;
+ border-width: 0px;
+ border-radius: 15px;
+ color: rgb(32, 32, 32);
+}
+
+QPushButton#pinInfoBtn, QPushButton#backupInfoBtn {
+ background: transparent;
+}
+
+QPushButton#takePhotoButton, QPushButton#importButton {
+ background-color: rgb(242, 242, 242);
+ border-radius: 5px;
+ border:solid 0px;
+}
+
+QPushButton#acceptButton{
+ background-color: #4caf50;
+ border-radius: 28px;
+ border:solid 1px;
+}
+
+QPushButton#refuseButton, QPushButton#cancelButton{
+ background-color: #f44336;
+ border-radius: 28px;
+ border:solid 1px;
+}
+
+QPushButton#acceptButton:hover{
+ background-color: #5db761;
+}
+
+QPushButton#acceptButton:pressed{
+ background-color: #449d48;
+}
+
+QPushButton#refuseButton:hover, QPushButton#cancelButton:hover{
+ background-color: #f5554a;
+}
+
+QPushButton#refuseButton:pressed, QPushButton#cancelButton:pressed{
+ background-color: #db3c30;
+}
+
+QWidget#smartListOuterWidget {
+ background-color: rgb(255, 255, 255);
+}
+
+QWidget#previewContainer {
+ background-color: black;
+}
+
+QPushButton#btnConversations, QPushButton#btnInvites {
+ border-radius: 0px;
+ border-top-left-radius: 15px;
+ border-top-right-radius: 15px;
+ color: rgb(32, 32, 32);
+ height: 28px;
+ padding: 0px;
+ background-color: rgb(240, 240, 240);
+ border-top: 2px solid rgb(240, 240, 240);
+ border-right: 2px solid rgb(240, 240, 240);
+ border-bottom: 2px solid rgb(240, 240, 240);
+ border-left: 2px solid rgb(240, 240, 240);
+}
+
+QPushButton#btnConversations:hover, QPushButton#btnInvites:hover {
+ background-color: rgb(188, 185, 184);
+ border-top: 2px solid rgb(188, 185, 184);
+ border-right: 2px solid rgb(188, 185, 184);
+ border-bottom: 2px solid rgb(188, 185, 184);
+ border-left: 2px solid rgb(188, 185, 184);
+}
+
+QPushButton#btnConversations:checked, QPushButton#btnInvites:checked {
+ background-color: rgb(255, 255, 255);
+ border-bottom: 2px solid rgb(255, 255, 255);
+}
+
+QPushButton#btnConversations:hover:checked, QPushButton#btnInvites:hover:checked {
+ border-top: 2px solid rgb(240, 240, 240);
+ border-right: 2px solid rgb(240, 240, 240);
+ border-bottom: 2px solid rgb(255, 255, 255);
+ border-left: 2px solid rgb(240, 240, 240);
+}
+
+QPushButton#imBackButton, QPushButton#btnAcceptInvite, QPushButton#btnIgnoreInvite,
+QPushButton#btnBlockInvite, QPushButton#btnAudioCall, QPushButton#btnVideoCall,
+QPushButton#sendContactRequestButton, QPushButton#sendButton, QPushButton#sendIMButton,
+QPushButton#btnExitSettings {
+ background-color: transparent;
+ border-style: solid;
+ border-width: 0px;
+ border-radius: 15px;
+ padding: 8px;
+ color: rgb(32, 32, 32);
+}
+
+QPushButton#btnAcceptInvite:hover, QPushButton#btnIgnoreInvite:hover, QPushButton#btnBlockInvite:hover {
+ background-color: rgb(212, 212, 212);
+}
+
+QPushButton#btnAcceptInvite:pressed, QPushButton#btnIgnoreInvite:pressed, QPushButton#btnBlockInvite:pressed {
+ background-color: rgb(187, 187, 187);
+}
+
+ QPushButton#imBackButton:hover, QPushButton#btnAudioCall:hover, QPushButton#btnVideoCall:hover,
+ QPushButton#sendContactRequestButton:hover, QPushButton#sendButton:hover, QPushButton#sendIMButton:hover,
+ QPushButton#btnExitSettings:hover, QPushButton#btnDeleteAccept:hover, QPushButton#btnDeleteCancel:hover,
+ QPushButton#changelogButton:hover, QPushButton#creditsButton:hover, QPushButton#changelogButton:hover, QPushButton#updateCancelBtn:hover,
+ QPushButton#updateAcceptBtn:hover, QPushButton#installBetaButton:hover, QPushButton#closeAboutDialogButton:hover {
+ background-color: rgb(237, 237, 237);
+ }
+
+ QPushButton#imBackButton:pressed, QPushButton#btnAudioCall:pressed, QPushButton#btnVideoCall:pressed,
+ QPushButton#sendContactRequestButton:pressed, QPushButton#sendButton:pressed, QPushButton#sendIMButton:pressed,
+ QPushButton#btnExitSettings:pressed, QPushButton#btnDeleteAccept:pressed, QPushButton#btnDeleteCancel:pressed,
+ QPushButton#changelogButton:pressed, QPushButton#creditsButton:pressed, QPushButton#changelogButton:pressed, QPushButton#updateCancelBtn:pressed,
+ QPushButton#updateAcceptBtn:pressed, QPushButton#installBetaButton:pressed, QPushButton#closeAboutDialogButton:pressed {
+ background-color: rgb(212, 212, 212);
+ }
+
+QWidget#searchBarLayoutWidget, QWidget#smartList,
+QWidget#sidePanelLayoutWidget, QWidget#leftSettingsWidget {
+ border-right: 2px solid rgb(240, 240, 240);
+}
+
+RingContactLineEdit{
+ border-radius: 15px;
+ border: 2px solid rgb(240, 240, 240);
+ background-color: rgb(240, 240, 240);
+}
+
+RingContactLineEdit:focus{
+ border: 2px solid rgb(240, 240, 240);
+ background-color: rgb(255, 255, 255);
+}
+
+.QLineEdit{
+ border-color: rgb(240, 240, 240);
+ border-radius: 15px;
+ border-width: 2px;
+ background-color: rgb(240, 240, 240);
+ padding-left: 4px;
+ padding-right: 4px;
+ height: 30px;
+}
+
+QScrollBar:vertical, QScrollBar:horizontal{
+ background:white; width:0px;
+}
+
+QScrollBar::handle:vertical, QScrollBar::handle:horizontal{
+ background: rgb(255, 255, 255);
+}
+
+SmartListView {
+ background-color: white;
+ border: none;
+}
+
+SmartListView::item:selected, QListView#BannedList::item:selected {
+ background-color: rgba(220, 220, 220, 255);
+ border: none;
+}
+
+SmartListView::item:hover, QListView#BannedList::item:hover {
+ background-color: rgba(242, 242, 242, 255);
+}
+
+QWidget#messagingHeaderWidget {
+ background-color: rgba(255, 255, 255, 255);
+ border-bottom: 2px solid rgb(240, 240, 240);
+}
+
+QWidget#messageViewLayoutWidget, QWidget#welcomePage {
+ background-color: rgba(255, 255, 255, 255);
+}
+
+QPushButton#holdButton, QPushButton#chatButton, QPushButton#noMicButton, QPushButton#noVideoButton, QPushButton#hangupButton,
+QPushButton#transferButton, QPushButton#addPersonButton, QPushButton#joinButton,
+QPushButton#qualityButton, QPushButton#recButton, QPushButton#transferCallButton,
+QPushButton#sipInputPanelButton, QPushButton#addToConferenceButton {
+ background-color: transparent;
+ border-radius: 18px;
+ border: solid 1px;
+}
+
+ QPushButton#holdButton:hover, QPushButton#chatButton:hover, QPushButton#noMicButton:hover, QPushButton#hangupButton:hover,
+ QPushButton#noVideoButton:hover, QPushButton#transferButton:hover, QPushButton#addPersonButton:hover,
+ QPushButton#joinButton:hover, QPushButton#qualityButton:hover, QPushButton#addToContactButton:hover,
+ QPushButton#recButton:hover, QPushButton#transferCallButton:hover,
+ QPushButton#sipInputPanelButton:hover, QPushButton#addToConferenceButton:hover {
+ background-color: transparent;
+ border-radius: 18px;
+ border: solid 1px;
+ }
+
+ QPushButton#holdButton:pressed, QPushButton#chatButton:pressed, QPushButton#noMicButton:pressed, QPushButton#hangupButton:pressed,
+ QPushButton#noVideoButton:pressed, QPushButton#transferButton:pressed, QPushButton#addPersonButton:pressed,
+ QPushButton#joinButton:pressed, QPushButton#qualityButton:pressed, QPushButton#addToContactButton:pressed,
+ QPushButton#recButton:pressed, QPushButton#addToConferenceButton:pressed {
+ background-color: transparent;
+ border-radius: 18px;
+ border: solid 1px;
+ }
+
+ QPushButton#holdButton:checked, QPushButton#noMicButton:checked, QPushButton#hangupButton:checked,
+ QPushButton#noVideoButton:checked, QPushButton#recButton:checked,
+ QPushButton#chatButton:checked, QPushButton#transferCallButton:checked,
+ QPushButton#sipInputPanelButton:checked, QPushButton#addToConferenceButton:checked {
+ background-color: transparent;
+ border-radius: 18px;
+ border: solid 1px;
+ }
+
+QPushButton#updateCancelButton {
+ padding: 4px;
+ background: #369;
+ color: white;
+ font-size: 12px;
+ border: 0;
+ border-radius: 3px;
+ outline: 0px;
+ width: 50px;
+}
+
+QPushButton#updateCancelButton:hover {
+ background: #47a;
+}
+
+QPushButton#updateCancelButton:pressed {
+ background: #58b;
+}
+
+QMessageBox QPushButton {
+ padding: 4px;
+ background: #369;
+ color: white;
+ font-size: 12px;
+ border: 0;
+ border-radius: 3px;
+ outline: 0px;
+ width: 50px;
+}
+
+QMessageBox QPushButton:hover {
+ background: #47a;
+}
+
+QMessageBox QPushButton:pressed {
+ background: #58b;
+}
+
+QToolButton#qrButton, QToolButton#shareButton {
+ background-color: rgb(242, 242, 242);
+ border-style: solid;
+ border-width: 0px;
+ border-radius: 15px;
+ padding: 8px;
+ color: rgb(32, 32, 32);
+}
+
+ QToolButton#qrButton:hover, QToolButton#shareButton:hover {
+ background-color: rgb(237, 237, 237);
+ }
+
+ QToolButton#qrButton:pressed, QToolButton#shareButton:pressed {
+ background-color: rgb(212, 212, 212);
+ }
+
+QToolButton#qrButton:checked {
+ background-color: rgb(237, 237, 237);
+}
+
+QPushButton#btnvideo{
+ background-color: #109ede;
+ border-radius: 15px;
+ border:solid 1px;
+}
+
+QScrollBar:vertical{
+ background: rgb(242, 242, 242);
+ width:10px;
+}
+
+QScrollBar::handle:vertical{
+ background: rgb(77, 77, 77);
+}
+
+QWidget#messagingPage, QWidget#contactRequestPage,
+QDialog#DeleteAccountDialog, QDialog#UpdateDownloadDialog,
+QDialog#UpdateConfirmDialog, QDialog#AccountMigrationDialog {
+ background: rgb(255, 255, 255);
+}
+
+QWidget#messagingPage {
+ background: rgb(255, 255, 255);
+}
+
+QDialog#PasswordDialog,
+QDialog#LinkDeviceDialog,
+QDialog#DeleteAccountDialog {
+ background: rgb(255, 255, 255);
+}
+
+QPushButton#deleteAccountPushButton {
+ background-color: red;
+ border: 0px;
+ border-radius: 15px;
+ height: 30px;
+ color: white;
+}
+
+QPushButton#deleteAccountPushButton:hover {
+ background-color: rgb(230, 0, 0);
+}
+
+QPushButton#deleteAccountPushButton:disabled {
+ background-color: rgba(255, 0, 0, 0.8);
+}
+
+QPushButton#nextButton, QPushButton#playButton, QPushButton#clearHistoryButton, QPushButton#doTransferButton,
+QPushButton#photoButton, QPushButton#migrationPushButton,
+QPushButton#fromDeviceButton, QPushButton#newAccountButton, QPushButton#previousButton, QPushButton#exportButton, QPushButton#newSIPAccountButton, QPushButton#fromBackupButton, QPushButton#connectAccountManagerButton,
+QPushButton#cancelAddButton, QPushButton#exportOnRingButton, QPushButton#addDeviceButton, QPushButton#exportEndedOkButton,
+QPushButton#errorPushButton, QPushButton#registerButton, QPushButton#acceptCRButton, QPushButton#discardCRButton, QPushButton#deleteCancelBtn,
+QPushButton#skipBtn, QPushButton#exportBtn,
+QPushButton#dhtImportBtn, QPushButton#fileImportBtn, QPushButton#changePassBtn, QPushButton#confirmChangeBtn, QPushButton#backButton {
+ background: qlineargradient(x1: 0, y1: 0, x2: 1, y2: 0, stop: 0 #109ede, stop: 1.0 #2b5084);
+ border: 0px;
+ border-radius: 15px;
+ height: 30px;
+ color: white;
+}
+
+QPushButton#nextButton:disabled, QPushButton#playButton:disabled, QPushButton#clearHistoryButton:disabled,
+QPushButton#doTransferButton:disabled, QPushButton#photoButton:disabled, QPushButton#fromBackupButton:disabled
+QPushButton#existingPushButton:disabled, QPushButton#newAccountButton:disabled, QPushButton#previousButton:disabled, QPushButton#newSIPAccountButton:disabled,
+QPushButton#exportButton:disabled, QPushButton#cancelAddButton:disabled, QPushButton#exportOnRingButton:disabled,
+QPushButton#addDeviceButton:disabled, QPushButton#exportEndedOkButton:disabled, QPushButton#errorPushButton:disabled,
+QPushButton#registerButton:disabled, QPushButton#acceptCRButton:disabled, QPushButton#discardCRButton:disabled,
+QPushButton#deleteCancelBtn:disabled, QPushButton#dhtImportBtn:disabled, QPushButton#fileImportBtn:disabled,
+QPushButton#changePassBtn:disabled, QPushButton#confirmChangeBtn:disabled, QPushButton#backButton:disabled,
+QPushButton#fromDeviceButton:disabled, QPushButton#connectAccountManagerButton:disabled, QPushButton#exportBtn:disabled,
+QPushButton#skipBtn:disabled, QPushButton#migrationPushButton:disabled {
+ background: rgba(242, 242, 242, 0.8);
+ color: grey;
+}
+
+QPushButton#blockCRButton, QPushButton#debanButton, QPushButton#deleteBanBtn,
+QPushButton#cancelChangeBtn {
+ background-color: rgb(251, 72, 71);
+ border: 0px;
+ color: white;
+}
+
+QPushButton#nextButton:hover, QPushButton#playButton:hover, QPushButton#clearHistoryButton:hover,
+QPushButton#doTransferButton:hover, QPushButton#photoButton:hover, QPushButton#fromBackupButton:hover,
+QPushButton#existingPushButton:hover, QPushButton#newAccountButton:hover, QPushButton#previousButton:hover, QPushButton#newSIPAccountButton:hover,
+QPushButton#exportButton:hover, QPushButton#cancelAddButton:hover, QPushButton#exportOnRingButton:hover,
+QPushButton#addDeviceButton:hover, QPushButton#exportEndedOkButton:hover, QPushButton#errorPushButton:hover,
+QPushButton#registerButton:hover, QPushButton#acceptCRButton:hover, QPushButton#discardCRButton:hover,
+QPushButton#deleteCancelBtn:hover, QPushButton#dhtImportBtn:hover, QPushButton#fileImportBtn:hover, QPushButton#migrationPushButton:hover,
+QPushButton#changePassBtn:hover, QPushButton#confirmChangeBtn:hover, QPushButton#backButton:hover, QPushButton#skipBtn:hover,
+QPushButton#fromDeviceButton:hover, QPushButton#connectAccountManagerButton:hover, QPushButton#exportBtn:hover {
+ background: qlineargradient(x1: 0, y1: 0, x2: 1, y2: 0, stop: 0 #2b4b7e, stop: 1.0 #001d4d);
+ color: white;
+}
+
+QPushButton#blockCRButton:hover, QPushButton#deleteAcceptBtn:hover, QPushButton#debanButton:hover,
+QPushButton#deleteButton:hover, QPushButton#deleteBanBtn:hover, QPushButton#cancelChangeBtn:hover {
+ background-color: rgb(252, 91, 90);
+}
+
+QPushButton#nextButton:pressed, QPushButton#playButton:pressed, QPushButton#clearHistoryButton:pressed,
+QPushButton#doTransferButton:pressed, QPushButton#photoButton:pressed, QPushButton#skipBtn:pressed, QPushButton#migrationPushButton:pressed,
+QPushButton#existingPushButton:pressed, QPushButton#newAccountButton:pressed, QPushButton#previousButton:pressed, QPushButton#newSIPAccountButton:pressed,
+QPushButton#exportButton:pressed, QPushButton#cancelAddButton:pressed, QPushButton#exportOnRingButton:pressed,
+QPushButton#addDeviceButton:pressed, QPushButton#exportEndedOkButton:pressed, QPushButton#errorPushButton:pressed,
+QPushButton#registerButton:pressed, QPushButton#acceptCRButton:pressed, QPushButton#discardCRButton:pressed,
+QPushButton#deleteCancelBtn:pressed, QPushButton#dhtImportBtn:pressed, QPushButton#fileImportBtn:pressed,
+QPushButton#changePassBtn:pressed, QPushButton#confirmChangeBtn:pressed, QPushButton#backButton:pressed, QPushButton#exportBtn:pressed {
+ background: qlineargradient(x1: 0, y1: 0, x2: 1, y2: 0, stop: 0 #043161, stop: 1.0 #00113f);
+ color: white;
+}
+
+QPushButton#blockCRButton:pressed, QPushButton#deleteAcceptBtn:pressed, QPushButton#debanButton:pressed,
+QPushButton#deleteBanBtn:pressed, QPushButton#cancelChangeBtn:pressed{
+ background-color: rgb(219, 55, 54);
+}
+
+QPushButton#btnChangePasswordCancel {
+ background-color: rgb(252, 91, 90);
+ color: white;
+}
+
+QPushButton#btnChangePasswordCancel:hover {
+ background-color: red;
+ color: white;
+}
+
+QPushButton#btnChangePasswordCancel:pressed {
+ background-color: darkred;
+ color: white;
+}
+
+QComboBox{
+ background: transparent;
+ border-radius: 0px;
+ border-style: solid;
+ border-width: 2px;
+ border-color: #414141;
+ border-bottom: transparent;
+ border-top: transparent;
+ border-left: transparent;
+ border-right: transparent;
+ font-family: "Sans Serif";
+ padding: 2px;
+}
+
+QComboBox::down-arrow{
+ border-radius: 0px;
+ border-style: solid;
+ border-width: 2px;
+ height: 36;
+ width : 36;
+ image: url(":/images/icons/ic_arrow_drop_down_black_18dp_2x.png");
+}
+
+QComboBox::drop-down{
+ border: 0;
+ width: 36px;
+}
+
+QRadioButton::indicator{
+ width: 1 ;
+ height: 12px;
+ border-radius: 8px;
+ border-width: 2px;
+ border-style: solid;
+}
+
+QRadioButton::indicator:unchecked{
+ border-color: rgb(77, 77, 77);
+ background: transparent;
+}
+
+QRadioButton::indicator:checked{
+ background: #109ede;
+ border-color: #109ede;
+ image: url(":/images/icons/ic_check_white_18dp_2x.png");
+}
+
+QWidget#horizontalWidget{
+ background: transparent;
+}
+
+QCheckBox::indicator{
+ height : 12 px;
+ width : 12 px;
+ border: 2px solid rgb(77, 77, 77);
+ border-radius: 4px;
+ background: none;
+}
+
+QCheckBox::indicator:checked{
+ border-color: #2b4b7e;
+ background: #2b4b7e;
+ image: url(":/images/icons/ic_check_white_18dp_2x.png");
+}
+
+QSpinBox::down-button{
+ height: 9;
+ width : 9;
+ image: url(":/images/icons/ic_arrow_drop_down_black_9dp_2x.png");
+}
+
+QSpinBox::up-button{
+ height: 9;
+ width : 9;
+ image: url(":/images/icons/ic_arrow_drop_up_black_9dp_2x.png");
+}
+
+QLineEdit#lrcfg_alias:focus, QLineEdit#lrcfg_hostname:focus, QLineEdit#lrcfg_password:focus,
+QLineEdit#lrcfg_proxy:focus, QLineEdit#lrcfg_mailbox:focus, QLineEdit#lrcfg_tlsPassword:focus,
+QLineEdit#lrcfg_tlsServerName:focus, QLineEdit#lrcfg_turnServerRealm:focus, QLineEdit#lrcfg_turnServerUsername:focus,
+QLineEdit#lrcfg_turnServerPassword:focus, QLineEdit#lrcfg_turnServer:focus, QLineEdit#lrcfg_publishedAddress:focus,
+QLineEdit#lrcfg_registeredName:focus, QLineEdit#lrcfg_nameServiceURL:focus, QLineEdit#lrcfg_username:focus,
+QLineEdit#profileNameEdit:focus{
+ border-color: #109ede;
+}
+
+QTabWidget#tabWidget{
+ border-color: transparent;
+}
+
+QPushButton#upAudioButton, QPushButton#downAudioButton, QPushButton#upVideoButton, QPushButton#downVideoButton{
+ background: transparent;
+}
+
+QPushButton#avatarButton:hover {
+ border: 2px solid rgb(77, 77, 77);
+ border-radius: 50px;
+}
+
+QWidget#leftPannel{
+ background: white;
+}
+
+QSlider::groove:vertical{
+ background: red;
+ position: absolute; /* absolutely position 4px from the left and right of the widget. setting margins on the widget should work too... */
+ width:2px;
+}
+
+QSlider::handle:vertical{
+ height: 10px;
+ background: #109ede;
+ border-radius: 5px;
+ margin: 0 -4px;
+}
+
+QSlider::sub-page:vertical{
+ background: #777777;
+}
+
+QSlider::add-page:vertical{
+ background: #109ede;
+}
+
+QToolButton::menu-button {image:none;}
+
+QToolButton::menu-arrow {image:none;}
+
+QLabel#accountIdLabel, QLabel#accountAliasLabel, QLabel#deletionLabel1, QLabel#deletionLabel2,
+QLabel#warningLabel{
+ background: transparent;
+}
+
+QLabel#accountAliasLabel, QLabel#deletionLabel1, QLabel#deletionLabel2{
+ color: black;
+}
+
+QLabel#warningLabel{
+ color: red;
+}
+
+QLabel#labelWarning {
+ color: darkorange;
+}
+
+QLabel#accountIdLabel{
+ color: LightSlateGrey;
+ font-style: italic;
+}
+
+QLabel#accountAliasLabel{
+ font-weight: bold;
+}
+
+QLabel#dragDropLabel {
+ /*rgba 0.95 opacity (transparency)*/
+ font-size: 20px;
+ border: 2px dashed black;
+ border-radius: 10px;
+ background: rgba(216, 234, 252, 0.95);
+}
+
+/* setAvatarDialog { */
+QPushButton#pictureButton:default, QPushButton#fileButton:default {
+ background-color: rgb(0, 192, 213,);
+}
+
+QPushButton#pictureButton:checked, QPushButton#fileButton:checked {
+ background-color: rgb(0, 0, 213);
+}
+/* } setAvatarDialog */
+
+QSpinBox {
+ background-color: rgb(240, 240, 240);
+ border-radius: 14px;
+ height: 28px;
+ padding: 2px;
+ margin-bottom: 4px;
+}
+
+QSpinBox::up-button {
+ subcontrol-origin: border;
+ subcontrol-position: top right;
+ width: 16px;
+ height: 18px;
+ padding-right: 4px;
+ margin-top: 3px;
+}
+
+QSpinBox::down-button {
+ subcontrol-origin: border;
+ subcontrol-position: bottom right;
+ width: 16px;
+ height: 18px;
+ padding-right: 4px;
+ margin-bottom: 3px;
+}
+
+/* SettingsWidget { */
+SettingsWidget QLabel#wrongPasswordLabel {
+ color: red;
+ margin-left: 8px;
+}
+SettingsWidget QLabel#exportedPIN {
+ color: darkblue;
+ margin-bottom: 4px;
+}
+
+SettingsWidget QPushButton {
+ padding-right: 16px;
+ padding-left: 16px;
+ border-style: solid;
+ border-width: 0px;
+ border-radius: 15px;
+ color: rgb(32, 32, 32);
+ background-color: rgb(242, 242, 242);
+}
+
+SettingsWidget QPushButton:hover {
+ background-color: rgb(237, 237, 237);
+}
+
+SettingsWidget QPushButton:pressed {
+ background-color: rgb(212, 212, 212);
+}
+
+SettingsWidget QPushButton:disabled {
+ color: gray;
+}
+
+SettingsWidget QLabel:disabled {
+ color: rgb(160, 160, 160);
+}
+
+SettingsWidget QWidget#leftSettingsWidget,
+SettingsWidget QWidget#rightSettingsWidget,
+SettingsWidget QWidget#DeleteAccountDialog,
+SettingsWidget QWidget#advancedSettingsWidget,
+SettingsWidget QWidget#advancedSIPSettingsWidget,
+SettingsWidget QWidget#NameRegistrationDialog,
+SettingsWidget QWidget#centralWidget,
+SettingsWidget QWidget#centralSIPWidget,
+SettingsWidget QWidget#scrollAreaWidgetContents,
+SettingsWidget QWidget#scrollAreaSIPWidgetContents {
+ background-color: rgba(255, 255, 255, 255);
+}
+
+SettingsWidget .QLineEdit {
+ border-radius: 15px;
+ background-color: rgb(240, 240, 240);
+ padding-left: 8px;
+ padding-right: 8px;
+ height: 30px;
+}
+
+SettingsWidget QLineEdit#currentRingID {
+ border: 0px;
+ border-radius: 0px;
+ padding: 0px;
+ background-color: transparent;
+ font-weight: bold;
+}
+
+SettingsWidget QLineEdit#currentRegisteredID {
+ border: 2px;
+ border-radius: 15px;
+ padding: 1px;
+ padding-left: 8px;
+ margin-right: 4px;
+ border-style: solid;
+ background-color: rgb(240, 240, 240);
+}
+
+SettingsWidget QPushButton#regNameButton {
+ background-color: transparent;
+}
+
+SettingsWidget QWidget#videoLayoutWidget {
+ background-color: black;
+}
+
+SettingsWidget QPushButton#btnDeletAccount,
+SettingsWidget QPushButton#btnSIPDeletAccount {
+ background-color: rgb(252, 91, 90);
+ color: white;
+}
+
+SettingsWidget QPushButton#btnDeletAccount:hover,
+SettingsWidget QPushButton#btnSIPDeletAccount:hover {
+ background-color: red;
+ color: white;
+}
+
+SettingsWidget QPushButton#btnDeletAccount:pressed,
+SettingsWidget QPushButton#btnSIPDeletAccount:pressed {
+ background-color: darkred;
+ color: white;
+}
+
+QListView .QLabel#labelDeviceId {
+ padding-left: 4px;
+ font-weight: 300;
+}
+
+QListView .QLabel#labelThisDevice {
+ margin-right: 16px;
+ font-style: italic;
+ color: green;
+}
+
+QListWidget .QLabel {
+ background-color: transparent;
+}
+
+QListWidget .QLineEdit {
+ background-color: transparent;
+}
+
+QListWidget .QPushButton {
+ background-color: transparent;
+}
+ QListWidget .QPushButton:hover {
+ background-color: transparent;
+ }
+ QListWidget .QPushButton:pressed {
+ background-color: transparent;
+ }
+
+QListView::item:selected {
+ background-color: rgb(220, 220, 220);
+}
+
+SettingsWidget QListView {
+ background-color: whitesmoke;
+ border: 1px solid rgb(212, 212, 212);
+ font-size: 16px;
+}
+
+SettingsWidget QListView::item {
+ height: 30px;
+ font: 30px;
+ padding: 8px;
+}
+
+SettingsWidget QListView::indicator {
+ height: 12 px;
+ width: 12 px;
+ border: 2px solid rgb(77, 77, 77);
+ border-radius: 4px;
+ background: none;
+}
+
+SettingsWidget QListView::indicator:checked {
+ border-color: #2b4b7e;
+ background: #2b4b7e;
+ image: url(":/images/icons/ic_check_white_18dp_2x.png");
+}
+
+SettingsWidget QListView::item:selected {
+ background-color: rgba(220, 220, 220, 255);
+ border: none;
+ color: black;
+}
+
+SettingsWidget QListView::item:hover {
+ background-color: rgba(229, 229, 229, 255);
+}
+
+SettingsWidget QListView::item:disabled {
+ background-color: transparent;
+}
+
+/* } SettingsWidget */
+
+QPushButton#panelButton_0, QPushButton#panelButton_1, QPushButton#panelButton_2,
+QPushButton#panelButton_3, QPushButton#panelButton_4, QPushButton#panelButton_5,
+QPushButton#panelButton_6, QPushButton#panelButton_7, QPushButton#panelButton_8,
+QPushButton#panelButton_9, QPushButton#panelButton_hash, QPushButton#panelButton_A,
+QPushButton#panelButton_B, QPushButton#panelButton_C, QPushButton#panelButton_D {
+ text-align: center;
+ text-decoration: none;
+ background: #369;
+ color: white;
+ border: 0;
+ border-radius: 19px;
+ padding-bottom: 4px;
+}
+
+QPushButton#panelButton_star {
+ text-align: center;
+ text-decoration: none;
+ background: #369;
+ color: white;
+ border: 0;
+ border-radius: 19px;
+ padding-top: 4px;
+}
+
+QPushButton#panelButton_0:hover, QPushButton#panelButton_1:hover, QPushButton#panelButton_2:hover,
+QPushButton#panelButton_3:hover, QPushButton#panelButton_4:hover, QPushButton#panelButton_5:hover,
+QPushButton#panelButton_6:hover, QPushButton#panelButton_7:hover, QPushButton#panelButton_8:hover,
+QPushButton#panelButton_9:hover, QPushButton#panelButton_hash:hover, QPushButton#panelButton_star:hover,
+QPushButton#panelButton_A:hover, QPushButton#panelButton_B:hover, QPushButton#panelButton_C:hover,
+QPushButton#panelButton_D:hover {
+ background: #47a;
+}
+
+QPushButton#panelButton_0:pressed, QPushButton#panelButton_1:pressed, QPushButton#panelButton_2:pressed,
+QPushButton#panelButton_3:pressed, QPushButton#panelButton_4:pressed, QPushButton#panelButton_5:pressed,
+QPushButton#panelButton_6:pressed, QPushButton#panelButton_7:pressed, QPushButton#panelButton_8:pressed,
+QPushButton#panelButton_9:pressed, QPushButton#panelButton_hash:pressed, QPushButton#panelButton_star:pressed,
+QPushButton#panelButton_A:pressed, QPushButton#panelButton_B:pressed, QPushButton#panelButton_C:pressed,
+QPushButton#panelButton_D:pressed {
+ background: #58b;
+}
+
+QProgressBar#audioInputMeter {
+ border: 0px solid #606060;
+ background: lightgrey;
+}
+
+ QProgressBar#audioInputMeter::chunk {
+ background-color: #0c79aa;
+ margin: 2px;
+ }
+
+QLabel#nameLabel {
+ font-size: 20px;
+ font-style: initial;
+ qproperty-alignment: AlignCenter;
+ color: white;
+}
+
+QWidget#videoPage {
+ background: black;
+}
+
+QPushButton#recordOverlayStartOrFinishRecordingBtn, QPushButton#recordOverlayDeleteBtn, QPushButton#recordOverlayPlayBtn, QPushButton#recordOverlayRerecordBtn, QPushButton#recordOverlaySendBtn,
+QPushButton#recordOverlayStopPlayingBtn {
+ background-color: transparent;
+ border-radius: 18px;
+ border: solid 1px;
+}
+
+QPushButton#recordOverlayStartOrFinishRecordingBtn:hover, QPushButton#recordOverlayDeleteBtn:hover, QPushButton#recordOverlayPlayBtn:hover, QPushButton#recordOverlayRerecordBtn:hover, QPushButton#recordOverlaySendBtn:hover,
+QPushButton#recordOverlayStopPlayingBtn:hover {
+ background-color: transparent;
+ border-radius: 18px;
+ border: solid 1px;
+}
+
+QPushButton#recordOverlayStartOrFinishRecordingBtn:pressed, QPushButton#recordOverlayDeleteBtn:pressed, QPushButton#recordOverlayPlayBtn:pressed, QPushButton#recordOverlayRerecordBtn:pressed, QPushButton#recordOverlaySendBtn:pressed,
+QPushButton#recordOverlayStopPlayingBtn:pressed {
+ background-color: transparent;
+ border-radius: 18px;
+ border: solid 1px;
+}
+
+QPushButton#recordOverlayStartOrFinishRecordingBtn:checked, QPushButton#recordOverlayDeleteBtn:checked, QPushButton#recordOverlayPlayBtn:checked, QPushButton#recordOverlayRerecordBtn:checked, QPushButton#recordOverlaySendBtn:checked,
+QPushButton#recordOverlayStopPlayingBtn:checked {
+ background-color: transparent;
+ border-radius: 18px;
+ border: solid 1px;
+}
+
+QWidget#RecordWidget {
+ background-color: transparent;
+}
+
+QLabel#timerLabel {
+ background-color: transparent;
+ color: white;
+}
+
+QProgressBar#levelMeter {
+ border: 2px solid white;
+ text-align: center;
+ background: transparent;
+}
+
+ QProgressBar#levelMeter::chunk {
+ background-color: white;
+ margin: 2px;
+ }
+
+QScrollArea#changeLogScrollArea {
+ background-color: transparent;
+ color: white;
+ border: none;
+}
+
+QWidget#changeLogContents {
+ background-color: transparent;
+ color: white;
+ border: none;
+}
+
+QTextEdit#logTextEdit {
+ background-color: white;
+ color: black;
+}
+
+QPushButton#logCloseButton {
+ background-color: rgb(189, 189, 189);
+}
+
+ QPushButton#logCloseButton:hover {
+ background-color: rgb(170, 170, 170);
+ }
+ QPushButton#logCloseButton:pressed {
+ background-color: rgb(180, 180, 180);
+ }
+
+FullScreenNotification {
+ font-size: 24px;
+ color: white;
+ background-color: black;
+ border: 2px solid white;
+ padding: 100px;
+}
\ No newline at end of file
diff --git a/translations/ring_client_windows.ts b/translations/ring_client_windows.ts
new file mode 100644
index 0000000..d6ca723
--- /dev/null
+++ b/translations/ring_client_windows.ts
@@ -0,0 +1,1591 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../aboutdialog.ui" line="435"/>
+ <location filename="../aboutdialog.ui" line="465"/>
+ <source>About</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="462"/>
+ <source>about button</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="478"/>
+ <source>credits button</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="481"/>
+ <source>Credits</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="547"/>
+ <source>Free as in Freedom</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="563"/>
+ <source>The Microsoft Windows client for Jami.
+Jami is a secured and distributed communication software.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="32"/>
+ <source>version</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="39"/>
+ <source>Created by:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="73"/>
+ <source>Artwork by:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="77"/>
+ <source>Based on the SFLPhone project</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>AccountItemDelegate</name>
+ <message>
+ <location filename="../accountitemdelegate.cpp" line="91"/>
+ <source>Add Account</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>AdvancedSIPSettingsWidget</name>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="55"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="102"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="130"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="191"/>
+ <source>Connectivity</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="281"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="293"/>
+ <source>Use STUN</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="317"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="329"/>
+ <source>Use TURN</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="359"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="391"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="423"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="464"/>
+ <source>Media</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="515"/>
+ <source>Enable Video</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="539"/>
+ <source>Video Codecs</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="692"/>
+ <source>Audio Codecs</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="142"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="151"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>AdvancedSettingsWidget</name>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="61"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="108"/>
+ <source>Allow Calls From Untrusted Peers</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="133"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="161"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="188"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="225"/>
+ <source>Name Server</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="275"/>
+ <source>Address</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="351"/>
+ <source>OpenDHT Configuration</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="398"/>
+ <source>Enable Proxy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="454"/>
+ <source>Bootstrap</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="530"/>
+ <source>Security</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="571"/>
+ <source>Private Key Password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="583"/>
+ <source>User Certificate</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="622"/>
+ <source>Private Key</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="634"/>
+ <source>CA Certificate</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="766"/>
+ <source>Connectivity</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="868"/>
+ <source>Use STUN</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="856"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="892"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="904"/>
+ <source>Use TURN</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="934"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="966"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="998"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1039"/>
+ <source>Media</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1090"/>
+ <source>Enable Video</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1267"/>
+ <source>Audio Codecs</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1114"/>
+ <source>Video Codecs</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="181"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>AnimatedOverlay</name>
+ <message>
+ <location filename="../animatedoverlay.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>BannedItemWidget</name>
+ <message>
+ <location filename="../banneditemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="80"/>
+ <source>name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="104"/>
+ <source>id</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>CallWidget</name>
+ <message>
+ <location filename="../callwidget.ui" line="184"/>
+ <source>Show conversations</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="187"/>
+ <source>Conversations</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="368"/>
+ <source>Search contact text input</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="653"/>
+ <source>Jami is free software for universal communication which respects the freedoms and privacy of its users.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="693"/>
+ <source>
+ This is your ID.
+Copy and share it with your friends!
+ </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="806"/>
+ <source>Show ring ID QR code</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="857"/>
+ <source>Share ring ID button</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="915"/>
+ <source>Double-click to copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="956"/>
+ <source>Error while generating QR Code</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1184"/>
+ <location filename="../callwidget.ui" line="1434"/>
+ <source>best name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1208"/>
+ <source>best Id</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1734"/>
+ <source>Back to homepage button</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1943"/>
+ <source>Add to contacts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="202"/>
+ <source>Show invites</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="205"/>
+ <source>Invites</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="377"/>
+ <location filename="../callwidget.cpp" line="552"/>
+ <source>Find a new or existing contact</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1444"/>
+ <source>Wants to talk to you!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1517"/>
+ <source>Answer incoming call button</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1589"/>
+ <source>Ignore incoming call button</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1539"/>
+ <source>Answer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1617"/>
+ <source>Ignore</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1280"/>
+ <source>Cancel outgoing call</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1305"/>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="332"/>
+ <source>Start video call</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="343"/>
+ <source>Start audio call</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="354"/>
+ <source>Clear conversation</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="361"/>
+ <source>Remove contact</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="373"/>
+ <source>Block contact</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="384"/>
+ <source>Copy number</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="561"/>
+ <source>Search your received invitations</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>Contact me on Jami</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>My Id is : </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="847"/>
+ <source>%1</source>
+ <comment>%1 is the contact username</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="852"/>
+ <source>%1</source>
+ <comment>%1 is the contact unique identifier</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="675"/>
+ <source>Call incoming from %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>DeleteAccountDialog</name>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="35"/>
+ <source>Account deletion</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="58"/>
+ <source>Do you really want to delete the following account?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="153"/>
+ <source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="235"/>
+ <source>Permanently delete account</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="241"/>
+ <source>Delete</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="278"/>
+ <source>Cancel account deletion</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="284"/>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>DeviceItemWidget</name>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="105"/>
+ <source>Device Id</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="143"/>
+ <source>this device</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>InviteButtonsWidget</name>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="83"/>
+ <source>Accept</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="131"/>
+ <source>Refuse</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="179"/>
+ <source>Block</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>LinkDeviceDialog</name>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="62"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="117"/>
+ <source>Password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="184"/>
+ <source>Ok</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="218"/>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="279"/>
+ <source>Exporting account</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="402"/>
+ <source>Your PIN is</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="432"/>
+ <source>PIN</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="477"/>
+ <source>This pin and the account password should be entered in your device within 10 minutes.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="553"/>
+ <source>Close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="34"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="96"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="110"/>
+ <source>Something went wrong.
+Please try again later.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="83"/>
+ <source>Settings</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="94"/>
+ <source>Exit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="111"/>
+ <source>About</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="435"/>
+ <source>Jami</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>NameRegistrationDialog</name>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="35"/>
+ <source>Set Registered Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="163"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="244"/>
+ <source>Password text input</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="250"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="256"/>
+ <source>Password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="323"/>
+ <source>Register</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="357"/>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="424"/>
+ <source>Registering Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="548"/>
+ <source>Something went wrong</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="618"/>
+ <source>Close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="82"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="85"/>
+ <source>Network error</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>NewWizardWidget</name>
+ <message>
+ <location filename="../newwizardwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="141"/>
+ <source>Welcome Label</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="147"/>
+ <source> Welcome to</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="185"/>
+ <source>Welcome Logo</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="239"/>
+ <source>Create Jami account button</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="245"/>
+ <source>Push button for Jami account creation start trigger</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="251"/>
+ <source>Create a Jami account</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="282"/>
+ <source>Link device button</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="288"/>
+ <source>Push button for device linkage start trigger</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="291"/>
+ <source>Link this device to an account</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="328"/>
+ <source>Create Jami SIP account button</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="334"/>
+ <source>Push button for Jami SIP account creation start trigger</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="340"/>
+ <source>Create a SIP account</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="405"/>
+ <source>Link this device to an existing account</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="469"/>
+ <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">To link this device to another account, you first </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">need to obtain a PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> code. To generate the PIN code:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Account management setting</span><span style=" font-size:14px;"> of a previous device</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choose the </span><span style=" font-size:14px; font-weight:600;">Jami account</span><span style=" font-size:14px;"> you want to use</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Devices</span><span style=" font-size:14px;"> tab</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Select </span><span style=" font-size:14px; font-weight:600;">Add a device</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">You will get the necessary PIN to complete this form. The PIN is only valid for </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutes</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="531"/>
+ <source>Enter your pin:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="599"/>
+ <source>Or import a file:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="626"/>
+ <source>Link from exported account archive file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="629"/>
+ <location filename="../newwizardwidget.cpp" line="83"/>
+ <location filename="../newwizardwidget.cpp" line="218"/>
+ <source>(None)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="705"/>
+ <source>Password:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="799"/>
+ <location filename="../newwizardwidget.ui" line="1586"/>
+ <source>Profile</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="953"/>
+ <location filename="../newwizardwidget.ui" line="1767"/>
+ <source>Profile name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1027"/>
+ <source>Account</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1136"/>
+ <source>Register your username.
+This will reserve the username so that only you can use it.
+Your friends will be able to call you with your usename
+instead of using your ID.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1142"/>
+ <source>Public username checkbox</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1145"/>
+ <source>Checkbox selecting if the user wants a public username</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1148"/>
+ <source>Register public username</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1367"/>
+ <source>Public username edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1373"/>
+ <source>Choose your username</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1289"/>
+ <source>Password text input</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1295"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1301"/>
+ <location filename="../newwizardwidget.ui" line="2213"/>
+ <source>Password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1211"/>
+ <location filename="../newwizardwidget.ui" line="1217"/>
+ <source>Password confirmation text input</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1223"/>
+ <source>Confirm password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1814"/>
+ <source>SIP Account</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1973"/>
+ <source>SIP Server edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1979"/>
+ <source>Server</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2045"/>
+ <source>SIP proxy input</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2051"/>
+ <source>SIP proxy text entry</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2057"/>
+ <source>Proxy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2123"/>
+ <source>SIP username input</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2129"/>
+ <source>SIP Password text entry</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2135"/>
+ <source>Username</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2201"/>
+ <location filename="../newwizardwidget.ui" line="2207"/>
+ <source>SIP Password text input</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message utf8="true">
+ <location filename="../newwizardwidget.ui" line="2282"/>
+ <source>Generating your Jami account…</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2356"/>
+ <source>Previous page button</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2362"/>
+ <source>push button to access previous page of wizard</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2365"/>
+ <source>Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2396"/>
+ <source>Cancel account create/link</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2402"/>
+ <source>push button to cancel account creation or linking</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2405"/>
+ <source>Back</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2442"/>
+ <source>Next page Button</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2448"/>
+ <source>Push button to access next page of wizard</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2451"/>
+ <source>Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="75"/>
+ <source>Open File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="77"/>
+ <source>Jami archive files (*.gz); All files (*)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="123"/>
+ <source>Your account needs to be migrated. Enter your password.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="419"/>
+ <source>Migrating your Jami account...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="412"/>
+ <source>Importing account archive...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="404"/>
+ <source>Generating your Jami account...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="422"/>
+ <source>Generating your SIP account...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="533"/>
+ <source>Error creating account</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>PasswordDialog</name>
+ <message>
+ <location filename="../passworddialog.ui" line="32"/>
+ <source>Change Account Password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="97"/>
+ <source>Enter Current Password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="169"/>
+ <source>Enter New Password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="190"/>
+ <source>Confirm New Password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="247"/>
+ <source>Confirm</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="290"/>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="143"/>
+ <source>Current Password Incorrect</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>PhotoBoothDialog</name>
+ <message>
+ <location filename="../photoboothdialog.ui" line="14"/>
+ <source>Photobooth</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>PhotoboothWidget</name>
+ <message>
+ <location filename="../photoboothwidget.ui" line="20"/>
+ <source>Form</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.ui" line="120"/>
+ <source>Photobooth display</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="92"/>
+ <source>Choose File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="94"/>
+ <source>Image Files (*.jpg *.jpeg *.png)</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>PrivateBridging</name>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Choose File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Files (*)</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../utils.cpp" line="183"/>
+ <source>No default mail client found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="43"/>
+ <location filename="../deviceitemwidget.cpp" line="85"/>
+ <source>Edit Device Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="44"/>
+ <source>Unlink Device From Account</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="80"/>
+ <source>Save new device name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.cpp" line="39"/>
+ <source>Add as contact</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>RingButton</name>
+ <message>
+ <location filename="../ringbutton.ui" line="140"/>
+ <source>Select folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <location filename="../settingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="141"/>
+ <source>Settings</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="229"/>
+ <source>Account</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="267"/>
+ <location filename="../settingswidget.ui" line="503"/>
+ <source>General</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="305"/>
+ <location filename="../settingswidget.ui" line="3416"/>
+ <source>Audio / Video</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="542"/>
+ <source>System</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="610"/>
+ <source>Enable desktop notifications</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="653"/>
+ <source>Keep minimized on close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="678"/>
+ <source>Download folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="811"/>
+ <source>Save in</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="904"/>
+ <source>Always Recording</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="943"/>
+ <source>Updates</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1008"/>
+ <source>Check for updates automatically every</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1032"/>
+ <source>Interval between update checks in days selector</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1038"/>
+ <source> days</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1081"/>
+ <source>Check for updates now button</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1084"/>
+ <source>Check for updates now</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3027"/>
+ <source>Password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1418"/>
+ <location filename="../settingswidget.ui" line="2729"/>
+ <source>Enable</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="607"/>
+ <source>toggle enable notifications</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="650"/>
+ <source>Toggle keep minimized on close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="764"/>
+ <source>Call Recordings</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1005"/>
+ <source>Toggle automatic updates</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1231"/>
+ <source>Jami Account</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1453"/>
+ <location filename="../settingswidget.ui" line="2761"/>
+ <source>Profile</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1567"/>
+ <location filename="../settingswidget.ui" line="2875"/>
+ <source>Identity</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1614"/>
+ <source>Id</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1673"/>
+ <source>Registered name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1721"/>
+ <source>Type here to register a username</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1755"/>
+ <source>Register</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1827"/>
+ <source>Change Password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1868"/>
+ <source>Export Account</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1909"/>
+ <location filename="../settingswidget.ui" line="3089"/>
+ <source>Delete Account</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1973"/>
+ <source>Linked Devices</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2078"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2142"/>
+ <source>Banned Contacts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3788"/>
+ <source>Format</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3831"/>
+ <source>Video device framerate selector</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3967"/>
+ <source>Preview unavailable</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2359"/>
+ <location filename="../settingswidget.ui" line="3187"/>
+ <source>Advanced Account Settings</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2554"/>
+ <source>SIP Account</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2925"/>
+ <source>Username</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2958"/>
+ <source>Hostname</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2991"/>
+ <source>Proxy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3461"/>
+ <source>Audio</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3511"/>
+ <source>Microphone</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3551"/>
+ <source>Audio input device selector</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3585"/>
+ <source>Output Device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3625"/>
+ <source>Choose the output device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3682"/>
+ <source>Video</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3720"/>
+ <source>Device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3766"/>
+ <source>Video device selector</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="459"/>
+ <source>A registered name should not have any spaces and must be at least three letters long</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="466"/>
+ <source>This name is already taken</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="92"/>
+ <location filename="../settingswidget.cpp" line="110"/>
+ <source>Enter an alias</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="473"/>
+ <source>Register this name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="550"/>
+ <source>Remove Device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="551"/>
+ <source>Enter this account's password to confirm the removal of this device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="558"/>
+ <source>Are you sure you wish to remove this device?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="589"/>
+ <source>Export Account Here</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="887"/>
+ <source>Select A Folder For Your Downloads</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="904"/>
+ <source>Select A Folder For Your Recordings</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>VideoOverlay</name>
+ <message>
+ <location filename="../videooverlay.ui" line="419"/>
+ <source>Call on Hold</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="89"/>
+ <source>Hold / Unhold</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="124"/>
+ <source>Chat</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="162"/>
+ <source>Mute Mic</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="244"/>
+ <source>Record call</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="325"/>
+ <source>Name label</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="390"/>
+ <source>Time elapsed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="393"/>
+ <source>00:00</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="57"/>
+ <source>Hangup</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="203"/>
+ <source>Mute Video</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>VideoView</name>
+ <message>
+ <location filename="../videoview.cpp" line="271"/>
+ <source>Share entire screen</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="274"/>
+ <source>Share screen area</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="281"/>
+ <source>Share file</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/translations/ring_client_windows_ar.ts b/translations/ring_client_windows_ar.ts
new file mode 100644
index 0000000..c30e963
--- /dev/null
+++ b/translations/ring_client_windows_ar.ts
@@ -0,0 +1,1589 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="ar" version="2.0">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../aboutdialog.ui" line="435"/>
+ <location filename="../aboutdialog.ui" line="465"/>
+ <source>About</source>
+ <translation>عن RING</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="462"/>
+ <source>about button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="478"/>
+ <source>credits button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="481"/>
+ <source>Credits</source>
+ <translation>الأطراف المصممة</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="547"/>
+ <source>Free as in Freedom</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="563"/>
+ <source>The Microsoft Windows client for Jami.
+Jami is a secured and distributed communication software.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="32"/>
+ <source>version</source>
+ <translation>الإصدار</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="39"/>
+ <source>Created by:</source>
+ <translation>أحدثه:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="73"/>
+ <source>Artwork by:</source>
+ <translation>مصمم العمل الفني:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="77"/>
+ <source>Based on the SFLPhone project</source>
+ <translation>يستند على مشروع SFLPhone</translation>
+ </message>
+</context>
+<context>
+ <name>AccountItemDelegate</name>
+ <message>
+ <location filename="../accountitemdelegate.cpp" line="91"/>
+ <source>Add Account</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSIPSettingsWidget</name>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>استمارة</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="55"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="102"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="130"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="191"/>
+ <source>Connectivity</source>
+ <translation>الاتصال</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="281"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="293"/>
+ <source>Use STUN</source>
+ <translation>إستعمل STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="317"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="329"/>
+ <source>Use TURN</source>
+ <translation>إستعمل TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="359"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="391"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="423"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="464"/>
+ <source>Media</source>
+ <translation>ميديا</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="515"/>
+ <source>Enable Video</source>
+ <translation>فعل الفيديو</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="539"/>
+ <source>Video Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="692"/>
+ <source>Audio Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="142"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="151"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSettingsWidget</name>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>استمارة</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="61"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="108"/>
+ <source>Allow Calls From Untrusted Peers</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="133"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="161"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="188"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="225"/>
+ <source>Name Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="275"/>
+ <source>Address</source>
+ <translation>العنوان</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="351"/>
+ <source>OpenDHT Configuration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="398"/>
+ <source>Enable Proxy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="454"/>
+ <source>Bootstrap</source>
+ <translation>تشغيل ذاتي</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="530"/>
+ <source>Security</source>
+ <translation>تأمين</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="571"/>
+ <source>Private Key Password</source>
+ <translation>كلمة سر المفتاح الخاص</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="583"/>
+ <source>User Certificate</source>
+ <translation>شهادة المستخدم</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="622"/>
+ <source>Private Key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="634"/>
+ <source>CA Certificate</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="766"/>
+ <source>Connectivity</source>
+ <translation>الاتصال</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="868"/>
+ <source>Use STUN</source>
+ <translation>إستعمل STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="856"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="892"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="904"/>
+ <source>Use TURN</source>
+ <translation>إستعمل TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="934"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="966"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="998"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1039"/>
+ <source>Media</source>
+ <translation>ميديا</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1090"/>
+ <source>Enable Video</source>
+ <translation>فعل الفيديو</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1267"/>
+ <source>Audio Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1114"/>
+ <source>Video Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="181"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AnimatedOverlay</name>
+ <message>
+ <location filename="../animatedoverlay.ui" line="14"/>
+ <source>Form</source>
+ <translation>استمارة</translation>
+ </message>
+</context>
+<context>
+ <name>BannedItemWidget</name>
+ <message>
+ <location filename="../banneditemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>استمارة</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="80"/>
+ <source>name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="104"/>
+ <source>id</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>CallWidget</name>
+ <message>
+ <location filename="../callwidget.ui" line="184"/>
+ <source>Show conversations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="187"/>
+ <source>Conversations</source>
+ <translation>محادثات</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="368"/>
+ <source>Search contact text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="653"/>
+ <source>Jami is free software for universal communication which respects the freedoms and privacy of its users.</source>
+ <translation>جامي هو برنامج حر للتواصل العالمي الذي يحترم حريات و خصوصيات مستخدميه.</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="693"/>
+ <source>
+ This is your ID.
+Copy and share it with your friends!
+ </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="806"/>
+ <source>Show ring ID QR code</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="857"/>
+ <source>Share ring ID button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="915"/>
+ <source>Double-click to copy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="956"/>
+ <source>Error while generating QR Code</source>
+ <translation>خطأ عند محاولة تولد الرمز الشريطي</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1184"/>
+ <location filename="../callwidget.ui" line="1434"/>
+ <source>best name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1208"/>
+ <source>best Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1734"/>
+ <source>Back to homepage button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1943"/>
+ <source>Add to contacts</source>
+ <translation>أضف إلى الاتصالات المعروفة</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="202"/>
+ <source>Show invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="205"/>
+ <source>Invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="377"/>
+ <location filename="../callwidget.cpp" line="552"/>
+ <source>Find a new or existing contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1444"/>
+ <source>Wants to talk to you!</source>
+ <translation>يريد التحدث إليك!</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1517"/>
+ <source>Answer incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1589"/>
+ <source>Ignore incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1539"/>
+ <source>Answer</source>
+ <translation>أجب</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1617"/>
+ <source>Ignore</source>
+ <translation>تجاهل</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1280"/>
+ <source>Cancel outgoing call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1305"/>
+ <source>Cancel</source>
+ <translation>ألغِ</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="332"/>
+ <source>Start video call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="343"/>
+ <source>Start audio call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="354"/>
+ <source>Clear conversation</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="361"/>
+ <source>Remove contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="373"/>
+ <source>Block contact</source>
+ <translation>حظر جهة إتصال</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="384"/>
+ <source>Copy number</source>
+ <translation>نسخ الرقم</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="561"/>
+ <source>Search your received invitations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>Contact me on Jami</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>My Id is : </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="847"/>
+ <source>%1</source>
+ <comment>%1 is the contact username</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="852"/>
+ <source>%1</source>
+ <comment>%1 is the contact unique identifier</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="675"/>
+ <source>Call incoming from %1</source>
+ <translation>مكالمة قادمة من %1</translation>
+ </message>
+</context>
+<context>
+ <name>DeleteAccountDialog</name>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="35"/>
+ <source>Account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="58"/>
+ <source>Do you really want to delete the following account?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="153"/>
+ <source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="235"/>
+ <source>Permanently delete account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="241"/>
+ <source>Delete</source>
+ <translation>إحذف</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="278"/>
+ <source>Cancel account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="284"/>
+ <source>Cancel</source>
+ <translation>ألغِ</translation>
+ </message>
+</context>
+<context>
+ <name>DeviceItemWidget</name>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>استمارة</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="105"/>
+ <source>Device Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="143"/>
+ <source>this device</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>InviteButtonsWidget</name>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="83"/>
+ <source>Accept</source>
+ <translation>اقبل</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="131"/>
+ <source>Refuse</source>
+ <translation>أرفض</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="179"/>
+ <source>Block</source>
+ <translation>حظر</translation>
+ </message>
+</context>
+<context>
+ <name>LinkDeviceDialog</name>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation>الحوار</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="62"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="117"/>
+ <source>Password</source>
+ <translation>كلمة السر</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="184"/>
+ <source>Ok</source>
+ <translation>موافق</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="218"/>
+ <source>Cancel</source>
+ <translation>ألغِ</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="279"/>
+ <source>Exporting account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="402"/>
+ <source>Your PIN is</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="432"/>
+ <source>PIN</source>
+ <translation>رمز الأمان</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="477"/>
+ <source>This pin and the account password should be entered in your device within 10 minutes.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="553"/>
+ <source>Close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="34"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="96"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="110"/>
+ <source>Something went wrong.
+Please try again later.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="83"/>
+ <source>Settings</source>
+ <translation>إعدادات</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="94"/>
+ <source>Exit</source>
+ <translation>غادر</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="111"/>
+ <source>About</source>
+ <translation>عن RING</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="435"/>
+ <source>Jami</source>
+ <translation>جامي</translation>
+ </message>
+</context>
+<context>
+ <name>NameRegistrationDialog</name>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="35"/>
+ <source>Set Registered Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="163"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="244"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="250"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="256"/>
+ <source>Password</source>
+ <translation>كلمة السر</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="323"/>
+ <source>Register</source>
+ <translation>سجل</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="357"/>
+ <source>Cancel</source>
+ <translation>ألغِ</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="424"/>
+ <source>Registering Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="548"/>
+ <source>Something went wrong</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="618"/>
+ <source>Close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="82"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="85"/>
+ <source>Network error</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>NewWizardWidget</name>
+ <message>
+ <location filename="../newwizardwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>استمارة</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="141"/>
+ <source>Welcome Label</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="147"/>
+ <source> Welcome to</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="185"/>
+ <source>Welcome Logo</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="239"/>
+ <source>Create Jami account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="245"/>
+ <source>Push button for Jami account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="251"/>
+ <source>Create a Jami account</source>
+ <translation>كوّن حساب جامي</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="282"/>
+ <source>Link device button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="288"/>
+ <source>Push button for device linkage start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="291"/>
+ <source>Link this device to an account</source>
+ <translation>اربط هذا الجهاز مع حساب</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="328"/>
+ <source>Create Jami SIP account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="334"/>
+ <source>Push button for Jami SIP account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="340"/>
+ <source>Create a SIP account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="405"/>
+ <source>Link this device to an existing account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="469"/>
+ <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">To link this device to another account, you first </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">need to obtain a PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> code. To generate the PIN code:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Account management setting</span><span style=" font-size:14px;"> of a previous device</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choose the </span><span style=" font-size:14px; font-weight:600;">Jami account</span><span style=" font-size:14px;"> you want to use</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Devices</span><span style=" font-size:14px;"> tab</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Select </span><span style=" font-size:14px; font-weight:600;">Add a device</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">You will get the necessary PIN to complete this form. The PIN is only valid for </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutes</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="531"/>
+ <source>Enter your pin:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="599"/>
+ <source>Or import a file:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="626"/>
+ <source>Link from exported account archive file</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="629"/>
+ <location filename="../newwizardwidget.cpp" line="83"/>
+ <location filename="../newwizardwidget.cpp" line="218"/>
+ <source>(None)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="705"/>
+ <source>Password:</source>
+ <translation>كلمة السر:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="799"/>
+ <location filename="../newwizardwidget.ui" line="1586"/>
+ <source>Profile</source>
+ <translation>خذ لمحة</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="953"/>
+ <location filename="../newwizardwidget.ui" line="1767"/>
+ <source>Profile name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1027"/>
+ <source>Account</source>
+ <translation>حساب</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1136"/>
+ <source>Register your username.
+This will reserve the username so that only you can use it.
+Your friends will be able to call you with your usename
+instead of using your ID.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1142"/>
+ <source>Public username checkbox</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1145"/>
+ <source>Checkbox selecting if the user wants a public username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1148"/>
+ <source>Register public username</source>
+ <translation>سجل اسم المستخدم العام</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1367"/>
+ <source>Public username edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1373"/>
+ <source>Choose your username</source>
+ <translation>اختر اسم مستخدمك</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1289"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1295"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1301"/>
+ <location filename="../newwizardwidget.ui" line="2213"/>
+ <source>Password</source>
+ <translation>كلمة السر</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1211"/>
+ <location filename="../newwizardwidget.ui" line="1217"/>
+ <source>Password confirmation text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1223"/>
+ <source>Confirm password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1814"/>
+ <source>SIP Account</source>
+ <translation>حساب SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1973"/>
+ <source>SIP Server edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1979"/>
+ <source>Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2045"/>
+ <source>SIP proxy input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2051"/>
+ <source>SIP proxy text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2057"/>
+ <source>Proxy</source>
+ <translation>الوكيل</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2123"/>
+ <source>SIP username input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2129"/>
+ <source>SIP Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2135"/>
+ <source>Username</source>
+ <translation>اسم المستخدم</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2201"/>
+ <location filename="../newwizardwidget.ui" line="2207"/>
+ <source>SIP Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message utf8="true">
+ <location filename="../newwizardwidget.ui" line="2282"/>
+ <source>Generating your Jami account…</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2356"/>
+ <source>Previous page button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2362"/>
+ <source>push button to access previous page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2365"/>
+ <source>Previous</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2396"/>
+ <source>Cancel account create/link</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2402"/>
+ <source>push button to cancel account creation or linking</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2405"/>
+ <source>Back</source>
+ <translation>السابق</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2442"/>
+ <source>Next page Button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2448"/>
+ <source>Push button to access next page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2451"/>
+ <source>Next</source>
+ <translation>التالي</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="75"/>
+ <source>Open File</source>
+ <translation>فتح ملف</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="77"/>
+ <source>Jami archive files (*.gz); All files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="123"/>
+ <source>Your account needs to be migrated. Enter your password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="419"/>
+ <source>Migrating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="412"/>
+ <source>Importing account archive...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="404"/>
+ <source>Generating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="422"/>
+ <source>Generating your SIP account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="533"/>
+ <source>Error creating account</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PasswordDialog</name>
+ <message>
+ <location filename="../passworddialog.ui" line="32"/>
+ <source>Change Account Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="97"/>
+ <source>Enter Current Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="169"/>
+ <source>Enter New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="190"/>
+ <source>Confirm New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="247"/>
+ <source>Confirm</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="290"/>
+ <source>Cancel</source>
+ <translation>ألغِ</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="143"/>
+ <source>Current Password Incorrect</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PhotoBoothDialog</name>
+ <message>
+ <location filename="../photoboothdialog.ui" line="14"/>
+ <source>Photobooth</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PhotoboothWidget</name>
+ <message>
+ <location filename="../photoboothwidget.ui" line="20"/>
+ <source>Form</source>
+ <translation>استمارة</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.ui" line="120"/>
+ <source>Photobooth display</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="92"/>
+ <source>Choose File</source>
+ <translation>إختار ملف</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="94"/>
+ <source>Image Files (*.jpg *.jpeg *.png)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PrivateBridging</name>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Choose File</source>
+ <translation>إختار ملف</translation>
+ </message>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Files (*)</source>
+ <translation>وثائق (*)</translation>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../utils.cpp" line="183"/>
+ <source>No default mail client found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="43"/>
+ <location filename="../deviceitemwidget.cpp" line="85"/>
+ <source>Edit Device Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="44"/>
+ <source>Unlink Device From Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="80"/>
+ <source>Save new device name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.cpp" line="39"/>
+ <source>Add as contact</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>RingButton</name>
+ <message>
+ <location filename="../ringbutton.ui" line="140"/>
+ <source>Select folder</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <location filename="../settingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>استمارة</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="141"/>
+ <source>Settings</source>
+ <translation>إعدادات</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="229"/>
+ <source>Account</source>
+ <translation>حساب</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="267"/>
+ <location filename="../settingswidget.ui" line="503"/>
+ <source>General</source>
+ <translation>عام</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="305"/>
+ <location filename="../settingswidget.ui" line="3416"/>
+ <source>Audio / Video</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="542"/>
+ <source>System</source>
+ <translation>النظام</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="610"/>
+ <source>Enable desktop notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="653"/>
+ <source>Keep minimized on close</source>
+ <translation>أبقي مصغر عند الغلق</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="678"/>
+ <source>Download folder</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="811"/>
+ <source>Save in</source>
+ <translation>سجل في</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="904"/>
+ <source>Always Recording</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="943"/>
+ <source>Updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1008"/>
+ <source>Check for updates automatically every</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1032"/>
+ <source>Interval between update checks in days selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1038"/>
+ <source> days</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1081"/>
+ <source>Check for updates now button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1084"/>
+ <source>Check for updates now</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3027"/>
+ <source>Password</source>
+ <translation>كلمة السر</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1418"/>
+ <location filename="../settingswidget.ui" line="2729"/>
+ <source>Enable</source>
+ <translation>تفعيل</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="607"/>
+ <source>toggle enable notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="650"/>
+ <source>Toggle keep minimized on close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="764"/>
+ <source>Call Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1005"/>
+ <source>Toggle automatic updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1231"/>
+ <source>Jami Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1453"/>
+ <location filename="../settingswidget.ui" line="2761"/>
+ <source>Profile</source>
+ <translation>خذ لمحة</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1567"/>
+ <location filename="../settingswidget.ui" line="2875"/>
+ <source>Identity</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1614"/>
+ <source>Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1673"/>
+ <source>Registered name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1721"/>
+ <source>Type here to register a username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1755"/>
+ <source>Register</source>
+ <translation>سجل</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1827"/>
+ <source>Change Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1868"/>
+ <source>Export Account</source>
+ <translation>تصدير الحساب</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1909"/>
+ <location filename="../settingswidget.ui" line="3089"/>
+ <source>Delete Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1973"/>
+ <source>Linked Devices</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2078"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2142"/>
+ <source>Banned Contacts</source>
+ <translation>جهات الاتصال المحظورة</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3788"/>
+ <source>Format</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3831"/>
+ <source>Video device framerate selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3967"/>
+ <source>Preview unavailable</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2359"/>
+ <location filename="../settingswidget.ui" line="3187"/>
+ <source>Advanced Account Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2554"/>
+ <source>SIP Account</source>
+ <translation>حساب SIP</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2925"/>
+ <source>Username</source>
+ <translation>اسم المستخدم</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2958"/>
+ <source>Hostname</source>
+ <translation>اسم المضيف</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2991"/>
+ <source>Proxy</source>
+ <translation>الوكيل</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3461"/>
+ <source>Audio</source>
+ <translation>صوت</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3511"/>
+ <source>Microphone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3551"/>
+ <source>Audio input device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3585"/>
+ <source>Output Device</source>
+ <translation>جهاز الإخراج</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3625"/>
+ <source>Choose the output device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3682"/>
+ <source>Video</source>
+ <translation>فيديو</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3720"/>
+ <source>Device</source>
+ <translation>جهاز</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3766"/>
+ <source>Video device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="459"/>
+ <source>A registered name should not have any spaces and must be at least three letters long</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="466"/>
+ <source>This name is already taken</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="92"/>
+ <location filename="../settingswidget.cpp" line="110"/>
+ <source>Enter an alias</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="473"/>
+ <source>Register this name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="550"/>
+ <source>Remove Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="551"/>
+ <source>Enter this account's password to confirm the removal of this device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="558"/>
+ <source>Are you sure you wish to remove this device?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="589"/>
+ <source>Export Account Here</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="887"/>
+ <source>Select A Folder For Your Downloads</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="904"/>
+ <source>Select A Folder For Your Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>VideoOverlay</name>
+ <message>
+ <location filename="../videooverlay.ui" line="419"/>
+ <source>Call on Hold</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="89"/>
+ <source>Hold / Unhold</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="124"/>
+ <source>Chat</source>
+ <translation>دردشة</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="162"/>
+ <source>Mute Mic</source>
+ <translation>كتم اللاقط</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="244"/>
+ <source>Record call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="325"/>
+ <source>Name label</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="390"/>
+ <source>Time elapsed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="393"/>
+ <source>00:00</source>
+ <translation>00:00</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="57"/>
+ <source>Hangup</source>
+ <translation>أنهي المحادثة</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="203"/>
+ <source>Mute Video</source>
+ <translation>أبكم الفيديو</translation>
+ </message>
+</context>
+<context>
+ <name>VideoView</name>
+ <message>
+ <location filename="../videoview.cpp" line="271"/>
+ <source>Share entire screen</source>
+ <translation>تقاسم كل الشاشة</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="274"/>
+ <source>Share screen area</source>
+ <translation>تقاسم منطقة من الشاشة</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="281"/>
+ <source>Share file</source>
+ <translation>تقاسم الوثيقة</translation>
+ </message>
+</context>
+</TS>
\ No newline at end of file
diff --git a/translations/ring_client_windows_bg.ts b/translations/ring_client_windows_bg.ts
new file mode 100644
index 0000000..78ca4e3
--- /dev/null
+++ b/translations/ring_client_windows_bg.ts
@@ -0,0 +1,1589 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="bg" version="2.0">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../aboutdialog.ui" line="435"/>
+ <location filename="../aboutdialog.ui" line="465"/>
+ <source>About</source>
+ <translation>Относно</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="462"/>
+ <source>about button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="478"/>
+ <source>credits button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="481"/>
+ <source>Credits</source>
+ <translation>Заслуги</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="547"/>
+ <source>Free as in Freedom</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="563"/>
+ <source>The Microsoft Windows client for Jami.
+Jami is a secured and distributed communication software.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="32"/>
+ <source>version</source>
+ <translation>версия</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="39"/>
+ <source>Created by:</source>
+ <translation>Създаден от:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="73"/>
+ <source>Artwork by:</source>
+ <translation>С изображения от:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="77"/>
+ <source>Based on the SFLPhone project</source>
+ <translation>Основан на проекта „SFLPhone“</translation>
+ </message>
+</context>
+<context>
+ <name>AccountItemDelegate</name>
+ <message>
+ <location filename="../accountitemdelegate.cpp" line="91"/>
+ <source>Add Account</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSIPSettingsWidget</name>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>От</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="55"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="102"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="130"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="191"/>
+ <source>Connectivity</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="281"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="293"/>
+ <source>Use STUN</source>
+ <translation>Използване на STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="317"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="329"/>
+ <source>Use TURN</source>
+ <translation>Използване на TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="359"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="391"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="423"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="464"/>
+ <source>Media</source>
+ <translation>Звук и видео</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="515"/>
+ <source>Enable Video</source>
+ <translation>Активиране на видео</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="539"/>
+ <source>Video Codecs</source>
+ <translation>Видео кодеци</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="692"/>
+ <source>Audio Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="142"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="151"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSettingsWidget</name>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>От</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="61"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="108"/>
+ <source>Allow Calls From Untrusted Peers</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="133"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="161"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="188"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="225"/>
+ <source>Name Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="275"/>
+ <source>Address</source>
+ <translation>Адрес</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="351"/>
+ <source>OpenDHT Configuration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="398"/>
+ <source>Enable Proxy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="454"/>
+ <source>Bootstrap</source>
+ <translation>Начална установка</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="530"/>
+ <source>Security</source>
+ <translation>Сигурност</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="571"/>
+ <source>Private Key Password</source>
+ <translation>Парола за частен ключ</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="583"/>
+ <source>User Certificate</source>
+ <translation>Потребителски сертификат</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="622"/>
+ <source>Private Key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="634"/>
+ <source>CA Certificate</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="766"/>
+ <source>Connectivity</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="868"/>
+ <source>Use STUN</source>
+ <translation>Използване на STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="856"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="892"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="904"/>
+ <source>Use TURN</source>
+ <translation>Използване на TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="934"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="966"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="998"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1039"/>
+ <source>Media</source>
+ <translation>Звук и видео</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1090"/>
+ <source>Enable Video</source>
+ <translation>Активиране на видео</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1267"/>
+ <source>Audio Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1114"/>
+ <source>Video Codecs</source>
+ <translation>Видео кодеци</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="181"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AnimatedOverlay</name>
+ <message>
+ <location filename="../animatedoverlay.ui" line="14"/>
+ <source>Form</source>
+ <translation>От</translation>
+ </message>
+</context>
+<context>
+ <name>BannedItemWidget</name>
+ <message>
+ <location filename="../banneditemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>От</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="80"/>
+ <source>name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="104"/>
+ <source>id</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>CallWidget</name>
+ <message>
+ <location filename="../callwidget.ui" line="184"/>
+ <source>Show conversations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="187"/>
+ <source>Conversations</source>
+ <translation>Разговори</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="368"/>
+ <source>Search contact text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="653"/>
+ <source>Jami is free software for universal communication which respects the freedoms and privacy of its users.</source>
+ <translation>Ring е безплатен софтуер за универсална комуникация, който уважава свободата и личните данни на потребителите си.</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="693"/>
+ <source>
+ This is your ID.
+Copy and share it with your friends!
+ </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="806"/>
+ <source>Show ring ID QR code</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="857"/>
+ <source>Share ring ID button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="915"/>
+ <source>Double-click to copy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="956"/>
+ <source>Error while generating QR Code</source>
+ <translation>Грешка при създаването на QR-код</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1184"/>
+ <location filename="../callwidget.ui" line="1434"/>
+ <source>best name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1208"/>
+ <source>best Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1734"/>
+ <source>Back to homepage button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1943"/>
+ <source>Add to contacts</source>
+ <translation>Добавяне към контактите</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="202"/>
+ <source>Show invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="205"/>
+ <source>Invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="377"/>
+ <location filename="../callwidget.cpp" line="552"/>
+ <source>Find a new or existing contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1444"/>
+ <source>Wants to talk to you!</source>
+ <translation>Желае да говори с Вас!</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1517"/>
+ <source>Answer incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1589"/>
+ <source>Ignore incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1539"/>
+ <source>Answer</source>
+ <translation>Отговор</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1617"/>
+ <source>Ignore</source>
+ <translation>Игнориране</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1280"/>
+ <source>Cancel outgoing call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1305"/>
+ <source>Cancel</source>
+ <translation>Отказ</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="332"/>
+ <source>Start video call</source>
+ <translation>Започване на видео разговор</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="343"/>
+ <source>Start audio call</source>
+ <translation>Започване на гласов разговор</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="354"/>
+ <source>Clear conversation</source>
+ <translation>Изчистване на разговора</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="361"/>
+ <source>Remove contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="373"/>
+ <source>Block contact</source>
+ <translation>Блокиране на контакт</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="384"/>
+ <source>Copy number</source>
+ <translation>Копиране на номера</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="561"/>
+ <source>Search your received invitations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>Contact me on Jami</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>My Id is : </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="847"/>
+ <source>%1</source>
+ <comment>%1 is the contact username</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="852"/>
+ <source>%1</source>
+ <comment>%1 is the contact unique identifier</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="675"/>
+ <source>Call incoming from %1</source>
+ <translation>Входящо повикване от %1</translation>
+ </message>
+</context>
+<context>
+ <name>DeleteAccountDialog</name>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="35"/>
+ <source>Account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="58"/>
+ <source>Do you really want to delete the following account?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="153"/>
+ <source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="235"/>
+ <source>Permanently delete account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="241"/>
+ <source>Delete</source>
+ <translation>Изтриване</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="278"/>
+ <source>Cancel account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="284"/>
+ <source>Cancel</source>
+ <translation>Отказ</translation>
+ </message>
+</context>
+<context>
+ <name>DeviceItemWidget</name>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>От</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="105"/>
+ <source>Device Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="143"/>
+ <source>this device</source>
+ <translation>това устройство</translation>
+ </message>
+</context>
+<context>
+ <name>InviteButtonsWidget</name>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="83"/>
+ <source>Accept</source>
+ <translation>Приемане</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="131"/>
+ <source>Refuse</source>
+ <translation>Отказ</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="179"/>
+ <source>Block</source>
+ <translation>Блокиране</translation>
+ </message>
+</context>
+<context>
+ <name>LinkDeviceDialog</name>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation>Прозорец</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="62"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="117"/>
+ <source>Password</source>
+ <translation>Парола</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="184"/>
+ <source>Ok</source>
+ <translation>Добре</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="218"/>
+ <source>Cancel</source>
+ <translation>Отказ</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="279"/>
+ <source>Exporting account</source>
+ <translation>Изнасяне на акаунта</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="402"/>
+ <source>Your PIN is</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="432"/>
+ <source>PIN</source>
+ <translation>ПИН</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="477"/>
+ <source>This pin and the account password should be entered in your device within 10 minutes.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="553"/>
+ <source>Close</source>
+ <translation>Затваряне</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="34"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="96"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="110"/>
+ <source>Something went wrong.
+Please try again later.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="83"/>
+ <source>Settings</source>
+ <translation>Настройки</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="94"/>
+ <source>Exit</source>
+ <translation>Изход</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="111"/>
+ <source>About</source>
+ <translation>Относно</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="435"/>
+ <source>Jami</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>NameRegistrationDialog</name>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="35"/>
+ <source>Set Registered Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="163"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="244"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="250"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="256"/>
+ <source>Password</source>
+ <translation>Парола</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="323"/>
+ <source>Register</source>
+ <translation>Регистриране</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="357"/>
+ <source>Cancel</source>
+ <translation>Отказ</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="424"/>
+ <source>Registering Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="548"/>
+ <source>Something went wrong</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="618"/>
+ <source>Close</source>
+ <translation>Затваряне</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="82"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="85"/>
+ <source>Network error</source>
+ <translation>Мрежова грешка</translation>
+ </message>
+</context>
+<context>
+ <name>NewWizardWidget</name>
+ <message>
+ <location filename="../newwizardwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>От</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="141"/>
+ <source>Welcome Label</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="147"/>
+ <source> Welcome to</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="185"/>
+ <source>Welcome Logo</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="239"/>
+ <source>Create Jami account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="245"/>
+ <source>Push button for Jami account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="251"/>
+ <source>Create a Jami account</source>
+ <translation>Създаване на профил в Jami</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="282"/>
+ <source>Link device button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="288"/>
+ <source>Push button for device linkage start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="291"/>
+ <source>Link this device to an account</source>
+ <translation>Свързване на това устройство с акаунт</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="328"/>
+ <source>Create Jami SIP account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="334"/>
+ <source>Push button for Jami SIP account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="340"/>
+ <source>Create a SIP account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="405"/>
+ <source>Link this device to an existing account</source>
+ <translation>Свържи това устройство със съществуващ акаунт</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="469"/>
+ <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">To link this device to another account, you first </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">need to obtain a PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> code. To generate the PIN code:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Account management setting</span><span style=" font-size:14px;"> of a previous device</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choose the </span><span style=" font-size:14px; font-weight:600;">Jami account</span><span style=" font-size:14px;"> you want to use</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Devices</span><span style=" font-size:14px;"> tab</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Select </span><span style=" font-size:14px; font-weight:600;">Add a device</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">You will get the necessary PIN to complete this form. The PIN is only valid for </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutes</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="531"/>
+ <source>Enter your pin:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="599"/>
+ <source>Or import a file:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="626"/>
+ <source>Link from exported account archive file</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="629"/>
+ <location filename="../newwizardwidget.cpp" line="83"/>
+ <location filename="../newwizardwidget.cpp" line="218"/>
+ <source>(None)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="705"/>
+ <source>Password:</source>
+ <translation>Парола:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="799"/>
+ <location filename="../newwizardwidget.ui" line="1586"/>
+ <source>Profile</source>
+ <translation>Профил</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="953"/>
+ <location filename="../newwizardwidget.ui" line="1767"/>
+ <source>Profile name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1027"/>
+ <source>Account</source>
+ <translation>Акаунт</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1136"/>
+ <source>Register your username.
+This will reserve the username so that only you can use it.
+Your friends will be able to call you with your usename
+instead of using your ID.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1142"/>
+ <source>Public username checkbox</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1145"/>
+ <source>Checkbox selecting if the user wants a public username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1148"/>
+ <source>Register public username</source>
+ <translation>Регистриране на публично потребителско име</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1367"/>
+ <source>Public username edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1373"/>
+ <source>Choose your username</source>
+ <translation>Изберете потребителско име</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1289"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1295"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1301"/>
+ <location filename="../newwizardwidget.ui" line="2213"/>
+ <source>Password</source>
+ <translation>Парола</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1211"/>
+ <location filename="../newwizardwidget.ui" line="1217"/>
+ <source>Password confirmation text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1223"/>
+ <source>Confirm password</source>
+ <translation>Потвърдете паролата</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1814"/>
+ <source>SIP Account</source>
+ <translation>Акаунт за SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1973"/>
+ <source>SIP Server edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1979"/>
+ <source>Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2045"/>
+ <source>SIP proxy input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2051"/>
+ <source>SIP proxy text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2057"/>
+ <source>Proxy</source>
+ <translation>Прокси</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2123"/>
+ <source>SIP username input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2129"/>
+ <source>SIP Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2135"/>
+ <source>Username</source>
+ <translation>Потребителско име</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2201"/>
+ <location filename="../newwizardwidget.ui" line="2207"/>
+ <source>SIP Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message utf8="true">
+ <location filename="../newwizardwidget.ui" line="2282"/>
+ <source>Generating your Jami account…</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2356"/>
+ <source>Previous page button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2362"/>
+ <source>push button to access previous page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2365"/>
+ <source>Previous</source>
+ <translation>Предишен</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2396"/>
+ <source>Cancel account create/link</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2402"/>
+ <source>push button to cancel account creation or linking</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2405"/>
+ <source>Back</source>
+ <translation>Назад</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2442"/>
+ <source>Next page Button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2448"/>
+ <source>Push button to access next page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2451"/>
+ <source>Next</source>
+ <translation>Напред</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="75"/>
+ <source>Open File</source>
+ <translation>Отваряне на файл</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="77"/>
+ <source>Jami archive files (*.gz); All files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="123"/>
+ <source>Your account needs to be migrated. Enter your password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="419"/>
+ <source>Migrating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="412"/>
+ <source>Importing account archive...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="404"/>
+ <source>Generating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="422"/>
+ <source>Generating your SIP account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="533"/>
+ <source>Error creating account</source>
+ <translation>Грешка при създаването на акаунта</translation>
+ </message>
+</context>
+<context>
+ <name>PasswordDialog</name>
+ <message>
+ <location filename="../passworddialog.ui" line="32"/>
+ <source>Change Account Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="97"/>
+ <source>Enter Current Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="169"/>
+ <source>Enter New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="190"/>
+ <source>Confirm New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="247"/>
+ <source>Confirm</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="290"/>
+ <source>Cancel</source>
+ <translation>Отказ</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="143"/>
+ <source>Current Password Incorrect</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PhotoBoothDialog</name>
+ <message>
+ <location filename="../photoboothdialog.ui" line="14"/>
+ <source>Photobooth</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PhotoboothWidget</name>
+ <message>
+ <location filename="../photoboothwidget.ui" line="20"/>
+ <source>Form</source>
+ <translation>От</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.ui" line="120"/>
+ <source>Photobooth display</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="92"/>
+ <source>Choose File</source>
+ <translation>Изберете файл</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="94"/>
+ <source>Image Files (*.jpg *.jpeg *.png)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PrivateBridging</name>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Choose File</source>
+ <translation>Изберете файл</translation>
+ </message>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Files (*)</source>
+ <translation>Всички файлове (*)</translation>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../utils.cpp" line="183"/>
+ <source>No default mail client found</source>
+ <translation>Не е открит клиент за е-поща по подразбиране</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="43"/>
+ <location filename="../deviceitemwidget.cpp" line="85"/>
+ <source>Edit Device Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="44"/>
+ <source>Unlink Device From Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="80"/>
+ <source>Save new device name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.cpp" line="39"/>
+ <source>Add as contact</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>RingButton</name>
+ <message>
+ <location filename="../ringbutton.ui" line="140"/>
+ <source>Select folder</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <location filename="../settingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>От</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="141"/>
+ <source>Settings</source>
+ <translation>Настройки</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="229"/>
+ <source>Account</source>
+ <translation>Акаунт</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="267"/>
+ <location filename="../settingswidget.ui" line="503"/>
+ <source>General</source>
+ <translation>Общи</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="305"/>
+ <location filename="../settingswidget.ui" line="3416"/>
+ <source>Audio / Video</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="542"/>
+ <source>System</source>
+ <translation>Система</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="610"/>
+ <source>Enable desktop notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="653"/>
+ <source>Keep minimized on close</source>
+ <translation>Минимизиране при затваряне</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="678"/>
+ <source>Download folder</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="811"/>
+ <source>Save in</source>
+ <translation>Запазване в</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="904"/>
+ <source>Always Recording</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="943"/>
+ <source>Updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1008"/>
+ <source>Check for updates automatically every</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1032"/>
+ <source>Interval between update checks in days selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1038"/>
+ <source> days</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1081"/>
+ <source>Check for updates now button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1084"/>
+ <source>Check for updates now</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3027"/>
+ <source>Password</source>
+ <translation>Парола</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1418"/>
+ <location filename="../settingswidget.ui" line="2729"/>
+ <source>Enable</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="607"/>
+ <source>toggle enable notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="650"/>
+ <source>Toggle keep minimized on close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="764"/>
+ <source>Call Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1005"/>
+ <source>Toggle automatic updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1231"/>
+ <source>Jami Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1453"/>
+ <location filename="../settingswidget.ui" line="2761"/>
+ <source>Profile</source>
+ <translation>Профил</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1567"/>
+ <location filename="../settingswidget.ui" line="2875"/>
+ <source>Identity</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1614"/>
+ <source>Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1673"/>
+ <source>Registered name</source>
+ <translation>Регистрирано име</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1721"/>
+ <source>Type here to register a username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1755"/>
+ <source>Register</source>
+ <translation>Регистриране</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1827"/>
+ <source>Change Password</source>
+ <translation>Промяна на паролата</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1868"/>
+ <source>Export Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1909"/>
+ <location filename="../settingswidget.ui" line="3089"/>
+ <source>Delete Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1973"/>
+ <source>Linked Devices</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2078"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2142"/>
+ <source>Banned Contacts</source>
+ <translation>Блокирани контакти</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3788"/>
+ <source>Format</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3831"/>
+ <source>Video device framerate selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3967"/>
+ <source>Preview unavailable</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2359"/>
+ <location filename="../settingswidget.ui" line="3187"/>
+ <source>Advanced Account Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2554"/>
+ <source>SIP Account</source>
+ <translation>Акаунт за SIP</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2925"/>
+ <source>Username</source>
+ <translation>Потребителско име</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2958"/>
+ <source>Hostname</source>
+ <translation>Име на сървъра</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2991"/>
+ <source>Proxy</source>
+ <translation>Прокси</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3461"/>
+ <source>Audio</source>
+ <translation>Звук</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3511"/>
+ <source>Microphone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3551"/>
+ <source>Audio input device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3585"/>
+ <source>Output Device</source>
+ <translation>Изходящо устройство</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3625"/>
+ <source>Choose the output device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3682"/>
+ <source>Video</source>
+ <translation>Видео</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3720"/>
+ <source>Device</source>
+ <translation>Устройство</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3766"/>
+ <source>Video device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="459"/>
+ <source>A registered name should not have any spaces and must be at least three letters long</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="466"/>
+ <source>This name is already taken</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="92"/>
+ <location filename="../settingswidget.cpp" line="110"/>
+ <source>Enter an alias</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="473"/>
+ <source>Register this name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="550"/>
+ <source>Remove Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="551"/>
+ <source>Enter this account's password to confirm the removal of this device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="558"/>
+ <source>Are you sure you wish to remove this device?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="589"/>
+ <source>Export Account Here</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="887"/>
+ <source>Select A Folder For Your Downloads</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="904"/>
+ <source>Select A Folder For Your Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>VideoOverlay</name>
+ <message>
+ <location filename="../videooverlay.ui" line="419"/>
+ <source>Call on Hold</source>
+ <translation>Задържан разговор</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="89"/>
+ <source>Hold / Unhold</source>
+ <translation>Задържане / подновяване</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="124"/>
+ <source>Chat</source>
+ <translation>Съобщения</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="162"/>
+ <source>Mute Mic</source>
+ <translation>Заглушаване на микрофона</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="244"/>
+ <source>Record call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="325"/>
+ <source>Name label</source>
+ <translation>Етикет за името</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="390"/>
+ <source>Time elapsed</source>
+ <translation>Изминало време</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="393"/>
+ <source>00:00</source>
+ <translation>00:00</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="57"/>
+ <source>Hangup</source>
+ <translation>Затваряне</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="203"/>
+ <source>Mute Video</source>
+ <translation>Заглушаване на видеото</translation>
+ </message>
+</context>
+<context>
+ <name>VideoView</name>
+ <message>
+ <location filename="../videoview.cpp" line="271"/>
+ <source>Share entire screen</source>
+ <translation>Споделяне на целия екран</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="274"/>
+ <source>Share screen area</source>
+ <translation>Споделяне на област от екрана</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="281"/>
+ <source>Share file</source>
+ <translation>Споделяне на файл</translation>
+ </message>
+</context>
+</TS>
\ No newline at end of file
diff --git a/translations/ring_client_windows_ca.ts b/translations/ring_client_windows_ca.ts
new file mode 100644
index 0000000..bf8c685
--- /dev/null
+++ b/translations/ring_client_windows_ca.ts
@@ -0,0 +1,1605 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="ca" version="2.0">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../aboutdialog.ui" line="435"/>
+ <location filename="../aboutdialog.ui" line="465"/>
+ <source>About</source>
+ <translation>Quant a</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="462"/>
+ <source>about button</source>
+ <translation>botó quant a</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="478"/>
+ <source>credits button</source>
+ <translation>botó de crèdits</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="481"/>
+ <source>Credits</source>
+ <translation>Crèdits</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="547"/>
+ <source>Free as in Freedom</source>
+ <translation>Free as in Freedom</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="563"/>
+ <source>The Microsoft Windows client for Jami.
+Jami is a secured and distributed communication software.</source>
+ <translation>El client de Microsoft Windows per a Jami.
+Ring és un programari de comunicació segur i distribuït.</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="32"/>
+ <source>version</source>
+ <translation>versió</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="39"/>
+ <source>Created by:</source>
+ <translation>Programat per:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="73"/>
+ <source>Artwork by:</source>
+ <translation>Art fet per:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="77"/>
+ <source>Based on the SFLPhone project</source>
+ <translation>Basat en el projecte SFLPhone</translation>
+ </message>
+</context>
+<context>
+ <name>AccountItemDelegate</name>
+ <message>
+ <location filename="../accountitemdelegate.cpp" line="91"/>
+ <source>Add Account</source>
+ <translation>Afegeix compte</translation>
+ </message>
+</context>
+<context>
+ <name>AdvancedSIPSettingsWidget</name>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulari</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="55"/>
+ <source>Call Settings</source>
+ <translation>Preferències de trucada</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="102"/>
+ <source>Auto Answer Calls</source>
+ <translation>Respon trucades automàticament</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="130"/>
+ <source>Enable Custom Ringtone</source>
+ <translation>Habilita to de trucada personalitzat</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="191"/>
+ <source>Connectivity</source>
+ <translation>Connectivitat</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="281"/>
+ <source>STUN Address</source>
+ <translation>Adreça STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="293"/>
+ <source>Use STUN</source>
+ <translation>Utilitza STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="317"/>
+ <source>Use UPnP</source>
+ <translation>Utilitza UPnP</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="329"/>
+ <source>Use TURN</source>
+ <translation>Utilitza TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="359"/>
+ <source>TURN Password</source>
+ <translation>Contrasenya de TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="391"/>
+ <source>TURN Username</source>
+ <translation>Usuari de TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="423"/>
+ <source>TURN Address</source>
+ <translation>Adreça TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="464"/>
+ <source>Media</source>
+ <translation>Mitjans</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="515"/>
+ <source>Enable Video</source>
+ <translation>Habilita el vídeo</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="539"/>
+ <source>Video Codecs</source>
+ <translation>Còdecs de vídeo</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="692"/>
+ <source>Audio Codecs</source>
+ <translation>Còdecs d'àudio</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="142"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation>Fitxers d'àudio (*.wav *.ogg *.opus *.mp3 *aiff *wma)</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="151"/>
+ <source>Add a custom ringtone</source>
+ <translation>Afegeix un to de trucada personalitzat</translation>
+ </message>
+</context>
+<context>
+ <name>AdvancedSettingsWidget</name>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulari</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="61"/>
+ <source>Call Settings</source>
+ <translation>Preferències de trucada</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="108"/>
+ <source>Allow Calls From Untrusted Peers</source>
+ <translation>Permet trucades de contactes desconeguts</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="133"/>
+ <source>Auto Answer Calls</source>
+ <translation>Respon trucades automàticament</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="161"/>
+ <source>Enable Custom Ringtone</source>
+ <translation>Habilita to de trucada personalitzat</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="188"/>
+ <source>Add a custom ringtone</source>
+ <translation>Afegeix un to de trucada personalitzat</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="225"/>
+ <source>Name Server</source>
+ <translation>Servidor de noms</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="275"/>
+ <source>Address</source>
+ <translation>Adreça</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="351"/>
+ <source>OpenDHT Configuration</source>
+ <translation>Configuració de OpenDHT</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="398"/>
+ <source>Enable Proxy</source>
+ <translation>Habilita servidor intermediari</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="454"/>
+ <source>Bootstrap</source>
+ <translation>Bootstrap</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="530"/>
+ <source>Security</source>
+ <translation>Seguretat</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="571"/>
+ <source>Private Key Password</source>
+ <translation>Contrasenya de la clau privada</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="583"/>
+ <source>User Certificate</source>
+ <translation>Certificat d'usuari</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="622"/>
+ <source>Private Key</source>
+ <translation>Clau privada</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="634"/>
+ <source>CA Certificate</source>
+ <translation>Certificat CA</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="766"/>
+ <source>Connectivity</source>
+ <translation>Connectivitat</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="868"/>
+ <source>Use STUN</source>
+ <translation>Utilitza STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="856"/>
+ <source>STUN Address</source>
+ <translation>Adreça STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="892"/>
+ <source>Use UPnP</source>
+ <translation>Utilitza UPnP</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="904"/>
+ <source>Use TURN</source>
+ <translation>Utilitza TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="934"/>
+ <source>TURN Password</source>
+ <translation>Contrasenya de TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="966"/>
+ <source>TURN Username</source>
+ <translation>Usuari de TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="998"/>
+ <source>TURN Address</source>
+ <translation>Adreça TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1039"/>
+ <source>Media</source>
+ <translation>Mitjans</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1090"/>
+ <source>Enable Video</source>
+ <translation>Habilita el vídeo</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1267"/>
+ <source>Audio Codecs</source>
+ <translation>Còdecs d'àudio</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1114"/>
+ <source>Video Codecs</source>
+ <translation>Còdecs de vídeo</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="181"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation>Fitxers d'àudio (*.wav *.ogg *.opus *.mp3 *aiff *wma)</translation>
+ </message>
+</context>
+<context>
+ <name>AnimatedOverlay</name>
+ <message>
+ <location filename="../animatedoverlay.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulari</translation>
+ </message>
+</context>
+<context>
+ <name>BannedItemWidget</name>
+ <message>
+ <location filename="../banneditemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulari</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="80"/>
+ <source>name</source>
+ <translation>nom</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="104"/>
+ <source>id</source>
+ <translation>id</translation>
+ </message>
+</context>
+<context>
+ <name>CallWidget</name>
+ <message>
+ <location filename="../callwidget.ui" line="184"/>
+ <source>Show conversations</source>
+ <translation>Mostra converses</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="187"/>
+ <source>Conversations</source>
+ <translation>Converses</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="368"/>
+ <source>Search contact text input</source>
+ <translation>Cerca text del contacte</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="653"/>
+ <source>Jami is free software for universal communication which respects the freedoms and privacy of its users.</source>
+ <translation>Jami és un programari lliure de comunicació universal, que respecta les llibertats i la privacitat dels seus usuaris.</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="693"/>
+ <source>
+ This is your ID.
+Copy and share it with your friends!
+ </source>
+ <translation>
+Aquest és el seu ID.
+Copiï'l i comparteixi'l amb els seus amics!</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="806"/>
+ <source>Show ring ID QR code</source>
+ <translation>Mostra codi QR de ring</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="857"/>
+ <source>Share ring ID button</source>
+ <translation>Botó de compartició de ID de ring</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="915"/>
+ <source>Double-click to copy</source>
+ <translation>Doble clic per copiar</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="956"/>
+ <source>Error while generating QR Code</source>
+ <translation>Error al generar el codi QR</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1184"/>
+ <location filename="../callwidget.ui" line="1434"/>
+ <source>best name</source>
+ <translation>millor nom</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1208"/>
+ <source>best Id</source>
+ <translation>millor Id</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1734"/>
+ <source>Back to homepage button</source>
+ <translation>Botó per tornar a la pàgina principal</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1943"/>
+ <source>Add to contacts</source>
+ <translation>Afegir als contactes</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="202"/>
+ <source>Show invites</source>
+ <translation>Mostra invitacions</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="205"/>
+ <source>Invites</source>
+ <translation>Invitacions</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="377"/>
+ <location filename="../callwidget.cpp" line="552"/>
+ <source>Find a new or existing contact</source>
+ <translation>Troba un contacte nou o existent</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1444"/>
+ <source>Wants to talk to you!</source>
+ <translation>Vol parlar amb tu!</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1517"/>
+ <source>Answer incoming call button</source>
+ <translation>Botó per respondre trucada entrant</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1589"/>
+ <source>Ignore incoming call button</source>
+ <translation>Botó per ignorar trucada entrant</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1539"/>
+ <source>Answer</source>
+ <translation>Respon</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1617"/>
+ <source>Ignore</source>
+ <translation>Ignora</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1280"/>
+ <source>Cancel outgoing call</source>
+ <translation>Canceŀla trucada sortint</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1305"/>
+ <source>Cancel</source>
+ <translation>Canceŀla</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="332"/>
+ <source>Start video call</source>
+ <translation>Comença una videotrucada</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="343"/>
+ <source>Start audio call</source>
+ <translation>Comença una trucada de veu.</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="354"/>
+ <source>Clear conversation</source>
+ <translation>Neteja la conversa</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="361"/>
+ <source>Remove contact</source>
+ <translation>Elimina el contacte</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="373"/>
+ <source>Block contact</source>
+ <translation>Bloqueja el contacte</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="384"/>
+ <source>Copy number</source>
+ <translation>Copia el número</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="561"/>
+ <source>Search your received invitations</source>
+ <translation>Cerca les invitacions rebudes</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>Contact me on Jami</source>
+ <translation>Contacta amb mi a Jami</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>My Id is : </source>
+ <translation>El meu Id és:</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="847"/>
+ <source>%1</source>
+ <comment>%1 is the contact username</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="852"/>
+ <source>%1</source>
+ <comment>%1 is the contact unique identifier</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="675"/>
+ <source>Call incoming from %1</source>
+ <translation>Trucada entrant de %1</translation>
+ </message>
+</context>
+<context>
+ <name>DeleteAccountDialog</name>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="35"/>
+ <source>Account deletion</source>
+ <translation>Eliminació de compte</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="58"/>
+ <source>Do you really want to delete the following account?</source>
+ <translation>Esteu segur que voleu esborrar el compte?</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="153"/>
+ <source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
+ <translation>Si aquest compte no s'ha exportat o afegit a un altre dispositiu, es perdrà irremeiablement.</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="235"/>
+ <source>Permanently delete account</source>
+ <translation>Elimina el compte de forma permanent</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="241"/>
+ <source>Delete</source>
+ <translation>Suprimeix</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="278"/>
+ <source>Cancel account deletion</source>
+ <translation>Canceŀla l'eliminació del compte</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="284"/>
+ <source>Cancel</source>
+ <translation>Cancel·la</translation>
+ </message>
+</context>
+<context>
+ <name>DeviceItemWidget</name>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulari</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="105"/>
+ <source>Device Id</source>
+ <translation>Id del dispositiu</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="143"/>
+ <source>this device</source>
+ <translation>aquest dispositiu</translation>
+ </message>
+</context>
+<context>
+ <name>InviteButtonsWidget</name>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="83"/>
+ <source>Accept</source>
+ <translation>Accepta</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="131"/>
+ <source>Refuse</source>
+ <translation>Rebutja</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="179"/>
+ <source>Block</source>
+ <translation>Bloca</translation>
+ </message>
+</context>
+<context>
+ <name>LinkDeviceDialog</name>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation>Diàleg</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="62"/>
+ <source>Enter your account password</source>
+ <translation>Inseriu la contrasenya del vostre compte</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="117"/>
+ <source>Password</source>
+ <translation>Contrasenya</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="184"/>
+ <source>Ok</source>
+ <translation>D'acord</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="218"/>
+ <source>Cancel</source>
+ <translation>Cancel·la</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="279"/>
+ <source>Exporting account</source>
+ <translation>Exportant compte</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="402"/>
+ <source>Your PIN is</source>
+ <translation>El vostre PIN és</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="432"/>
+ <source>PIN</source>
+ <translation>PIN</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="477"/>
+ <source>This pin and the account password should be entered in your device within 10 minutes.</source>
+ <translation>Aquest PIN i la contrasenya del compte tindrien que introduir-se en el vostre dispositiu en un màxim de 10 minuts.</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="553"/>
+ <source>Close</source>
+ <translation>Tanca</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="34"/>
+ <source>Link Another Device</source>
+ <translation>Vincula un altre dispositiu</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="96"/>
+ <source>Incorrect password</source>
+ <translation>Contrasenya incorrecta</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="110"/>
+ <source>Something went wrong.
+Please try again later.</source>
+ <translation>Alguna cosa ha anat malament.
+Si us plau, torni ha intentar-ho més tard.</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="83"/>
+ <source>Settings</source>
+ <translation>Opcions</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="94"/>
+ <source>Exit</source>
+ <translation>Sortir</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="111"/>
+ <source>About</source>
+ <translation>Quant a</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="435"/>
+ <source>Jami</source>
+ <translation>Jami</translation>
+ </message>
+</context>
+<context>
+ <name>NameRegistrationDialog</name>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="35"/>
+ <source>Set Registered Name</source>
+ <translation>Estableix nom registrat</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="163"/>
+ <source>Enter your account password</source>
+ <translation>Inseriu la contrasenya del vostre compte</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="244"/>
+ <source>Password text input</source>
+ <translation>Entrada de text de la contrasenya</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="250"/>
+ <source>Password text entry</source>
+ <translation>Entrada de text de la contrasenya</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="256"/>
+ <source>Password</source>
+ <translation>Contrasenya</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="323"/>
+ <source>Register</source>
+ <translation>Registra</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="357"/>
+ <source>Cancel</source>
+ <translation>Cancel·la</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="424"/>
+ <source>Registering Name</source>
+ <translation>Registrant nom d'usuari</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="548"/>
+ <source>Something went wrong</source>
+ <translation>Alguna cosa ha anat malament</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="618"/>
+ <source>Close</source>
+ <translation>Tanca</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="82"/>
+ <source>Incorrect password</source>
+ <translation>Contrasenya incorrecta</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="85"/>
+ <source>Network error</source>
+ <translation>Error de xarxa</translation>
+ </message>
+</context>
+<context>
+ <name>NewWizardWidget</name>
+ <message>
+ <location filename="../newwizardwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulari</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="141"/>
+ <source>Welcome Label</source>
+ <translation>Etiqueta de Benvinguda</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="147"/>
+ <source> Welcome to</source>
+ <translation>Benvingut a</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="185"/>
+ <source>Welcome Logo</source>
+ <translation>Logo de Benvinguda</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="239"/>
+ <source>Create Jami account button</source>
+ <translation>Botó de creació de compte Jami</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="245"/>
+ <source>Push button for Jami account creation start trigger</source>
+ <translation>Botó per al disparador d'inici de la creació de compte Jami</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="251"/>
+ <source>Create a Jami account</source>
+ <translation>Crear un compte Jami</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="282"/>
+ <source>Link device button</source>
+ <translation>Botó de vinculació de dispositiu</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="288"/>
+ <source>Push button for device linkage start trigger</source>
+ <translation>Botó per al disparador d'inici de vinculació de dispositiu</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="291"/>
+ <source>Link this device to an account</source>
+ <translation>Enllaça aquest dispositiu a un compte</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="328"/>
+ <source>Create Jami SIP account button</source>
+ <translation>Botó de creació de compte Jami SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="334"/>
+ <source>Push button for Jami SIP account creation start trigger</source>
+ <translation>Botó per al disparador d'inici de creació de compte Jami SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="340"/>
+ <source>Create a SIP account</source>
+ <translation>Crea un compte SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="405"/>
+ <source>Link this device to an existing account</source>
+ <translation>Enllaça aquest dispositiu a un compte ja existent</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="469"/>
+ <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">To link this device to another account, you first </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">need to obtain a PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> code. To generate the PIN code:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Account management setting</span><span style=" font-size:14px;"> of a previous device</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choose the </span><span style=" font-size:14px; font-weight:600;">Jami account</span><span style=" font-size:14px;"> you want to use</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Devices</span><span style=" font-size:14px;"> tab</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Select </span><span style=" font-size:14px; font-weight:600;">Add a device</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">You will get the necessary PIN to complete this form. The PIN is only valid for </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutes</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></source>
+ <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">Per a vincular aquest dispositiu a un altre compte, primer has </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">d'obtenir un codi PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">. Per a generar un codi PIN:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Vés a </span><span style=" font-size:14px; font-weight:600;">opcions de gestió del compte</span><span style=" font-size:14px;"> d'un dispositiu anterior</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Escull un </span><span style=" font-size:14px; font-weight:600;">compte Jami</span><span style=" font-size:14px;"> que vulguis utilitzar</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Vés a la pestanya</span><span style=" font-size:14px; font-weight:600;">Dispositius</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Selecciona</span><span style=" font-size:14px; font-weight:600;">Afegeix un dispositiu</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">Obtindràs el PIN necessari per completar aquest formulari. El PIN només és vàlid durant </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minuts</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="531"/>
+ <source>Enter your pin:</source>
+ <translation>Entra el pin:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="599"/>
+ <source>Or import a file:</source>
+ <translation>O importa un fitxer:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="626"/>
+ <source>Link from exported account archive file</source>
+ <translation>Vincula des d'un compte exportat a un fitxer d'arxiu</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="629"/>
+ <location filename="../newwizardwidget.cpp" line="83"/>
+ <location filename="../newwizardwidget.cpp" line="218"/>
+ <source>(None)</source>
+ <translation>(Cap)</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="705"/>
+ <source>Password:</source>
+ <translation>Contrasenya:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="799"/>
+ <location filename="../newwizardwidget.ui" line="1586"/>
+ <source>Profile</source>
+ <translation>Perfil</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="953"/>
+ <location filename="../newwizardwidget.ui" line="1767"/>
+ <source>Profile name</source>
+ <translation>Nom de perfil</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1027"/>
+ <source>Account</source>
+ <translation>Compte</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1136"/>
+ <source>Register your username.
+This will reserve the username so that only you can use it.
+Your friends will be able to call you with your usename
+instead of using your ID.</source>
+ <translation>Registra el teu nom d'usuari.
+Es reservarà el nom d'usuari de forma que només vostè pugui utilitzar-lo.
+Els seus amics podran trucar-lo amb el vostre nom d'usuari
+en comptes d'utilitzar el vostre ID.</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1142"/>
+ <source>Public username checkbox</source>
+ <translation>Capsa de verificació de nom d'usuari públic</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1145"/>
+ <source>Checkbox selecting if the user wants a public username</source>
+ <translation>Capsa de verificació seleccionant si l'usuari vol un nom d'usuari públic</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1148"/>
+ <source>Register public username</source>
+ <translation>Registra nom d'usuari públic</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1367"/>
+ <source>Public username edit</source>
+ <translation>Edició de nom d'usuari públic</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1373"/>
+ <source>Choose your username</source>
+ <translation>Esculli el vostre nom d'usuari</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1289"/>
+ <source>Password text input</source>
+ <translation>Entrada de text de la contrasenya</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1295"/>
+ <source>Password text entry</source>
+ <translation>Entrada de text de la contrasenya</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1301"/>
+ <location filename="../newwizardwidget.ui" line="2213"/>
+ <source>Password</source>
+ <translation>Contrasenya</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1211"/>
+ <location filename="../newwizardwidget.ui" line="1217"/>
+ <source>Password confirmation text input</source>
+ <translation>Entrada de text de confirmació de contrasenya</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1223"/>
+ <source>Confirm password</source>
+ <translation>Confirmi contrasenya</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1814"/>
+ <source>SIP Account</source>
+ <translation>Compte SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1973"/>
+ <source>SIP Server edit</source>
+ <translation>Edició de servidor SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1979"/>
+ <source>Server</source>
+ <translation>Servidor</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2045"/>
+ <source>SIP proxy input</source>
+ <translation>Entrada de servidor intermediari SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2051"/>
+ <source>SIP proxy text entry</source>
+ <translation>Entrada de text de servidor intermediari SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2057"/>
+ <source>Proxy</source>
+ <translation>Intermediari</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2123"/>
+ <source>SIP username input</source>
+ <translation>Entrada de nom d'usuari SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2129"/>
+ <source>SIP Password text entry</source>
+ <translation>Entrada de text de contraseña SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2135"/>
+ <source>Username</source>
+ <translation>Nom d'usuari</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2201"/>
+ <location filename="../newwizardwidget.ui" line="2207"/>
+ <source>SIP Password text input</source>
+ <translation>Entrada de text de contraseña SIP</translation>
+ </message>
+ <message utf8="true">
+ <location filename="../newwizardwidget.ui" line="2282"/>
+ <source>Generating your Jami account…</source>
+ <translation>Generant el seu compte Jami…</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2356"/>
+ <source>Previous page button</source>
+ <translation>Botó de pàgina anterior</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2362"/>
+ <source>push button to access previous page of wizard</source>
+ <translation>Botó per accedir a la pàgina anterior de l'assistent</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2365"/>
+ <source>Previous</source>
+ <translation>Previ</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2396"/>
+ <source>Cancel account create/link</source>
+ <translation>Canceŀla creació/vinculació de compte</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2402"/>
+ <source>push button to cancel account creation or linking</source>
+ <translation>Botó per a canceŀlar la creació o vinculació del compte</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2405"/>
+ <source>Back</source>
+ <translation>Enrere</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2442"/>
+ <source>Next page Button</source>
+ <translation>Botó següent pàgina</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2448"/>
+ <source>Push button to access next page of wizard</source>
+ <translation>Botó per accedir a la pàgina següent de l'assistent</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2451"/>
+ <source>Next</source>
+ <translation>Endavant</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="75"/>
+ <source>Open File</source>
+ <translation>Obre fitxer</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="77"/>
+ <source>Jami archive files (*.gz); All files (*)</source>
+ <translation>Arxius Jami (*.gz); Tots els fitxers (*)</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="123"/>
+ <source>Your account needs to be migrated. Enter your password.</source>
+ <translation>El vostre compte s'ha de migrar. Inseriu la vostra contrasenya</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="419"/>
+ <source>Migrating your Jami account...</source>
+ <translation>Migrant el teu compte Jami…</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="412"/>
+ <source>Importing account archive...</source>
+ <translation>Important l'arxiu del compte…</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="404"/>
+ <source>Generating your Jami account...</source>
+ <translation>Generant el seu compte Jami…</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="422"/>
+ <source>Generating your SIP account...</source>
+ <translation>Generant el seu compte SIP…</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="533"/>
+ <source>Error creating account</source>
+ <translation>Error al crear el compte</translation>
+ </message>
+</context>
+<context>
+ <name>PasswordDialog</name>
+ <message>
+ <location filename="../passworddialog.ui" line="32"/>
+ <source>Change Account Password</source>
+ <translation>Canvia la contrasenya del compte</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="97"/>
+ <source>Enter Current Password</source>
+ <translation>Inseriu la contrasenya actual</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="169"/>
+ <source>Enter New Password</source>
+ <translation>Inseriu la nova contrasenya</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="190"/>
+ <source>Confirm New Password</source>
+ <translation>Confirmi la nova contrasenya</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="247"/>
+ <source>Confirm</source>
+ <translation>Confirma</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="290"/>
+ <source>Cancel</source>
+ <translation>Cancel·la</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="143"/>
+ <source>Current Password Incorrect</source>
+ <translation>Contrasenya actual incorrecta</translation>
+ </message>
+</context>
+<context>
+ <name>PhotoBoothDialog</name>
+ <message>
+ <location filename="../photoboothdialog.ui" line="14"/>
+ <source>Photobooth</source>
+ <translation>Galeria de fotos</translation>
+ </message>
+</context>
+<context>
+ <name>PhotoboothWidget</name>
+ <message>
+ <location filename="../photoboothwidget.ui" line="20"/>
+ <source>Form</source>
+ <translation>Formulari</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.ui" line="120"/>
+ <source>Photobooth display</source>
+ <translation>Vista de la galeria de fotos</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="92"/>
+ <source>Choose File</source>
+ <translation>Esculli un fitxer</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="94"/>
+ <source>Image Files (*.jpg *.jpeg *.png)</source>
+ <translation>Fitxers d'imatge (*.jpg *.jpeg *.png)</translation>
+ </message>
+</context>
+<context>
+ <name>PrivateBridging</name>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Choose File</source>
+ <translation>Esculli un fitxer</translation>
+ </message>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Files (*)</source>
+ <translation>Fitxers (*)</translation>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../utils.cpp" line="183"/>
+ <source>No default mail client found</source>
+ <translation>No s'ha detectat cap client de correu electrònic</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="43"/>
+ <location filename="../deviceitemwidget.cpp" line="85"/>
+ <source>Edit Device Name</source>
+ <translation>Editar nom de dispositiu</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="44"/>
+ <source>Unlink Device From Account</source>
+ <translation>Desvincula dispositiu del compte</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="80"/>
+ <source>Save new device name</source>
+ <translation>Desa el nou nom de dispositiu</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.cpp" line="39"/>
+ <source>Add as contact</source>
+ <translation>Afegir com a contacte</translation>
+ </message>
+</context>
+<context>
+ <name>RingButton</name>
+ <message>
+ <location filename="../ringbutton.ui" line="140"/>
+ <source>Select folder</source>
+ <translation>Esculli carpeta</translation>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <location filename="../settingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulari</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="141"/>
+ <source>Settings</source>
+ <translation>Opcions</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="229"/>
+ <source>Account</source>
+ <translation>Compte</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="267"/>
+ <location filename="../settingswidget.ui" line="503"/>
+ <source>General</source>
+ <translation>General</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="305"/>
+ <location filename="../settingswidget.ui" line="3416"/>
+ <source>Audio / Video</source>
+ <translation>Àudio / Vídeo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="542"/>
+ <source>System</source>
+ <translation>Sistema</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="610"/>
+ <source>Enable desktop notifications</source>
+ <translation>Habilitar notificacions d'escriptori</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="653"/>
+ <source>Keep minimized on close</source>
+ <translation>Manté minimitzat al tancar</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="678"/>
+ <source>Download folder</source>
+ <translation>Descarrega carpeta</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="811"/>
+ <source>Save in</source>
+ <translation>Desa a</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="904"/>
+ <source>Always Recording</source>
+ <translation>Sempre enregistrant</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="943"/>
+ <source>Updates</source>
+ <translation>Actualitzacions</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1008"/>
+ <source>Check for updates automatically every</source>
+ <translation>Comprova actualitzacions cada</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1032"/>
+ <source>Interval between update checks in days selector</source>
+ <translation>Selector d'interval entre comprovacions d'actualitzacions</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1038"/>
+ <source> days</source>
+ <translation>dies</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1081"/>
+ <source>Check for updates now button</source>
+ <translation>Botó de comprovació immediata d'actualitzacions</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1084"/>
+ <source>Check for updates now</source>
+ <translation>Comprova actualitzacions immediatament</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3027"/>
+ <source>Password</source>
+ <translation>Contrasenya</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1418"/>
+ <location filename="../settingswidget.ui" line="2729"/>
+ <source>Enable</source>
+ <translation>Habilita</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="607"/>
+ <source>toggle enable notifications</source>
+ <translation>Commuta habilitar notificacions</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="650"/>
+ <source>Toggle keep minimized on close</source>
+ <translation>Commuta mantenir minimitzat al tancar</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="764"/>
+ <source>Call Recordings</source>
+ <translation>Enregistraments de trucades</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1005"/>
+ <source>Toggle automatic updates</source>
+ <translation>Commuta actualitzacions automàtiques</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1231"/>
+ <source>Jami Account</source>
+ <translation>Compte Jami</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1453"/>
+ <location filename="../settingswidget.ui" line="2761"/>
+ <source>Profile</source>
+ <translation>Perfil</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1567"/>
+ <location filename="../settingswidget.ui" line="2875"/>
+ <source>Identity</source>
+ <translation>Identitat</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1614"/>
+ <source>Id</source>
+ <translation>Id</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1673"/>
+ <source>Registered name</source>
+ <translation>Nom registrat</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1721"/>
+ <source>Type here to register a username</source>
+ <translation>Escrigui aquí per registrar un nom d'usuari</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1755"/>
+ <source>Register</source>
+ <translation>Registra</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1827"/>
+ <source>Change Password</source>
+ <translation>Canvia la contrasenya</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1868"/>
+ <source>Export Account</source>
+ <translation>Exporta el compte</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1909"/>
+ <location filename="../settingswidget.ui" line="3089"/>
+ <source>Delete Account</source>
+ <translation>Esborrar compte</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1973"/>
+ <source>Linked Devices</source>
+ <translation>Dispositius vinculats</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2078"/>
+ <source>Link Another Device</source>
+ <translation>Vincula un altre dispositiu</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2142"/>
+ <source>Banned Contacts</source>
+ <translation>Contactes blocats</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3788"/>
+ <source>Format</source>
+ <translation>Formata</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3831"/>
+ <source>Video device framerate selector</source>
+ <translation>Selector de taxa de fotogrames del dispositiu de vídeo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3967"/>
+ <source>Preview unavailable</source>
+ <translation>Previsualització no disponible</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2359"/>
+ <location filename="../settingswidget.ui" line="3187"/>
+ <source>Advanced Account Settings</source>
+ <translation>Preferències avançades del compte</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2554"/>
+ <source>SIP Account</source>
+ <translation>Compte SIP</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2925"/>
+ <source>Username</source>
+ <translation>Nom d'usuari</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2958"/>
+ <source>Hostname</source>
+ <translation>Nom d'amfitrió</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2991"/>
+ <source>Proxy</source>
+ <translation>Intermediari</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3461"/>
+ <source>Audio</source>
+ <translation>Àudio</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3511"/>
+ <source>Microphone</source>
+ <translation>Micròfon</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3551"/>
+ <source>Audio input device selector</source>
+ <translation>Selector de dispositiu d'entrada d'àudio</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3585"/>
+ <source>Output Device</source>
+ <translation>Dispositiu de sortida</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3625"/>
+ <source>Choose the output device</source>
+ <translation>Esculli dispositiu de sortida</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3682"/>
+ <source>Video</source>
+ <translation>Vídeo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3720"/>
+ <source>Device</source>
+ <translation>Dispositiu</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3766"/>
+ <source>Video device selector</source>
+ <translation>Selector de dispositiu de vídeo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="459"/>
+ <source>A registered name should not have any spaces and must be at least three letters long</source>
+ <translation>Un nom registrat no pot tenir espais i ha de tenir una longitud mínima de tres caràcters</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="466"/>
+ <source>This name is already taken</source>
+ <translation>Aquest nom ja està registrat</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="92"/>
+ <location filename="../settingswidget.cpp" line="110"/>
+ <source>Enter an alias</source>
+ <translation>Inseriu un alias</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="473"/>
+ <source>Register this name</source>
+ <translation>Registri aquest nom</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="550"/>
+ <source>Remove Device</source>
+ <translation>Elimini el dispositiu</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="551"/>
+ <source>Enter this account's password to confirm the removal of this device</source>
+ <translation>Insereix la contrasenya d'aquest compte per confirmar l'eliminació d'aquest dispositiu</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="558"/>
+ <source>Are you sure you wish to remove this device?</source>
+ <translation>Esteu segur que voleu eliminar aquest dispositiu?</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="589"/>
+ <source>Export Account Here</source>
+ <translation>Exporta el compte aquí</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="887"/>
+ <source>Select A Folder For Your Downloads</source>
+ <translation>Seleccioni una carpeta per les seves descàrregues</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="904"/>
+ <source>Select A Folder For Your Recordings</source>
+ <translation>Seleccioni una carpeta per als seus enregistraments</translation>
+ </message>
+</context>
+<context>
+ <name>VideoOverlay</name>
+ <message>
+ <location filename="../videooverlay.ui" line="419"/>
+ <source>Call on Hold</source>
+ <translation>Trucada en espera</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="89"/>
+ <source>Hold / Unhold</source>
+ <translation>Reté / Allibera</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="124"/>
+ <source>Chat</source>
+ <translation>Xat</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="162"/>
+ <source>Mute Mic</source>
+ <translation>Silencia el micròfon</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="244"/>
+ <source>Record call</source>
+ <translation>Enregistra trucada</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="325"/>
+ <source>Name label</source>
+ <translation>Etiqueta de nom</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="390"/>
+ <source>Time elapsed</source>
+ <translation>Temps transcorregut</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="393"/>
+ <source>00:00</source>
+ <translation>00:00</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="57"/>
+ <source>Hangup</source>
+ <translation>Penjar</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="203"/>
+ <source>Mute Video</source>
+ <translation>Silencia el vídeo</translation>
+ </message>
+</context>
+<context>
+ <name>VideoView</name>
+ <message>
+ <location filename="../videoview.cpp" line="271"/>
+ <source>Share entire screen</source>
+ <translation>Comparteix tota la pantalla</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="274"/>
+ <source>Share screen area</source>
+ <translation>Compartir pantalla</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="281"/>
+ <source>Share file</source>
+ <translation>Compartir arxiu</translation>
+ </message>
+</context>
+</TS>
\ No newline at end of file
diff --git a/translations/ring_client_windows_cs_CZ.ts b/translations/ring_client_windows_cs_CZ.ts
new file mode 100644
index 0000000..5c0e9d1
--- /dev/null
+++ b/translations/ring_client_windows_cs_CZ.ts
@@ -0,0 +1,1590 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="cs_CZ" version="2.0">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../aboutdialog.ui" line="435"/>
+ <location filename="../aboutdialog.ui" line="465"/>
+ <source>About</source>
+ <translation>O aplikaci</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="462"/>
+ <source>about button</source>
+ <translation>O</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="478"/>
+ <source>credits button</source>
+ <translation>Zásluhy</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="481"/>
+ <source>Credits</source>
+ <translation>Zásluhy</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="547"/>
+ <source>Free as in Freedom</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="563"/>
+ <source>The Microsoft Windows client for Jami.
+Jami is a secured and distributed communication software.</source>
+ <translation>Klient Microsoft Windows pro Jami.
+Jami je bezpečný a distribuovaný komunikační program.</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="32"/>
+ <source>version</source>
+ <translation>verze</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="39"/>
+ <source>Created by:</source>
+ <translation>Vytvořili:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="73"/>
+ <source>Artwork by:</source>
+ <translation>Grafika:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="77"/>
+ <source>Based on the SFLPhone project</source>
+ <translation>Postaveno na projektu SFLPhone</translation>
+ </message>
+</context>
+<context>
+ <name>AccountItemDelegate</name>
+ <message>
+ <location filename="../accountitemdelegate.cpp" line="91"/>
+ <source>Add Account</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSIPSettingsWidget</name>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulář</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="55"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="102"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="130"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="191"/>
+ <source>Connectivity</source>
+ <translation>Připojení</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="281"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="293"/>
+ <source>Use STUN</source>
+ <translation>Použít STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="317"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="329"/>
+ <source>Use TURN</source>
+ <translation>Použít TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="359"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="391"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="423"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="464"/>
+ <source>Media</source>
+ <translation>Média</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="515"/>
+ <source>Enable Video</source>
+ <translation>Povolit video</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="539"/>
+ <source>Video Codecs</source>
+ <translation>Obrazové kodeky</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="692"/>
+ <source>Audio Codecs</source>
+ <translation>Zvukové kodeky</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="142"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="151"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSettingsWidget</name>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulář</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="61"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="108"/>
+ <source>Allow Calls From Untrusted Peers</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="133"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="161"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="188"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="225"/>
+ <source>Name Server</source>
+ <translation>Název serveru</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="275"/>
+ <source>Address</source>
+ <translation>Adresa</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="351"/>
+ <source>OpenDHT Configuration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="398"/>
+ <source>Enable Proxy</source>
+ <translation>Povolit proxy</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="454"/>
+ <source>Bootstrap</source>
+ <translation>Bootstrap</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="530"/>
+ <source>Security</source>
+ <translation>Zabezpečení</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="571"/>
+ <source>Private Key Password</source>
+ <translation>Heslo soukromého klíče</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="583"/>
+ <source>User Certificate</source>
+ <translation>Uživatelský certifikát</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="622"/>
+ <source>Private Key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="634"/>
+ <source>CA Certificate</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="766"/>
+ <source>Connectivity</source>
+ <translation>Připojení</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="868"/>
+ <source>Use STUN</source>
+ <translation>Použít STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="856"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="892"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="904"/>
+ <source>Use TURN</source>
+ <translation>Použít TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="934"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="966"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="998"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1039"/>
+ <source>Media</source>
+ <translation>Média</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1090"/>
+ <source>Enable Video</source>
+ <translation>Povolit video</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1267"/>
+ <source>Audio Codecs</source>
+ <translation>Zvukové kodeky</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1114"/>
+ <source>Video Codecs</source>
+ <translation>Obrazové kodeky</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="181"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AnimatedOverlay</name>
+ <message>
+ <location filename="../animatedoverlay.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulář</translation>
+ </message>
+</context>
+<context>
+ <name>BannedItemWidget</name>
+ <message>
+ <location filename="../banneditemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulář</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="80"/>
+ <source>name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="104"/>
+ <source>id</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>CallWidget</name>
+ <message>
+ <location filename="../callwidget.ui" line="184"/>
+ <source>Show conversations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="187"/>
+ <source>Conversations</source>
+ <translation>Konverzace</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="368"/>
+ <source>Search contact text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="653"/>
+ <source>Jami is free software for universal communication which respects the freedoms and privacy of its users.</source>
+ <translation>Jami je svobodný software určený k univerzální komunikaci, který respektuje svobody a práva uživatelů.</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="693"/>
+ <source>
+ This is your ID.
+Copy and share it with your friends!
+ </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="806"/>
+ <source>Show ring ID QR code</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="857"/>
+ <source>Share ring ID button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="915"/>
+ <source>Double-click to copy</source>
+ <translation>Dvakrát klepněte pro kopírování</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="956"/>
+ <source>Error while generating QR Code</source>
+ <translation>Chyba při vytváření QR kódu</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1184"/>
+ <location filename="../callwidget.ui" line="1434"/>
+ <source>best name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1208"/>
+ <source>best Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1734"/>
+ <source>Back to homepage button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1943"/>
+ <source>Add to contacts</source>
+ <translation>Přidat do kontaktů</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="202"/>
+ <source>Show invites</source>
+ <translation>Ukázat pozvání</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="205"/>
+ <source>Invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="377"/>
+ <location filename="../callwidget.cpp" line="552"/>
+ <source>Find a new or existing contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1444"/>
+ <source>Wants to talk to you!</source>
+ <translation>Chce s vámi hovořit!</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1517"/>
+ <source>Answer incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1589"/>
+ <source>Ignore incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1539"/>
+ <source>Answer</source>
+ <translation>Přijmout</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1617"/>
+ <source>Ignore</source>
+ <translation>Přehlížet</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1280"/>
+ <source>Cancel outgoing call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1305"/>
+ <source>Cancel</source>
+ <translation>Zrušit</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="332"/>
+ <source>Start video call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="343"/>
+ <source>Start audio call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="354"/>
+ <source>Clear conversation</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="361"/>
+ <source>Remove contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="373"/>
+ <source>Block contact</source>
+ <translation>Blokovat kontakt</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="384"/>
+ <source>Copy number</source>
+ <translation>Zkopírovat číslo</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="561"/>
+ <source>Search your received invitations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>Contact me on Jami</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>My Id is : </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="847"/>
+ <source>%1</source>
+ <comment>%1 is the contact username</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="852"/>
+ <source>%1</source>
+ <comment>%1 is the contact unique identifier</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="675"/>
+ <source>Call incoming from %1</source>
+ <translation>Příchozí hovor od %1</translation>
+ </message>
+</context>
+<context>
+ <name>DeleteAccountDialog</name>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="35"/>
+ <source>Account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="58"/>
+ <source>Do you really want to delete the following account?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="153"/>
+ <source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="235"/>
+ <source>Permanently delete account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="241"/>
+ <source>Delete</source>
+ <translation>Odstranit</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="278"/>
+ <source>Cancel account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="284"/>
+ <source>Cancel</source>
+ <translation>Zrušit</translation>
+ </message>
+</context>
+<context>
+ <name>DeviceItemWidget</name>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulář</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="105"/>
+ <source>Device Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="143"/>
+ <source>this device</source>
+ <translation>toto zařízení</translation>
+ </message>
+</context>
+<context>
+ <name>InviteButtonsWidget</name>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="83"/>
+ <source>Accept</source>
+ <translation>Přijmout</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="131"/>
+ <source>Refuse</source>
+ <translation>Odmítnout</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="179"/>
+ <source>Block</source>
+ <translation>Blokovat</translation>
+ </message>
+</context>
+<context>
+ <name>LinkDeviceDialog</name>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation>Dialog</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="62"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="117"/>
+ <source>Password</source>
+ <translation>Heslo</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="184"/>
+ <source>Ok</source>
+ <translation>OK</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="218"/>
+ <source>Cancel</source>
+ <translation>Zrušit</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="279"/>
+ <source>Exporting account</source>
+ <translation>Exportuji účet</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="402"/>
+ <source>Your PIN is</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="432"/>
+ <source>PIN</source>
+ <translation>PIN</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="477"/>
+ <source>This pin and the account password should be entered in your device within 10 minutes.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="553"/>
+ <source>Close</source>
+ <translation>Zavřít</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="34"/>
+ <source>Link Another Device</source>
+ <translation>Připojit další zařízení</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="96"/>
+ <source>Incorrect password</source>
+ <translation>Nesprávné heslo</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="110"/>
+ <source>Something went wrong.
+Please try again later.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="83"/>
+ <source>Settings</source>
+ <translation>Nastavení</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="94"/>
+ <source>Exit</source>
+ <translation>Odejít</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="111"/>
+ <source>About</source>
+ <translation>O aplikaci</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="435"/>
+ <source>Jami</source>
+ <translation>Jami</translation>
+ </message>
+</context>
+<context>
+ <name>NameRegistrationDialog</name>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="35"/>
+ <source>Set Registered Name</source>
+ <translation>Nastavit registrované jméno</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="163"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="244"/>
+ <source>Password text input</source>
+ <translation>Zadání textu hesla</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="250"/>
+ <source>Password text entry</source>
+ <translation>Zadání textu hesla</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="256"/>
+ <source>Password</source>
+ <translation>Heslo</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="323"/>
+ <source>Register</source>
+ <translation>Zaregistrovat</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="357"/>
+ <source>Cancel</source>
+ <translation>Zrušit</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="424"/>
+ <source>Registering Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="548"/>
+ <source>Something went wrong</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="618"/>
+ <source>Close</source>
+ <translation>Zavřít</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="82"/>
+ <source>Incorrect password</source>
+ <translation>Nesprávné heslo</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="85"/>
+ <source>Network error</source>
+ <translation>Chyba sítě</translation>
+ </message>
+</context>
+<context>
+ <name>NewWizardWidget</name>
+ <message>
+ <location filename="../newwizardwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulář</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="141"/>
+ <source>Welcome Label</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="147"/>
+ <source> Welcome to</source>
+ <translation>Vítejte v</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="185"/>
+ <source>Welcome Logo</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="239"/>
+ <source>Create Jami account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="245"/>
+ <source>Push button for Jami account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="251"/>
+ <source>Create a Jami account</source>
+ <translation>Vytvořit účet Jami</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="282"/>
+ <source>Link device button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="288"/>
+ <source>Push button for device linkage start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="291"/>
+ <source>Link this device to an account</source>
+ <translation>Připojit toto zařízení k účtu</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="328"/>
+ <source>Create Jami SIP account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="334"/>
+ <source>Push button for Jami SIP account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="340"/>
+ <source>Create a SIP account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="405"/>
+ <source>Link this device to an existing account</source>
+ <translation>Propojit zařízení s již existujícím účtem</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="469"/>
+ <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">To link this device to another account, you first </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">need to obtain a PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> code. To generate the PIN code:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Account management setting</span><span style=" font-size:14px;"> of a previous device</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choose the </span><span style=" font-size:14px; font-weight:600;">Jami account</span><span style=" font-size:14px;"> you want to use</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Devices</span><span style=" font-size:14px;"> tab</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Select </span><span style=" font-size:14px; font-weight:600;">Add a device</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">You will get the necessary PIN to complete this form. The PIN is only valid for </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutes</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="531"/>
+ <source>Enter your pin:</source>
+ <translation>Vložte svůj pin:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="599"/>
+ <source>Or import a file:</source>
+ <translation>Nebo zavést soubor:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="626"/>
+ <source>Link from exported account archive file</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="629"/>
+ <location filename="../newwizardwidget.cpp" line="83"/>
+ <location filename="../newwizardwidget.cpp" line="218"/>
+ <source>(None)</source>
+ <translation>(žádný)</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="705"/>
+ <source>Password:</source>
+ <translation>Heslo:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="799"/>
+ <location filename="../newwizardwidget.ui" line="1586"/>
+ <source>Profile</source>
+ <translation>Profil</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="953"/>
+ <location filename="../newwizardwidget.ui" line="1767"/>
+ <source>Profile name</source>
+ <translation>Název profilu</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1027"/>
+ <source>Account</source>
+ <translation>Účet</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1136"/>
+ <source>Register your username.
+This will reserve the username so that only you can use it.
+Your friends will be able to call you with your usename
+instead of using your ID.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1142"/>
+ <source>Public username checkbox</source>
+ <translation>Zaškrtávací okénko pro veřejné uživatelské jméno</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1145"/>
+ <source>Checkbox selecting if the user wants a public username</source>
+ <translation>Zaškrtnutí okénka, pokud chce uživatel veřejné uživatelské jméno</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1148"/>
+ <source>Register public username</source>
+ <translation>Zaregistrovat veřejné uživatelské jméno</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1367"/>
+ <source>Public username edit</source>
+ <translation>Upravení veřejného uživatelského jména</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1373"/>
+ <source>Choose your username</source>
+ <translation>Zvolte si uživatelské jméno</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1289"/>
+ <source>Password text input</source>
+ <translation>Zadání textu hesla</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1295"/>
+ <source>Password text entry</source>
+ <translation>Zadání textu hesla</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1301"/>
+ <location filename="../newwizardwidget.ui" line="2213"/>
+ <source>Password</source>
+ <translation>Heslo</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1211"/>
+ <location filename="../newwizardwidget.ui" line="1217"/>
+ <source>Password confirmation text input</source>
+ <translation>Textové zadání potvrzení hesla</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1223"/>
+ <source>Confirm password</source>
+ <translation>Potvrdit heslo</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1814"/>
+ <source>SIP Account</source>
+ <translation>Účet SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1973"/>
+ <source>SIP Server edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1979"/>
+ <source>Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2045"/>
+ <source>SIP proxy input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2051"/>
+ <source>SIP proxy text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2057"/>
+ <source>Proxy</source>
+ <translation>Proxy</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2123"/>
+ <source>SIP username input</source>
+ <translation>Zadání uživatelského jména pro SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2129"/>
+ <source>SIP Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2135"/>
+ <source>Username</source>
+ <translation>Uživatelské jméno</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2201"/>
+ <location filename="../newwizardwidget.ui" line="2207"/>
+ <source>SIP Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message utf8="true">
+ <location filename="../newwizardwidget.ui" line="2282"/>
+ <source>Generating your Jami account…</source>
+ <translation>Vytváří se váš účet Jami…</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2356"/>
+ <source>Previous page button</source>
+ <translation>Předchozí strana</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2362"/>
+ <source>push button to access previous page of wizard</source>
+ <translation>Tlačítko pro vrácení se v průvodci o stranu zpět</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2365"/>
+ <source>Previous</source>
+ <translation>Předchozí</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2396"/>
+ <source>Cancel account create/link</source>
+ <translation>Zrušit vytváření/propojování účtu</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2402"/>
+ <source>push button to cancel account creation or linking</source>
+ <translation>Tlačítko pro zrušení vytváření nebo propojování účtu</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2405"/>
+ <source>Back</source>
+ <translation>Zpět</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2442"/>
+ <source>Next page Button</source>
+ <translation>Další strana</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2448"/>
+ <source>Push button to access next page of wizard</source>
+ <translation>Tlačítko pro přechod na další stranu průvodce</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2451"/>
+ <source>Next</source>
+ <translation>Další</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="75"/>
+ <source>Open File</source>
+ <translation>Otevřít soubor</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="77"/>
+ <source>Jami archive files (*.gz); All files (*)</source>
+ <translation>Archivní soubory Jami (*.gz); Všechny soubory (*)</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="123"/>
+ <source>Your account needs to be migrated. Enter your password.</source>
+ <translation>Váš účet musí být převeden. Zadejte své heslo.</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="419"/>
+ <source>Migrating your Jami account...</source>
+ <translation>Převádí se váš účet Jami…</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="412"/>
+ <source>Importing account archive...</source>
+ <translation>Zavádí se archiv s účtem…</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="404"/>
+ <source>Generating your Jami account...</source>
+ <translation>Vytváří se váš účet Jami…</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="422"/>
+ <source>Generating your SIP account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="533"/>
+ <source>Error creating account</source>
+ <translation>Chyba při vytváření účtu</translation>
+ </message>
+</context>
+<context>
+ <name>PasswordDialog</name>
+ <message>
+ <location filename="../passworddialog.ui" line="32"/>
+ <source>Change Account Password</source>
+ <translation>Změnit heslo k účtu</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="97"/>
+ <source>Enter Current Password</source>
+ <translation>Zadejte nynější heslo</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="169"/>
+ <source>Enter New Password</source>
+ <translation>Zadejte nové heslo</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="190"/>
+ <source>Confirm New Password</source>
+ <translation>Potvrďte nové heslo</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="247"/>
+ <source>Confirm</source>
+ <translation>Potvrdit</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="290"/>
+ <source>Cancel</source>
+ <translation>Zrušit</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="143"/>
+ <source>Current Password Incorrect</source>
+ <translation>Nynější heslo je nesprávné</translation>
+ </message>
+</context>
+<context>
+ <name>PhotoBoothDialog</name>
+ <message>
+ <location filename="../photoboothdialog.ui" line="14"/>
+ <source>Photobooth</source>
+ <translation>Fotoautomat</translation>
+ </message>
+</context>
+<context>
+ <name>PhotoboothWidget</name>
+ <message>
+ <location filename="../photoboothwidget.ui" line="20"/>
+ <source>Form</source>
+ <translation>Formulář</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.ui" line="120"/>
+ <source>Photobooth display</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="92"/>
+ <source>Choose File</source>
+ <translation>Vybrat soubor</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="94"/>
+ <source>Image Files (*.jpg *.jpeg *.png)</source>
+ <translation>Obrázkové soubory (*.jpg *.jpeg *.png)</translation>
+ </message>
+</context>
+<context>
+ <name>PrivateBridging</name>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Choose File</source>
+ <translation>Vybrat soubor</translation>
+ </message>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Files (*)</source>
+ <translation>Soubory (*)</translation>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../utils.cpp" line="183"/>
+ <source>No default mail client found</source>
+ <translation>Nenalezen žádný výchozí e-mailový klient</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="43"/>
+ <location filename="../deviceitemwidget.cpp" line="85"/>
+ <source>Edit Device Name</source>
+ <translation>Upravit název zařízení</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="44"/>
+ <source>Unlink Device From Account</source>
+ <translation>Odpojit zařízení od účtu</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="80"/>
+ <source>Save new device name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.cpp" line="39"/>
+ <source>Add as contact</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>RingButton</name>
+ <message>
+ <location filename="../ringbutton.ui" line="140"/>
+ <source>Select folder</source>
+ <translation>Vybrat složku</translation>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <location filename="../settingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulář</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="141"/>
+ <source>Settings</source>
+ <translation>Nastavení</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="229"/>
+ <source>Account</source>
+ <translation>Účet</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="267"/>
+ <location filename="../settingswidget.ui" line="503"/>
+ <source>General</source>
+ <translation>Obecné</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="305"/>
+ <location filename="../settingswidget.ui" line="3416"/>
+ <source>Audio / Video</source>
+ <translation>Zvuk/Obraz</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="542"/>
+ <source>System</source>
+ <translation>Systém</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="610"/>
+ <source>Enable desktop notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="653"/>
+ <source>Keep minimized on close</source>
+ <translation>Neukončovat Ring po uzavření okna</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="678"/>
+ <source>Download folder</source>
+ <translation>Složka pro stahování</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="811"/>
+ <source>Save in</source>
+ <translation>Uložit do</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="904"/>
+ <source>Always Recording</source>
+ <translation>Vždy nahrávat</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="943"/>
+ <source>Updates</source>
+ <translation>Aktualizace</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1008"/>
+ <source>Check for updates automatically every</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1032"/>
+ <source>Interval between update checks in days selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1038"/>
+ <source> days</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1081"/>
+ <source>Check for updates now button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1084"/>
+ <source>Check for updates now</source>
+ <translation>Zkontrolovat aktualizace nyní</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3027"/>
+ <source>Password</source>
+ <translation>Heslo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1418"/>
+ <location filename="../settingswidget.ui" line="2729"/>
+ <source>Enable</source>
+ <translation>Povolit</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="607"/>
+ <source>toggle enable notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="650"/>
+ <source>Toggle keep minimized on close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="764"/>
+ <source>Call Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1005"/>
+ <source>Toggle automatic updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1231"/>
+ <source>Jami Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1453"/>
+ <location filename="../settingswidget.ui" line="2761"/>
+ <source>Profile</source>
+ <translation>Profil</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1567"/>
+ <location filename="../settingswidget.ui" line="2875"/>
+ <source>Identity</source>
+ <translation>Totožnost</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1614"/>
+ <source>Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1673"/>
+ <source>Registered name</source>
+ <translation>Registrované jméno</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1721"/>
+ <source>Type here to register a username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1755"/>
+ <source>Register</source>
+ <translation>Zaregistrovat</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1827"/>
+ <source>Change Password</source>
+ <translation>Změnit heslo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1868"/>
+ <source>Export Account</source>
+ <translation>Vyvést účet</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1909"/>
+ <location filename="../settingswidget.ui" line="3089"/>
+ <source>Delete Account</source>
+ <translation>Odstranit účet</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1973"/>
+ <source>Linked Devices</source>
+ <translation>Připojená zařízení</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2078"/>
+ <source>Link Another Device</source>
+ <translation>Připojit další zařízení</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2142"/>
+ <source>Banned Contacts</source>
+ <translation>Zakázané kontakty</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3788"/>
+ <source>Format</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3831"/>
+ <source>Video device framerate selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3967"/>
+ <source>Preview unavailable</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2359"/>
+ <location filename="../settingswidget.ui" line="3187"/>
+ <source>Advanced Account Settings</source>
+ <translation>Pokročilá nastavení účtu</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2554"/>
+ <source>SIP Account</source>
+ <translation>Účet SIP</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2925"/>
+ <source>Username</source>
+ <translation>Uživatelské jméno</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2958"/>
+ <source>Hostname</source>
+ <translation>Název serveru</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2991"/>
+ <source>Proxy</source>
+ <translation>Proxy</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3461"/>
+ <source>Audio</source>
+ <translation>Zvuk</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3511"/>
+ <source>Microphone</source>
+ <translation>Mikrofon</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3551"/>
+ <source>Audio input device selector</source>
+ <translation>Výběr vstupního zvukového zařízení</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3585"/>
+ <source>Output Device</source>
+ <translation>Výstupní zařízení</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3625"/>
+ <source>Choose the output device</source>
+ <translation>Vybrat název výstupního zařízení</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3682"/>
+ <source>Video</source>
+ <translation>Video</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3720"/>
+ <source>Device</source>
+ <translation>Zařízení</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3766"/>
+ <source>Video device selector</source>
+ <translation>Výběr obrazového zařízení</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="459"/>
+ <source>A registered name should not have any spaces and must be at least three letters long</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="466"/>
+ <source>This name is already taken</source>
+ <translation>Toto uživatelské jméno je již zabráno</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="92"/>
+ <location filename="../settingswidget.cpp" line="110"/>
+ <source>Enter an alias</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="473"/>
+ <source>Register this name</source>
+ <translation>Zaregistrovat toto jméno</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="550"/>
+ <source>Remove Device</source>
+ <translation>Odstranit zařízení</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="551"/>
+ <source>Enter this account's password to confirm the removal of this device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="558"/>
+ <source>Are you sure you wish to remove this device?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="589"/>
+ <source>Export Account Here</source>
+ <translation>Vyvést účet sem</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="887"/>
+ <source>Select A Folder For Your Downloads</source>
+ <translation>Vyberte složku pro vaše stahování</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="904"/>
+ <source>Select A Folder For Your Recordings</source>
+ <translation>Vyberte složku pro vaše nahrávání</translation>
+ </message>
+</context>
+<context>
+ <name>VideoOverlay</name>
+ <message>
+ <location filename="../videooverlay.ui" line="419"/>
+ <source>Call on Hold</source>
+ <translation>Hovor pozastaven</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="89"/>
+ <source>Hold / Unhold</source>
+ <translation>Pozastavit/Pokračovat</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="124"/>
+ <source>Chat</source>
+ <translation>Rozhovor</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="162"/>
+ <source>Mute Mic</source>
+ <translation>Ztlumit mikrofon</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="244"/>
+ <source>Record call</source>
+ <translation>Nahrávat vše</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="325"/>
+ <source>Name label</source>
+ <translation>Název štítku</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="390"/>
+ <source>Time elapsed</source>
+ <translation>Uplynulý čas</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="393"/>
+ <source>00:00</source>
+ <translation>00:00</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="57"/>
+ <source>Hangup</source>
+ <translation>Zavěsit</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="203"/>
+ <source>Mute Video</source>
+ <translation>Vypnout obraz</translation>
+ </message>
+</context>
+<context>
+ <name>VideoView</name>
+ <message>
+ <location filename="../videoview.cpp" line="271"/>
+ <source>Share entire screen</source>
+ <translation>Sdílet celou obrazovku</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="274"/>
+ <source>Share screen area</source>
+ <translation>Sdílet část obrazovky</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="281"/>
+ <source>Share file</source>
+ <translation>Sdílet soubor</translation>
+ </message>
+</context>
+</TS>
\ No newline at end of file
diff --git a/translations/ring_client_windows_da.ts b/translations/ring_client_windows_da.ts
new file mode 100644
index 0000000..62a01b7
--- /dev/null
+++ b/translations/ring_client_windows_da.ts
@@ -0,0 +1,1589 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="da" version="2.0">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../aboutdialog.ui" line="435"/>
+ <location filename="../aboutdialog.ui" line="465"/>
+ <source>About</source>
+ <translation>Om</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="462"/>
+ <source>about button</source>
+ <translation>om-knap</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="478"/>
+ <source>credits button</source>
+ <translation>krediteringer-knap</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="481"/>
+ <source>Credits</source>
+ <translation>Krediteringer</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="547"/>
+ <source>Free as in Freedom</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="563"/>
+ <source>The Microsoft Windows client for Jami.
+Jami is a secured and distributed communication software.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="32"/>
+ <source>version</source>
+ <translation>version</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="39"/>
+ <source>Created by:</source>
+ <translation>Skabt af:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="73"/>
+ <source>Artwork by:</source>
+ <translation>Grafik af:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="77"/>
+ <source>Based on the SFLPhone project</source>
+ <translation>Baseret på SFLPhone-projektet</translation>
+ </message>
+</context>
+<context>
+ <name>AccountItemDelegate</name>
+ <message>
+ <location filename="../accountitemdelegate.cpp" line="91"/>
+ <source>Add Account</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSIPSettingsWidget</name>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Form</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="55"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="102"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="130"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="191"/>
+ <source>Connectivity</source>
+ <translation>Forbindelse</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="281"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="293"/>
+ <source>Use STUN</source>
+ <translation>Brug STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="317"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="329"/>
+ <source>Use TURN</source>
+ <translation>Brug TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="359"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="391"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="423"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="464"/>
+ <source>Media</source>
+ <translation>Medier</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="515"/>
+ <source>Enable Video</source>
+ <translation>Aktiver video</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="539"/>
+ <source>Video Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="692"/>
+ <source>Audio Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="142"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="151"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSettingsWidget</name>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Form</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="61"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="108"/>
+ <source>Allow Calls From Untrusted Peers</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="133"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="161"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="188"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="225"/>
+ <source>Name Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="275"/>
+ <source>Address</source>
+ <translation>Adresse</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="351"/>
+ <source>OpenDHT Configuration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="398"/>
+ <source>Enable Proxy</source>
+ <translation>Aktivér proxy</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="454"/>
+ <source>Bootstrap</source>
+ <translation>Bootstrap</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="530"/>
+ <source>Security</source>
+ <translation>Sikkerhed</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="571"/>
+ <source>Private Key Password</source>
+ <translation>Adgangskode for Privatnøgle</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="583"/>
+ <source>User Certificate</source>
+ <translation>Brugercertifikat</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="622"/>
+ <source>Private Key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="634"/>
+ <source>CA Certificate</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="766"/>
+ <source>Connectivity</source>
+ <translation>Forbindelse</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="868"/>
+ <source>Use STUN</source>
+ <translation>Brug STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="856"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="892"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="904"/>
+ <source>Use TURN</source>
+ <translation>Brug TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="934"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="966"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="998"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1039"/>
+ <source>Media</source>
+ <translation>Medier</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1090"/>
+ <source>Enable Video</source>
+ <translation>Aktiver video</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1267"/>
+ <source>Audio Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1114"/>
+ <source>Video Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="181"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AnimatedOverlay</name>
+ <message>
+ <location filename="../animatedoverlay.ui" line="14"/>
+ <source>Form</source>
+ <translation>Form</translation>
+ </message>
+</context>
+<context>
+ <name>BannedItemWidget</name>
+ <message>
+ <location filename="../banneditemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Form</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="80"/>
+ <source>name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="104"/>
+ <source>id</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>CallWidget</name>
+ <message>
+ <location filename="../callwidget.ui" line="184"/>
+ <source>Show conversations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="187"/>
+ <source>Conversations</source>
+ <translation>Samtaler</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="368"/>
+ <source>Search contact text input</source>
+ <translation>Tekstinput for søg efter kontakt</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="653"/>
+ <source>Jami is free software for universal communication which respects the freedoms and privacy of its users.</source>
+ <translation>Jami is free software for universal communication which respects the freedoms and privacy of its users. (Näcken)</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="693"/>
+ <source>
+ This is your ID.
+Copy and share it with your friends!
+ </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="806"/>
+ <source>Show ring ID QR code</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="857"/>
+ <source>Share ring ID button</source>
+ <translation>Del ring-ID-knap</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="915"/>
+ <source>Double-click to copy</source>
+ <translation>Dobbeltklik for at kopiere</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="956"/>
+ <source>Error while generating QR Code</source>
+ <translation>Fejl ved generering af QR-kode</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1184"/>
+ <location filename="../callwidget.ui" line="1434"/>
+ <source>best name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1208"/>
+ <source>best Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1734"/>
+ <source>Back to homepage button</source>
+ <translation>Tilbage til hjemmeside-knap</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1943"/>
+ <source>Add to contacts</source>
+ <translation>Tilføj til kontakt</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="202"/>
+ <source>Show invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="205"/>
+ <source>Invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="377"/>
+ <location filename="../callwidget.cpp" line="552"/>
+ <source>Find a new or existing contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1444"/>
+ <source>Wants to talk to you!</source>
+ <translation>Vil tale med dig!</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1517"/>
+ <source>Answer incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1589"/>
+ <source>Ignore incoming call button</source>
+ <translation>Ignorer indgående opkald-knap</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1539"/>
+ <source>Answer</source>
+ <translation>Besvar</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1617"/>
+ <source>Ignore</source>
+ <translation>Afvis</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1280"/>
+ <source>Cancel outgoing call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1305"/>
+ <source>Cancel</source>
+ <translation>Annuller</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="332"/>
+ <source>Start video call</source>
+ <translation>Start et video opkald</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="343"/>
+ <source>Start audio call</source>
+ <translation>Start en audio samtale</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="354"/>
+ <source>Clear conversation</source>
+ <translation>Ryd samtale</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="361"/>
+ <source>Remove contact</source>
+ <translation>Fjern kontakt</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="373"/>
+ <source>Block contact</source>
+ <translation>Bloker kontakt</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="384"/>
+ <source>Copy number</source>
+ <translation>Kopiér nummer</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="561"/>
+ <source>Search your received invitations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>Contact me on Jami</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>My Id is : </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="847"/>
+ <source>%1</source>
+ <comment>%1 is the contact username</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="852"/>
+ <source>%1</source>
+ <comment>%1 is the contact unique identifier</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="675"/>
+ <source>Call incoming from %1</source>
+ <translation>Indgående kald fra %1</translation>
+ </message>
+</context>
+<context>
+ <name>DeleteAccountDialog</name>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="35"/>
+ <source>Account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="58"/>
+ <source>Do you really want to delete the following account?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="153"/>
+ <source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="235"/>
+ <source>Permanently delete account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="241"/>
+ <source>Delete</source>
+ <translation>Slet</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="278"/>
+ <source>Cancel account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="284"/>
+ <source>Cancel</source>
+ <translation>Annuller</translation>
+ </message>
+</context>
+<context>
+ <name>DeviceItemWidget</name>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Form</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="105"/>
+ <source>Device Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="143"/>
+ <source>this device</source>
+ <translation>denne enhed</translation>
+ </message>
+</context>
+<context>
+ <name>InviteButtonsWidget</name>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="83"/>
+ <source>Accept</source>
+ <translation>Accepter</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="131"/>
+ <source>Refuse</source>
+ <translation>Afvis</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="179"/>
+ <source>Block</source>
+ <translation>Blokér</translation>
+ </message>
+</context>
+<context>
+ <name>LinkDeviceDialog</name>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation>Dialog</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="62"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="117"/>
+ <source>Password</source>
+ <translation>Adgangskode</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="184"/>
+ <source>Ok</source>
+ <translation>Ok</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="218"/>
+ <source>Cancel</source>
+ <translation>Annuller</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="279"/>
+ <source>Exporting account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="402"/>
+ <source>Your PIN is</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="432"/>
+ <source>PIN</source>
+ <translation>PIN</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="477"/>
+ <source>This pin and the account password should be entered in your device within 10 minutes.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="553"/>
+ <source>Close</source>
+ <translation>Luk</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="34"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="96"/>
+ <source>Incorrect password</source>
+ <translation>Forkert adgangskode</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="110"/>
+ <source>Something went wrong.
+Please try again later.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="83"/>
+ <source>Settings</source>
+ <translation>Indstillinger</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="94"/>
+ <source>Exit</source>
+ <translation>Afslut</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="111"/>
+ <source>About</source>
+ <translation>Om</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="435"/>
+ <source>Jami</source>
+ <translation>Jami</translation>
+ </message>
+</context>
+<context>
+ <name>NameRegistrationDialog</name>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="35"/>
+ <source>Set Registered Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="163"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="244"/>
+ <source>Password text input</source>
+ <translation>Tekstinput for adgangskode</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="250"/>
+ <source>Password text entry</source>
+ <translation>Tekstindtastning for adgangskode</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="256"/>
+ <source>Password</source>
+ <translation>Adgangskode</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="323"/>
+ <source>Register</source>
+ <translation>Registrér</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="357"/>
+ <source>Cancel</source>
+ <translation>Annuller</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="424"/>
+ <source>Registering Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="548"/>
+ <source>Something went wrong</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="618"/>
+ <source>Close</source>
+ <translation>Luk</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="82"/>
+ <source>Incorrect password</source>
+ <translation>Forkert adgangskode</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="85"/>
+ <source>Network error</source>
+ <translation>Netværksfejl</translation>
+ </message>
+</context>
+<context>
+ <name>NewWizardWidget</name>
+ <message>
+ <location filename="../newwizardwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Form</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="141"/>
+ <source>Welcome Label</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="147"/>
+ <source> Welcome to</source>
+ <translation>Velkommen til</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="185"/>
+ <source>Welcome Logo</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="239"/>
+ <source>Create Jami account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="245"/>
+ <source>Push button for Jami account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="251"/>
+ <source>Create a Jami account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="282"/>
+ <source>Link device button</source>
+ <translation>Tilknyt enhed-knap</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="288"/>
+ <source>Push button for device linkage start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="291"/>
+ <source>Link this device to an account</source>
+ <translation>Tilknyt denne enhed til en konto</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="328"/>
+ <source>Create Jami SIP account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="334"/>
+ <source>Push button for Jami SIP account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="340"/>
+ <source>Create a SIP account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="405"/>
+ <source>Link this device to an existing account</source>
+ <translation>Tilnyt denne enhed til en eksisterende konto</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="469"/>
+ <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">To link this device to another account, you first </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">need to obtain a PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> code. To generate the PIN code:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Account management setting</span><span style=" font-size:14px;"> of a previous device</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choose the </span><span style=" font-size:14px; font-weight:600;">Jami account</span><span style=" font-size:14px;"> you want to use</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Devices</span><span style=" font-size:14px;"> tab</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Select </span><span style=" font-size:14px; font-weight:600;">Add a device</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">You will get the necessary PIN to complete this form. The PIN is only valid for </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutes</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="531"/>
+ <source>Enter your pin:</source>
+ <translation>Indtast PIN-kode:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="599"/>
+ <source>Or import a file:</source>
+ <translation>Eller importér en fil:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="626"/>
+ <source>Link from exported account archive file</source>
+ <translation>Tilknyt fra eksporteret konto-arkivfil</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="629"/>
+ <location filename="../newwizardwidget.cpp" line="83"/>
+ <location filename="../newwizardwidget.cpp" line="218"/>
+ <source>(None)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="705"/>
+ <source>Password:</source>
+ <translation>Adgangskode:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="799"/>
+ <location filename="../newwizardwidget.ui" line="1586"/>
+ <source>Profile</source>
+ <translation>Profil</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="953"/>
+ <location filename="../newwizardwidget.ui" line="1767"/>
+ <source>Profile name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1027"/>
+ <source>Account</source>
+ <translation>Konto</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1136"/>
+ <source>Register your username.
+This will reserve the username so that only you can use it.
+Your friends will be able to call you with your usename
+instead of using your ID.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1142"/>
+ <source>Public username checkbox</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1145"/>
+ <source>Checkbox selecting if the user wants a public username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1148"/>
+ <source>Register public username</source>
+ <translation>Registrer offentligt brugernavn</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1367"/>
+ <source>Public username edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1373"/>
+ <source>Choose your username</source>
+ <translation>Vælg dit brugernavn</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1289"/>
+ <source>Password text input</source>
+ <translation>Tekstinput for adgangskode</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1295"/>
+ <source>Password text entry</source>
+ <translation>Tekstindtastning for adgangskode</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1301"/>
+ <location filename="../newwizardwidget.ui" line="2213"/>
+ <source>Password</source>
+ <translation>Adgangskode</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1211"/>
+ <location filename="../newwizardwidget.ui" line="1217"/>
+ <source>Password confirmation text input</source>
+ <translation>Tekstinput for bekræftelse af adgangskode</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1223"/>
+ <source>Confirm password</source>
+ <translation>Bekræft adgangskode</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1814"/>
+ <source>SIP Account</source>
+ <translation>SIP-konto</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1973"/>
+ <source>SIP Server edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1979"/>
+ <source>Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2045"/>
+ <source>SIP proxy input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2051"/>
+ <source>SIP proxy text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2057"/>
+ <source>Proxy</source>
+ <translation>Stedfortræder</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2123"/>
+ <source>SIP username input</source>
+ <translation>Input af SIP-brugernavn</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2129"/>
+ <source>SIP Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2135"/>
+ <source>Username</source>
+ <translation>Brugernavn</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2201"/>
+ <location filename="../newwizardwidget.ui" line="2207"/>
+ <source>SIP Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message utf8="true">
+ <location filename="../newwizardwidget.ui" line="2282"/>
+ <source>Generating your Jami account…</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2356"/>
+ <source>Previous page button</source>
+ <translation>Forrige side-knap</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2362"/>
+ <source>push button to access previous page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2365"/>
+ <source>Previous</source>
+ <translation>Tilbage</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2396"/>
+ <source>Cancel account create/link</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2402"/>
+ <source>push button to cancel account creation or linking</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2405"/>
+ <source>Back</source>
+ <translation>Tilbage</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2442"/>
+ <source>Next page Button</source>
+ <translation>Næste side-knap</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2448"/>
+ <source>Push button to access next page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2451"/>
+ <source>Next</source>
+ <translation>Næste</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="75"/>
+ <source>Open File</source>
+ <translation>Åbn fil</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="77"/>
+ <source>Jami archive files (*.gz); All files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="123"/>
+ <source>Your account needs to be migrated. Enter your password.</source>
+ <translation>Din konto kræver migrering. Indtast din adgangskode.</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="419"/>
+ <source>Migrating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="412"/>
+ <source>Importing account archive...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="404"/>
+ <source>Generating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="422"/>
+ <source>Generating your SIP account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="533"/>
+ <source>Error creating account</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PasswordDialog</name>
+ <message>
+ <location filename="../passworddialog.ui" line="32"/>
+ <source>Change Account Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="97"/>
+ <source>Enter Current Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="169"/>
+ <source>Enter New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="190"/>
+ <source>Confirm New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="247"/>
+ <source>Confirm</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="290"/>
+ <source>Cancel</source>
+ <translation>Annuller</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="143"/>
+ <source>Current Password Incorrect</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PhotoBoothDialog</name>
+ <message>
+ <location filename="../photoboothdialog.ui" line="14"/>
+ <source>Photobooth</source>
+ <translation>Fotobås</translation>
+ </message>
+</context>
+<context>
+ <name>PhotoboothWidget</name>
+ <message>
+ <location filename="../photoboothwidget.ui" line="20"/>
+ <source>Form</source>
+ <translation>Form</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.ui" line="120"/>
+ <source>Photobooth display</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="92"/>
+ <source>Choose File</source>
+ <translation>Vælg fil</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="94"/>
+ <source>Image Files (*.jpg *.jpeg *.png)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PrivateBridging</name>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Choose File</source>
+ <translation>Vælg fil</translation>
+ </message>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Files (*)</source>
+ <translation>Filer (*)</translation>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../utils.cpp" line="183"/>
+ <source>No default mail client found</source>
+ <translation>Ingen standard mail-klient fundet</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="43"/>
+ <location filename="../deviceitemwidget.cpp" line="85"/>
+ <source>Edit Device Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="44"/>
+ <source>Unlink Device From Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="80"/>
+ <source>Save new device name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.cpp" line="39"/>
+ <source>Add as contact</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>RingButton</name>
+ <message>
+ <location filename="../ringbutton.ui" line="140"/>
+ <source>Select folder</source>
+ <translation>Vælg mappe</translation>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <location filename="../settingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Form</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="141"/>
+ <source>Settings</source>
+ <translation>Indstillinger</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="229"/>
+ <source>Account</source>
+ <translation>Konto</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="267"/>
+ <location filename="../settingswidget.ui" line="503"/>
+ <source>General</source>
+ <translation>Generelt</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="305"/>
+ <location filename="../settingswidget.ui" line="3416"/>
+ <source>Audio / Video</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="542"/>
+ <source>System</source>
+ <translation>System</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="610"/>
+ <source>Enable desktop notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="653"/>
+ <source>Keep minimized on close</source>
+ <translation>Hold minimeret ved lukning</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="678"/>
+ <source>Download folder</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="811"/>
+ <source>Save in</source>
+ <translation>Gem i</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="904"/>
+ <source>Always Recording</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="943"/>
+ <source>Updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1008"/>
+ <source>Check for updates automatically every</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1032"/>
+ <source>Interval between update checks in days selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1038"/>
+ <source> days</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1081"/>
+ <source>Check for updates now button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1084"/>
+ <source>Check for updates now</source>
+ <translation>Søg efter for opdateringer nu</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3027"/>
+ <source>Password</source>
+ <translation>Adgangskode</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1418"/>
+ <location filename="../settingswidget.ui" line="2729"/>
+ <source>Enable</source>
+ <translation>Tillad</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="607"/>
+ <source>toggle enable notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="650"/>
+ <source>Toggle keep minimized on close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="764"/>
+ <source>Call Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1005"/>
+ <source>Toggle automatic updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1231"/>
+ <source>Jami Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1453"/>
+ <location filename="../settingswidget.ui" line="2761"/>
+ <source>Profile</source>
+ <translation>Profil</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1567"/>
+ <location filename="../settingswidget.ui" line="2875"/>
+ <source>Identity</source>
+ <translation>Identitet</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1614"/>
+ <source>Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1673"/>
+ <source>Registered name</source>
+ <translation>Registreret navn</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1721"/>
+ <source>Type here to register a username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1755"/>
+ <source>Register</source>
+ <translation>Registrér</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1827"/>
+ <source>Change Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1868"/>
+ <source>Export Account</source>
+ <translation>Eksport konto</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1909"/>
+ <location filename="../settingswidget.ui" line="3089"/>
+ <source>Delete Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1973"/>
+ <source>Linked Devices</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2078"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2142"/>
+ <source>Banned Contacts</source>
+ <translation>Blokerede kontakter</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3788"/>
+ <source>Format</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3831"/>
+ <source>Video device framerate selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3967"/>
+ <source>Preview unavailable</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2359"/>
+ <location filename="../settingswidget.ui" line="3187"/>
+ <source>Advanced Account Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2554"/>
+ <source>SIP Account</source>
+ <translation>SIP-konto</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2925"/>
+ <source>Username</source>
+ <translation>Brugernavn</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2958"/>
+ <source>Hostname</source>
+ <translation>Værtsnavn</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2991"/>
+ <source>Proxy</source>
+ <translation>Stedfortræder</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3461"/>
+ <source>Audio</source>
+ <translation>Lyd</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3511"/>
+ <source>Microphone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3551"/>
+ <source>Audio input device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3585"/>
+ <source>Output Device</source>
+ <translation>Outputenhed</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3625"/>
+ <source>Choose the output device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3682"/>
+ <source>Video</source>
+ <translation>Video</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3720"/>
+ <source>Device</source>
+ <translation>Enhed</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3766"/>
+ <source>Video device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="459"/>
+ <source>A registered name should not have any spaces and must be at least three letters long</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="466"/>
+ <source>This name is already taken</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="92"/>
+ <location filename="../settingswidget.cpp" line="110"/>
+ <source>Enter an alias</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="473"/>
+ <source>Register this name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="550"/>
+ <source>Remove Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="551"/>
+ <source>Enter this account's password to confirm the removal of this device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="558"/>
+ <source>Are you sure you wish to remove this device?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="589"/>
+ <source>Export Account Here</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="887"/>
+ <source>Select A Folder For Your Downloads</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="904"/>
+ <source>Select A Folder For Your Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>VideoOverlay</name>
+ <message>
+ <location filename="../videooverlay.ui" line="419"/>
+ <source>Call on Hold</source>
+ <translation>Samtale parkeret</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="89"/>
+ <source>Hold / Unhold</source>
+ <translation>Parkeret / Aktiv</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="124"/>
+ <source>Chat</source>
+ <translation>Chat</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="162"/>
+ <source>Mute Mic</source>
+ <translation>Sluk mikrofon</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="244"/>
+ <source>Record call</source>
+ <translation>Optag opkald</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="325"/>
+ <source>Name label</source>
+ <translation>Navne etiket</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="390"/>
+ <source>Time elapsed</source>
+ <translation>Tid gået</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="393"/>
+ <source>00:00</source>
+ <translation>00:00</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="57"/>
+ <source>Hangup</source>
+ <translation>Læg på</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="203"/>
+ <source>Mute Video</source>
+ <translation>Sluk mikrofon</translation>
+ </message>
+</context>
+<context>
+ <name>VideoView</name>
+ <message>
+ <location filename="../videoview.cpp" line="271"/>
+ <source>Share entire screen</source>
+ <translation>Del hele skærmen</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="274"/>
+ <source>Share screen area</source>
+ <translation>Del skærmområde</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="281"/>
+ <source>Share file</source>
+ <translation>Del fil</translation>
+ </message>
+</context>
+</TS>
\ No newline at end of file
diff --git a/translations/ring_client_windows_da_DK.ts b/translations/ring_client_windows_da_DK.ts
new file mode 100644
index 0000000..b13f0bb
--- /dev/null
+++ b/translations/ring_client_windows_da_DK.ts
@@ -0,0 +1,1591 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="da_DK">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../aboutdialog.ui" line="435"/>
+ <location filename="../aboutdialog.ui" line="465"/>
+ <source>About</source>
+ <translation>Om</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="462"/>
+ <source>about button</source>
+ <translation>Knap til om</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="478"/>
+ <source>credits button</source>
+ <translation>Knap til krediteringer</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="481"/>
+ <source>Credits</source>
+ <translation>Krediteringer</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="547"/>
+ <source>Free as in Freedom</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="563"/>
+ <source>The Microsoft Windows client for Jami.
+Jami is a secured and distributed communication software.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="32"/>
+ <source>version</source>
+ <translation>version</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="39"/>
+ <source>Created by:</source>
+ <translation>Skabt af:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="73"/>
+ <source>Artwork by:</source>
+ <translation>Grafik af:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="77"/>
+ <source>Based on the SFLPhone project</source>
+ <translation>Baseret på SFLPhone-projektet</translation>
+ </message>
+</context>
+<context>
+ <name>AccountItemDelegate</name>
+ <message>
+ <location filename="../accountitemdelegate.cpp" line="91"/>
+ <source>Add Account</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>AdvancedSIPSettingsWidget</name>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished">Form</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="55"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="102"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="130"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="191"/>
+ <source>Connectivity</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="281"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="293"/>
+ <source>Use STUN</source>
+ <translation type="unfinished">Brug STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="317"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="329"/>
+ <source>Use TURN</source>
+ <translation type="unfinished">Brug TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="359"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="391"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="423"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="464"/>
+ <source>Media</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="515"/>
+ <source>Enable Video</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="539"/>
+ <source>Video Codecs</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="692"/>
+ <source>Audio Codecs</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="142"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="151"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>AdvancedSettingsWidget</name>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished">Form</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="61"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="108"/>
+ <source>Allow Calls From Untrusted Peers</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="133"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="161"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="188"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="225"/>
+ <source>Name Server</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="275"/>
+ <source>Address</source>
+ <translation type="unfinished">Adresse</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="351"/>
+ <source>OpenDHT Configuration</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="398"/>
+ <source>Enable Proxy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="454"/>
+ <source>Bootstrap</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="530"/>
+ <source>Security</source>
+ <translation type="unfinished">Sikkerhed</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="571"/>
+ <source>Private Key Password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="583"/>
+ <source>User Certificate</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="622"/>
+ <source>Private Key</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="634"/>
+ <source>CA Certificate</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="766"/>
+ <source>Connectivity</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="868"/>
+ <source>Use STUN</source>
+ <translation type="unfinished">Brug STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="856"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="892"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="904"/>
+ <source>Use TURN</source>
+ <translation type="unfinished">Brug TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="934"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="966"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="998"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1039"/>
+ <source>Media</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1090"/>
+ <source>Enable Video</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1267"/>
+ <source>Audio Codecs</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1114"/>
+ <source>Video Codecs</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="181"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>AnimatedOverlay</name>
+ <message>
+ <location filename="../animatedoverlay.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished">Form</translation>
+ </message>
+</context>
+<context>
+ <name>BannedItemWidget</name>
+ <message>
+ <location filename="../banneditemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished">Form</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="80"/>
+ <source>name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="104"/>
+ <source>id</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>CallWidget</name>
+ <message>
+ <location filename="../callwidget.ui" line="184"/>
+ <source>Show conversations</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="187"/>
+ <source>Conversations</source>
+ <translation>Samtaler</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="368"/>
+ <source>Search contact text input</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="653"/>
+ <source>Jami is free software for universal communication which respects the freedoms and privacy of its users.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="693"/>
+ <source>
+ This is your ID.
+Copy and share it with your friends!
+ </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="806"/>
+ <source>Show ring ID QR code</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="857"/>
+ <source>Share ring ID button</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="915"/>
+ <source>Double-click to copy</source>
+ <translation>Dobbeltklik for at kopiere</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="956"/>
+ <source>Error while generating QR Code</source>
+ <translation>Fejl ved generering af QR code</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1184"/>
+ <location filename="../callwidget.ui" line="1434"/>
+ <source>best name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1208"/>
+ <source>best Id</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1734"/>
+ <source>Back to homepage button</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1943"/>
+ <source>Add to contacts</source>
+ <translation>Tilføj til kontakt</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="202"/>
+ <source>Show invites</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="205"/>
+ <source>Invites</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="377"/>
+ <location filename="../callwidget.cpp" line="552"/>
+ <source>Find a new or existing contact</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1444"/>
+ <source>Wants to talk to you!</source>
+ <translation>Vil tale med dig!</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1517"/>
+ <source>Answer incoming call button</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1589"/>
+ <source>Ignore incoming call button</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1539"/>
+ <source>Answer</source>
+ <translation>Besvar</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1617"/>
+ <source>Ignore</source>
+ <translation>Afvis</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1280"/>
+ <source>Cancel outgoing call</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1305"/>
+ <source>Cancel</source>
+ <translation>Annuller</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="332"/>
+ <source>Start video call</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="343"/>
+ <source>Start audio call</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="354"/>
+ <source>Clear conversation</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="361"/>
+ <source>Remove contact</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="373"/>
+ <source>Block contact</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="384"/>
+ <source>Copy number</source>
+ <translation>Kopiér nummer</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="561"/>
+ <source>Search your received invitations</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>Contact me on Jami</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>My Id is : </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="847"/>
+ <source>%1</source>
+ <comment>%1 is the contact username</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="852"/>
+ <source>%1</source>
+ <comment>%1 is the contact unique identifier</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="675"/>
+ <source>Call incoming from %1</source>
+ <translation>Indgående kald fra %1</translation>
+ </message>
+</context>
+<context>
+ <name>DeleteAccountDialog</name>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="35"/>
+ <source>Account deletion</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="58"/>
+ <source>Do you really want to delete the following account?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="153"/>
+ <source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="235"/>
+ <source>Permanently delete account</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="241"/>
+ <source>Delete</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="278"/>
+ <source>Cancel account deletion</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="284"/>
+ <source>Cancel</source>
+ <translation>Annuller</translation>
+ </message>
+</context>
+<context>
+ <name>DeviceItemWidget</name>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished">Form</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="105"/>
+ <source>Device Id</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="143"/>
+ <source>this device</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>InviteButtonsWidget</name>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="83"/>
+ <source>Accept</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="131"/>
+ <source>Refuse</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="179"/>
+ <source>Block</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>LinkDeviceDialog</name>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="62"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="117"/>
+ <source>Password</source>
+ <translation type="unfinished">Adgangskode</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="184"/>
+ <source>Ok</source>
+ <translation type="unfinished">Ok</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="218"/>
+ <source>Cancel</source>
+ <translation type="unfinished">Annuller</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="279"/>
+ <source>Exporting account</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="402"/>
+ <source>Your PIN is</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="432"/>
+ <source>PIN</source>
+ <translation type="unfinished">PIN</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="477"/>
+ <source>This pin and the account password should be entered in your device within 10 minutes.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="553"/>
+ <source>Close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="34"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="96"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="110"/>
+ <source>Something went wrong.
+Please try again later.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="83"/>
+ <source>Settings</source>
+ <translation type="unfinished">Indstillinger</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="94"/>
+ <source>Exit</source>
+ <translation>Afslut</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="111"/>
+ <source>About</source>
+ <translation>Om</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="435"/>
+ <source>Jami</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>NameRegistrationDialog</name>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="35"/>
+ <source>Set Registered Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="163"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="244"/>
+ <source>Password text input</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="250"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="256"/>
+ <source>Password</source>
+ <translation type="unfinished">Adgangskode</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="323"/>
+ <source>Register</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="357"/>
+ <source>Cancel</source>
+ <translation type="unfinished">Annuller</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="424"/>
+ <source>Registering Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="548"/>
+ <source>Something went wrong</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="618"/>
+ <source>Close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="82"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="85"/>
+ <source>Network error</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>NewWizardWidget</name>
+ <message>
+ <location filename="../newwizardwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished">Form</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="141"/>
+ <source>Welcome Label</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="147"/>
+ <source> Welcome to</source>
+ <translation type="unfinished">Velkommen til</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="185"/>
+ <source>Welcome Logo</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="239"/>
+ <source>Create Jami account button</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="245"/>
+ <source>Push button for Jami account creation start trigger</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="251"/>
+ <source>Create a Jami account</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="282"/>
+ <source>Link device button</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="288"/>
+ <source>Push button for device linkage start trigger</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="291"/>
+ <source>Link this device to an account</source>
+ <translation type="unfinished">Tilknyt denne enhed til en konto</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="328"/>
+ <source>Create Jami SIP account button</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="334"/>
+ <source>Push button for Jami SIP account creation start trigger</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="340"/>
+ <source>Create a SIP account</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="405"/>
+ <source>Link this device to an existing account</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="469"/>
+ <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">To link this device to another account, you first </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">need to obtain a PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> code. To generate the PIN code:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Account management setting</span><span style=" font-size:14px;"> of a previous device</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choose the </span><span style=" font-size:14px; font-weight:600;">Jami account</span><span style=" font-size:14px;"> you want to use</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Devices</span><span style=" font-size:14px;"> tab</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Select </span><span style=" font-size:14px; font-weight:600;">Add a device</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">You will get the necessary PIN to complete this form. The PIN is only valid for </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutes</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="531"/>
+ <source>Enter your pin:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="599"/>
+ <source>Or import a file:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="626"/>
+ <source>Link from exported account archive file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="629"/>
+ <location filename="../newwizardwidget.cpp" line="83"/>
+ <location filename="../newwizardwidget.cpp" line="218"/>
+ <source>(None)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="705"/>
+ <source>Password:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="799"/>
+ <location filename="../newwizardwidget.ui" line="1586"/>
+ <source>Profile</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="953"/>
+ <location filename="../newwizardwidget.ui" line="1767"/>
+ <source>Profile name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1027"/>
+ <source>Account</source>
+ <translation type="unfinished">Konto</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1136"/>
+ <source>Register your username.
+This will reserve the username so that only you can use it.
+Your friends will be able to call you with your usename
+instead of using your ID.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1142"/>
+ <source>Public username checkbox</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1145"/>
+ <source>Checkbox selecting if the user wants a public username</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1148"/>
+ <source>Register public username</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1367"/>
+ <source>Public username edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1373"/>
+ <source>Choose your username</source>
+ <translation type="unfinished">Vælg dit brugernavn</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1289"/>
+ <source>Password text input</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1295"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1301"/>
+ <location filename="../newwizardwidget.ui" line="2213"/>
+ <source>Password</source>
+ <translation type="unfinished">Adgangskode</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1211"/>
+ <location filename="../newwizardwidget.ui" line="1217"/>
+ <source>Password confirmation text input</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1223"/>
+ <source>Confirm password</source>
+ <translation type="unfinished">Bekræft adgangskode</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1814"/>
+ <source>SIP Account</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1973"/>
+ <source>SIP Server edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1979"/>
+ <source>Server</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2045"/>
+ <source>SIP proxy input</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2051"/>
+ <source>SIP proxy text entry</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2057"/>
+ <source>Proxy</source>
+ <translation type="unfinished">Stedfortræder</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2123"/>
+ <source>SIP username input</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2129"/>
+ <source>SIP Password text entry</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2135"/>
+ <source>Username</source>
+ <translation type="unfinished">Brugernavn</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2201"/>
+ <location filename="../newwizardwidget.ui" line="2207"/>
+ <source>SIP Password text input</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message utf8="true">
+ <location filename="../newwizardwidget.ui" line="2282"/>
+ <source>Generating your Jami account…</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2356"/>
+ <source>Previous page button</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2362"/>
+ <source>push button to access previous page of wizard</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2365"/>
+ <source>Previous</source>
+ <translation type="unfinished">Tilbage</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2396"/>
+ <source>Cancel account create/link</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2402"/>
+ <source>push button to cancel account creation or linking</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2405"/>
+ <source>Back</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2442"/>
+ <source>Next page Button</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2448"/>
+ <source>Push button to access next page of wizard</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2451"/>
+ <source>Next</source>
+ <translation type="unfinished">Næste</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="75"/>
+ <source>Open File</source>
+ <translation type="unfinished">Åbn fil</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="77"/>
+ <source>Jami archive files (*.gz); All files (*)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="123"/>
+ <source>Your account needs to be migrated. Enter your password.</source>
+ <translation type="unfinished">Din konto kræver migrering. Indtast din adgangskode.</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="419"/>
+ <source>Migrating your Jami account...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="412"/>
+ <source>Importing account archive...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="404"/>
+ <source>Generating your Jami account...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="422"/>
+ <source>Generating your SIP account...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="533"/>
+ <source>Error creating account</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>PasswordDialog</name>
+ <message>
+ <location filename="../passworddialog.ui" line="32"/>
+ <source>Change Account Password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="97"/>
+ <source>Enter Current Password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="169"/>
+ <source>Enter New Password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="190"/>
+ <source>Confirm New Password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="247"/>
+ <source>Confirm</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="290"/>
+ <source>Cancel</source>
+ <translation type="unfinished">Annuller</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="143"/>
+ <source>Current Password Incorrect</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>PhotoBoothDialog</name>
+ <message>
+ <location filename="../photoboothdialog.ui" line="14"/>
+ <source>Photobooth</source>
+ <translation>Fotobås</translation>
+ </message>
+</context>
+<context>
+ <name>PhotoboothWidget</name>
+ <message>
+ <location filename="../photoboothwidget.ui" line="20"/>
+ <source>Form</source>
+ <translation>Form</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.ui" line="120"/>
+ <source>Photobooth display</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="92"/>
+ <source>Choose File</source>
+ <translation>Vælg fil</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="94"/>
+ <source>Image Files (*.jpg *.jpeg *.png)</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>PrivateBridging</name>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Choose File</source>
+ <translation type="unfinished">Vælg fil</translation>
+ </message>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Files (*)</source>
+ <translation type="unfinished">Filer (*)</translation>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../utils.cpp" line="183"/>
+ <source>No default mail client found</source>
+ <translation>Ingen standard mail-klient fundet</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="43"/>
+ <location filename="../deviceitemwidget.cpp" line="85"/>
+ <source>Edit Device Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="44"/>
+ <source>Unlink Device From Account</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="80"/>
+ <source>Save new device name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.cpp" line="39"/>
+ <source>Add as contact</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>RingButton</name>
+ <message>
+ <location filename="../ringbutton.ui" line="140"/>
+ <source>Select folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <location filename="../settingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished">Form</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="141"/>
+ <source>Settings</source>
+ <translation type="unfinished">Indstillinger</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="229"/>
+ <source>Account</source>
+ <translation type="unfinished">Konto</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="267"/>
+ <location filename="../settingswidget.ui" line="503"/>
+ <source>General</source>
+ <translation type="unfinished">Generelt</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="305"/>
+ <location filename="../settingswidget.ui" line="3416"/>
+ <source>Audio / Video</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="542"/>
+ <source>System</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="610"/>
+ <source>Enable desktop notifications</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="653"/>
+ <source>Keep minimized on close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="678"/>
+ <source>Download folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="811"/>
+ <source>Save in</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="904"/>
+ <source>Always Recording</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="943"/>
+ <source>Updates</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1008"/>
+ <source>Check for updates automatically every</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1032"/>
+ <source>Interval between update checks in days selector</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1038"/>
+ <source> days</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1081"/>
+ <source>Check for updates now button</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1084"/>
+ <source>Check for updates now</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3027"/>
+ <source>Password</source>
+ <translation type="unfinished">Adgangskode</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1418"/>
+ <location filename="../settingswidget.ui" line="2729"/>
+ <source>Enable</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="607"/>
+ <source>toggle enable notifications</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="650"/>
+ <source>Toggle keep minimized on close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="764"/>
+ <source>Call Recordings</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1005"/>
+ <source>Toggle automatic updates</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1231"/>
+ <source>Jami Account</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1453"/>
+ <location filename="../settingswidget.ui" line="2761"/>
+ <source>Profile</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1567"/>
+ <location filename="../settingswidget.ui" line="2875"/>
+ <source>Identity</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1614"/>
+ <source>Id</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1673"/>
+ <source>Registered name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1721"/>
+ <source>Type here to register a username</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1755"/>
+ <source>Register</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1827"/>
+ <source>Change Password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1868"/>
+ <source>Export Account</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1909"/>
+ <location filename="../settingswidget.ui" line="3089"/>
+ <source>Delete Account</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1973"/>
+ <source>Linked Devices</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2078"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2142"/>
+ <source>Banned Contacts</source>
+ <translation type="unfinished">Blokerede kontakter</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3788"/>
+ <source>Format</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3831"/>
+ <source>Video device framerate selector</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3967"/>
+ <source>Preview unavailable</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2359"/>
+ <location filename="../settingswidget.ui" line="3187"/>
+ <source>Advanced Account Settings</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2554"/>
+ <source>SIP Account</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2925"/>
+ <source>Username</source>
+ <translation type="unfinished">Brugernavn</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2958"/>
+ <source>Hostname</source>
+ <translation type="unfinished">Værtsnavn</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2991"/>
+ <source>Proxy</source>
+ <translation type="unfinished">Stedfortræder</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3461"/>
+ <source>Audio</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3511"/>
+ <source>Microphone</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3551"/>
+ <source>Audio input device selector</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3585"/>
+ <source>Output Device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3625"/>
+ <source>Choose the output device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3682"/>
+ <source>Video</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3720"/>
+ <source>Device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3766"/>
+ <source>Video device selector</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="459"/>
+ <source>A registered name should not have any spaces and must be at least three letters long</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="466"/>
+ <source>This name is already taken</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="92"/>
+ <location filename="../settingswidget.cpp" line="110"/>
+ <source>Enter an alias</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="473"/>
+ <source>Register this name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="550"/>
+ <source>Remove Device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="551"/>
+ <source>Enter this account's password to confirm the removal of this device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="558"/>
+ <source>Are you sure you wish to remove this device?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="589"/>
+ <source>Export Account Here</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="887"/>
+ <source>Select A Folder For Your Downloads</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="904"/>
+ <source>Select A Folder For Your Recordings</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>VideoOverlay</name>
+ <message>
+ <location filename="../videooverlay.ui" line="419"/>
+ <source>Call on Hold</source>
+ <translation>Samtale parkeret</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="89"/>
+ <source>Hold / Unhold</source>
+ <translation>Parkeret / Aktiv</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="124"/>
+ <source>Chat</source>
+ <translation>Chat</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="162"/>
+ <source>Mute Mic</source>
+ <translation>Sluk mikrofon</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="244"/>
+ <source>Record call</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="325"/>
+ <source>Name label</source>
+ <translation>Navne etiket</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="390"/>
+ <source>Time elapsed</source>
+ <translation>Tid gået</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="393"/>
+ <source>00:00</source>
+ <translation>00:00</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="57"/>
+ <source>Hangup</source>
+ <translation>Læg på</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="203"/>
+ <source>Mute Video</source>
+ <translation>Sluk mikrofon</translation>
+ </message>
+</context>
+<context>
+ <name>VideoView</name>
+ <message>
+ <location filename="../videoview.cpp" line="271"/>
+ <source>Share entire screen</source>
+ <translation>Del hele skærmen</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="274"/>
+ <source>Share screen area</source>
+ <translation>Del skærmområde</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="281"/>
+ <source>Share file</source>
+ <translation>Del fil</translation>
+ </message>
+</context>
+</TS>
diff --git a/translations/ring_client_windows_de.ts b/translations/ring_client_windows_de.ts
new file mode 100644
index 0000000..7398fa5
--- /dev/null
+++ b/translations/ring_client_windows_de.ts
@@ -0,0 +1,1606 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="de" version="2.0">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../aboutdialog.ui" line="435"/>
+ <location filename="../aboutdialog.ui" line="465"/>
+ <source>About</source>
+ <translation>Über</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="462"/>
+ <source>about button</source>
+ <translation>Über Button</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="478"/>
+ <source>credits button</source>
+ <translation>Credits Button</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="481"/>
+ <source>Credits</source>
+ <translation>Würdigung</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="547"/>
+ <source>Free as in Freedom</source>
+ <translation>Frei wie in Freiheit</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="563"/>
+ <source>The Microsoft Windows client for Jami.
+Jami is a secured and distributed communication software.</source>
+ <translation>Die Microsoft Windows Anwendung für Jami.
+Jami ist eine sichere und verteilte Kommunikationsanwendung.</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="32"/>
+ <source>version</source>
+ <translation>Version</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="39"/>
+ <source>Created by:</source>
+ <translation>Erstellt von:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="73"/>
+ <source>Artwork by:</source>
+ <translation>Visuelle Gestaltung:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="77"/>
+ <source>Based on the SFLPhone project</source>
+ <translation>Basierend auf dem SFLPhone-Projekt</translation>
+ </message>
+</context>
+<context>
+ <name>AccountItemDelegate</name>
+ <message>
+ <location filename="../accountitemdelegate.cpp" line="91"/>
+ <source>Add Account</source>
+ <translation>Konto hinzufügen</translation>
+ </message>
+</context>
+<context>
+ <name>AdvancedSIPSettingsWidget</name>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formular</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="55"/>
+ <source>Call Settings</source>
+ <translation>Anrufeinstellungen</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="102"/>
+ <source>Auto Answer Calls</source>
+ <translation>Anrufe automatisch beantworten</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="130"/>
+ <source>Enable Custom Ringtone</source>
+ <translation>Eigenen Klingelton aktivieren</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="191"/>
+ <source>Connectivity</source>
+ <translation>Verbindung</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="281"/>
+ <source>STUN Address</source>
+ <translation>STUN Adresse</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="293"/>
+ <source>Use STUN</source>
+ <translation>STUN benutzen</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="317"/>
+ <source>Use UPnP</source>
+ <translation> UPnP benutzen</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="329"/>
+ <source>Use TURN</source>
+ <translation>TURN benutzen</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="359"/>
+ <source>TURN Password</source>
+ <translation>TURN Passwort</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="391"/>
+ <source>TURN Username</source>
+ <translation>TURN Benutzername</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="423"/>
+ <source>TURN Address</source>
+ <translation>TURN Adresse</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="464"/>
+ <source>Media</source>
+ <translation>Medium</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="515"/>
+ <source>Enable Video</source>
+ <translation>Video aktivieren</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="539"/>
+ <source>Video Codecs</source>
+ <translation>Video Codecs</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="692"/>
+ <source>Audio Codecs</source>
+ <translation>Audio Codecs</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="142"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation>Audiodateien (*.wav *.ogg *.opus *.mp3 *aiff *wma)</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="151"/>
+ <source>Add a custom ringtone</source>
+ <translation>Eigenen Klingelton hinzufügen</translation>
+ </message>
+</context>
+<context>
+ <name>AdvancedSettingsWidget</name>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formular</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="61"/>
+ <source>Call Settings</source>
+ <translation>Anrufeinstellungen</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="108"/>
+ <source>Allow Calls From Untrusted Peers</source>
+ <translation>Erlaube Anruf von unbekannten Teilnehmern</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="133"/>
+ <source>Auto Answer Calls</source>
+ <translation>Anrufe automatisch beantworten</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="161"/>
+ <source>Enable Custom Ringtone</source>
+ <translation>Eigenen Klingelton aktivieren</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="188"/>
+ <source>Add a custom ringtone</source>
+ <translation>Eigenen Klingelton hinzufügen</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="225"/>
+ <source>Name Server</source>
+ <translation>Server für Benutzernamen</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="275"/>
+ <source>Address</source>
+ <translation>Adresse</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="351"/>
+ <source>OpenDHT Configuration</source>
+ <translation>OpenDHT-Einstellungen</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="398"/>
+ <source>Enable Proxy</source>
+ <translation>Proxy aktivieren</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="454"/>
+ <source>Bootstrap</source>
+ <translation>Aktivierung</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="530"/>
+ <source>Security</source>
+ <translation>Sicherheit</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="571"/>
+ <source>Private Key Password</source>
+ <translation>Passwort für den privaten Schlüssel</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="583"/>
+ <source>User Certificate</source>
+ <translation>Benutzerzertifikat</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="622"/>
+ <source>Private Key</source>
+ <translation>Privater Schlüssel</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="634"/>
+ <source>CA Certificate</source>
+ <translation>CA-Zertifikat</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="766"/>
+ <source>Connectivity</source>
+ <translation>Verbindungsmöglichkeiten</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="868"/>
+ <source>Use STUN</source>
+ <translation>STUN benutzen</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="856"/>
+ <source>STUN Address</source>
+ <translation>STUN Adresse</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="892"/>
+ <source>Use UPnP</source>
+ <translation> UPnP benutzen</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="904"/>
+ <source>Use TURN</source>
+ <translation>TURN benutzen</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="934"/>
+ <source>TURN Password</source>
+ <translation>TURN Passwort</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="966"/>
+ <source>TURN Username</source>
+ <translation>TURN Benutzername</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="998"/>
+ <source>TURN Address</source>
+ <translation>TURN Adresse</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1039"/>
+ <source>Media</source>
+ <translation>Medium</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1090"/>
+ <source>Enable Video</source>
+ <translation>Video aktivieren</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1267"/>
+ <source>Audio Codecs</source>
+ <translation>Audio Codecs</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1114"/>
+ <source>Video Codecs</source>
+ <translation>Video Codecs</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="181"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation>Audiodateien (*.wav *.ogg *.opus *.mp3 *aiff *wma)</translation>
+ </message>
+</context>
+<context>
+ <name>AnimatedOverlay</name>
+ <message>
+ <location filename="../animatedoverlay.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formular</translation>
+ </message>
+</context>
+<context>
+ <name>BannedItemWidget</name>
+ <message>
+ <location filename="../banneditemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formular</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="80"/>
+ <source>name</source>
+ <translation>Name</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="104"/>
+ <source>id</source>
+ <translation>Jami-ID</translation>
+ </message>
+</context>
+<context>
+ <name>CallWidget</name>
+ <message>
+ <location filename="../callwidget.ui" line="184"/>
+ <source>Show conversations</source>
+ <translation>Zeige Unterhaltungen</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="187"/>
+ <source>Conversations</source>
+ <translation>Unterhaltungen</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="368"/>
+ <source>Search contact text input</source>
+ <translation>Nach Kontakte suchen Eingabe</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="653"/>
+ <source>Jami is free software for universal communication which respects the freedoms and privacy of its users.</source>
+ <translation>Jami ist eine freie Software für universelle Kommunikation und respektiert die Freiheiten und Privatsphäre der Benutzer.</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="693"/>
+ <source>
+ This is your ID.
+Copy and share it with your friends!
+ </source>
+ <translation>
+ Das ist Ihre Jami-ID.
+Kopieren und teilen Sie diese mit Ihren Freunden!
+ </translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="806"/>
+ <source>Show ring ID QR code</source>
+ <translation>Zeige Ring-ID QR-Code</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="857"/>
+ <source>Share ring ID button</source>
+ <translation>Teile Ring-ID Button</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="915"/>
+ <source>Double-click to copy</source>
+ <translation>Doppelklick zum kopieren</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="956"/>
+ <source>Error while generating QR Code</source>
+ <translation>Fehler bei der Erstellung des QR-Codes</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1184"/>
+ <location filename="../callwidget.ui" line="1434"/>
+ <source>best name</source>
+ <translation>Bester Name</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1208"/>
+ <source>best Id</source>
+ <translation>Bester ID</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1734"/>
+ <source>Back to homepage button</source>
+ <translation>Zurück zur Übersicht Button</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1943"/>
+ <source>Add to contacts</source>
+ <translation>Zu Kontakten hinzufügen</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="202"/>
+ <source>Show invites</source>
+ <translation>Zeige Einladungen</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="205"/>
+ <source>Invites</source>
+ <translation>Einladungen</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="377"/>
+ <location filename="../callwidget.cpp" line="552"/>
+ <source>Find a new or existing contact</source>
+ <translation>Suche nach neuen oder existierenden Kontakten</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1444"/>
+ <source>Wants to talk to you!</source>
+ <translation>Möchte mit dir Sprechen</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1517"/>
+ <source>Answer incoming call button</source>
+ <translation>Eingehenden Anruf annehmen Button</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1589"/>
+ <source>Ignore incoming call button</source>
+ <translation>Eingehenden Anruf ignorieren Button</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1539"/>
+ <source>Answer</source>
+ <translation>Antwort</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1617"/>
+ <source>Ignore</source>
+ <translation>Ignorieren</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1280"/>
+ <source>Cancel outgoing call</source>
+ <translation>Ausgehenden Anruf abbrechen</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1305"/>
+ <source>Cancel</source>
+ <translation>Abbrechen</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="332"/>
+ <source>Start video call</source>
+ <translation>Videoanruf starten</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="343"/>
+ <source>Start audio call</source>
+ <translation>Audioanruf starten</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="354"/>
+ <source>Clear conversation</source>
+ <translation>Gesprächsverlauf löschen</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="361"/>
+ <source>Remove contact</source>
+ <translation>Entferne Kontakt</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="373"/>
+ <source>Block contact</source>
+ <translation>Kontakt blockieren</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="384"/>
+ <source>Copy number</source>
+ <translation>Nummer kopieren</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="561"/>
+ <source>Search your received invitations</source>
+ <translation>Suche in empfangenen Einladungen</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>Contact me on Jami</source>
+ <translation>Kontaktieren Sie mich über Jami</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>My Id is : </source>
+ <translation>Meine ID ist:</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="847"/>
+ <source>%1</source>
+ <comment>%1 is the contact username</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="852"/>
+ <source>%1</source>
+ <comment>%1 is the contact unique identifier</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="675"/>
+ <source>Call incoming from %1</source>
+ <translation>Eingehender Anruf von %1</translation>
+ </message>
+</context>
+<context>
+ <name>DeleteAccountDialog</name>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="35"/>
+ <source>Account deletion</source>
+ <translation>Kontolöschung</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="58"/>
+ <source>Do you really want to delete the following account?</source>
+ <translation>Möchten Sie wirklich das folgende Konto löschen?</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="153"/>
+ <source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
+ <translation>Falls dieses Konto nicht exportiert oder auf ein anderes Gerät übertragen wurde, wird es endgültig verloren gehen.</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="235"/>
+ <source>Permanently delete account</source>
+ <translation>Konto permanent löschen</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="241"/>
+ <source>Delete</source>
+ <translation>Löschen</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="278"/>
+ <source>Cancel account deletion</source>
+ <translation>Kontolöschung abbrechen</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="284"/>
+ <source>Cancel</source>
+ <translation>Abbrechen</translation>
+ </message>
+</context>
+<context>
+ <name>DeviceItemWidget</name>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formular</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="105"/>
+ <source>Device Id</source>
+ <translation>Gerätekennung</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="143"/>
+ <source>this device</source>
+ <translation>dieses Gerät</translation>
+ </message>
+</context>
+<context>
+ <name>InviteButtonsWidget</name>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="83"/>
+ <source>Accept</source>
+ <translation>Akzeptieren</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="131"/>
+ <source>Refuse</source>
+ <translation>Verweigern</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="179"/>
+ <source>Block</source>
+ <translation>Sperren</translation>
+ </message>
+</context>
+<context>
+ <name>LinkDeviceDialog</name>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation>Dialog</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="62"/>
+ <source>Enter your account password</source>
+ <translation>Geben Sie ihr Kontopasswort ein</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="117"/>
+ <source>Password</source>
+ <translation>Passwort</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="184"/>
+ <source>Ok</source>
+ <translation>Ok</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="218"/>
+ <source>Cancel</source>
+ <translation>Abbrechen</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="279"/>
+ <source>Exporting account</source>
+ <translation>Konto wird exportiert</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="402"/>
+ <source>Your PIN is</source>
+ <translation>Ihre PIN ist</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="432"/>
+ <source>PIN</source>
+ <translation>PIN</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="477"/>
+ <source>This pin and the account password should be entered in your device within 10 minutes.</source>
+ <translation>Diese PIN und das Kontopasswort sollten bei ihrem Gerät innerhalb von 10 Minuten eingegeben werden.</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="553"/>
+ <source>Close</source>
+ <translation>Schließen</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="34"/>
+ <source>Link Another Device</source>
+ <translation>Weiteres Gerät verknüpfen</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="96"/>
+ <source>Incorrect password</source>
+ <translation>Falsches Passwort</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="110"/>
+ <source>Something went wrong.
+Please try again later.</source>
+ <translation>Irgendetwas ist schief gelaufen.
+Bitte versuchen sie es später nocheinmal.</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="83"/>
+ <source>Settings</source>
+ <translation>Einstellungen</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="94"/>
+ <source>Exit</source>
+ <translation>Schliessen</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="111"/>
+ <source>About</source>
+ <translation>Über</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="435"/>
+ <source>Jami</source>
+ <translation>Jami</translation>
+ </message>
+</context>
+<context>
+ <name>NameRegistrationDialog</name>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="35"/>
+ <source>Set Registered Name</source>
+ <translation>Registrierten Namen setzen</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="163"/>
+ <source>Enter your account password</source>
+ <translation>Geben Sie ihr Kontopasswort ein</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="244"/>
+ <source>Password text input</source>
+ <translation>Passwort-Eingabe</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="250"/>
+ <source>Password text entry</source>
+ <translation>Passwort-Eintrag</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="256"/>
+ <source>Password</source>
+ <translation>Passwort</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="323"/>
+ <source>Register</source>
+ <translation>Registrieren</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="357"/>
+ <source>Cancel</source>
+ <translation>Abbrechen</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="424"/>
+ <source>Registering Name</source>
+ <translation>Name für Registrierung</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="548"/>
+ <source>Something went wrong</source>
+ <translation>Irgendetwas ist schief gelaufen</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="618"/>
+ <source>Close</source>
+ <translation>Schließen</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="82"/>
+ <source>Incorrect password</source>
+ <translation>Falsches Passwort</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="85"/>
+ <source>Network error</source>
+ <translation>Netzwerkfehler</translation>
+ </message>
+</context>
+<context>
+ <name>NewWizardWidget</name>
+ <message>
+ <location filename="../newwizardwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formular</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="141"/>
+ <source>Welcome Label</source>
+ <translation>Begrüßungslabel</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="147"/>
+ <source> Welcome to</source>
+ <translation>Willkommen bei</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="185"/>
+ <source>Welcome Logo</source>
+ <translation>Begrüßungslogo</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="239"/>
+ <source>Create Jami account button</source>
+ <translation>Jami-Konto anlegen Button</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="245"/>
+ <source>Push button for Jami account creation start trigger</source>
+ <translation>Auf Button klicken um Jami-Konto zu erstellen</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="251"/>
+ <source>Create a Jami account</source>
+ <translation>Ein Jami-Konto erstellen</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="282"/>
+ <source>Link device button</source>
+ <translation>Verbinde Gerät Button</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="288"/>
+ <source>Push button for device linkage start trigger</source>
+ <translation>Auf Button klicken um ein Gerät zu verbinden</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="291"/>
+ <source>Link this device to an account</source>
+ <translation>Dieses Gerät mit einem Konto verknüpfen</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="328"/>
+ <source>Create Jami SIP account button</source>
+ <translation>Jami-SIP-Konto erstellen Button</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="334"/>
+ <source>Push button for Jami SIP account creation start trigger</source>
+ <translation>Auf Button klicken um Jami-SIP-Konto zu erstellen</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="340"/>
+ <source>Create a SIP account</source>
+ <translation>SIP-Konto erstellen</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="405"/>
+ <source>Link this device to an existing account</source>
+ <translation>Dieses Gerät mit einem vorhandenen Konto verknüpfen</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="469"/>
+ <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">To link this device to another account, you first </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">need to obtain a PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> code. To generate the PIN code:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Account management setting</span><span style=" font-size:14px;"> of a previous device</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choose the </span><span style=" font-size:14px; font-weight:600;">Jami account</span><span style=" font-size:14px;"> you want to use</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Devices</span><span style=" font-size:14px;"> tab</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Select </span><span style=" font-size:14px; font-weight:600;">Add a device</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">You will get the necessary PIN to complete this form. The PIN is only valid for </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutes</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></source>
+ <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">Um dieses Gerät mit einem anderen Konto zu verbinden </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">benötigt man einen PIN Code. </span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">Um den PIN Code zu generieren muss man folgendes machen: </span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Gehe in die </span><span style=" font-size:14px; font-weight:600;">Kontoeinstellungen</span><span style=" font-size:14px;"> eines anderen bereits verbundenen Gerätes</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Wähle das </span><span style=" font-size:14px; font-weight:600;">Jami-Konto</span><span style=" font-size:14px;">, dass du verwenden möchtest</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Gehe in den </span><span style=" font-size:14px; font-weight:600;">Geräte</span><span style=" font-size:14px;"> Reiter</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Wähle </span><span style=" font-size:14px; font-weight:600;">Gerät hinzufügen</span><span style=" font-size:14px;"> aus</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">Dort bekommen Sie den notwendigen PIN Code. Die PIN ist nur gültig für </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 Minuten</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="531"/>
+ <source>Enter your pin:</source>
+ <translation>Geben Sie Ihre PIN ein:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="599"/>
+ <source>Or import a file:</source>
+ <translation>Oder eine Datei importieren:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="626"/>
+ <source>Link from exported account archive file</source>
+ <translation>Gerät über exportierte Archivdatei verbinden</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="629"/>
+ <location filename="../newwizardwidget.cpp" line="83"/>
+ <location filename="../newwizardwidget.cpp" line="218"/>
+ <source>(None)</source>
+ <translation>(Nichts)</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="705"/>
+ <source>Password:</source>
+ <translation>Passwort:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="799"/>
+ <location filename="../newwizardwidget.ui" line="1586"/>
+ <source>Profile</source>
+ <translation>Profil</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="953"/>
+ <location filename="../newwizardwidget.ui" line="1767"/>
+ <source>Profile name</source>
+ <translation>Profilname</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1027"/>
+ <source>Account</source>
+ <translation>Konto</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1136"/>
+ <source>Register your username.
+This will reserve the username so that only you can use it.
+Your friends will be able to call you with your usename
+instead of using your ID.</source>
+ <translation>Registriere deinen Benutzernamen.
+Dadurch wird er für dich reserviert, sodass nur du ihn benutzen kannst.
+Deine Freunde werden dich dann über deinen Benutzernamen
+anstatt deiner Jami-ID anrufen können.</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1142"/>
+ <source>Public username checkbox</source>
+ <translation>Öffentliches Benutzernamen Kästchen</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1145"/>
+ <source>Checkbox selecting if the user wants a public username</source>
+ <translation>Kästchen, das festlegt ob der Benutzer einen öffentlichen Benutzernamen will</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1148"/>
+ <source>Register public username</source>
+ <translation>Öffentlichen Benutzernamen registrieren</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1367"/>
+ <source>Public username edit</source>
+ <translation>Öffentlicher Benutzername Änderung</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1373"/>
+ <source>Choose your username</source>
+ <translation>Nutzername wählen</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1289"/>
+ <source>Password text input</source>
+ <translation>Passwort-Eingabe</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1295"/>
+ <source>Password text entry</source>
+ <translation>Passwort-Eintrag</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1301"/>
+ <location filename="../newwizardwidget.ui" line="2213"/>
+ <source>Password</source>
+ <translation>Passwort</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1211"/>
+ <location filename="../newwizardwidget.ui" line="1217"/>
+ <source>Password confirmation text input</source>
+ <translation>Passwortbestätigungs-Eingabe</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1223"/>
+ <source>Confirm password</source>
+ <translation>Passwort bestätigen</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1814"/>
+ <source>SIP Account</source>
+ <translation>SIP-Konto</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1973"/>
+ <source>SIP Server edit</source>
+ <translation>SIP-Server Änderung</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1979"/>
+ <source>Server</source>
+ <translation>Server</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2045"/>
+ <source>SIP proxy input</source>
+ <translation>SIP-Proxy-Eingabe</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2051"/>
+ <source>SIP proxy text entry</source>
+ <translation>SIP-Proxy-Eintrag</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2057"/>
+ <source>Proxy</source>
+ <translation>Proxy</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2123"/>
+ <source>SIP username input</source>
+ <translation>SIP-Benutzername-Eingabe</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2129"/>
+ <source>SIP Password text entry</source>
+ <translation>SIP-Passwort-Eintrag</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2135"/>
+ <source>Username</source>
+ <translation>Benutzername</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2201"/>
+ <location filename="../newwizardwidget.ui" line="2207"/>
+ <source>SIP Password text input</source>
+ <translation>SIP-Passwort-Eingabe</translation>
+ </message>
+ <message utf8="true">
+ <location filename="../newwizardwidget.ui" line="2282"/>
+ <source>Generating your Jami account…</source>
+ <translation>Erzeugen Ihres Jami-Kontos...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2356"/>
+ <source>Previous page button</source>
+ <translation>Vorherige Seite Button</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2362"/>
+ <source>push button to access previous page of wizard</source>
+ <translation>Button um auf die vorherige Seite des Konfigurationsassistenten zu kommen</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2365"/>
+ <source>Previous</source>
+ <translation>Vorherige</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2396"/>
+ <source>Cancel account create/link</source>
+ <translation>Kontoerstellung/-verbindung abbrechen</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2402"/>
+ <source>push button to cancel account creation or linking</source>
+ <translation>Button um Kontoerstellung oder Kontoverbindung abzubrechen</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2405"/>
+ <source>Back</source>
+ <translation>Zurück</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2442"/>
+ <source>Next page Button</source>
+ <translation>Nächste Seite Button</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2448"/>
+ <source>Push button to access next page of wizard</source>
+ <translation>Button um auf die nächste Seite des Konfigurationsassistenten zu kommen</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2451"/>
+ <source>Next</source>
+ <translation>Weiter</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="75"/>
+ <source>Open File</source>
+ <translation>Datei öffnen</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="77"/>
+ <source>Jami archive files (*.gz); All files (*)</source>
+ <translation>Jami Archivdatei (*.gz); Alle Dateien (*)</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="123"/>
+ <source>Your account needs to be migrated. Enter your password.</source>
+ <translation>Ihr Konto muss migriert werden. Bitte geben Sie Ihr Passwort ein.</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="419"/>
+ <source>Migrating your Jami account...</source>
+ <translation>Ihr Jami-Konto wird migriert...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="412"/>
+ <source>Importing account archive...</source>
+ <translation>Kontoarchiv wird importiert...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="404"/>
+ <source>Generating your Jami account...</source>
+ <translation>Ihr Jami Konto wird erzeugt...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="422"/>
+ <source>Generating your SIP account...</source>
+ <translation>Ihr SIP-Konto wird erzeugt...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="533"/>
+ <source>Error creating account</source>
+ <translation>Fehler beim Erstellen des Kontos</translation>
+ </message>
+</context>
+<context>
+ <name>PasswordDialog</name>
+ <message>
+ <location filename="../passworddialog.ui" line="32"/>
+ <source>Change Account Password</source>
+ <translation>Kontopasswort ändern</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="97"/>
+ <source>Enter Current Password</source>
+ <translation>Aktuelles Passwort eingeben</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="169"/>
+ <source>Enter New Password</source>
+ <translation>Neues Passwort eingeben</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="190"/>
+ <source>Confirm New Password</source>
+ <translation>Neues Passwort bestätigen</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="247"/>
+ <source>Confirm</source>
+ <translation>Bestätigen</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="290"/>
+ <source>Cancel</source>
+ <translation>Abbrechen</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="143"/>
+ <source>Current Password Incorrect</source>
+ <translation>Aktuelles Passwort falsch</translation>
+ </message>
+</context>
+<context>
+ <name>PhotoBoothDialog</name>
+ <message>
+ <location filename="../photoboothdialog.ui" line="14"/>
+ <source>Photobooth</source>
+ <translation>Photobooth</translation>
+ </message>
+</context>
+<context>
+ <name>PhotoboothWidget</name>
+ <message>
+ <location filename="../photoboothwidget.ui" line="20"/>
+ <source>Form</source>
+ <translation>Formular</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.ui" line="120"/>
+ <source>Photobooth display</source>
+ <translation>Fotoautomatenanzeige</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="92"/>
+ <source>Choose File</source>
+ <translation>Datei auswählen</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="94"/>
+ <source>Image Files (*.jpg *.jpeg *.png)</source>
+ <translation>Bilddateien (*.jpg *.jpeg *.png)</translation>
+ </message>
+</context>
+<context>
+ <name>PrivateBridging</name>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Choose File</source>
+ <translation>Datei auswählen</translation>
+ </message>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Files (*)</source>
+ <translation>Dateien (*)</translation>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../utils.cpp" line="183"/>
+ <source>No default mail client found</source>
+ <translation>Kein Standardprogramm für E‑Mail gefunden</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="43"/>
+ <location filename="../deviceitemwidget.cpp" line="85"/>
+ <source>Edit Device Name</source>
+ <translation>Gerätename ändern</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="44"/>
+ <source>Unlink Device From Account</source>
+ <translation>Kontoverknüpfung von Gerät auflösen</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="80"/>
+ <source>Save new device name</source>
+ <translation>Neuen Gerätenamen speichern</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.cpp" line="39"/>
+ <source>Add as contact</source>
+ <translation>Als Kontakt hinzufügen</translation>
+ </message>
+</context>
+<context>
+ <name>RingButton</name>
+ <message>
+ <location filename="../ringbutton.ui" line="140"/>
+ <source>Select folder</source>
+ <translation>Ordner auswählen</translation>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <location filename="../settingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formular</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="141"/>
+ <source>Settings</source>
+ <translation>Einstellungen</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="229"/>
+ <source>Account</source>
+ <translation>Konto</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="267"/>
+ <location filename="../settingswidget.ui" line="503"/>
+ <source>General</source>
+ <translation>Allgemein</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="305"/>
+ <location filename="../settingswidget.ui" line="3416"/>
+ <source>Audio / Video</source>
+ <translation>Audio / Video</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="542"/>
+ <source>System</source>
+ <translation>System</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="610"/>
+ <source>Enable desktop notifications</source>
+ <translation>Desktop-Benachrichtigungen aktivieren</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="653"/>
+ <source>Keep minimized on close</source>
+ <translation>Beim Schließen minimiert bleiben</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="678"/>
+ <source>Download folder</source>
+ <translation>Ordner herunterladen</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="811"/>
+ <source>Save in</source>
+ <translation>Speichern in</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="904"/>
+ <source>Always Recording</source>
+ <translation>Immer aufzeichnen</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="943"/>
+ <source>Updates</source>
+ <translation>Aktualisierungen</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1008"/>
+ <source>Check for updates automatically every</source>
+ <translation>Automatisch auf Aktualisierungen prüfen. Alle</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1032"/>
+ <source>Interval between update checks in days selector</source>
+ <translation>Intervall zwischen Prüfung auf Aktualisierung in Tagen Wähler</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1038"/>
+ <source> days</source>
+ <translation>Tage</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1081"/>
+ <source>Check for updates now button</source>
+ <translation>Jetzt auf Aktualisierung prüfen Button</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1084"/>
+ <source>Check for updates now</source>
+ <translation>Aktualisieren</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3027"/>
+ <source>Password</source>
+ <translation>Passwort</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1418"/>
+ <location filename="../settingswidget.ui" line="2729"/>
+ <source>Enable</source>
+ <translation>Aktivieren</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="607"/>
+ <source>toggle enable notifications</source>
+ <translation>Benachrichtigungen aktivieren umschalten</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="650"/>
+ <source>Toggle keep minimized on close</source>
+ <translation>Beim Schließen minimiert bleiben umschalten</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="764"/>
+ <source>Call Recordings</source>
+ <translation>Anrufaufzeichnungen</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1005"/>
+ <source>Toggle automatic updates</source>
+ <translation>Automatische Aktualisierungen umschalten</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1231"/>
+ <source>Jami Account</source>
+ <translation>Jami-Konto</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1453"/>
+ <location filename="../settingswidget.ui" line="2761"/>
+ <source>Profile</source>
+ <translation>Profil</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1567"/>
+ <location filename="../settingswidget.ui" line="2875"/>
+ <source>Identity</source>
+ <translation>Identität</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1614"/>
+ <source>Id</source>
+ <translation>Id</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1673"/>
+ <source>Registered name</source>
+ <translation>Registrierter Name</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1721"/>
+ <source>Type here to register a username</source>
+ <translation>Hier zu registrierenden Benutzernamen eingeben</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1755"/>
+ <source>Register</source>
+ <translation>Registrieren</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1827"/>
+ <source>Change Password</source>
+ <translation>Passwort ändern</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1868"/>
+ <source>Export Account</source>
+ <translation>Konten exportieren</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1909"/>
+ <location filename="../settingswidget.ui" line="3089"/>
+ <source>Delete Account</source>
+ <translation>Konto löschen</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1973"/>
+ <source>Linked Devices</source>
+ <translation>Verbundene Geräte</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2078"/>
+ <source>Link Another Device</source>
+ <translation>Weiteres Gerät verknüpfen</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2142"/>
+ <source>Banned Contacts</source>
+ <translation>Gesperrte Kontakte</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3788"/>
+ <source>Format</source>
+ <translation>Format</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3831"/>
+ <source>Video device framerate selector</source>
+ <translation>Videogerät Framerate Wähler</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3967"/>
+ <source>Preview unavailable</source>
+ <translation>Keine Vorschau verfügbar</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2359"/>
+ <location filename="../settingswidget.ui" line="3187"/>
+ <source>Advanced Account Settings</source>
+ <translation>Erweiterte Kontoeinstellungen</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2554"/>
+ <source>SIP Account</source>
+ <translation>SIP-Konto</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2925"/>
+ <source>Username</source>
+ <translation>Benutzername</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2958"/>
+ <source>Hostname</source>
+ <translation>Rechnername</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2991"/>
+ <source>Proxy</source>
+ <translation>Proxy</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3461"/>
+ <source>Audio</source>
+ <translation>Audio</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3511"/>
+ <source>Microphone</source>
+ <translation>Mikrofon</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3551"/>
+ <source>Audio input device selector</source>
+ <translation>Audioeingabegeräte Wähler</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3585"/>
+ <source>Output Device</source>
+ <translation>Ausgabegerät</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3625"/>
+ <source>Choose the output device</source>
+ <translation>Wählen Sie ein Ausgabegerät</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3682"/>
+ <source>Video</source>
+ <translation>Video</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3720"/>
+ <source>Device</source>
+ <translation>Gerät</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3766"/>
+ <source>Video device selector</source>
+ <translation>Videogerät Wähler</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="459"/>
+ <source>A registered name should not have any spaces and must be at least three letters long</source>
+ <translation>Ein registrierter Name sollte keine Leerzeichen beinhalten und muss mindestens drei Zeichen lang sein</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="466"/>
+ <source>This name is already taken</source>
+ <translation>Dieser Benutzername ist bereits vergeben</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="92"/>
+ <location filename="../settingswidget.cpp" line="110"/>
+ <source>Enter an alias</source>
+ <translation>Aliasnamen eingeben</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="473"/>
+ <source>Register this name</source>
+ <translation>Diesen Namen registrieren</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="550"/>
+ <source>Remove Device</source>
+ <translation>Gerät entfernen</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="551"/>
+ <source>Enter this account's password to confirm the removal of this device</source>
+ <translation>Geben Sie das Kontopasswort ein um die Trennung dieses Gerätes zu bestätigen</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="558"/>
+ <source>Are you sure you wish to remove this device?</source>
+ <translation>Sicher, dass Sie das Gerät trennen wollen?</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="589"/>
+ <source>Export Account Here</source>
+ <translation>Konto hier exportieren</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="887"/>
+ <source>Select A Folder For Your Downloads</source>
+ <translation>Wählen Sie einen Ordner für ihre Downloads aus</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="904"/>
+ <source>Select A Folder For Your Recordings</source>
+ <translation>Wählen Sie einen Ordner für ihre Aufnahmen aus</translation>
+ </message>
+</context>
+<context>
+ <name>VideoOverlay</name>
+ <message>
+ <location filename="../videooverlay.ui" line="419"/>
+ <source>Call on Hold</source>
+ <translation>Anruf pausiert</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="89"/>
+ <source>Hold / Unhold</source>
+ <translation>Pause / Fortsetzen</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="124"/>
+ <source>Chat</source>
+ <translation>Chat</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="162"/>
+ <source>Mute Mic</source>
+ <translation>Mikrofon stummschalten</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="244"/>
+ <source>Record call</source>
+ <translation>Anruf aufzeichnen</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="325"/>
+ <source>Name label</source>
+ <translation>Namenslabel</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="390"/>
+ <source>Time elapsed</source>
+ <translation>Zeit vergangen</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="393"/>
+ <source>00:00</source>
+ <translation>00:00</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="57"/>
+ <source>Hangup</source>
+ <translation>Auflegen</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="203"/>
+ <source>Mute Video</source>
+ <translation>Video stummschalten</translation>
+ </message>
+</context>
+<context>
+ <name>VideoView</name>
+ <message>
+ <location filename="../videoview.cpp" line="271"/>
+ <source>Share entire screen</source>
+ <translation>Gesamten Bildschirm teilen</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="274"/>
+ <source>Share screen area</source>
+ <translation>Bildschirmbereich teilen</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="281"/>
+ <source>Share file</source>
+ <translation>Datei teilen</translation>
+ </message>
+</context>
+</TS>
\ No newline at end of file
diff --git a/translations/ring_client_windows_de_DE.ts b/translations/ring_client_windows_de_DE.ts
new file mode 100644
index 0000000..864bd38
--- /dev/null
+++ b/translations/ring_client_windows_de_DE.ts
@@ -0,0 +1,1589 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="de_DE" version="2.0">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../aboutdialog.ui" line="435"/>
+ <location filename="../aboutdialog.ui" line="465"/>
+ <source>About</source>
+ <translation>Über</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="462"/>
+ <source>about button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="478"/>
+ <source>credits button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="481"/>
+ <source>Credits</source>
+ <translation>Abspann</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="547"/>
+ <source>Free as in Freedom</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="563"/>
+ <source>The Microsoft Windows client for Jami.
+Jami is a secured and distributed communication software.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="32"/>
+ <source>version</source>
+ <translation>Version</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="39"/>
+ <source>Created by:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="73"/>
+ <source>Artwork by:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="77"/>
+ <source>Based on the SFLPhone project</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AccountItemDelegate</name>
+ <message>
+ <location filename="../accountitemdelegate.cpp" line="91"/>
+ <source>Add Account</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSIPSettingsWidget</name>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="55"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="102"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="130"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="191"/>
+ <source>Connectivity</source>
+ <translation>Verbindung</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="281"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="293"/>
+ <source>Use STUN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="317"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="329"/>
+ <source>Use TURN</source>
+ <translation>TURN benutzen</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="359"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="391"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="423"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="464"/>
+ <source>Media</source>
+ <translation>Media</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="515"/>
+ <source>Enable Video</source>
+ <translation>Video aktivieren</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="539"/>
+ <source>Video Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="692"/>
+ <source>Audio Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="142"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="151"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSettingsWidget</name>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="61"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="108"/>
+ <source>Allow Calls From Untrusted Peers</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="133"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="161"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="188"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="225"/>
+ <source>Name Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="275"/>
+ <source>Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="351"/>
+ <source>OpenDHT Configuration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="398"/>
+ <source>Enable Proxy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="454"/>
+ <source>Bootstrap</source>
+ <translation>Bootstrap</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="530"/>
+ <source>Security</source>
+ <translation>Sicherheit</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="571"/>
+ <source>Private Key Password</source>
+ <translation>Kennwort für privaten Schlüssel</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="583"/>
+ <source>User Certificate</source>
+ <translation>Benutzerzertifikat</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="622"/>
+ <source>Private Key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="634"/>
+ <source>CA Certificate</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="766"/>
+ <source>Connectivity</source>
+ <translation>Verbindung</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="868"/>
+ <source>Use STUN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="856"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="892"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="904"/>
+ <source>Use TURN</source>
+ <translation>TURN benutzen</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="934"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="966"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="998"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1039"/>
+ <source>Media</source>
+ <translation>Media</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1090"/>
+ <source>Enable Video</source>
+ <translation>Video aktivieren</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1267"/>
+ <source>Audio Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1114"/>
+ <source>Video Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="181"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AnimatedOverlay</name>
+ <message>
+ <location filename="../animatedoverlay.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>BannedItemWidget</name>
+ <message>
+ <location filename="../banneditemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="80"/>
+ <source>name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="104"/>
+ <source>id</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>CallWidget</name>
+ <message>
+ <location filename="../callwidget.ui" line="184"/>
+ <source>Show conversations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="187"/>
+ <source>Conversations</source>
+ <translation>Gespräche</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="368"/>
+ <source>Search contact text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="653"/>
+ <source>Jami is free software for universal communication which respects the freedoms and privacy of its users.</source>
+ <translation>Jami ist Freie Software für universelle Kommunikation, die die Freiheiten und die Privatsphäre ihrer Nutzer respektiert.</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="693"/>
+ <source>
+ This is your ID.
+Copy and share it with your friends!
+ </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="806"/>
+ <source>Show ring ID QR code</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="857"/>
+ <source>Share ring ID button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="915"/>
+ <source>Double-click to copy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="956"/>
+ <source>Error while generating QR Code</source>
+ <translation>Fehler beim Erzeugen des QR-Codes</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1184"/>
+ <location filename="../callwidget.ui" line="1434"/>
+ <source>best name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1208"/>
+ <source>best Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1734"/>
+ <source>Back to homepage button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1943"/>
+ <source>Add to contacts</source>
+ <translation>Kontakte hinzufügen</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="202"/>
+ <source>Show invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="205"/>
+ <source>Invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="377"/>
+ <location filename="../callwidget.cpp" line="552"/>
+ <source>Find a new or existing contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1444"/>
+ <source>Wants to talk to you!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1517"/>
+ <source>Answer incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1589"/>
+ <source>Ignore incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1539"/>
+ <source>Answer</source>
+ <translation>Antwort</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1617"/>
+ <source>Ignore</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1280"/>
+ <source>Cancel outgoing call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1305"/>
+ <source>Cancel</source>
+ <translation>Abbrechen</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="332"/>
+ <source>Start video call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="343"/>
+ <source>Start audio call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="354"/>
+ <source>Clear conversation</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="361"/>
+ <source>Remove contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="373"/>
+ <source>Block contact</source>
+ <translation>Kontakt blockieren</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="384"/>
+ <source>Copy number</source>
+ <translation>Nummer kopieren</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="561"/>
+ <source>Search your received invitations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>Contact me on Jami</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>My Id is : </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="847"/>
+ <source>%1</source>
+ <comment>%1 is the contact username</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="852"/>
+ <source>%1</source>
+ <comment>%1 is the contact unique identifier</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="675"/>
+ <source>Call incoming from %1</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>DeleteAccountDialog</name>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="35"/>
+ <source>Account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="58"/>
+ <source>Do you really want to delete the following account?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="153"/>
+ <source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="235"/>
+ <source>Permanently delete account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="241"/>
+ <source>Delete</source>
+ <translation>Löschen</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="278"/>
+ <source>Cancel account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="284"/>
+ <source>Cancel</source>
+ <translation>Abbrechen</translation>
+ </message>
+</context>
+<context>
+ <name>DeviceItemWidget</name>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="105"/>
+ <source>Device Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="143"/>
+ <source>this device</source>
+ <translation>dieses Gerät</translation>
+ </message>
+</context>
+<context>
+ <name>InviteButtonsWidget</name>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="83"/>
+ <source>Accept</source>
+ <translation>Akzeptieren</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="131"/>
+ <source>Refuse</source>
+ <translation>Ablehnen</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="179"/>
+ <source>Block</source>
+ <translation>Blockieren</translation>
+ </message>
+</context>
+<context>
+ <name>LinkDeviceDialog</name>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="62"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="117"/>
+ <source>Password</source>
+ <translation>Kennwort</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="184"/>
+ <source>Ok</source>
+ <translation>Ok</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="218"/>
+ <source>Cancel</source>
+ <translation>Abbrechen</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="279"/>
+ <source>Exporting account</source>
+ <translation>Konto wird exportiert</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="402"/>
+ <source>Your PIN is</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="432"/>
+ <source>PIN</source>
+ <translation>PIN</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="477"/>
+ <source>This pin and the account password should be entered in your device within 10 minutes.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="553"/>
+ <source>Close</source>
+ <translation>Schließen</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="34"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="96"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="110"/>
+ <source>Something went wrong.
+Please try again later.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="83"/>
+ <source>Settings</source>
+ <translation>Einstellungen</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="94"/>
+ <source>Exit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="111"/>
+ <source>About</source>
+ <translation>Über</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="435"/>
+ <source>Jami</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>NameRegistrationDialog</name>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="35"/>
+ <source>Set Registered Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="163"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="244"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="250"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="256"/>
+ <source>Password</source>
+ <translation>Kennwort</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="323"/>
+ <source>Register</source>
+ <translation>Registrieren</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="357"/>
+ <source>Cancel</source>
+ <translation>Abbrechen</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="424"/>
+ <source>Registering Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="548"/>
+ <source>Something went wrong</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="618"/>
+ <source>Close</source>
+ <translation>Schließen</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="82"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="85"/>
+ <source>Network error</source>
+ <translation>Netzwerkfehler</translation>
+ </message>
+</context>
+<context>
+ <name>NewWizardWidget</name>
+ <message>
+ <location filename="../newwizardwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="141"/>
+ <source>Welcome Label</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="147"/>
+ <source> Welcome to</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="185"/>
+ <source>Welcome Logo</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="239"/>
+ <source>Create Jami account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="245"/>
+ <source>Push button for Jami account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="251"/>
+ <source>Create a Jami account</source>
+ <translation>Jami-Konto erstellen</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="282"/>
+ <source>Link device button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="288"/>
+ <source>Push button for device linkage start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="291"/>
+ <source>Link this device to an account</source>
+ <translation>Dieses Gerät mit einem bestehenden Konto verknüpfen</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="328"/>
+ <source>Create Jami SIP account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="334"/>
+ <source>Push button for Jami SIP account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="340"/>
+ <source>Create a SIP account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="405"/>
+ <source>Link this device to an existing account</source>
+ <translation>Dieses Gerät mit einem bestehenden Konto verknüpfen</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="469"/>
+ <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">To link this device to another account, you first </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">need to obtain a PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> code. To generate the PIN code:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Account management setting</span><span style=" font-size:14px;"> of a previous device</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choose the </span><span style=" font-size:14px; font-weight:600;">Jami account</span><span style=" font-size:14px;"> you want to use</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Devices</span><span style=" font-size:14px;"> tab</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Select </span><span style=" font-size:14px; font-weight:600;">Add a device</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">You will get the necessary PIN to complete this form. The PIN is only valid for </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutes</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="531"/>
+ <source>Enter your pin:</source>
+ <translation>PIN eingeben:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="599"/>
+ <source>Or import a file:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="626"/>
+ <source>Link from exported account archive file</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="629"/>
+ <location filename="../newwizardwidget.cpp" line="83"/>
+ <location filename="../newwizardwidget.cpp" line="218"/>
+ <source>(None)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="705"/>
+ <source>Password:</source>
+ <translation>Kennwort:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="799"/>
+ <location filename="../newwizardwidget.ui" line="1586"/>
+ <source>Profile</source>
+ <translation>Profil</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="953"/>
+ <location filename="../newwizardwidget.ui" line="1767"/>
+ <source>Profile name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1027"/>
+ <source>Account</source>
+ <translation>Konto</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1136"/>
+ <source>Register your username.
+This will reserve the username so that only you can use it.
+Your friends will be able to call you with your usename
+instead of using your ID.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1142"/>
+ <source>Public username checkbox</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1145"/>
+ <source>Checkbox selecting if the user wants a public username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1148"/>
+ <source>Register public username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1367"/>
+ <source>Public username edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1373"/>
+ <source>Choose your username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1289"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1295"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1301"/>
+ <location filename="../newwizardwidget.ui" line="2213"/>
+ <source>Password</source>
+ <translation>Kennwort</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1211"/>
+ <location filename="../newwizardwidget.ui" line="1217"/>
+ <source>Password confirmation text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1223"/>
+ <source>Confirm password</source>
+ <translation>Konto bestätigen</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1814"/>
+ <source>SIP Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1973"/>
+ <source>SIP Server edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1979"/>
+ <source>Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2045"/>
+ <source>SIP proxy input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2051"/>
+ <source>SIP proxy text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2057"/>
+ <source>Proxy</source>
+ <translation>Proxy</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2123"/>
+ <source>SIP username input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2129"/>
+ <source>SIP Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2135"/>
+ <source>Username</source>
+ <translation>Benutzername</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2201"/>
+ <location filename="../newwizardwidget.ui" line="2207"/>
+ <source>SIP Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message utf8="true">
+ <location filename="../newwizardwidget.ui" line="2282"/>
+ <source>Generating your Jami account…</source>
+ <translation>Ihr Jami-Konto wird erstellt …</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2356"/>
+ <source>Previous page button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2362"/>
+ <source>push button to access previous page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2365"/>
+ <source>Previous</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2396"/>
+ <source>Cancel account create/link</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2402"/>
+ <source>push button to cancel account creation or linking</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2405"/>
+ <source>Back</source>
+ <translation>Zurück</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2442"/>
+ <source>Next page Button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2448"/>
+ <source>Push button to access next page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2451"/>
+ <source>Next</source>
+ <translation>Weiter</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="75"/>
+ <source>Open File</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="77"/>
+ <source>Jami archive files (*.gz); All files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="123"/>
+ <source>Your account needs to be migrated. Enter your password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="419"/>
+ <source>Migrating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="412"/>
+ <source>Importing account archive...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="404"/>
+ <source>Generating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="422"/>
+ <source>Generating your SIP account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="533"/>
+ <source>Error creating account</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PasswordDialog</name>
+ <message>
+ <location filename="../passworddialog.ui" line="32"/>
+ <source>Change Account Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="97"/>
+ <source>Enter Current Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="169"/>
+ <source>Enter New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="190"/>
+ <source>Confirm New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="247"/>
+ <source>Confirm</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="290"/>
+ <source>Cancel</source>
+ <translation>Abbrechen</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="143"/>
+ <source>Current Password Incorrect</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PhotoBoothDialog</name>
+ <message>
+ <location filename="../photoboothdialog.ui" line="14"/>
+ <source>Photobooth</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PhotoboothWidget</name>
+ <message>
+ <location filename="../photoboothwidget.ui" line="20"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.ui" line="120"/>
+ <source>Photobooth display</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="92"/>
+ <source>Choose File</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="94"/>
+ <source>Image Files (*.jpg *.jpeg *.png)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PrivateBridging</name>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Choose File</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../utils.cpp" line="183"/>
+ <source>No default mail client found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="43"/>
+ <location filename="../deviceitemwidget.cpp" line="85"/>
+ <source>Edit Device Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="44"/>
+ <source>Unlink Device From Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="80"/>
+ <source>Save new device name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.cpp" line="39"/>
+ <source>Add as contact</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>RingButton</name>
+ <message>
+ <location filename="../ringbutton.ui" line="140"/>
+ <source>Select folder</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <location filename="../settingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="141"/>
+ <source>Settings</source>
+ <translation>Einstellungen</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="229"/>
+ <source>Account</source>
+ <translation>Konto</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="267"/>
+ <location filename="../settingswidget.ui" line="503"/>
+ <source>General</source>
+ <translation>Allgemein</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="305"/>
+ <location filename="../settingswidget.ui" line="3416"/>
+ <source>Audio / Video</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="542"/>
+ <source>System</source>
+ <translation>System</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="610"/>
+ <source>Enable desktop notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="653"/>
+ <source>Keep minimized on close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="678"/>
+ <source>Download folder</source>
+ <translation>Download-Ordner</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="811"/>
+ <source>Save in</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="904"/>
+ <source>Always Recording</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="943"/>
+ <source>Updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1008"/>
+ <source>Check for updates automatically every</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1032"/>
+ <source>Interval between update checks in days selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1038"/>
+ <source> days</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1081"/>
+ <source>Check for updates now button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1084"/>
+ <source>Check for updates now</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3027"/>
+ <source>Password</source>
+ <translation>Kennwort</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1418"/>
+ <location filename="../settingswidget.ui" line="2729"/>
+ <source>Enable</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="607"/>
+ <source>toggle enable notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="650"/>
+ <source>Toggle keep minimized on close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="764"/>
+ <source>Call Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1005"/>
+ <source>Toggle automatic updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1231"/>
+ <source>Jami Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1453"/>
+ <location filename="../settingswidget.ui" line="2761"/>
+ <source>Profile</source>
+ <translation>Profil</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1567"/>
+ <location filename="../settingswidget.ui" line="2875"/>
+ <source>Identity</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1614"/>
+ <source>Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1673"/>
+ <source>Registered name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1721"/>
+ <source>Type here to register a username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1755"/>
+ <source>Register</source>
+ <translation>Registrieren</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1827"/>
+ <source>Change Password</source>
+ <translation>Ändere das Passwort</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1868"/>
+ <source>Export Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1909"/>
+ <location filename="../settingswidget.ui" line="3089"/>
+ <source>Delete Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1973"/>
+ <source>Linked Devices</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2078"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2142"/>
+ <source>Banned Contacts</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3788"/>
+ <source>Format</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3831"/>
+ <source>Video device framerate selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3967"/>
+ <source>Preview unavailable</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2359"/>
+ <location filename="../settingswidget.ui" line="3187"/>
+ <source>Advanced Account Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2554"/>
+ <source>SIP Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2925"/>
+ <source>Username</source>
+ <translation>Benutzername</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2958"/>
+ <source>Hostname</source>
+ <translation>Hostname</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2991"/>
+ <source>Proxy</source>
+ <translation>Proxy</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3461"/>
+ <source>Audio</source>
+ <translation>Audio</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3511"/>
+ <source>Microphone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3551"/>
+ <source>Audio input device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3585"/>
+ <source>Output Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3625"/>
+ <source>Choose the output device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3682"/>
+ <source>Video</source>
+ <translation>Video</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3720"/>
+ <source>Device</source>
+ <translation>Gerät</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3766"/>
+ <source>Video device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="459"/>
+ <source>A registered name should not have any spaces and must be at least three letters long</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="466"/>
+ <source>This name is already taken</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="92"/>
+ <location filename="../settingswidget.cpp" line="110"/>
+ <source>Enter an alias</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="473"/>
+ <source>Register this name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="550"/>
+ <source>Remove Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="551"/>
+ <source>Enter this account's password to confirm the removal of this device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="558"/>
+ <source>Are you sure you wish to remove this device?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="589"/>
+ <source>Export Account Here</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="887"/>
+ <source>Select A Folder For Your Downloads</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="904"/>
+ <source>Select A Folder For Your Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>VideoOverlay</name>
+ <message>
+ <location filename="../videooverlay.ui" line="419"/>
+ <source>Call on Hold</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="89"/>
+ <source>Hold / Unhold</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="124"/>
+ <source>Chat</source>
+ <translation>Chat</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="162"/>
+ <source>Mute Mic</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="244"/>
+ <source>Record call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="325"/>
+ <source>Name label</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="390"/>
+ <source>Time elapsed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="393"/>
+ <source>00:00</source>
+ <translation>00:00</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="57"/>
+ <source>Hangup</source>
+ <translation>Auflegen</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="203"/>
+ <source>Mute Video</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>VideoView</name>
+ <message>
+ <location filename="../videoview.cpp" line="271"/>
+ <source>Share entire screen</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="274"/>
+ <source>Share screen area</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="281"/>
+ <source>Share file</source>
+ <translation>Datei teilen</translation>
+ </message>
+</context>
+</TS>
\ No newline at end of file
diff --git a/translations/ring_client_windows_el.ts b/translations/ring_client_windows_el.ts
new file mode 100644
index 0000000..8408e2f
--- /dev/null
+++ b/translations/ring_client_windows_el.ts
@@ -0,0 +1,1589 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="el" version="2.0">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../aboutdialog.ui" line="435"/>
+ <location filename="../aboutdialog.ui" line="465"/>
+ <source>About</source>
+ <translation>Περί</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="462"/>
+ <source>about button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="478"/>
+ <source>credits button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="481"/>
+ <source>Credits</source>
+ <translation>Μονάδες</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="547"/>
+ <source>Free as in Freedom</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="563"/>
+ <source>The Microsoft Windows client for Jami.
+Jami is a secured and distributed communication software.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="32"/>
+ <source>version</source>
+ <translation>έκδοση</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="39"/>
+ <source>Created by:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="73"/>
+ <source>Artwork by:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="77"/>
+ <source>Based on the SFLPhone project</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AccountItemDelegate</name>
+ <message>
+ <location filename="../accountitemdelegate.cpp" line="91"/>
+ <source>Add Account</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSIPSettingsWidget</name>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="55"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="102"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="130"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="191"/>
+ <source>Connectivity</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="281"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="293"/>
+ <source>Use STUN</source>
+ <translation>Χρήση STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="317"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="329"/>
+ <source>Use TURN</source>
+ <translation>Χρήση TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="359"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="391"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="423"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="464"/>
+ <source>Media</source>
+ <translation>Μέσα</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="515"/>
+ <source>Enable Video</source>
+ <translation>Ενεργοποίση βίνταο</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="539"/>
+ <source>Video Codecs</source>
+ <translation>Κωδικοποιητές βίντεο</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="692"/>
+ <source>Audio Codecs</source>
+ <translation>Κωδικοποιητές ήχου</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="142"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="151"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSettingsWidget</name>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="61"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="108"/>
+ <source>Allow Calls From Untrusted Peers</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="133"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="161"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="188"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="225"/>
+ <source>Name Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="275"/>
+ <source>Address</source>
+ <translation>Διεύθυνση</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="351"/>
+ <source>OpenDHT Configuration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="398"/>
+ <source>Enable Proxy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="454"/>
+ <source>Bootstrap</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="530"/>
+ <source>Security</source>
+ <translation>Ασφάλεια</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="571"/>
+ <source>Private Key Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="583"/>
+ <source>User Certificate</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="622"/>
+ <source>Private Key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="634"/>
+ <source>CA Certificate</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="766"/>
+ <source>Connectivity</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="868"/>
+ <source>Use STUN</source>
+ <translation>Χρήση STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="856"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="892"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="904"/>
+ <source>Use TURN</source>
+ <translation>Χρήση TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="934"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="966"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="998"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1039"/>
+ <source>Media</source>
+ <translation>Μέσα</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1090"/>
+ <source>Enable Video</source>
+ <translation>Ενεργοποίση βίνταο</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1267"/>
+ <source>Audio Codecs</source>
+ <translation>Κωδικοποιητές ήχου</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1114"/>
+ <source>Video Codecs</source>
+ <translation>Κωδικοποιητές βίντεο</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="181"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AnimatedOverlay</name>
+ <message>
+ <location filename="../animatedoverlay.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>BannedItemWidget</name>
+ <message>
+ <location filename="../banneditemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="80"/>
+ <source>name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="104"/>
+ <source>id</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>CallWidget</name>
+ <message>
+ <location filename="../callwidget.ui" line="184"/>
+ <source>Show conversations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="187"/>
+ <source>Conversations</source>
+ <translation>Συνομιλίες</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="368"/>
+ <source>Search contact text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="653"/>
+ <source>Jami is free software for universal communication which respects the freedoms and privacy of its users.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="693"/>
+ <source>
+ This is your ID.
+Copy and share it with your friends!
+ </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="806"/>
+ <source>Show ring ID QR code</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="857"/>
+ <source>Share ring ID button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="915"/>
+ <source>Double-click to copy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="956"/>
+ <source>Error while generating QR Code</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1184"/>
+ <location filename="../callwidget.ui" line="1434"/>
+ <source>best name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1208"/>
+ <source>best Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1734"/>
+ <source>Back to homepage button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1943"/>
+ <source>Add to contacts</source>
+ <translation>Προσθήκη στις επαφές</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="202"/>
+ <source>Show invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="205"/>
+ <source>Invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="377"/>
+ <location filename="../callwidget.cpp" line="552"/>
+ <source>Find a new or existing contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1444"/>
+ <source>Wants to talk to you!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1517"/>
+ <source>Answer incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1589"/>
+ <source>Ignore incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1539"/>
+ <source>Answer</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1617"/>
+ <source>Ignore</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1280"/>
+ <source>Cancel outgoing call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1305"/>
+ <source>Cancel</source>
+ <translation>Ακύρωση</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="332"/>
+ <source>Start video call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="343"/>
+ <source>Start audio call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="354"/>
+ <source>Clear conversation</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="361"/>
+ <source>Remove contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="373"/>
+ <source>Block contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="384"/>
+ <source>Copy number</source>
+ <translation>Αντιγραφή αριθμού </translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="561"/>
+ <source>Search your received invitations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>Contact me on Jami</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>My Id is : </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="847"/>
+ <source>%1</source>
+ <comment>%1 is the contact username</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="852"/>
+ <source>%1</source>
+ <comment>%1 is the contact unique identifier</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="675"/>
+ <source>Call incoming from %1</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>DeleteAccountDialog</name>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="35"/>
+ <source>Account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="58"/>
+ <source>Do you really want to delete the following account?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="153"/>
+ <source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="235"/>
+ <source>Permanently delete account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="241"/>
+ <source>Delete</source>
+ <translation>Διαγραφή</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="278"/>
+ <source>Cancel account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="284"/>
+ <source>Cancel</source>
+ <translation>Ακύρωση</translation>
+ </message>
+</context>
+<context>
+ <name>DeviceItemWidget</name>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="105"/>
+ <source>Device Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="143"/>
+ <source>this device</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>InviteButtonsWidget</name>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="83"/>
+ <source>Accept</source>
+ <translation>Αποδοχή</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="131"/>
+ <source>Refuse</source>
+ <translation>Άρνηση</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="179"/>
+ <source>Block</source>
+ <translation>Μπλοκάρισμα</translation>
+ </message>
+</context>
+<context>
+ <name>LinkDeviceDialog</name>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="62"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="117"/>
+ <source>Password</source>
+ <translation>Συνθηματικό</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="184"/>
+ <source>Ok</source>
+ <translation>Εντάξει</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="218"/>
+ <source>Cancel</source>
+ <translation>Ακύρωση</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="279"/>
+ <source>Exporting account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="402"/>
+ <source>Your PIN is</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="432"/>
+ <source>PIN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="477"/>
+ <source>This pin and the account password should be entered in your device within 10 minutes.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="553"/>
+ <source>Close</source>
+ <translation>Κλείσιμο</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="34"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="96"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="110"/>
+ <source>Something went wrong.
+Please try again later.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="83"/>
+ <source>Settings</source>
+ <translation>Ρυθμίσεις</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="94"/>
+ <source>Exit</source>
+ <translation>Έξοδος</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="111"/>
+ <source>About</source>
+ <translation>Περί</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="435"/>
+ <source>Jami</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>NameRegistrationDialog</name>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="35"/>
+ <source>Set Registered Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="163"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="244"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="250"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="256"/>
+ <source>Password</source>
+ <translation>Συνθηματικό</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="323"/>
+ <source>Register</source>
+ <translation>Εγγραφή</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="357"/>
+ <source>Cancel</source>
+ <translation>Ακύρωση</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="424"/>
+ <source>Registering Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="548"/>
+ <source>Something went wrong</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="618"/>
+ <source>Close</source>
+ <translation>Κλείσιμο</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="82"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="85"/>
+ <source>Network error</source>
+ <translation>Σφάλμα δικτύου</translation>
+ </message>
+</context>
+<context>
+ <name>NewWizardWidget</name>
+ <message>
+ <location filename="../newwizardwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="141"/>
+ <source>Welcome Label</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="147"/>
+ <source> Welcome to</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="185"/>
+ <source>Welcome Logo</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="239"/>
+ <source>Create Jami account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="245"/>
+ <source>Push button for Jami account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="251"/>
+ <source>Create a Jami account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="282"/>
+ <source>Link device button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="288"/>
+ <source>Push button for device linkage start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="291"/>
+ <source>Link this device to an account</source>
+ <translation>Σύνδεση αυτής της συσκευής με ένα λογαριασμό</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="328"/>
+ <source>Create Jami SIP account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="334"/>
+ <source>Push button for Jami SIP account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="340"/>
+ <source>Create a SIP account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="405"/>
+ <source>Link this device to an existing account</source>
+ <translation>Σύνδεση αυτής της συσκευής σε έναν λογαριασμό που ήδη υπάρχει</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="469"/>
+ <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">To link this device to another account, you first </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">need to obtain a PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> code. To generate the PIN code:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Account management setting</span><span style=" font-size:14px;"> of a previous device</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choose the </span><span style=" font-size:14px; font-weight:600;">Jami account</span><span style=" font-size:14px;"> you want to use</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Devices</span><span style=" font-size:14px;"> tab</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Select </span><span style=" font-size:14px; font-weight:600;">Add a device</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">You will get the necessary PIN to complete this form. The PIN is only valid for </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutes</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="531"/>
+ <source>Enter your pin:</source>
+ <translation>Εισάγετε το PIN σας:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="599"/>
+ <source>Or import a file:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="626"/>
+ <source>Link from exported account archive file</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="629"/>
+ <location filename="../newwizardwidget.cpp" line="83"/>
+ <location filename="../newwizardwidget.cpp" line="218"/>
+ <source>(None)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="705"/>
+ <source>Password:</source>
+ <translation>Συνθηματικό:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="799"/>
+ <location filename="../newwizardwidget.ui" line="1586"/>
+ <source>Profile</source>
+ <translation>Προφίλ</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="953"/>
+ <location filename="../newwizardwidget.ui" line="1767"/>
+ <source>Profile name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1027"/>
+ <source>Account</source>
+ <translation>Λογαριασμός</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1136"/>
+ <source>Register your username.
+This will reserve the username so that only you can use it.
+Your friends will be able to call you with your usename
+instead of using your ID.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1142"/>
+ <source>Public username checkbox</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1145"/>
+ <source>Checkbox selecting if the user wants a public username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1148"/>
+ <source>Register public username</source>
+ <translation>Καταχώρηση δημόσιου ονόματος χρήστη</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1367"/>
+ <source>Public username edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1373"/>
+ <source>Choose your username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1289"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1295"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1301"/>
+ <location filename="../newwizardwidget.ui" line="2213"/>
+ <source>Password</source>
+ <translation>Συνθηματικό</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1211"/>
+ <location filename="../newwizardwidget.ui" line="1217"/>
+ <source>Password confirmation text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1223"/>
+ <source>Confirm password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1814"/>
+ <source>SIP Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1973"/>
+ <source>SIP Server edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1979"/>
+ <source>Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2045"/>
+ <source>SIP proxy input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2051"/>
+ <source>SIP proxy text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2057"/>
+ <source>Proxy</source>
+ <translation>Διαμεσολαβητής</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2123"/>
+ <source>SIP username input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2129"/>
+ <source>SIP Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2135"/>
+ <source>Username</source>
+ <translation>Όνομα χρήστη</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2201"/>
+ <location filename="../newwizardwidget.ui" line="2207"/>
+ <source>SIP Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message utf8="true">
+ <location filename="../newwizardwidget.ui" line="2282"/>
+ <source>Generating your Jami account…</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2356"/>
+ <source>Previous page button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2362"/>
+ <source>push button to access previous page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2365"/>
+ <source>Previous</source>
+ <translation>Προηγούμενο</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2396"/>
+ <source>Cancel account create/link</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2402"/>
+ <source>push button to cancel account creation or linking</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2405"/>
+ <source>Back</source>
+ <translation>Πίσω</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2442"/>
+ <source>Next page Button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2448"/>
+ <source>Push button to access next page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2451"/>
+ <source>Next</source>
+ <translation>Επόμενο</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="75"/>
+ <source>Open File</source>
+ <translation>Άνοιγμα αρχείου</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="77"/>
+ <source>Jami archive files (*.gz); All files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="123"/>
+ <source>Your account needs to be migrated. Enter your password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="419"/>
+ <source>Migrating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="412"/>
+ <source>Importing account archive...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="404"/>
+ <source>Generating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="422"/>
+ <source>Generating your SIP account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="533"/>
+ <source>Error creating account</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PasswordDialog</name>
+ <message>
+ <location filename="../passworddialog.ui" line="32"/>
+ <source>Change Account Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="97"/>
+ <source>Enter Current Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="169"/>
+ <source>Enter New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="190"/>
+ <source>Confirm New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="247"/>
+ <source>Confirm</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="290"/>
+ <source>Cancel</source>
+ <translation>Ακύρωση</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="143"/>
+ <source>Current Password Incorrect</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PhotoBoothDialog</name>
+ <message>
+ <location filename="../photoboothdialog.ui" line="14"/>
+ <source>Photobooth</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PhotoboothWidget</name>
+ <message>
+ <location filename="../photoboothwidget.ui" line="20"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.ui" line="120"/>
+ <source>Photobooth display</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="92"/>
+ <source>Choose File</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="94"/>
+ <source>Image Files (*.jpg *.jpeg *.png)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PrivateBridging</name>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Choose File</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../utils.cpp" line="183"/>
+ <source>No default mail client found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="43"/>
+ <location filename="../deviceitemwidget.cpp" line="85"/>
+ <source>Edit Device Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="44"/>
+ <source>Unlink Device From Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="80"/>
+ <source>Save new device name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.cpp" line="39"/>
+ <source>Add as contact</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>RingButton</name>
+ <message>
+ <location filename="../ringbutton.ui" line="140"/>
+ <source>Select folder</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <location filename="../settingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="141"/>
+ <source>Settings</source>
+ <translation>Ρυθμίσεις</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="229"/>
+ <source>Account</source>
+ <translation>Λογαριασμός</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="267"/>
+ <location filename="../settingswidget.ui" line="503"/>
+ <source>General</source>
+ <translation>Γενικά</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="305"/>
+ <location filename="../settingswidget.ui" line="3416"/>
+ <source>Audio / Video</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="542"/>
+ <source>System</source>
+ <translation>Σύστημα</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="610"/>
+ <source>Enable desktop notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="653"/>
+ <source>Keep minimized on close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="678"/>
+ <source>Download folder</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="811"/>
+ <source>Save in</source>
+ <translation>Αποθήκευση σε</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="904"/>
+ <source>Always Recording</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="943"/>
+ <source>Updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1008"/>
+ <source>Check for updates automatically every</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1032"/>
+ <source>Interval between update checks in days selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1038"/>
+ <source> days</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1081"/>
+ <source>Check for updates now button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1084"/>
+ <source>Check for updates now</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3027"/>
+ <source>Password</source>
+ <translation>Συνθηματικό</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1418"/>
+ <location filename="../settingswidget.ui" line="2729"/>
+ <source>Enable</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="607"/>
+ <source>toggle enable notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="650"/>
+ <source>Toggle keep minimized on close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="764"/>
+ <source>Call Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1005"/>
+ <source>Toggle automatic updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1231"/>
+ <source>Jami Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1453"/>
+ <location filename="../settingswidget.ui" line="2761"/>
+ <source>Profile</source>
+ <translation>Προφίλ</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1567"/>
+ <location filename="../settingswidget.ui" line="2875"/>
+ <source>Identity</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1614"/>
+ <source>Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1673"/>
+ <source>Registered name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1721"/>
+ <source>Type here to register a username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1755"/>
+ <source>Register</source>
+ <translation>Εγγραφή</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1827"/>
+ <source>Change Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1868"/>
+ <source>Export Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1909"/>
+ <location filename="../settingswidget.ui" line="3089"/>
+ <source>Delete Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1973"/>
+ <source>Linked Devices</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2078"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2142"/>
+ <source>Banned Contacts</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3788"/>
+ <source>Format</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3831"/>
+ <source>Video device framerate selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3967"/>
+ <source>Preview unavailable</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2359"/>
+ <location filename="../settingswidget.ui" line="3187"/>
+ <source>Advanced Account Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2554"/>
+ <source>SIP Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2925"/>
+ <source>Username</source>
+ <translation>Όνομα χρήστη</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2958"/>
+ <source>Hostname</source>
+ <translation>Hostname</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2991"/>
+ <source>Proxy</source>
+ <translation>Διαμεσολαβητής</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3461"/>
+ <source>Audio</source>
+ <translation>Ήχος</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3511"/>
+ <source>Microphone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3551"/>
+ <source>Audio input device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3585"/>
+ <source>Output Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3625"/>
+ <source>Choose the output device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3682"/>
+ <source>Video</source>
+ <translation>Βίντεο</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3720"/>
+ <source>Device</source>
+ <translation>Συσκευή</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3766"/>
+ <source>Video device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="459"/>
+ <source>A registered name should not have any spaces and must be at least three letters long</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="466"/>
+ <source>This name is already taken</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="92"/>
+ <location filename="../settingswidget.cpp" line="110"/>
+ <source>Enter an alias</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="473"/>
+ <source>Register this name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="550"/>
+ <source>Remove Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="551"/>
+ <source>Enter this account's password to confirm the removal of this device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="558"/>
+ <source>Are you sure you wish to remove this device?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="589"/>
+ <source>Export Account Here</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="887"/>
+ <source>Select A Folder For Your Downloads</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="904"/>
+ <source>Select A Folder For Your Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>VideoOverlay</name>
+ <message>
+ <location filename="../videooverlay.ui" line="419"/>
+ <source>Call on Hold</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="89"/>
+ <source>Hold / Unhold</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="124"/>
+ <source>Chat</source>
+ <translation>Συνομιλία</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="162"/>
+ <source>Mute Mic</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="244"/>
+ <source>Record call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="325"/>
+ <source>Name label</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="390"/>
+ <source>Time elapsed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="393"/>
+ <source>00:00</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="57"/>
+ <source>Hangup</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="203"/>
+ <source>Mute Video</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>VideoView</name>
+ <message>
+ <location filename="../videoview.cpp" line="271"/>
+ <source>Share entire screen</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="274"/>
+ <source>Share screen area</source>
+ <translation>Μοίρασμα περιοχής της οθόνης</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="281"/>
+ <source>Share file</source>
+ <translation>Μοίρασμα αρχείου</translation>
+ </message>
+</context>
+</TS>
\ No newline at end of file
diff --git a/translations/ring_client_windows_en_GB.ts b/translations/ring_client_windows_en_GB.ts
new file mode 100644
index 0000000..79dc393
--- /dev/null
+++ b/translations/ring_client_windows_en_GB.ts
@@ -0,0 +1,1591 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="en_GB">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../aboutdialog.ui" line="435"/>
+ <location filename="../aboutdialog.ui" line="465"/>
+ <source>About</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="462"/>
+ <source>about button</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="478"/>
+ <source>credits button</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="481"/>
+ <source>Credits</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="547"/>
+ <source>Free as in Freedom</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="563"/>
+ <source>The Microsoft Windows client for Jami.
+Jami is a secured and distributed communication software.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="32"/>
+ <source>version</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="39"/>
+ <source>Created by:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="73"/>
+ <source>Artwork by:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="77"/>
+ <source>Based on the SFLPhone project</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>AccountItemDelegate</name>
+ <message>
+ <location filename="../accountitemdelegate.cpp" line="91"/>
+ <source>Add Account</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>AdvancedSIPSettingsWidget</name>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="55"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="102"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="130"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="191"/>
+ <source>Connectivity</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="281"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="293"/>
+ <source>Use STUN</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="317"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="329"/>
+ <source>Use TURN</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="359"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="391"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="423"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="464"/>
+ <source>Media</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="515"/>
+ <source>Enable Video</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="539"/>
+ <source>Video Codecs</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="692"/>
+ <source>Audio Codecs</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="142"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="151"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>AdvancedSettingsWidget</name>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="61"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="108"/>
+ <source>Allow Calls From Untrusted Peers</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="133"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="161"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="188"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="225"/>
+ <source>Name Server</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="275"/>
+ <source>Address</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="351"/>
+ <source>OpenDHT Configuration</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="398"/>
+ <source>Enable Proxy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="454"/>
+ <source>Bootstrap</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="530"/>
+ <source>Security</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="571"/>
+ <source>Private Key Password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="583"/>
+ <source>User Certificate</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="622"/>
+ <source>Private Key</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="634"/>
+ <source>CA Certificate</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="766"/>
+ <source>Connectivity</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="868"/>
+ <source>Use STUN</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="856"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="892"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="904"/>
+ <source>Use TURN</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="934"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="966"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="998"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1039"/>
+ <source>Media</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1090"/>
+ <source>Enable Video</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1267"/>
+ <source>Audio Codecs</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1114"/>
+ <source>Video Codecs</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="181"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>AnimatedOverlay</name>
+ <message>
+ <location filename="../animatedoverlay.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>BannedItemWidget</name>
+ <message>
+ <location filename="../banneditemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="80"/>
+ <source>name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="104"/>
+ <source>id</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>CallWidget</name>
+ <message>
+ <location filename="../callwidget.ui" line="184"/>
+ <source>Show conversations</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="187"/>
+ <source>Conversations</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="368"/>
+ <source>Search contact text input</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="653"/>
+ <source>Jami is free software for universal communication which respects the freedoms and privacy of its users.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="693"/>
+ <source>
+ This is your ID.
+Copy and share it with your friends!
+ </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="806"/>
+ <source>Show ring ID QR code</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="857"/>
+ <source>Share ring ID button</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="915"/>
+ <source>Double-click to copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="956"/>
+ <source>Error while generating QR Code</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1184"/>
+ <location filename="../callwidget.ui" line="1434"/>
+ <source>best name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1208"/>
+ <source>best Id</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1734"/>
+ <source>Back to homepage button</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1943"/>
+ <source>Add to contacts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="202"/>
+ <source>Show invites</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="205"/>
+ <source>Invites</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="377"/>
+ <location filename="../callwidget.cpp" line="552"/>
+ <source>Find a new or existing contact</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1444"/>
+ <source>Wants to talk to you!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1517"/>
+ <source>Answer incoming call button</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1589"/>
+ <source>Ignore incoming call button</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1539"/>
+ <source>Answer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1617"/>
+ <source>Ignore</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1280"/>
+ <source>Cancel outgoing call</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1305"/>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="332"/>
+ <source>Start video call</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="343"/>
+ <source>Start audio call</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="354"/>
+ <source>Clear conversation</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="361"/>
+ <source>Remove contact</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="373"/>
+ <source>Block contact</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="384"/>
+ <source>Copy number</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="561"/>
+ <source>Search your received invitations</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>Contact me on Jami</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>My Id is : </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="847"/>
+ <source>%1</source>
+ <comment>%1 is the contact username</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="852"/>
+ <source>%1</source>
+ <comment>%1 is the contact unique identifier</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="675"/>
+ <source>Call incoming from %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>DeleteAccountDialog</name>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="35"/>
+ <source>Account deletion</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="58"/>
+ <source>Do you really want to delete the following account?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="153"/>
+ <source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="235"/>
+ <source>Permanently delete account</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="241"/>
+ <source>Delete</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="278"/>
+ <source>Cancel account deletion</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="284"/>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>DeviceItemWidget</name>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="105"/>
+ <source>Device Id</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="143"/>
+ <source>this device</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>InviteButtonsWidget</name>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="83"/>
+ <source>Accept</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="131"/>
+ <source>Refuse</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="179"/>
+ <source>Block</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>LinkDeviceDialog</name>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="62"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="117"/>
+ <source>Password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="184"/>
+ <source>Ok</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="218"/>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="279"/>
+ <source>Exporting account</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="402"/>
+ <source>Your PIN is</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="432"/>
+ <source>PIN</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="477"/>
+ <source>This pin and the account password should be entered in your device within 10 minutes.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="553"/>
+ <source>Close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="34"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="96"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="110"/>
+ <source>Something went wrong.
+Please try again later.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="83"/>
+ <source>Settings</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="94"/>
+ <source>Exit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="111"/>
+ <source>About</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="435"/>
+ <source>Jami</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>NameRegistrationDialog</name>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="35"/>
+ <source>Set Registered Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="163"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="244"/>
+ <source>Password text input</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="250"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="256"/>
+ <source>Password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="323"/>
+ <source>Register</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="357"/>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="424"/>
+ <source>Registering Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="548"/>
+ <source>Something went wrong</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="618"/>
+ <source>Close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="82"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="85"/>
+ <source>Network error</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>NewWizardWidget</name>
+ <message>
+ <location filename="../newwizardwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="141"/>
+ <source>Welcome Label</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="147"/>
+ <source> Welcome to</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="185"/>
+ <source>Welcome Logo</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="239"/>
+ <source>Create Jami account button</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="245"/>
+ <source>Push button for Jami account creation start trigger</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="251"/>
+ <source>Create a Jami account</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="282"/>
+ <source>Link device button</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="288"/>
+ <source>Push button for device linkage start trigger</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="291"/>
+ <source>Link this device to an account</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="328"/>
+ <source>Create Jami SIP account button</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="334"/>
+ <source>Push button for Jami SIP account creation start trigger</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="340"/>
+ <source>Create a SIP account</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="405"/>
+ <source>Link this device to an existing account</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="469"/>
+ <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">To link this device to another account, you first </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">need to obtain a PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> code. To generate the PIN code:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Account management setting</span><span style=" font-size:14px;"> of a previous device</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choose the </span><span style=" font-size:14px; font-weight:600;">Jami account</span><span style=" font-size:14px;"> you want to use</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Devices</span><span style=" font-size:14px;"> tab</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Select </span><span style=" font-size:14px; font-weight:600;">Add a device</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">You will get the necessary PIN to complete this form. The PIN is only valid for </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutes</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="531"/>
+ <source>Enter your pin:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="599"/>
+ <source>Or import a file:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="626"/>
+ <source>Link from exported account archive file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="629"/>
+ <location filename="../newwizardwidget.cpp" line="83"/>
+ <location filename="../newwizardwidget.cpp" line="218"/>
+ <source>(None)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="705"/>
+ <source>Password:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="799"/>
+ <location filename="../newwizardwidget.ui" line="1586"/>
+ <source>Profile</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="953"/>
+ <location filename="../newwizardwidget.ui" line="1767"/>
+ <source>Profile name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1027"/>
+ <source>Account</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1136"/>
+ <source>Register your username.
+This will reserve the username so that only you can use it.
+Your friends will be able to call you with your usename
+instead of using your ID.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1142"/>
+ <source>Public username checkbox</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1145"/>
+ <source>Checkbox selecting if the user wants a public username</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1148"/>
+ <source>Register public username</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1367"/>
+ <source>Public username edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1373"/>
+ <source>Choose your username</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1289"/>
+ <source>Password text input</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1295"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1301"/>
+ <location filename="../newwizardwidget.ui" line="2213"/>
+ <source>Password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1211"/>
+ <location filename="../newwizardwidget.ui" line="1217"/>
+ <source>Password confirmation text input</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1223"/>
+ <source>Confirm password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1814"/>
+ <source>SIP Account</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1973"/>
+ <source>SIP Server edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1979"/>
+ <source>Server</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2045"/>
+ <source>SIP proxy input</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2051"/>
+ <source>SIP proxy text entry</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2057"/>
+ <source>Proxy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2123"/>
+ <source>SIP username input</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2129"/>
+ <source>SIP Password text entry</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2135"/>
+ <source>Username</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2201"/>
+ <location filename="../newwizardwidget.ui" line="2207"/>
+ <source>SIP Password text input</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message utf8="true">
+ <location filename="../newwizardwidget.ui" line="2282"/>
+ <source>Generating your Jami account…</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2356"/>
+ <source>Previous page button</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2362"/>
+ <source>push button to access previous page of wizard</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2365"/>
+ <source>Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2396"/>
+ <source>Cancel account create/link</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2402"/>
+ <source>push button to cancel account creation or linking</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2405"/>
+ <source>Back</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2442"/>
+ <source>Next page Button</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2448"/>
+ <source>Push button to access next page of wizard</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2451"/>
+ <source>Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="75"/>
+ <source>Open File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="77"/>
+ <source>Jami archive files (*.gz); All files (*)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="123"/>
+ <source>Your account needs to be migrated. Enter your password.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="419"/>
+ <source>Migrating your Jami account...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="412"/>
+ <source>Importing account archive...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="404"/>
+ <source>Generating your Jami account...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="422"/>
+ <source>Generating your SIP account...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="533"/>
+ <source>Error creating account</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>PasswordDialog</name>
+ <message>
+ <location filename="../passworddialog.ui" line="32"/>
+ <source>Change Account Password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="97"/>
+ <source>Enter Current Password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="169"/>
+ <source>Enter New Password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="190"/>
+ <source>Confirm New Password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="247"/>
+ <source>Confirm</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="290"/>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="143"/>
+ <source>Current Password Incorrect</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>PhotoBoothDialog</name>
+ <message>
+ <location filename="../photoboothdialog.ui" line="14"/>
+ <source>Photobooth</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>PhotoboothWidget</name>
+ <message>
+ <location filename="../photoboothwidget.ui" line="20"/>
+ <source>Form</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.ui" line="120"/>
+ <source>Photobooth display</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="92"/>
+ <source>Choose File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="94"/>
+ <source>Image Files (*.jpg *.jpeg *.png)</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>PrivateBridging</name>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Choose File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Files (*)</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../utils.cpp" line="183"/>
+ <source>No default mail client found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="43"/>
+ <location filename="../deviceitemwidget.cpp" line="85"/>
+ <source>Edit Device Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="44"/>
+ <source>Unlink Device From Account</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="80"/>
+ <source>Save new device name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.cpp" line="39"/>
+ <source>Add as contact</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>RingButton</name>
+ <message>
+ <location filename="../ringbutton.ui" line="140"/>
+ <source>Select folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <location filename="../settingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="141"/>
+ <source>Settings</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="229"/>
+ <source>Account</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="267"/>
+ <location filename="../settingswidget.ui" line="503"/>
+ <source>General</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="305"/>
+ <location filename="../settingswidget.ui" line="3416"/>
+ <source>Audio / Video</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="542"/>
+ <source>System</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="610"/>
+ <source>Enable desktop notifications</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="653"/>
+ <source>Keep minimized on close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="678"/>
+ <source>Download folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="811"/>
+ <source>Save in</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="904"/>
+ <source>Always Recording</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="943"/>
+ <source>Updates</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1008"/>
+ <source>Check for updates automatically every</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1032"/>
+ <source>Interval between update checks in days selector</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1038"/>
+ <source> days</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1081"/>
+ <source>Check for updates now button</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1084"/>
+ <source>Check for updates now</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3027"/>
+ <source>Password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1418"/>
+ <location filename="../settingswidget.ui" line="2729"/>
+ <source>Enable</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="607"/>
+ <source>toggle enable notifications</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="650"/>
+ <source>Toggle keep minimized on close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="764"/>
+ <source>Call Recordings</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1005"/>
+ <source>Toggle automatic updates</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1231"/>
+ <source>Jami Account</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1453"/>
+ <location filename="../settingswidget.ui" line="2761"/>
+ <source>Profile</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1567"/>
+ <location filename="../settingswidget.ui" line="2875"/>
+ <source>Identity</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1614"/>
+ <source>Id</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1673"/>
+ <source>Registered name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1721"/>
+ <source>Type here to register a username</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1755"/>
+ <source>Register</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1827"/>
+ <source>Change Password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1868"/>
+ <source>Export Account</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1909"/>
+ <location filename="../settingswidget.ui" line="3089"/>
+ <source>Delete Account</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1973"/>
+ <source>Linked Devices</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2078"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2142"/>
+ <source>Banned Contacts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3788"/>
+ <source>Format</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3831"/>
+ <source>Video device framerate selector</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3967"/>
+ <source>Preview unavailable</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2359"/>
+ <location filename="../settingswidget.ui" line="3187"/>
+ <source>Advanced Account Settings</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2554"/>
+ <source>SIP Account</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2925"/>
+ <source>Username</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2958"/>
+ <source>Hostname</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2991"/>
+ <source>Proxy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3461"/>
+ <source>Audio</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3511"/>
+ <source>Microphone</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3551"/>
+ <source>Audio input device selector</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3585"/>
+ <source>Output Device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3625"/>
+ <source>Choose the output device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3682"/>
+ <source>Video</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3720"/>
+ <source>Device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3766"/>
+ <source>Video device selector</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="459"/>
+ <source>A registered name should not have any spaces and must be at least three letters long</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="466"/>
+ <source>This name is already taken</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="92"/>
+ <location filename="../settingswidget.cpp" line="110"/>
+ <source>Enter an alias</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="473"/>
+ <source>Register this name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="550"/>
+ <source>Remove Device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="551"/>
+ <source>Enter this account's password to confirm the removal of this device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="558"/>
+ <source>Are you sure you wish to remove this device?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="589"/>
+ <source>Export Account Here</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="887"/>
+ <source>Select A Folder For Your Downloads</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="904"/>
+ <source>Select A Folder For Your Recordings</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>VideoOverlay</name>
+ <message>
+ <location filename="../videooverlay.ui" line="419"/>
+ <source>Call on Hold</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="89"/>
+ <source>Hold / Unhold</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="124"/>
+ <source>Chat</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="162"/>
+ <source>Mute Mic</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="244"/>
+ <source>Record call</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="325"/>
+ <source>Name label</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="390"/>
+ <source>Time elapsed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="393"/>
+ <source>00:00</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="57"/>
+ <source>Hangup</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="203"/>
+ <source>Mute Video</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>VideoView</name>
+ <message>
+ <location filename="../videoview.cpp" line="271"/>
+ <source>Share entire screen</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="274"/>
+ <source>Share screen area</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="281"/>
+ <source>Share file</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/translations/ring_client_windows_eo.ts b/translations/ring_client_windows_eo.ts
new file mode 100644
index 0000000..2a4dcc9
--- /dev/null
+++ b/translations/ring_client_windows_eo.ts
@@ -0,0 +1,1589 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="eo" version="2.0">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../aboutdialog.ui" line="435"/>
+ <location filename="../aboutdialog.ui" line="465"/>
+ <source>About</source>
+ <translation>Pri</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="462"/>
+ <source>about button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="478"/>
+ <source>credits button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="481"/>
+ <source>Credits</source>
+ <translation>Kredito</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="547"/>
+ <source>Free as in Freedom</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="563"/>
+ <source>The Microsoft Windows client for Jami.
+Jami is a secured and distributed communication software.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="32"/>
+ <source>version</source>
+ <translation>versio</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="39"/>
+ <source>Created by:</source>
+ <translation>Kreita de:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="73"/>
+ <source>Artwork by:</source>
+ <translation>Grafiko de:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="77"/>
+ <source>Based on the SFLPhone project</source>
+ <translation>Surbaze de la SFLPhone projekto</translation>
+ </message>
+</context>
+<context>
+ <name>AccountItemDelegate</name>
+ <message>
+ <location filename="../accountitemdelegate.cpp" line="91"/>
+ <source>Add Account</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSIPSettingsWidget</name>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Form</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="55"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="102"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="130"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="191"/>
+ <source>Connectivity</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="281"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="293"/>
+ <source>Use STUN</source>
+ <translation>Uzi STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="317"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="329"/>
+ <source>Use TURN</source>
+ <translation>Uzi TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="359"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="391"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="423"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="464"/>
+ <source>Media</source>
+ <translation>Aŭdvidaĵoj</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="515"/>
+ <source>Enable Video</source>
+ <translation>Ŝalti Videon</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="539"/>
+ <source>Video Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="692"/>
+ <source>Audio Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="142"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="151"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSettingsWidget</name>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Form</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="61"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="108"/>
+ <source>Allow Calls From Untrusted Peers</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="133"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="161"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="188"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="225"/>
+ <source>Name Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="275"/>
+ <source>Address</source>
+ <translation>Adreso</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="351"/>
+ <source>OpenDHT Configuration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="398"/>
+ <source>Enable Proxy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="454"/>
+ <source>Bootstrap</source>
+ <translation>Praŝarĝo</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="530"/>
+ <source>Security</source>
+ <translation>Sekuro</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="571"/>
+ <source>Private Key Password</source>
+ <translation>Pasvorto de Privata Ŝlosilo</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="583"/>
+ <source>User Certificate</source>
+ <translation>Uzanta Atestilo</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="622"/>
+ <source>Private Key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="634"/>
+ <source>CA Certificate</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="766"/>
+ <source>Connectivity</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="868"/>
+ <source>Use STUN</source>
+ <translation>Uzi STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="856"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="892"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="904"/>
+ <source>Use TURN</source>
+ <translation>Uzi TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="934"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="966"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="998"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1039"/>
+ <source>Media</source>
+ <translation>Aŭdvidaĵoj</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1090"/>
+ <source>Enable Video</source>
+ <translation>Ŝalti Videon</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1267"/>
+ <source>Audio Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1114"/>
+ <source>Video Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="181"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AnimatedOverlay</name>
+ <message>
+ <location filename="../animatedoverlay.ui" line="14"/>
+ <source>Form</source>
+ <translation>Form</translation>
+ </message>
+</context>
+<context>
+ <name>BannedItemWidget</name>
+ <message>
+ <location filename="../banneditemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Form</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="80"/>
+ <source>name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="104"/>
+ <source>id</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>CallWidget</name>
+ <message>
+ <location filename="../callwidget.ui" line="184"/>
+ <source>Show conversations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="187"/>
+ <source>Conversations</source>
+ <translation>Konversacioj</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="368"/>
+ <source>Search contact text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="653"/>
+ <source>Jami is free software for universal communication which respects the freedoms and privacy of its users.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="693"/>
+ <source>
+ This is your ID.
+Copy and share it with your friends!
+ </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="806"/>
+ <source>Show ring ID QR code</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="857"/>
+ <source>Share ring ID button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="915"/>
+ <source>Double-click to copy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="956"/>
+ <source>Error while generating QR Code</source>
+ <translation>Eraro dum generado de QR Kodo</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1184"/>
+ <location filename="../callwidget.ui" line="1434"/>
+ <source>best name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1208"/>
+ <source>best Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1734"/>
+ <source>Back to homepage button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1943"/>
+ <source>Add to contacts</source>
+ <translation>Aldoni al kontaktoj</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="202"/>
+ <source>Show invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="205"/>
+ <source>Invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="377"/>
+ <location filename="../callwidget.cpp" line="552"/>
+ <source>Find a new or existing contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1444"/>
+ <source>Wants to talk to you!</source>
+ <translation>Volas paroli kun vi!</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1517"/>
+ <source>Answer incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1589"/>
+ <source>Ignore incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1539"/>
+ <source>Answer</source>
+ <translation>Respondi</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1617"/>
+ <source>Ignore</source>
+ <translation>Malatenti</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1280"/>
+ <source>Cancel outgoing call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1305"/>
+ <source>Cancel</source>
+ <translation>Rezigni</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="332"/>
+ <source>Start video call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="343"/>
+ <source>Start audio call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="354"/>
+ <source>Clear conversation</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="361"/>
+ <source>Remove contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="373"/>
+ <source>Block contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="384"/>
+ <source>Copy number</source>
+ <translation>Kopii numeron</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="561"/>
+ <source>Search your received invitations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>Contact me on Jami</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>My Id is : </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="847"/>
+ <source>%1</source>
+ <comment>%1 is the contact username</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="852"/>
+ <source>%1</source>
+ <comment>%1 is the contact unique identifier</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="675"/>
+ <source>Call incoming from %1</source>
+ <translation>Voko eniranta de %1</translation>
+ </message>
+</context>
+<context>
+ <name>DeleteAccountDialog</name>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="35"/>
+ <source>Account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="58"/>
+ <source>Do you really want to delete the following account?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="153"/>
+ <source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="235"/>
+ <source>Permanently delete account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="241"/>
+ <source>Delete</source>
+ <translation>Forigi</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="278"/>
+ <source>Cancel account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="284"/>
+ <source>Cancel</source>
+ <translation>Rezigni</translation>
+ </message>
+</context>
+<context>
+ <name>DeviceItemWidget</name>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Form</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="105"/>
+ <source>Device Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="143"/>
+ <source>this device</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>InviteButtonsWidget</name>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="83"/>
+ <source>Accept</source>
+ <translation>Akcepti</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="131"/>
+ <source>Refuse</source>
+ <translation>Rifuzi</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="179"/>
+ <source>Block</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>LinkDeviceDialog</name>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation>Dialogo</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="62"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="117"/>
+ <source>Password</source>
+ <translation>Pasvorto</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="184"/>
+ <source>Ok</source>
+ <translation>Okej</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="218"/>
+ <source>Cancel</source>
+ <translation>Rezigni</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="279"/>
+ <source>Exporting account</source>
+ <translation>Elportanta konton</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="402"/>
+ <source>Your PIN is</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="432"/>
+ <source>PIN</source>
+ <translation>PIN</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="477"/>
+ <source>This pin and the account password should be entered in your device within 10 minutes.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="553"/>
+ <source>Close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="34"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="96"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="110"/>
+ <source>Something went wrong.
+Please try again later.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="83"/>
+ <source>Settings</source>
+ <translation>Agordoj</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="94"/>
+ <source>Exit</source>
+ <translation>Eliri</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="111"/>
+ <source>About</source>
+ <translation>Pri</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="435"/>
+ <source>Jami</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>NameRegistrationDialog</name>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="35"/>
+ <source>Set Registered Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="163"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="244"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="250"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="256"/>
+ <source>Password</source>
+ <translation>Pasvorto</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="323"/>
+ <source>Register</source>
+ <translation>Registri</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="357"/>
+ <source>Cancel</source>
+ <translation>Rezigni</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="424"/>
+ <source>Registering Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="548"/>
+ <source>Something went wrong</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="618"/>
+ <source>Close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="82"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="85"/>
+ <source>Network error</source>
+ <translation>Reta eraro</translation>
+ </message>
+</context>
+<context>
+ <name>NewWizardWidget</name>
+ <message>
+ <location filename="../newwizardwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Form</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="141"/>
+ <source>Welcome Label</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="147"/>
+ <source> Welcome to</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="185"/>
+ <source>Welcome Logo</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="239"/>
+ <source>Create Jami account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="245"/>
+ <source>Push button for Jami account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="251"/>
+ <source>Create a Jami account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="282"/>
+ <source>Link device button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="288"/>
+ <source>Push button for device linkage start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="291"/>
+ <source>Link this device to an account</source>
+ <translation>Ligi tiun aparaton al konto</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="328"/>
+ <source>Create Jami SIP account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="334"/>
+ <source>Push button for Jami SIP account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="340"/>
+ <source>Create a SIP account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="405"/>
+ <source>Link this device to an existing account</source>
+ <translation>Ligi ĉi tiun aparaton al ekzistanta konto</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="469"/>
+ <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">To link this device to another account, you first </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">need to obtain a PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> code. To generate the PIN code:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Account management setting</span><span style=" font-size:14px;"> of a previous device</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choose the </span><span style=" font-size:14px; font-weight:600;">Jami account</span><span style=" font-size:14px;"> you want to use</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Devices</span><span style=" font-size:14px;"> tab</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Select </span><span style=" font-size:14px; font-weight:600;">Add a device</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">You will get the necessary PIN to complete this form. The PIN is only valid for </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutes</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="531"/>
+ <source>Enter your pin:</source>
+ <translation>Entajpu vian PIN-on:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="599"/>
+ <source>Or import a file:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="626"/>
+ <source>Link from exported account archive file</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="629"/>
+ <location filename="../newwizardwidget.cpp" line="83"/>
+ <location filename="../newwizardwidget.cpp" line="218"/>
+ <source>(None)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="705"/>
+ <source>Password:</source>
+ <translation>Pasvorto:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="799"/>
+ <location filename="../newwizardwidget.ui" line="1586"/>
+ <source>Profile</source>
+ <translation>Profilo</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="953"/>
+ <location filename="../newwizardwidget.ui" line="1767"/>
+ <source>Profile name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1027"/>
+ <source>Account</source>
+ <translation>Konto</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1136"/>
+ <source>Register your username.
+This will reserve the username so that only you can use it.
+Your friends will be able to call you with your usename
+instead of using your ID.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1142"/>
+ <source>Public username checkbox</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1145"/>
+ <source>Checkbox selecting if the user wants a public username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1148"/>
+ <source>Register public username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1367"/>
+ <source>Public username edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1373"/>
+ <source>Choose your username</source>
+ <translation>Elektu vian uzantnomon</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1289"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1295"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1301"/>
+ <location filename="../newwizardwidget.ui" line="2213"/>
+ <source>Password</source>
+ <translation>Pasvorto</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1211"/>
+ <location filename="../newwizardwidget.ui" line="1217"/>
+ <source>Password confirmation text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1223"/>
+ <source>Confirm password</source>
+ <translation>Konfirmu pasvorton</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1814"/>
+ <source>SIP Account</source>
+ <translation>SIP Konto</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1973"/>
+ <source>SIP Server edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1979"/>
+ <source>Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2045"/>
+ <source>SIP proxy input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2051"/>
+ <source>SIP proxy text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2057"/>
+ <source>Proxy</source>
+ <translation>Prokura Servilo</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2123"/>
+ <source>SIP username input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2129"/>
+ <source>SIP Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2135"/>
+ <source>Username</source>
+ <translation>Uzantnomo</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2201"/>
+ <location filename="../newwizardwidget.ui" line="2207"/>
+ <source>SIP Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message utf8="true">
+ <location filename="../newwizardwidget.ui" line="2282"/>
+ <source>Generating your Jami account…</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2356"/>
+ <source>Previous page button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2362"/>
+ <source>push button to access previous page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2365"/>
+ <source>Previous</source>
+ <translation>Antaŭa</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2396"/>
+ <source>Cancel account create/link</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2402"/>
+ <source>push button to cancel account creation or linking</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2405"/>
+ <source>Back</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2442"/>
+ <source>Next page Button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2448"/>
+ <source>Push button to access next page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2451"/>
+ <source>Next</source>
+ <translation>Sekva</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="75"/>
+ <source>Open File</source>
+ <translation>Malfermi Dosieron</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="77"/>
+ <source>Jami archive files (*.gz); All files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="123"/>
+ <source>Your account needs to be migrated. Enter your password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="419"/>
+ <source>Migrating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="412"/>
+ <source>Importing account archive...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="404"/>
+ <source>Generating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="422"/>
+ <source>Generating your SIP account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="533"/>
+ <source>Error creating account</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PasswordDialog</name>
+ <message>
+ <location filename="../passworddialog.ui" line="32"/>
+ <source>Change Account Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="97"/>
+ <source>Enter Current Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="169"/>
+ <source>Enter New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="190"/>
+ <source>Confirm New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="247"/>
+ <source>Confirm</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="290"/>
+ <source>Cancel</source>
+ <translation>Rezigni</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="143"/>
+ <source>Current Password Incorrect</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PhotoBoothDialog</name>
+ <message>
+ <location filename="../photoboothdialog.ui" line="14"/>
+ <source>Photobooth</source>
+ <translation>Fotejo</translation>
+ </message>
+</context>
+<context>
+ <name>PhotoboothWidget</name>
+ <message>
+ <location filename="../photoboothwidget.ui" line="20"/>
+ <source>Form</source>
+ <translation>Form</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.ui" line="120"/>
+ <source>Photobooth display</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="92"/>
+ <source>Choose File</source>
+ <translation>Elektu dosieron</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="94"/>
+ <source>Image Files (*.jpg *.jpeg *.png)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PrivateBridging</name>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Choose File</source>
+ <translation>Elektu dosieron</translation>
+ </message>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Files (*)</source>
+ <translation>Dosieroj (*)</translation>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../utils.cpp" line="183"/>
+ <source>No default mail client found</source>
+ <translation>Neniu defaŭlta retpoŝta kliento trovita</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="43"/>
+ <location filename="../deviceitemwidget.cpp" line="85"/>
+ <source>Edit Device Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="44"/>
+ <source>Unlink Device From Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="80"/>
+ <source>Save new device name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.cpp" line="39"/>
+ <source>Add as contact</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>RingButton</name>
+ <message>
+ <location filename="../ringbutton.ui" line="140"/>
+ <source>Select folder</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <location filename="../settingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Form</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="141"/>
+ <source>Settings</source>
+ <translation>Agordoj</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="229"/>
+ <source>Account</source>
+ <translation>Konto</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="267"/>
+ <location filename="../settingswidget.ui" line="503"/>
+ <source>General</source>
+ <translation>Ĝeneralaj</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="305"/>
+ <location filename="../settingswidget.ui" line="3416"/>
+ <source>Audio / Video</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="542"/>
+ <source>System</source>
+ <translation>Sistemo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="610"/>
+ <source>Enable desktop notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="653"/>
+ <source>Keep minimized on close</source>
+ <translation>Ne ĉesu pro fermado fenestron</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="678"/>
+ <source>Download folder</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="811"/>
+ <source>Save in</source>
+ <translation>Konservi en</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="904"/>
+ <source>Always Recording</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="943"/>
+ <source>Updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1008"/>
+ <source>Check for updates automatically every</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1032"/>
+ <source>Interval between update checks in days selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1038"/>
+ <source> days</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1081"/>
+ <source>Check for updates now button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1084"/>
+ <source>Check for updates now</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3027"/>
+ <source>Password</source>
+ <translation>Pasvorto</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1418"/>
+ <location filename="../settingswidget.ui" line="2729"/>
+ <source>Enable</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="607"/>
+ <source>toggle enable notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="650"/>
+ <source>Toggle keep minimized on close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="764"/>
+ <source>Call Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1005"/>
+ <source>Toggle automatic updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1231"/>
+ <source>Jami Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1453"/>
+ <location filename="../settingswidget.ui" line="2761"/>
+ <source>Profile</source>
+ <translation>Profilo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1567"/>
+ <location filename="../settingswidget.ui" line="2875"/>
+ <source>Identity</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1614"/>
+ <source>Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1673"/>
+ <source>Registered name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1721"/>
+ <source>Type here to register a username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1755"/>
+ <source>Register</source>
+ <translation>Registri</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1827"/>
+ <source>Change Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1868"/>
+ <source>Export Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1909"/>
+ <location filename="../settingswidget.ui" line="3089"/>
+ <source>Delete Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1973"/>
+ <source>Linked Devices</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2078"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2142"/>
+ <source>Banned Contacts</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3788"/>
+ <source>Format</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3831"/>
+ <source>Video device framerate selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3967"/>
+ <source>Preview unavailable</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2359"/>
+ <location filename="../settingswidget.ui" line="3187"/>
+ <source>Advanced Account Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2554"/>
+ <source>SIP Account</source>
+ <translation>SIP Konto</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2925"/>
+ <source>Username</source>
+ <translation>Uzantnomo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2958"/>
+ <source>Hostname</source>
+ <translation>Nomo de gastiga komputilo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2991"/>
+ <source>Proxy</source>
+ <translation>Prokura Servilo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3461"/>
+ <source>Audio</source>
+ <translation>Aŭdio</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3511"/>
+ <source>Microphone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3551"/>
+ <source>Audio input device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3585"/>
+ <source>Output Device</source>
+ <translation>Eliga aparato</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3625"/>
+ <source>Choose the output device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3682"/>
+ <source>Video</source>
+ <translation>Video</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3720"/>
+ <source>Device</source>
+ <translation>Aparato</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3766"/>
+ <source>Video device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="459"/>
+ <source>A registered name should not have any spaces and must be at least three letters long</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="466"/>
+ <source>This name is already taken</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="92"/>
+ <location filename="../settingswidget.cpp" line="110"/>
+ <source>Enter an alias</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="473"/>
+ <source>Register this name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="550"/>
+ <source>Remove Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="551"/>
+ <source>Enter this account's password to confirm the removal of this device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="558"/>
+ <source>Are you sure you wish to remove this device?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="589"/>
+ <source>Export Account Here</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="887"/>
+ <source>Select A Folder For Your Downloads</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="904"/>
+ <source>Select A Folder For Your Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>VideoOverlay</name>
+ <message>
+ <location filename="../videooverlay.ui" line="419"/>
+ <source>Call on Hold</source>
+ <translation>Voko detenita</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="89"/>
+ <source>Hold / Unhold</source>
+ <translation>Deteni / Maldeteni</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="124"/>
+ <source>Chat</source>
+ <translation>Babilo</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="162"/>
+ <source>Mute Mic</source>
+ <translation>Selentigi Mikrofonon</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="244"/>
+ <source>Record call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="325"/>
+ <source>Name label</source>
+ <translation>Noma etikedo</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="390"/>
+ <source>Time elapsed</source>
+ <translation>Pasinta tempo</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="393"/>
+ <source>00:00</source>
+ <translation>00:00</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="57"/>
+ <source>Hangup</source>
+ <translation>Fini Vokon</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="203"/>
+ <source>Mute Video</source>
+ <translation>Silentigi Videon</translation>
+ </message>
+</context>
+<context>
+ <name>VideoView</name>
+ <message>
+ <location filename="../videoview.cpp" line="271"/>
+ <source>Share entire screen</source>
+ <translation>Kunhavigi tutan ekranon</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="274"/>
+ <source>Share screen area</source>
+ <translation>Kunhavigi areon de ekrano</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="281"/>
+ <source>Share file</source>
+ <translation>Kunhavigi dosieron</translation>
+ </message>
+</context>
+</TS>
\ No newline at end of file
diff --git a/translations/ring_client_windows_es.ts b/translations/ring_client_windows_es.ts
new file mode 100644
index 0000000..8dc0441
--- /dev/null
+++ b/translations/ring_client_windows_es.ts
@@ -0,0 +1,1605 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="es" version="2.0">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../aboutdialog.ui" line="435"/>
+ <location filename="../aboutdialog.ui" line="465"/>
+ <source>About</source>
+ <translation>Acerca de</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="462"/>
+ <source>about button</source>
+ <translation>Botón de Acerca de</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="478"/>
+ <source>credits button</source>
+ <translation>Botón de Créditos</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="481"/>
+ <source>Credits</source>
+ <translation>Créditos</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="547"/>
+ <source>Free as in Freedom</source>
+ <translation>Libre en el sentido de libertad</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="563"/>
+ <source>The Microsoft Windows client for Jami.
+Jami is a secured and distributed communication software.</source>
+ <translation>El cliente de Jami para Microsoft Windows.
+Jami es un software de comunicacion seguro y distribuído.</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="32"/>
+ <source>version</source>
+ <translation>versión</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="39"/>
+ <source>Created by:</source>
+ <translation>Creado por:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="73"/>
+ <source>Artwork by:</source>
+ <translation>Diseñado por:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="77"/>
+ <source>Based on the SFLPhone project</source>
+ <translation>Basado en el proyecto SFLPhone</translation>
+ </message>
+</context>
+<context>
+ <name>AccountItemDelegate</name>
+ <message>
+ <location filename="../accountitemdelegate.cpp" line="91"/>
+ <source>Add Account</source>
+ <translation>Añadir cuenta</translation>
+ </message>
+</context>
+<context>
+ <name>AdvancedSIPSettingsWidget</name>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulario</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="55"/>
+ <source>Call Settings</source>
+ <translation>Configuración de llamada</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="102"/>
+ <source>Auto Answer Calls</source>
+ <translation>Auto-responder llamadas</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="130"/>
+ <source>Enable Custom Ringtone</source>
+ <translation>Activar configuración de timbre</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="191"/>
+ <source>Connectivity</source>
+ <translation>Conectividad</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="281"/>
+ <source>STUN Address</source>
+ <translation>Dirección STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="293"/>
+ <source>Use STUN</source>
+ <translation>Utilizar STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="317"/>
+ <source>Use UPnP</source>
+ <translation>Usar UPnP (Universal Plug and Play)</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="329"/>
+ <source>Use TURN</source>
+ <translation>Usar TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="359"/>
+ <source>TURN Password</source>
+ <translation>Contraseña TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="391"/>
+ <source>TURN Username</source>
+ <translation>Nombre de usuario TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="423"/>
+ <source>TURN Address</source>
+ <translation>Dirección TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="464"/>
+ <source>Media</source>
+ <translation>Medios</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="515"/>
+ <source>Enable Video</source>
+ <translation>Habilitar vídeo</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="539"/>
+ <source>Video Codecs</source>
+ <translation>Codecs de vídeo</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="692"/>
+ <source>Audio Codecs</source>
+ <translation>Codecs de audio</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="142"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation>Ficheros de audio (*.wav *.ogg *.opus *.mp3 *aiff *wma)</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="151"/>
+ <source>Add a custom ringtone</source>
+ <translation>Añadir un timbre a elección</translation>
+ </message>
+</context>
+<context>
+ <name>AdvancedSettingsWidget</name>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulario</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="61"/>
+ <source>Call Settings</source>
+ <translation>Configuración de llamada</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="108"/>
+ <source>Allow Calls From Untrusted Peers</source>
+ <translation>Permitir llamadas de pares desconocidos</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="133"/>
+ <source>Auto Answer Calls</source>
+ <translation>Auto-responder llamadas</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="161"/>
+ <source>Enable Custom Ringtone</source>
+ <translation>Activar configuración de timbre</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="188"/>
+ <source>Add a custom ringtone</source>
+ <translation>Añadir un timbre a elección</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="225"/>
+ <source>Name Server</source>
+ <translation>Nombrar Servidor</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="275"/>
+ <source>Address</source>
+ <translation>Dirección</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="351"/>
+ <source>OpenDHT Configuration</source>
+ <translation>Configuración de OpenDHT</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="398"/>
+ <source>Enable Proxy</source>
+ <translation>Habilitar proxy</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="454"/>
+ <source>Bootstrap</source>
+ <translation>Cargador de inicio</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="530"/>
+ <source>Security</source>
+ <translation>Seguridad</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="571"/>
+ <source>Private Key Password</source>
+ <translation>Contraseña de clave privada</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="583"/>
+ <source>User Certificate</source>
+ <translation>Certificado del usuario</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="622"/>
+ <source>Private Key</source>
+ <translation>Llave Privada</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="634"/>
+ <source>CA Certificate</source>
+ <translation>Certificado CA</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="766"/>
+ <source>Connectivity</source>
+ <translation>Conectividad</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="868"/>
+ <source>Use STUN</source>
+ <translation>Utilizar STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="856"/>
+ <source>STUN Address</source>
+ <translation>Dirección STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="892"/>
+ <source>Use UPnP</source>
+ <translation>Usar UPnP</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="904"/>
+ <source>Use TURN</source>
+ <translation>Usar TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="934"/>
+ <source>TURN Password</source>
+ <translation>Contraseña TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="966"/>
+ <source>TURN Username</source>
+ <translation>Nombre de usuario TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="998"/>
+ <source>TURN Address</source>
+ <translation>Dirección TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1039"/>
+ <source>Media</source>
+ <translation>Medios</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1090"/>
+ <source>Enable Video</source>
+ <translation>Habilitar vídeo</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1267"/>
+ <source>Audio Codecs</source>
+ <translation>Codecs de audio</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1114"/>
+ <source>Video Codecs</source>
+ <translation>Codecs de vídeo</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="181"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation>Ficheros de audio (*.wav *.ogg *.opus *.mp3 *aiff *wma)</translation>
+ </message>
+</context>
+<context>
+ <name>AnimatedOverlay</name>
+ <message>
+ <location filename="../animatedoverlay.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulario</translation>
+ </message>
+</context>
+<context>
+ <name>BannedItemWidget</name>
+ <message>
+ <location filename="../banneditemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulario</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="80"/>
+ <source>name</source>
+ <translation>Nombre</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="104"/>
+ <source>id</source>
+ <translation>ID</translation>
+ </message>
+</context>
+<context>
+ <name>CallWidget</name>
+ <message>
+ <location filename="../callwidget.ui" line="184"/>
+ <source>Show conversations</source>
+ <translation>Mostrar conversaciones</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="187"/>
+ <source>Conversations</source>
+ <translation>Conversaciones</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="368"/>
+ <source>Search contact text input</source>
+ <translation>Entrada de texto para buscar contacto</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="653"/>
+ <source>Jami is free software for universal communication which respects the freedoms and privacy of its users.</source>
+ <translation>Jami es software libre para la comunicación universal que respeta las libertades y la privacidad de sus usuarios.</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="693"/>
+ <source>
+ This is your ID.
+Copy and share it with your friends!
+ </source>
+ <translation>
+Este es tu ID.
+¡Cópiala y compártela con tus amigos!</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="806"/>
+ <source>Show ring ID QR code</source>
+ <translation>Mostrar la Ring ID como código QR</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="857"/>
+ <source>Share ring ID button</source>
+ <translation>Botón de compartir el ID de Ring</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="915"/>
+ <source>Double-click to copy</source>
+ <translation>Doble click para copiar</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="956"/>
+ <source>Error while generating QR Code</source>
+ <translation>Hubo un error al generar el código QR</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1184"/>
+ <location filename="../callwidget.ui" line="1434"/>
+ <source>best name</source>
+ <translation>mejor nombre</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1208"/>
+ <source>best Id</source>
+ <translation>mejor Id</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1734"/>
+ <source>Back to homepage button</source>
+ <translation>Botón para regresar a la página principal</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1943"/>
+ <source>Add to contacts</source>
+ <translation>Añadir a contactos</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="202"/>
+ <source>Show invites</source>
+ <translation>Mostrar invitaciones</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="205"/>
+ <source>Invites</source>
+ <translation>Invitaciones</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="377"/>
+ <location filename="../callwidget.cpp" line="552"/>
+ <source>Find a new or existing contact</source>
+ <translation>Encontrar un contacto nuevo o existente</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1444"/>
+ <source>Wants to talk to you!</source>
+ <translation>¡Quiere charlar contigo!</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1517"/>
+ <source>Answer incoming call button</source>
+ <translation>Botón de respuesta llamada entrante</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1589"/>
+ <source>Ignore incoming call button</source>
+ <translation>Ignorar el botón de llamada entrante</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1539"/>
+ <source>Answer</source>
+ <translation>Contestar</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1617"/>
+ <source>Ignore</source>
+ <translation>Ignorar</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1280"/>
+ <source>Cancel outgoing call</source>
+ <translation>Cancelar llamada saliente</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1305"/>
+ <source>Cancel</source>
+ <translation>Cancelar</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="332"/>
+ <source>Start video call</source>
+ <translation>Iniciar videollamada</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="343"/>
+ <source>Start audio call</source>
+ <translation>Empezar llamada de audio</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="354"/>
+ <source>Clear conversation</source>
+ <translation>Limpiar conversación</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="361"/>
+ <source>Remove contact</source>
+ <translation>Eliminar contacto</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="373"/>
+ <source>Block contact</source>
+ <translation>Bloquear contacto</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="384"/>
+ <source>Copy number</source>
+ <translation>Copiar Número</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="561"/>
+ <source>Search your received invitations</source>
+ <translation>Buscar tus invitaciones recibidas</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>Contact me on Jami</source>
+ <translation>Contacta conmigo en Jami</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>My Id is : </source>
+ <translation>Mi Id. es :</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="847"/>
+ <source>%1</source>
+ <comment>%1 is the contact username</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="852"/>
+ <source>%1</source>
+ <comment>%1 is the contact unique identifier</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="675"/>
+ <source>Call incoming from %1</source>
+ <translation>Llamada entrante de %1</translation>
+ </message>
+</context>
+<context>
+ <name>DeleteAccountDialog</name>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="35"/>
+ <source>Account deletion</source>
+ <translation>Eliminar cuenta</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="58"/>
+ <source>Do you really want to delete the following account?</source>
+ <translation>¿Desea eliminar la siguiente cuenta?</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="153"/>
+ <source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
+ <translation>Esta cuenta se perderá definitivamente si no ha sido exportada o añadida a otro dispositivo.</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="235"/>
+ <source>Permanently delete account</source>
+ <translation>Eliminar cuenta definitivamente</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="241"/>
+ <source>Delete</source>
+ <translation>Borrar</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="278"/>
+ <source>Cancel account deletion</source>
+ <translation>Cancelar la eliminación de la cuenta</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="284"/>
+ <source>Cancel</source>
+ <translation>Cancelar</translation>
+ </message>
+</context>
+<context>
+ <name>DeviceItemWidget</name>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulario</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="105"/>
+ <source>Device Id</source>
+ <translation>Identificador de dispositivo</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="143"/>
+ <source>this device</source>
+ <translation>este dispositivo</translation>
+ </message>
+</context>
+<context>
+ <name>InviteButtonsWidget</name>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="83"/>
+ <source>Accept</source>
+ <translation>Aceptar</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="131"/>
+ <source>Refuse</source>
+ <translation>No aceptar</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="179"/>
+ <source>Block</source>
+ <translation>Bloquear</translation>
+ </message>
+</context>
+<context>
+ <name>LinkDeviceDialog</name>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation>Mensaje</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="62"/>
+ <source>Enter your account password</source>
+ <translation>Introduce la contraseña de tu cuenta</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="117"/>
+ <source>Password</source>
+ <translation>Contraseña</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="184"/>
+ <source>Ok</source>
+ <translation>Aceptar</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="218"/>
+ <source>Cancel</source>
+ <translation>Cancelar</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="279"/>
+ <source>Exporting account</source>
+ <translation>Exportando cuenta</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="402"/>
+ <source>Your PIN is</source>
+ <translation>Tu PIN es</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="432"/>
+ <source>PIN</source>
+ <translation>PIN</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="477"/>
+ <source>This pin and the account password should be entered in your device within 10 minutes.</source>
+ <translation>El pin y la contraseña de la cuenta debe ser introducida en tu dispositivo en menos de 10 minutos</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="553"/>
+ <source>Close</source>
+ <translation>Cerrar</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="34"/>
+ <source>Link Another Device</source>
+ <translation>Conectar otro dispositivo</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="96"/>
+ <source>Incorrect password</source>
+ <translation>Contraseña incorrecta</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="110"/>
+ <source>Something went wrong.
+Please try again later.</source>
+ <translation>Algo falló.
+Por favor inténtelo de nuevo más tarde.</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="83"/>
+ <source>Settings</source>
+ <translation>Configuración</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="94"/>
+ <source>Exit</source>
+ <translation>Salir</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="111"/>
+ <source>About</source>
+ <translation>Acerca de</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="435"/>
+ <source>Jami</source>
+ <translation>Jami</translation>
+ </message>
+</context>
+<context>
+ <name>NameRegistrationDialog</name>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="35"/>
+ <source>Set Registered Name</source>
+ <translation>Configurar nombre registrado</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="163"/>
+ <source>Enter your account password</source>
+ <translation>Introduzca el password de su cuenta</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="244"/>
+ <source>Password text input</source>
+ <translation>Entrada de constraseña</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="250"/>
+ <source>Password text entry</source>
+ <translation>Entrada de texto para contraseña</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="256"/>
+ <source>Password</source>
+ <translation>Contraseña</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="323"/>
+ <source>Register</source>
+ <translation>Registrar</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="357"/>
+ <source>Cancel</source>
+ <translation>Cancelar</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="424"/>
+ <source>Registering Name</source>
+ <translation>Registrando nombre</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="548"/>
+ <source>Something went wrong</source>
+ <translation>Algo salió mal</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="618"/>
+ <source>Close</source>
+ <translation>Cerrar</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="82"/>
+ <source>Incorrect password</source>
+ <translation>Contraseña incorrecta</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="85"/>
+ <source>Network error</source>
+ <translation>Error en la red</translation>
+ </message>
+</context>
+<context>
+ <name>NewWizardWidget</name>
+ <message>
+ <location filename="../newwizardwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulario</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="141"/>
+ <source>Welcome Label</source>
+ <translation>Etiqueta de Bienvenida</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="147"/>
+ <source> Welcome to</source>
+ <translation>Bienvenido(a) a</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="185"/>
+ <source>Welcome Logo</source>
+ <translation>Logo de Bienvenida</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="239"/>
+ <source>Create Jami account button</source>
+ <translation>Botón para crear cuenta de Jami</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="245"/>
+ <source>Push button for Jami account creation start trigger</source>
+ <translation>Pulse el boton para activar el inicio de creación de la cuenta Jami</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="251"/>
+ <source>Create a Jami account</source>
+ <translation>Crear una cuenta en Jami</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="282"/>
+ <source>Link device button</source>
+ <translation>Botón de vincular dispositivo</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="288"/>
+ <source>Push button for device linkage start trigger</source>
+ <translation>Pulse el botón para comenzar a enlazar el dispositivo</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="291"/>
+ <source>Link this device to an account</source>
+ <translation>Conectar este dispositivo a una cuenta</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="328"/>
+ <source>Create Jami SIP account button</source>
+ <translation>Botón de crear cuenta Jami SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="334"/>
+ <source>Push button for Jami SIP account creation start trigger</source>
+ <translation>Pulsa el botón de crear cuenta Jami SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="340"/>
+ <source>Create a SIP account</source>
+ <translation>Crear una cuenta SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="405"/>
+ <source>Link this device to an existing account</source>
+ <translation>Vincular este dispositivo con una cuenta existente</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="469"/>
+ <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">To link this device to another account, you first </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">need to obtain a PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> code. To generate the PIN code:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Account management setting</span><span style=" font-size:14px;"> of a previous device</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choose the </span><span style=" font-size:14px; font-weight:600;">Jami account</span><span style=" font-size:14px;"> you want to use</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Devices</span><span style=" font-size:14px;"> tab</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Select </span><span style=" font-size:14px; font-weight:600;">Add a device</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">You will get the necessary PIN to complete this form. The PIN is only valid for </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutes</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></source>
+ <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">Para vincular este dispositivo con otra cuenta, primero debes </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">obtener un código</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> PIN. Para generar el código PIN:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Ve a las </span><span style=" font-size:14px; font-weight:600;">opciones de administración de la cuenta</span><span style=" font-size:14px;"> de un dispositivo previo</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Elije la </span><span style=" font-size:14px; font-weight:600;">cuenta Jami</span><span style=" font-size:14px;"> que deseas utilizar</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Ve a </span><span style=" font-size:14px; font-weight:600;">Dispositivos</span><span style=" font-size:14px;"> en las pestañas</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Selecciona </span><span style=" font-size:14px; font-weight:600;">Añadir un dispositivo</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">Recibirás el PIN necesario para completar este formulario. El PIN solo es válido durante </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutos</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="531"/>
+ <source>Enter your pin:</source>
+ <translation>Escribe tu PIN:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="599"/>
+ <source>Or import a file:</source>
+ <translation>o importar a un fichero:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="626"/>
+ <source>Link from exported account archive file</source>
+ <translation>Enlace desde archivo de cuenta exportado</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="629"/>
+ <location filename="../newwizardwidget.cpp" line="83"/>
+ <location filename="../newwizardwidget.cpp" line="218"/>
+ <source>(None)</source>
+ <translation>(Nada)</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="705"/>
+ <source>Password:</source>
+ <translation>Contraseña:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="799"/>
+ <location filename="../newwizardwidget.ui" line="1586"/>
+ <source>Profile</source>
+ <translation>Perfil</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="953"/>
+ <location filename="../newwizardwidget.ui" line="1767"/>
+ <source>Profile name</source>
+ <translation>Nombre de perfil</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1027"/>
+ <source>Account</source>
+ <translation>Cuenta</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1136"/>
+ <source>Register your username.
+This will reserve the username so that only you can use it.
+Your friends will be able to call you with your usename
+instead of using your ID.</source>
+ <translation>Registre su nombre de usuario.
+Esto reservará el nombre de usuario de modo que sólo usted pueda usarlo.
+Sus amigos podrán llamarlo por su nombre de usuario
+en lugar de usar su ID.</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1142"/>
+ <source>Public username checkbox</source>
+ <translation>Casilla de verificación de nombre de usuario público</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1145"/>
+ <source>Checkbox selecting if the user wants a public username</source>
+ <translation>Marque la casilla de verificación si el usuario desea un nombre de usuario público</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1148"/>
+ <source>Register public username</source>
+ <translation>Registrar nombre de usuario público</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1367"/>
+ <source>Public username edit</source>
+ <translation>Editar nombre de usuario público</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1373"/>
+ <source>Choose your username</source>
+ <translation>Elije un nombre de usuario para ti</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1289"/>
+ <source>Password text input</source>
+ <translation>Entrada de constraseña</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1295"/>
+ <source>Password text entry</source>
+ <translation>Entrada de texto para contraseña</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1301"/>
+ <location filename="../newwizardwidget.ui" line="2213"/>
+ <source>Password</source>
+ <translation>Contraseña</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1211"/>
+ <location filename="../newwizardwidget.ui" line="1217"/>
+ <source>Password confirmation text input</source>
+ <translation>Confirmación de contraseña de entrada de texto</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1223"/>
+ <source>Confirm password</source>
+ <translation>Confirmar contraseña</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1814"/>
+ <source>SIP Account</source>
+ <translation>Cuenta SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1973"/>
+ <source>SIP Server edit</source>
+ <translation>Edición de servidor SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1979"/>
+ <source>Server</source>
+ <translation>Servidor</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2045"/>
+ <source>SIP proxy input</source>
+ <translation>Entrada de proxy SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2051"/>
+ <source>SIP proxy text entry</source>
+ <translation>Entreda de texto del proxy SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2057"/>
+ <source>Proxy</source>
+ <translation>Proxy</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2123"/>
+ <source>SIP username input</source>
+ <translation>Entrada de nombre de usuario SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2129"/>
+ <source>SIP Password text entry</source>
+ <translation>Entrada de texto de la Contraseña SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2135"/>
+ <source>Username</source>
+ <translation>Nombre de usuario</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2201"/>
+ <location filename="../newwizardwidget.ui" line="2207"/>
+ <source>SIP Password text input</source>
+ <translation>Entrada de texto de la Contraseña SIP</translation>
+ </message>
+ <message utf8="true">
+ <location filename="../newwizardwidget.ui" line="2282"/>
+ <source>Generating your Jami account…</source>
+ <translation>Generando tu cuenta Jami...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2356"/>
+ <source>Previous page button</source>
+ <translation>Botón de página anterior</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2362"/>
+ <source>push button to access previous page of wizard</source>
+ <translation>pulse el botón para acceder a la página anterior del asistente</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2365"/>
+ <source>Previous</source>
+ <translation>Anterior</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2396"/>
+ <source>Cancel account create/link</source>
+ <translation>Cancelar creación/enlace de cuenta</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2402"/>
+ <source>push button to cancel account creation or linking</source>
+ <translation>presione el botón para cancelar la creación o enlace de cuenta</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2405"/>
+ <source>Back</source>
+ <translation>Volver</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2442"/>
+ <source>Next page Button</source>
+ <translation>Botón de página siguiente</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2448"/>
+ <source>Push button to access next page of wizard</source>
+ <translation>Pulse el botón para acceder a la siguiente página del asistente</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2451"/>
+ <source>Next</source>
+ <translation>Siguiente</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="75"/>
+ <source>Open File</source>
+ <translation>Abrir fichero</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="77"/>
+ <source>Jami archive files (*.gz); All files (*)</source>
+ <translation>Ficheros de archivo de Jami (*.gz); Todos los ficheros (*)</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="123"/>
+ <source>Your account needs to be migrated. Enter your password.</source>
+ <translation>Debe migrar su cuenta. Introduzca su contraseña.</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="419"/>
+ <source>Migrating your Jami account...</source>
+ <translation>Migrando su cuenta de Jami...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="412"/>
+ <source>Importing account archive...</source>
+ <translation>Importando archivo de cuenta...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="404"/>
+ <source>Generating your Jami account...</source>
+ <translation>Generando tu cuenta de Jami...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="422"/>
+ <source>Generating your SIP account...</source>
+ <translation>Creando tu cuenta SIP...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="533"/>
+ <source>Error creating account</source>
+ <translation>Error al crear la cuenta</translation>
+ </message>
+</context>
+<context>
+ <name>PasswordDialog</name>
+ <message>
+ <location filename="../passworddialog.ui" line="32"/>
+ <source>Change Account Password</source>
+ <translation>Cambiar contraseña de cuenta</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="97"/>
+ <source>Enter Current Password</source>
+ <translation>Ingrese la contraseña actual</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="169"/>
+ <source>Enter New Password</source>
+ <translation>Ingrese la nueva contraseña</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="190"/>
+ <source>Confirm New Password</source>
+ <translation>Confirme la nueva contraseña</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="247"/>
+ <source>Confirm</source>
+ <translation>Confirmar</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="290"/>
+ <source>Cancel</source>
+ <translation>Cancelar</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="143"/>
+ <source>Current Password Incorrect</source>
+ <translation>Contraseña actual incorrecta</translation>
+ </message>
+</context>
+<context>
+ <name>PhotoBoothDialog</name>
+ <message>
+ <location filename="../photoboothdialog.ui" line="14"/>
+ <source>Photobooth</source>
+ <translation>Cabina de fotos</translation>
+ </message>
+</context>
+<context>
+ <name>PhotoboothWidget</name>
+ <message>
+ <location filename="../photoboothwidget.ui" line="20"/>
+ <source>Form</source>
+ <translation>Formulario</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.ui" line="120"/>
+ <source>Photobooth display</source>
+ <translation>Pantalla de Photobooth</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="92"/>
+ <source>Choose File</source>
+ <translation>Examinar</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="94"/>
+ <source>Image Files (*.jpg *.jpeg *.png)</source>
+ <translation>Ficheros de imagen (*.jpg *.jpeg *.png)</translation>
+ </message>
+</context>
+<context>
+ <name>PrivateBridging</name>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Choose File</source>
+ <translation>Examinar</translation>
+ </message>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Files (*)</source>
+ <translation>Ficheros (*)</translation>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../utils.cpp" line="183"/>
+ <source>No default mail client found</source>
+ <translation>No se encuentra el cliente de e-mail predeterminado</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="43"/>
+ <location filename="../deviceitemwidget.cpp" line="85"/>
+ <source>Edit Device Name</source>
+ <translation>Editar nombre del dispositivo</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="44"/>
+ <source>Unlink Device From Account</source>
+ <translation>Desvincular dispositivo de la cuenta</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="80"/>
+ <source>Save new device name</source>
+ <translation>Guardar nuevo nombre de dispositivo</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.cpp" line="39"/>
+ <source>Add as contact</source>
+ <translation>Añadir como contacto</translation>
+ </message>
+</context>
+<context>
+ <name>RingButton</name>
+ <message>
+ <location filename="../ringbutton.ui" line="140"/>
+ <source>Select folder</source>
+ <translation>Seleccionar carpeta</translation>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <location filename="../settingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulario</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="141"/>
+ <source>Settings</source>
+ <translation>Configuración</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="229"/>
+ <source>Account</source>
+ <translation>Cuenta</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="267"/>
+ <location filename="../settingswidget.ui" line="503"/>
+ <source>General</source>
+ <translation>General</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="305"/>
+ <location filename="../settingswidget.ui" line="3416"/>
+ <source>Audio / Video</source>
+ <translation>Audio / Vídeo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="542"/>
+ <source>System</source>
+ <translation>Sistema</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="610"/>
+ <source>Enable desktop notifications</source>
+ <translation>Habilitar notificaciones de escritorio</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="653"/>
+ <source>Keep minimized on close</source>
+ <translation>Mantener minimizado al cerrar</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="678"/>
+ <source>Download folder</source>
+ <translation>Descargar carpeta</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="811"/>
+ <source>Save in</source>
+ <translation>guardar</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="904"/>
+ <source>Always Recording</source>
+ <translation>Siempre grabando</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="943"/>
+ <source>Updates</source>
+ <translation>Actualizaciones</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1008"/>
+ <source>Check for updates automatically every</source>
+ <translation>Buscar actualizaciones automáticamente cada</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1032"/>
+ <source>Interval between update checks in days selector</source>
+ <translation>Selector de intervalo de días entre chequeos de actualizaciones</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1038"/>
+ <source> days</source>
+ <translation>días</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1081"/>
+ <source>Check for updates now button</source>
+ <translation>Botón de búsqueda de inmediata actualizaciones</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1084"/>
+ <source>Check for updates now</source>
+ <translation>Buscar actualizaciones ahora</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3027"/>
+ <source>Password</source>
+ <translation>Contraseña</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1418"/>
+ <location filename="../settingswidget.ui" line="2729"/>
+ <source>Enable</source>
+ <translation>Activar</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="607"/>
+ <source>toggle enable notifications</source>
+ <translation>Cambiar Activar notificaciones</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="650"/>
+ <source>Toggle keep minimized on close</source>
+ <translation>Cambiar Mantener minimizado al cerrar</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="764"/>
+ <source>Call Recordings</source>
+ <translation>Grabación de llamadas</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1005"/>
+ <source>Toggle automatic updates</source>
+ <translation>Activar actualizaciones automáticas</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1231"/>
+ <source>Jami Account</source>
+ <translation>Cuenta Jami</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1453"/>
+ <location filename="../settingswidget.ui" line="2761"/>
+ <source>Profile</source>
+ <translation>Perfil</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1567"/>
+ <location filename="../settingswidget.ui" line="2875"/>
+ <source>Identity</source>
+ <translation>Identidad</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1614"/>
+ <source>Id</source>
+ <translation>ID</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1673"/>
+ <source>Registered name</source>
+ <translation>Nombre registrado</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1721"/>
+ <source>Type here to register a username</source>
+ <translation>Escriba aquí para registrar un nombre de usuario</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1755"/>
+ <source>Register</source>
+ <translation>Registrar</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1827"/>
+ <source>Change Password</source>
+ <translation>Cambiar contraseña</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1868"/>
+ <source>Export Account</source>
+ <translation>Exportar cuenta</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1909"/>
+ <location filename="../settingswidget.ui" line="3089"/>
+ <source>Delete Account</source>
+ <translation>Borrar cuenta</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1973"/>
+ <source>Linked Devices</source>
+ <translation>Dispositivos conectados</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2078"/>
+ <source>Link Another Device</source>
+ <translation>Conectar otro dispositivo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2142"/>
+ <source>Banned Contacts</source>
+ <translation>Contactos bloqueados</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3788"/>
+ <source>Format</source>
+ <translation>Formato</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3831"/>
+ <source>Video device framerate selector</source>
+ <translation>Selector de velocidad de cuadros del vídeo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3967"/>
+ <source>Preview unavailable</source>
+ <translation>Previsualización no disponible</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2359"/>
+ <location filename="../settingswidget.ui" line="3187"/>
+ <source>Advanced Account Settings</source>
+ <translation>Configuraciones de cuenta avanzadas</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2554"/>
+ <source>SIP Account</source>
+ <translation>Cuenta SIP</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2925"/>
+ <source>Username</source>
+ <translation>Nombre de usuario</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2958"/>
+ <source>Hostname</source>
+ <translation>Nombre del servidor</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2991"/>
+ <source>Proxy</source>
+ <translation>Proxy</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3461"/>
+ <source>Audio</source>
+ <translation>Audio</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3511"/>
+ <source>Microphone</source>
+ <translation>Micrófono</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3551"/>
+ <source>Audio input device selector</source>
+ <translation>Selector de dispositivo de entrada de audio</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3585"/>
+ <source>Output Device</source>
+ <translation>Dispositivo de salida</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3625"/>
+ <source>Choose the output device</source>
+ <translation>Selecciones el dispositivo de salida</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3682"/>
+ <source>Video</source>
+ <translation>Vídeo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3720"/>
+ <source>Device</source>
+ <translation>Dispositivo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3766"/>
+ <source>Video device selector</source>
+ <translation>Selector de dispositivo de video</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="459"/>
+ <source>A registered name should not have any spaces and must be at least three letters long</source>
+ <translation>Un nombre registrado no puede tener espacios y debe tener como mínimo tres letras</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="466"/>
+ <source>This name is already taken</source>
+ <translation>Este nombre ya está tomado</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="92"/>
+ <location filename="../settingswidget.cpp" line="110"/>
+ <source>Enter an alias</source>
+ <translation>Introducir un alias</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="473"/>
+ <source>Register this name</source>
+ <translation>Registrar este nombre</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="550"/>
+ <source>Remove Device</source>
+ <translation>Quitar dispositivo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="551"/>
+ <source>Enter this account's password to confirm the removal of this device</source>
+ <translation>Ingrese la contraseña de esta cuenta para confirmar la quita de este dispositivo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="558"/>
+ <source>Are you sure you wish to remove this device?</source>
+ <translation>¿Está seguro de querer eliminar este dispositivo?</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="589"/>
+ <source>Export Account Here</source>
+ <translation>Exportar cuenta aquí</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="887"/>
+ <source>Select A Folder For Your Downloads</source>
+ <translation>Elija una carpeta para sus descargas</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="904"/>
+ <source>Select A Folder For Your Recordings</source>
+ <translation>Elija una carpeta para sus grabaciones</translation>
+ </message>
+</context>
+<context>
+ <name>VideoOverlay</name>
+ <message>
+ <location filename="../videooverlay.ui" line="419"/>
+ <source>Call on Hold</source>
+ <translation>Llamada en espera</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="89"/>
+ <source>Hold / Unhold</source>
+ <translation>En espera / Reanudar</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="124"/>
+ <source>Chat</source>
+ <translation>Chat</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="162"/>
+ <source>Mute Mic</source>
+ <translation>Silenciar micrófono</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="244"/>
+ <source>Record call</source>
+ <translation>Grabar llamada</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="325"/>
+ <source>Name label</source>
+ <translation>Etiqueta de nombre</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="390"/>
+ <source>Time elapsed</source>
+ <translation>Tiempo transcurrido</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="393"/>
+ <source>00:00</source>
+ <translation>00:00</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="57"/>
+ <source>Hangup</source>
+ <translation>Cortar</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="203"/>
+ <source>Mute Video</source>
+ <translation>Silenciar Video</translation>
+ </message>
+</context>
+<context>
+ <name>VideoView</name>
+ <message>
+ <location filename="../videoview.cpp" line="271"/>
+ <source>Share entire screen</source>
+ <translation>Compartir toda la pantalla</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="274"/>
+ <source>Share screen area</source>
+ <translation>Compartir la ventana</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="281"/>
+ <source>Share file</source>
+ <translation>Compartir archivo</translation>
+ </message>
+</context>
+</TS>
\ No newline at end of file
diff --git a/translations/ring_client_windows_es_AR.ts b/translations/ring_client_windows_es_AR.ts
new file mode 100644
index 0000000..9679572
--- /dev/null
+++ b/translations/ring_client_windows_es_AR.ts
@@ -0,0 +1,1605 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="es_AR" version="2.0">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../aboutdialog.ui" line="435"/>
+ <location filename="../aboutdialog.ui" line="465"/>
+ <source>About</source>
+ <translation>Acerca de</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="462"/>
+ <source>about button</source>
+ <translation>Botón Acerca de</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="478"/>
+ <source>credits button</source>
+ <translation>Botón Créditos</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="481"/>
+ <source>Credits</source>
+ <translation>Créditos</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="547"/>
+ <source>Free as in Freedom</source>
+ <translation>Libre como en libertad</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="563"/>
+ <source>The Microsoft Windows client for Jami.
+Jami is a secured and distributed communication software.</source>
+ <translation>El cliente de Jami para Microsoft Windows.
+Jami es un software de comunicación seguro y distribuido.</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="32"/>
+ <source>version</source>
+ <translation>versión</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="39"/>
+ <source>Created by:</source>
+ <translation>Creado por:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="73"/>
+ <source>Artwork by:</source>
+ <translation>Ilustraciones realizadas por:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="77"/>
+ <source>Based on the SFLPhone project</source>
+ <translation>Basado en el projecto SFLPhone</translation>
+ </message>
+</context>
+<context>
+ <name>AccountItemDelegate</name>
+ <message>
+ <location filename="../accountitemdelegate.cpp" line="91"/>
+ <source>Add Account</source>
+ <translation>Añadir cuenta</translation>
+ </message>
+</context>
+<context>
+ <name>AdvancedSIPSettingsWidget</name>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulario</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="55"/>
+ <source>Call Settings</source>
+ <translation>Opciones de llamada</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="102"/>
+ <source>Auto Answer Calls</source>
+ <translation>Responder automáticamente</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="130"/>
+ <source>Enable Custom Ringtone</source>
+ <translation>Habilitar tono de llamada personalizado</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="191"/>
+ <source>Connectivity</source>
+ <translation>Conectividad</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="281"/>
+ <source>STUN Address</source>
+ <translation>Dirección STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="293"/>
+ <source>Use STUN</source>
+ <translation>Usar STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="317"/>
+ <source>Use UPnP</source>
+ <translation>Usar UPnP</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="329"/>
+ <source>Use TURN</source>
+ <translation>Usar TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="359"/>
+ <source>TURN Password</source>
+ <translation>Contraseña TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="391"/>
+ <source>TURN Username</source>
+ <translation>Usuario TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="423"/>
+ <source>TURN Address</source>
+ <translation>Dirección TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="464"/>
+ <source>Media</source>
+ <translation>Medios</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="515"/>
+ <source>Enable Video</source>
+ <translation>Permitir video</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="539"/>
+ <source>Video Codecs</source>
+ <translation>Códecs de video</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="692"/>
+ <source>Audio Codecs</source>
+ <translation>Códecs de audio</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="142"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation>Archivos de audio (*.wav *.ogg *.opus *.mp3 *aiff *wma)</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="151"/>
+ <source>Add a custom ringtone</source>
+ <translation>Agregar un tono de llamada personalizado</translation>
+ </message>
+</context>
+<context>
+ <name>AdvancedSettingsWidget</name>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulario</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="61"/>
+ <source>Call Settings</source>
+ <translation>Opciones de llamada</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="108"/>
+ <source>Allow Calls From Untrusted Peers</source>
+ <translation>Permitir llamadas de contactos no conocidos</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="133"/>
+ <source>Auto Answer Calls</source>
+ <translation>Responder automáticamente</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="161"/>
+ <source>Enable Custom Ringtone</source>
+ <translation>Habilitar tono de llamada personalizado</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="188"/>
+ <source>Add a custom ringtone</source>
+ <translation>Agregar un tono de llamada personalizado</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="225"/>
+ <source>Name Server</source>
+ <translation>Nombre del servidor</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="275"/>
+ <source>Address</source>
+ <translation>Dirección</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="351"/>
+ <source>OpenDHT Configuration</source>
+ <translation>Configuración de OpenDHT</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="398"/>
+ <source>Enable Proxy</source>
+ <translation>Habilitar Proxy</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="454"/>
+ <source>Bootstrap</source>
+ <translation>Bootstrap</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="530"/>
+ <source>Security</source>
+ <translation>Seguridad</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="571"/>
+ <source>Private Key Password</source>
+ <translation>Contraseña de clave privada</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="583"/>
+ <source>User Certificate</source>
+ <translation>Certificado de Usuario</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="622"/>
+ <source>Private Key</source>
+ <translation>Clave privada</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="634"/>
+ <source>CA Certificate</source>
+ <translation>Certificado CA</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="766"/>
+ <source>Connectivity</source>
+ <translation>Conectividad</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="868"/>
+ <source>Use STUN</source>
+ <translation>Usar STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="856"/>
+ <source>STUN Address</source>
+ <translation>Dirección STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="892"/>
+ <source>Use UPnP</source>
+ <translation>Usar UPnP</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="904"/>
+ <source>Use TURN</source>
+ <translation>Usar TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="934"/>
+ <source>TURN Password</source>
+ <translation>Contraseña TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="966"/>
+ <source>TURN Username</source>
+ <translation>Usuario TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="998"/>
+ <source>TURN Address</source>
+ <translation>Dirección TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1039"/>
+ <source>Media</source>
+ <translation>Medios</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1090"/>
+ <source>Enable Video</source>
+ <translation>Permitir video</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1267"/>
+ <source>Audio Codecs</source>
+ <translation>Códecs de audio</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1114"/>
+ <source>Video Codecs</source>
+ <translation>Códecs de video</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="181"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation>Archivos de audio (*.wav *.ogg *.opus *.mp3 *aiff *wma)</translation>
+ </message>
+</context>
+<context>
+ <name>AnimatedOverlay</name>
+ <message>
+ <location filename="../animatedoverlay.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulario</translation>
+ </message>
+</context>
+<context>
+ <name>BannedItemWidget</name>
+ <message>
+ <location filename="../banneditemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulario</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="80"/>
+ <source>name</source>
+ <translation>nombre</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="104"/>
+ <source>id</source>
+ <translation>ID</translation>
+ </message>
+</context>
+<context>
+ <name>CallWidget</name>
+ <message>
+ <location filename="../callwidget.ui" line="184"/>
+ <source>Show conversations</source>
+ <translation>Mostrar conversaciones</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="187"/>
+ <source>Conversations</source>
+ <translation>Conversaciones</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="368"/>
+ <source>Search contact text input</source>
+ <translation>Entrada de texto para buscar contacto</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="653"/>
+ <source>Jami is free software for universal communication which respects the freedoms and privacy of its users.</source>
+ <translation>Jami es un software libre para comunicarse universalmente que respeta las libertades y la privacidad de sus usuarios.</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="693"/>
+ <source>
+ This is your ID.
+Copy and share it with your friends!
+ </source>
+ <translation>
+Este es su ID.
+¡Cópielo y compártalo con sus amigos!</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="806"/>
+ <source>Show ring ID QR code</source>
+ <translation>Mostrar el ID de Ring como código QR</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="857"/>
+ <source>Share ring ID button</source>
+ <translation>Botón compartir el ID de Ring</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="915"/>
+ <source>Double-click to copy</source>
+ <translation>Doble click para copiar</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="956"/>
+ <source>Error while generating QR Code</source>
+ <translation>Error al generar el Código QR</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1184"/>
+ <location filename="../callwidget.ui" line="1434"/>
+ <source>best name</source>
+ <translation>mejor nombre</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1208"/>
+ <source>best Id</source>
+ <translation>mejor ID</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1734"/>
+ <source>Back to homepage button</source>
+ <translation>Volver a la página de inicio</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1943"/>
+ <source>Add to contacts</source>
+ <translation>Agregar a contactos</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="202"/>
+ <source>Show invites</source>
+ <translation>Mostrar invitaciones</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="205"/>
+ <source>Invites</source>
+ <translation>Invitaciones</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="377"/>
+ <location filename="../callwidget.cpp" line="552"/>
+ <source>Find a new or existing contact</source>
+ <translation>Buscar un contacto nuevo o existente</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1444"/>
+ <source>Wants to talk to you!</source>
+ <translation>¡Quiere hablarte!</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1517"/>
+ <source>Answer incoming call button</source>
+ <translation>Botón responder llamada entrante</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1589"/>
+ <source>Ignore incoming call button</source>
+ <translation>Botón ignorar llamada entrante</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1539"/>
+ <source>Answer</source>
+ <translation>Respuesta</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1617"/>
+ <source>Ignore</source>
+ <translation>Ignorar</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1280"/>
+ <source>Cancel outgoing call</source>
+ <translation>Cancelar llamada saliente</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1305"/>
+ <source>Cancel</source>
+ <translation>Cancelar</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="332"/>
+ <source>Start video call</source>
+ <translation>Iniciar una videollamada</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="343"/>
+ <source>Start audio call</source>
+ <translation>Iniciar una llamada de voz</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="354"/>
+ <source>Clear conversation</source>
+ <translation>Limpiar conversación</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="361"/>
+ <source>Remove contact</source>
+ <translation>Eliminar contacto</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="373"/>
+ <source>Block contact</source>
+ <translation>Bloquear contacto</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="384"/>
+ <source>Copy number</source>
+ <translation>Copiar número</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="561"/>
+ <source>Search your received invitations</source>
+ <translation>Buscar tus invitaciones recibidas</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>Contact me on Jami</source>
+ <translation>Contactá conmigo en Jami</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>My Id is : </source>
+ <translation>Mi ID es:</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="847"/>
+ <source>%1</source>
+ <comment>%1 is the contact username</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="852"/>
+ <source>%1</source>
+ <comment>%1 is the contact unique identifier</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="675"/>
+ <source>Call incoming from %1</source>
+ <translation>Llamada entrante de %1</translation>
+ </message>
+</context>
+<context>
+ <name>DeleteAccountDialog</name>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="35"/>
+ <source>Account deletion</source>
+ <translation>Eliminación de cuenta</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="58"/>
+ <source>Do you really want to delete the following account?</source>
+ <translation>¿Realmente quiere eliminar la cuenta?</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="153"/>
+ <source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
+ <translation>Si esta cuenta no ha sido exportada, o añadida a otro dispositivo, se perderá definitivamente.</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="235"/>
+ <source>Permanently delete account</source>
+ <translation>Eliminar cuenta permanentemente</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="241"/>
+ <source>Delete</source>
+ <translation>Eliminar</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="278"/>
+ <source>Cancel account deletion</source>
+ <translation>Cancelar la eliminación de cuenta</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="284"/>
+ <source>Cancel</source>
+ <translation>Cancelar</translation>
+ </message>
+</context>
+<context>
+ <name>DeviceItemWidget</name>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulario</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="105"/>
+ <source>Device Id</source>
+ <translation>ID del dispositivo</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="143"/>
+ <source>this device</source>
+ <translation>este dispositivo</translation>
+ </message>
+</context>
+<context>
+ <name>InviteButtonsWidget</name>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="83"/>
+ <source>Accept</source>
+ <translation>Aceptar</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="131"/>
+ <source>Refuse</source>
+ <translation>Rechazar</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="179"/>
+ <source>Block</source>
+ <translation>Bloquear</translation>
+ </message>
+</context>
+<context>
+ <name>LinkDeviceDialog</name>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation>Diálogo</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="62"/>
+ <source>Enter your account password</source>
+ <translation>Ingrese la contraseña de la cuenta</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="117"/>
+ <source>Password</source>
+ <translation>Contraseña</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="184"/>
+ <source>Ok</source>
+ <translation>Ok</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="218"/>
+ <source>Cancel</source>
+ <translation>Cancelar</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="279"/>
+ <source>Exporting account</source>
+ <translation>Exportando cuenta</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="402"/>
+ <source>Your PIN is</source>
+ <translation>Tu PIN es:</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="432"/>
+ <source>PIN</source>
+ <translation>PIN</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="477"/>
+ <source>This pin and the account password should be entered in your device within 10 minutes.</source>
+ <translation>Este PIN y la contraseña de la contraseña deben ser ingresadas en tu dispositivo en los próximos 10 minutos.</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="553"/>
+ <source>Close</source>
+ <translation>Cerrar</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="34"/>
+ <source>Link Another Device</source>
+ <translation>Vincular otro dispositivo</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="96"/>
+ <source>Incorrect password</source>
+ <translation>Contraseña incorrecta</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="110"/>
+ <source>Something went wrong.
+Please try again later.</source>
+ <translation>Algo salió mal.
+Por favor intente de nuevo más tarde.</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="83"/>
+ <source>Settings</source>
+ <translation>Ajustes</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="94"/>
+ <source>Exit</source>
+ <translation>Salir</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="111"/>
+ <source>About</source>
+ <translation>Acerca de</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="435"/>
+ <source>Jami</source>
+ <translation>Jami</translation>
+ </message>
+</context>
+<context>
+ <name>NameRegistrationDialog</name>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="35"/>
+ <source>Set Registered Name</source>
+ <translation>Establecer nombre registrado</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="163"/>
+ <source>Enter your account password</source>
+ <translation>Ingrese la contraseña de la cuenta</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="244"/>
+ <source>Password text input</source>
+ <translation>Entrada de contraseña</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="250"/>
+ <source>Password text entry</source>
+ <translation>Entrada de texto de contraseña</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="256"/>
+ <source>Password</source>
+ <translation>Contraseña</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="323"/>
+ <source>Register</source>
+ <translation>Registrar</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="357"/>
+ <source>Cancel</source>
+ <translation>Cancelar</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="424"/>
+ <source>Registering Name</source>
+ <translation>Registrando nombre</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="548"/>
+ <source>Something went wrong</source>
+ <translation>Algo salió mal</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="618"/>
+ <source>Close</source>
+ <translation>Cerrar</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="82"/>
+ <source>Incorrect password</source>
+ <translation>Contraseña incorrecta</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="85"/>
+ <source>Network error</source>
+ <translation>Error de red</translation>
+ </message>
+</context>
+<context>
+ <name>NewWizardWidget</name>
+ <message>
+ <location filename="../newwizardwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulario</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="141"/>
+ <source>Welcome Label</source>
+ <translation>Etiqueta de bienvenida</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="147"/>
+ <source> Welcome to</source>
+ <translation>Bienvenido a</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="185"/>
+ <source>Welcome Logo</source>
+ <translation>Logo de bienvenida</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="239"/>
+ <source>Create Jami account button</source>
+ <translation>Botón crear una cuenta de Jami</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="245"/>
+ <source>Push button for Jami account creation start trigger</source>
+ <translation>Pulse el boton para activar el inicio de creación de la cuenta Jami</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="251"/>
+ <source>Create a Jami account</source>
+ <translation>Crear una cuenta de Jami</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="282"/>
+ <source>Link device button</source>
+ <translation>Botón vincular dispositivo</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="288"/>
+ <source>Push button for device linkage start trigger</source>
+ <translation>Pulse el botón para comenzar a enlazar el dispositivo</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="291"/>
+ <source>Link this device to an account</source>
+ <translation>Vincular este dispositivo a una cuenta</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="328"/>
+ <source>Create Jami SIP account button</source>
+ <translation>Botón crear cuenta Jami SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="334"/>
+ <source>Push button for Jami SIP account creation start trigger</source>
+ <translation>Pulse el botón crear cuenta Jami SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="340"/>
+ <source>Create a SIP account</source>
+ <translation>Crear una cuenta SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="405"/>
+ <source>Link this device to an existing account</source>
+ <translation>Enlazar este dispositivo a una cuenta existente</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="469"/>
+ <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">To link this device to another account, you first </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">need to obtain a PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> code. To generate the PIN code:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Account management setting</span><span style=" font-size:14px;"> of a previous device</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choose the </span><span style=" font-size:14px; font-weight:600;">Jami account</span><span style=" font-size:14px;"> you want to use</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Devices</span><span style=" font-size:14px;"> tab</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Select </span><span style=" font-size:14px; font-weight:600;">Add a device</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">You will get the necessary PIN to complete this form. The PIN is only valid for </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutes</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></source>
+ <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Cantarell'; font-size:11pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:12pt;">Para enlazar este dispositivo a otra cuenta, primero </span><span style=" font-family:'Ubuntu'; font-size:12pt; font-weight:600;">necesita obtener un código</span><span style=" font-family:'Ubuntu'; font-size:12pt;"> PIN. Para generar el código PIN:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:12pt;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Diríjase a los <span style=" font-weight:600;">Ajustes de administración de cuenta</span> de un dispositivo previo</li>
+<li style=" font-family:'Ubuntu'; font-size:12pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Elija la <span style=" font-weight:600;">cuenta Jami</span> que quiera usar</li>
+<li style=" font-family:'Ubuntu'; font-size:12pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Vaya a la pestaña </li><span style=" font-weight:600;">Dispositivos</span>
+<li style=" font-family:'Ubuntu'; font-size:12pt;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Seleccione <span style=" font-weight:600;">Añadir un dispositivo</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:12pt;">Obtendrá el PIN necesario para completar este formulario. El PIN sólo es valido por </span><span style=" font-family:'Ubuntu'; font-size:12pt; font-weight:600;">10 minutos</span><span style=" font-family:'Ubuntu'; font-size:12pt;">.</span></p></body></html></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="531"/>
+ <source>Enter your pin:</source>
+ <translation>Ingrese su pin:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="599"/>
+ <source>Or import a file:</source>
+ <translation>O importar un archivo:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="626"/>
+ <source>Link from exported account archive file</source>
+ <translation>Enlace desde archivo de cuenta exportado</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="629"/>
+ <location filename="../newwizardwidget.cpp" line="83"/>
+ <location filename="../newwizardwidget.cpp" line="218"/>
+ <source>(None)</source>
+ <translation>(Ninguno)</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="705"/>
+ <source>Password:</source>
+ <translation>Contraseña:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="799"/>
+ <location filename="../newwizardwidget.ui" line="1586"/>
+ <source>Profile</source>
+ <translation>Perfil</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="953"/>
+ <location filename="../newwizardwidget.ui" line="1767"/>
+ <source>Profile name</source>
+ <translation>Nombre de perfil</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1027"/>
+ <source>Account</source>
+ <translation>Cuenta</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1136"/>
+ <source>Register your username.
+This will reserve the username so that only you can use it.
+Your friends will be able to call you with your usename
+instead of using your ID.</source>
+ <translation>Registre su nombre de usuario.
+Esto reservará el nombre de usuario de modo que sólo usted pueda usarlo.
+Sus amigos podrán llamarlo por su nombre de usuario
+en lugar de usar su ID.</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1142"/>
+ <source>Public username checkbox</source>
+ <translation>Casilla de verificación de nombre de usuario público</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1145"/>
+ <source>Checkbox selecting if the user wants a public username</source>
+ <translation>Marque la casilla de verificación si el usuario desea un nombre de usuario público</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1148"/>
+ <source>Register public username</source>
+ <translation>Registrar nombre de usuario público</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1367"/>
+ <source>Public username edit</source>
+ <translation>Editar nombre de usuario público</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1373"/>
+ <source>Choose your username</source>
+ <translation>Elija su nombre de usuario</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1289"/>
+ <source>Password text input</source>
+ <translation>Entrada de texto de contraseña</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1295"/>
+ <source>Password text entry</source>
+ <translation>Entrada de texto de contraseña</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1301"/>
+ <location filename="../newwizardwidget.ui" line="2213"/>
+ <source>Password</source>
+ <translation>Contraseña</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1211"/>
+ <location filename="../newwizardwidget.ui" line="1217"/>
+ <source>Password confirmation text input</source>
+ <translation>Confirmación de contraseña de entrada de texto</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1223"/>
+ <source>Confirm password</source>
+ <translation>Confirmar contraseña</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1814"/>
+ <source>SIP Account</source>
+ <translation>Cuenta SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1973"/>
+ <source>SIP Server edit</source>
+ <translation>Editar servidor SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1979"/>
+ <source>Server</source>
+ <translation>Servidor</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2045"/>
+ <source>SIP proxy input</source>
+ <translation>Entrada de proxy SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2051"/>
+ <source>SIP proxy text entry</source>
+ <translation>Entrada de texto de SIP proxy</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2057"/>
+ <source>Proxy</source>
+ <translation>Proxy</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2123"/>
+ <source>SIP username input</source>
+ <translation>Entrada de nombre de usuario SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2129"/>
+ <source>SIP Password text entry</source>
+ <translation>Entrada de texto de contraseña SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2135"/>
+ <source>Username</source>
+ <translation>Nombre de usuario</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2201"/>
+ <location filename="../newwizardwidget.ui" line="2207"/>
+ <source>SIP Password text input</source>
+ <translation>Entrada de texto de contraseña SIP</translation>
+ </message>
+ <message utf8="true">
+ <location filename="../newwizardwidget.ui" line="2282"/>
+ <source>Generating your Jami account…</source>
+ <translation>Generando su cuenta Jami...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2356"/>
+ <source>Previous page button</source>
+ <translation>Botón página anterior</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2362"/>
+ <source>push button to access previous page of wizard</source>
+ <translation>pulse el botón para acceder a la página anterior del asistente</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2365"/>
+ <source>Previous</source>
+ <translation>Anterior</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2396"/>
+ <source>Cancel account create/link</source>
+ <translation>Cancelar la creación/vinculación de cuenta</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2402"/>
+ <source>push button to cancel account creation or linking</source>
+ <translation>pulse el botón para cancelar la creación o vinculación de cuenta</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2405"/>
+ <source>Back</source>
+ <translation>Atrás</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2442"/>
+ <source>Next page Button</source>
+ <translation>Botón página siguiente</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2448"/>
+ <source>Push button to access next page of wizard</source>
+ <translation>Pulse el botón para acceder a la página siguiente del asistente</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2451"/>
+ <source>Next</source>
+ <translation>Siguiente</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="75"/>
+ <source>Open File</source>
+ <translation>Abrir Archivo</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="77"/>
+ <source>Jami archive files (*.gz); All files (*)</source>
+ <translation>Archivos de Jami (*.gz); Todos los ficheros (*)</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="123"/>
+ <source>Your account needs to be migrated. Enter your password.</source>
+ <translation>Su cuenta debe ser migrada. Ingrese su contraseña.</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="419"/>
+ <source>Migrating your Jami account...</source>
+ <translation>MIgrando su cuenta Jami...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="412"/>
+ <source>Importing account archive...</source>
+ <translation>Importando su cuenta archivada...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="404"/>
+ <source>Generating your Jami account...</source>
+ <translation>Generando su cuenta Jami...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="422"/>
+ <source>Generating your SIP account...</source>
+ <translation>Generando su cuenta SIP...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="533"/>
+ <source>Error creating account</source>
+ <translation>Error en la creación de cuenta</translation>
+ </message>
+</context>
+<context>
+ <name>PasswordDialog</name>
+ <message>
+ <location filename="../passworddialog.ui" line="32"/>
+ <source>Change Account Password</source>
+ <translation>Cambiar la contraseña de la cuenta</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="97"/>
+ <source>Enter Current Password</source>
+ <translation>Ingresar la contraseña actual</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="169"/>
+ <source>Enter New Password</source>
+ <translation>Ingresar la nueva contraseña</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="190"/>
+ <source>Confirm New Password</source>
+ <translation>Confirmar la nueva contraseña</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="247"/>
+ <source>Confirm</source>
+ <translation>Confirmar</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="290"/>
+ <source>Cancel</source>
+ <translation>Cancelar</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="143"/>
+ <source>Current Password Incorrect</source>
+ <translation>Contraseña actual incorrecta</translation>
+ </message>
+</context>
+<context>
+ <name>PhotoBoothDialog</name>
+ <message>
+ <location filename="../photoboothdialog.ui" line="14"/>
+ <source>Photobooth</source>
+ <translation>Cabina de fotos</translation>
+ </message>
+</context>
+<context>
+ <name>PhotoboothWidget</name>
+ <message>
+ <location filename="../photoboothwidget.ui" line="20"/>
+ <source>Form</source>
+ <translation>Formulario</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.ui" line="120"/>
+ <source>Photobooth display</source>
+ <translation>Pantalla de cabina de fotos</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="92"/>
+ <source>Choose File</source>
+ <translation>Elegir archivo</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="94"/>
+ <source>Image Files (*.jpg *.jpeg *.png)</source>
+ <translation>Archivos de imágenes (*.jpg *.jpeg *.png)</translation>
+ </message>
+</context>
+<context>
+ <name>PrivateBridging</name>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Choose File</source>
+ <translation>Elegir archivo</translation>
+ </message>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Files (*)</source>
+ <translation>Archivos (*)</translation>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../utils.cpp" line="183"/>
+ <source>No default mail client found</source>
+ <translation>No se encontró el cliente de e-mail predeterminado</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="43"/>
+ <location filename="../deviceitemwidget.cpp" line="85"/>
+ <source>Edit Device Name</source>
+ <translation>Editar nombre de dispositivo</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="44"/>
+ <source>Unlink Device From Account</source>
+ <translation>Desvincular dispositivo de la cuenta</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="80"/>
+ <source>Save new device name</source>
+ <translation>Guardar nmbre de nuevo dispositivo</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.cpp" line="39"/>
+ <source>Add as contact</source>
+ <translation>Agregar como contacto</translation>
+ </message>
+</context>
+<context>
+ <name>RingButton</name>
+ <message>
+ <location filename="../ringbutton.ui" line="140"/>
+ <source>Select folder</source>
+ <translation>Seleccionar carpeta</translation>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <location filename="../settingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulario</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="141"/>
+ <source>Settings</source>
+ <translation>Ajustes</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="229"/>
+ <source>Account</source>
+ <translation>Cuenta</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="267"/>
+ <location filename="../settingswidget.ui" line="503"/>
+ <source>General</source>
+ <translation>General</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="305"/>
+ <location filename="../settingswidget.ui" line="3416"/>
+ <source>Audio / Video</source>
+ <translation>Audio / Video</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="542"/>
+ <source>System</source>
+ <translation>Sistema</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="610"/>
+ <source>Enable desktop notifications</source>
+ <translation>Habilitar notificaciones en el escritorio</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="653"/>
+ <source>Keep minimized on close</source>
+ <translation>Mantener minimizado al cerrar</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="678"/>
+ <source>Download folder</source>
+ <translation>Descargar carpeta</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="811"/>
+ <source>Save in</source>
+ <translation>Guardar en</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="904"/>
+ <source>Always Recording</source>
+ <translation>Siempre grabando</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="943"/>
+ <source>Updates</source>
+ <translation>Actualizaciones</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1008"/>
+ <source>Check for updates automatically every</source>
+ <translation>Comprobar actualizaciones automáticamente cada</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1032"/>
+ <source>Interval between update checks in days selector</source>
+ <translation>Selector de intervalo de días entre comprobación de actualizaciones</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1038"/>
+ <source> days</source>
+ <translation>días</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1081"/>
+ <source>Check for updates now button</source>
+ <translation>Botón comprobar actualizaciones en forma inmediata</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1084"/>
+ <source>Check for updates now</source>
+ <translation>Comprobar actualizaciones ahora</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3027"/>
+ <source>Password</source>
+ <translation>Contraseña</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1418"/>
+ <location filename="../settingswidget.ui" line="2729"/>
+ <source>Enable</source>
+ <translation>Habilitar</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="607"/>
+ <source>toggle enable notifications</source>
+ <translation>Cambiar Activar notificaciones</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="650"/>
+ <source>Toggle keep minimized on close</source>
+ <translation>Cambiar Mantener minimizado al cerrar</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="764"/>
+ <source>Call Recordings</source>
+ <translation>Grabaciones de llamadas</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1005"/>
+ <source>Toggle automatic updates</source>
+ <translation>Activar actualizaciones automáticas</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1231"/>
+ <source>Jami Account</source>
+ <translation>Cuenta Jami</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1453"/>
+ <location filename="../settingswidget.ui" line="2761"/>
+ <source>Profile</source>
+ <translation>Perfil</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1567"/>
+ <location filename="../settingswidget.ui" line="2875"/>
+ <source>Identity</source>
+ <translation>Identidad</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1614"/>
+ <source>Id</source>
+ <translation>ID</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1673"/>
+ <source>Registered name</source>
+ <translation>Nombre registrado</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1721"/>
+ <source>Type here to register a username</source>
+ <translation>Escriba aquí para registrar un nombre de usuario</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1755"/>
+ <source>Register</source>
+ <translation>Registrar</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1827"/>
+ <source>Change Password</source>
+ <translation>Cambiar contraseña</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1868"/>
+ <source>Export Account</source>
+ <translation>Exportar cuenta</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1909"/>
+ <location filename="../settingswidget.ui" line="3089"/>
+ <source>Delete Account</source>
+ <translation>Eliminar cuenta</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1973"/>
+ <source>Linked Devices</source>
+ <translation>Dispositvos vinculados</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2078"/>
+ <source>Link Another Device</source>
+ <translation>Vincular otro dispositivo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2142"/>
+ <source>Banned Contacts</source>
+ <translation>Contactos bloqueados</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3788"/>
+ <source>Format</source>
+ <translation>Formato</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3831"/>
+ <source>Video device framerate selector</source>
+ <translation>Selector de velocidad de cuadros del dispositivo de video</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3967"/>
+ <source>Preview unavailable</source>
+ <translation>Vista previa no disponible</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2359"/>
+ <location filename="../settingswidget.ui" line="3187"/>
+ <source>Advanced Account Settings</source>
+ <translation>Opciones avanzadas de cuenta</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2554"/>
+ <source>SIP Account</source>
+ <translation>Cuenta SIP</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2925"/>
+ <source>Username</source>
+ <translation>Nombre de usuario</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2958"/>
+ <source>Hostname</source>
+ <translation>Nombre del anfitrión</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2991"/>
+ <source>Proxy</source>
+ <translation>Proxy</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3461"/>
+ <source>Audio</source>
+ <translation>Audio</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3511"/>
+ <source>Microphone</source>
+ <translation>Micrófono</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3551"/>
+ <source>Audio input device selector</source>
+ <translation>Selector de dispositivo de entrada de audio</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3585"/>
+ <source>Output Device</source>
+ <translation>Dispositivo de Salida</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3625"/>
+ <source>Choose the output device</source>
+ <translation>Elija el dispositivo de salida</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3682"/>
+ <source>Video</source>
+ <translation>Video</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3720"/>
+ <source>Device</source>
+ <translation>Dispositivo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3766"/>
+ <source>Video device selector</source>
+ <translation>Selector de dispositivo de video</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="459"/>
+ <source>A registered name should not have any spaces and must be at least three letters long</source>
+ <translation>Un nombre de registro no debe tener espacios y debe tener al menos tres letras como mínimo de extensión</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="466"/>
+ <source>This name is already taken</source>
+ <translation>Este nombre ya está en uso</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="92"/>
+ <location filename="../settingswidget.cpp" line="110"/>
+ <source>Enter an alias</source>
+ <translation>Ingresar un alias</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="473"/>
+ <source>Register this name</source>
+ <translation>Registrar este nombre</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="550"/>
+ <source>Remove Device</source>
+ <translation>Remover dispositivo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="551"/>
+ <source>Enter this account's password to confirm the removal of this device</source>
+ <translation>Ingrese la contraseña de la cuenta para confirmar la remoción del dispositivo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="558"/>
+ <source>Are you sure you wish to remove this device?</source>
+ <translation>¿Está seguro que desea remover este dispositivo?</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="589"/>
+ <source>Export Account Here</source>
+ <translation>Exportar cuenta aquí</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="887"/>
+ <source>Select A Folder For Your Downloads</source>
+ <translation>Seleccione una carpeta para sus descargas</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="904"/>
+ <source>Select A Folder For Your Recordings</source>
+ <translation>Seleccione una carpeta para sus grabaciones</translation>
+ </message>
+</context>
+<context>
+ <name>VideoOverlay</name>
+ <message>
+ <location filename="../videooverlay.ui" line="419"/>
+ <source>Call on Hold</source>
+ <translation>Llamada en espera</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="89"/>
+ <source>Hold / Unhold</source>
+ <translation>En espera / Reanudar</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="124"/>
+ <source>Chat</source>
+ <translation>Chat</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="162"/>
+ <source>Mute Mic</source>
+ <translation>Silenciar micrófono</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="244"/>
+ <source>Record call</source>
+ <translation>Grabar llamada</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="325"/>
+ <source>Name label</source>
+ <translation>Etiqueta de nombre</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="390"/>
+ <source>Time elapsed</source>
+ <translation>Tiempo transcurrido</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="393"/>
+ <source>00:00</source>
+ <translation>00:00</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="57"/>
+ <source>Hangup</source>
+ <translation>Colgar</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="203"/>
+ <source>Mute Video</source>
+ <translation>Deshabilitar video</translation>
+ </message>
+</context>
+<context>
+ <name>VideoView</name>
+ <message>
+ <location filename="../videoview.cpp" line="271"/>
+ <source>Share entire screen</source>
+ <translation>Compartir pantalla completa</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="274"/>
+ <source>Share screen area</source>
+ <translation>Compartir área de pantalla específica</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="281"/>
+ <source>Share file</source>
+ <translation>Compartir archivo</translation>
+ </message>
+</context>
+</TS>
\ No newline at end of file
diff --git a/translations/ring_client_windows_es_MX.ts b/translations/ring_client_windows_es_MX.ts
new file mode 100644
index 0000000..68701a0
--- /dev/null
+++ b/translations/ring_client_windows_es_MX.ts
@@ -0,0 +1,1589 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="es_MX" version="2.0">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../aboutdialog.ui" line="435"/>
+ <location filename="../aboutdialog.ui" line="465"/>
+ <source>About</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="462"/>
+ <source>about button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="478"/>
+ <source>credits button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="481"/>
+ <source>Credits</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="547"/>
+ <source>Free as in Freedom</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="563"/>
+ <source>The Microsoft Windows client for Jami.
+Jami is a secured and distributed communication software.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="32"/>
+ <source>version</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="39"/>
+ <source>Created by:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="73"/>
+ <source>Artwork by:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="77"/>
+ <source>Based on the SFLPhone project</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AccountItemDelegate</name>
+ <message>
+ <location filename="../accountitemdelegate.cpp" line="91"/>
+ <source>Add Account</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSIPSettingsWidget</name>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="55"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="102"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="130"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="191"/>
+ <source>Connectivity</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="281"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="293"/>
+ <source>Use STUN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="317"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="329"/>
+ <source>Use TURN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="359"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="391"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="423"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="464"/>
+ <source>Media</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="515"/>
+ <source>Enable Video</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="539"/>
+ <source>Video Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="692"/>
+ <source>Audio Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="142"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="151"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSettingsWidget</name>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="61"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="108"/>
+ <source>Allow Calls From Untrusted Peers</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="133"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="161"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="188"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="225"/>
+ <source>Name Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="275"/>
+ <source>Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="351"/>
+ <source>OpenDHT Configuration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="398"/>
+ <source>Enable Proxy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="454"/>
+ <source>Bootstrap</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="530"/>
+ <source>Security</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="571"/>
+ <source>Private Key Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="583"/>
+ <source>User Certificate</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="622"/>
+ <source>Private Key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="634"/>
+ <source>CA Certificate</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="766"/>
+ <source>Connectivity</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="868"/>
+ <source>Use STUN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="856"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="892"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="904"/>
+ <source>Use TURN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="934"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="966"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="998"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1039"/>
+ <source>Media</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1090"/>
+ <source>Enable Video</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1267"/>
+ <source>Audio Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1114"/>
+ <source>Video Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="181"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AnimatedOverlay</name>
+ <message>
+ <location filename="../animatedoverlay.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>BannedItemWidget</name>
+ <message>
+ <location filename="../banneditemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="80"/>
+ <source>name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="104"/>
+ <source>id</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>CallWidget</name>
+ <message>
+ <location filename="../callwidget.ui" line="184"/>
+ <source>Show conversations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="187"/>
+ <source>Conversations</source>
+ <translation>Conversaciones</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="368"/>
+ <source>Search contact text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="653"/>
+ <source>Jami is free software for universal communication which respects the freedoms and privacy of its users.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="693"/>
+ <source>
+ This is your ID.
+Copy and share it with your friends!
+ </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="806"/>
+ <source>Show ring ID QR code</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="857"/>
+ <source>Share ring ID button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="915"/>
+ <source>Double-click to copy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="956"/>
+ <source>Error while generating QR Code</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1184"/>
+ <location filename="../callwidget.ui" line="1434"/>
+ <source>best name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1208"/>
+ <source>best Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1734"/>
+ <source>Back to homepage button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1943"/>
+ <source>Add to contacts</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="202"/>
+ <source>Show invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="205"/>
+ <source>Invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="377"/>
+ <location filename="../callwidget.cpp" line="552"/>
+ <source>Find a new or existing contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1444"/>
+ <source>Wants to talk to you!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1517"/>
+ <source>Answer incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1589"/>
+ <source>Ignore incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1539"/>
+ <source>Answer</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1617"/>
+ <source>Ignore</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1280"/>
+ <source>Cancel outgoing call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1305"/>
+ <source>Cancel</source>
+ <translation>Cancelar</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="332"/>
+ <source>Start video call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="343"/>
+ <source>Start audio call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="354"/>
+ <source>Clear conversation</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="361"/>
+ <source>Remove contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="373"/>
+ <source>Block contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="384"/>
+ <source>Copy number</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="561"/>
+ <source>Search your received invitations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>Contact me on Jami</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>My Id is : </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="847"/>
+ <source>%1</source>
+ <comment>%1 is the contact username</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="852"/>
+ <source>%1</source>
+ <comment>%1 is the contact unique identifier</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="675"/>
+ <source>Call incoming from %1</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>DeleteAccountDialog</name>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="35"/>
+ <source>Account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="58"/>
+ <source>Do you really want to delete the following account?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="153"/>
+ <source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="235"/>
+ <source>Permanently delete account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="241"/>
+ <source>Delete</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="278"/>
+ <source>Cancel account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="284"/>
+ <source>Cancel</source>
+ <translation>Cancelar</translation>
+ </message>
+</context>
+<context>
+ <name>DeviceItemWidget</name>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="105"/>
+ <source>Device Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="143"/>
+ <source>this device</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>InviteButtonsWidget</name>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="83"/>
+ <source>Accept</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="131"/>
+ <source>Refuse</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="179"/>
+ <source>Block</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>LinkDeviceDialog</name>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="62"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="117"/>
+ <source>Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="184"/>
+ <source>Ok</source>
+ <translation>Ok</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="218"/>
+ <source>Cancel</source>
+ <translation>Cancelar</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="279"/>
+ <source>Exporting account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="402"/>
+ <source>Your PIN is</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="432"/>
+ <source>PIN</source>
+ <translation>PIN</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="477"/>
+ <source>This pin and the account password should be entered in your device within 10 minutes.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="553"/>
+ <source>Close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="34"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="96"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="110"/>
+ <source>Something went wrong.
+Please try again later.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="83"/>
+ <source>Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="94"/>
+ <source>Exit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="111"/>
+ <source>About</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="435"/>
+ <source>Jami</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>NameRegistrationDialog</name>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="35"/>
+ <source>Set Registered Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="163"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="244"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="250"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="256"/>
+ <source>Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="323"/>
+ <source>Register</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="357"/>
+ <source>Cancel</source>
+ <translation>Cancelar</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="424"/>
+ <source>Registering Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="548"/>
+ <source>Something went wrong</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="618"/>
+ <source>Close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="82"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="85"/>
+ <source>Network error</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>NewWizardWidget</name>
+ <message>
+ <location filename="../newwizardwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="141"/>
+ <source>Welcome Label</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="147"/>
+ <source> Welcome to</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="185"/>
+ <source>Welcome Logo</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="239"/>
+ <source>Create Jami account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="245"/>
+ <source>Push button for Jami account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="251"/>
+ <source>Create a Jami account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="282"/>
+ <source>Link device button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="288"/>
+ <source>Push button for device linkage start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="291"/>
+ <source>Link this device to an account</source>
+ <translation>Vincular este dispositivo a una cuenta</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="328"/>
+ <source>Create Jami SIP account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="334"/>
+ <source>Push button for Jami SIP account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="340"/>
+ <source>Create a SIP account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="405"/>
+ <source>Link this device to an existing account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="469"/>
+ <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">To link this device to another account, you first </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">need to obtain a PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> code. To generate the PIN code:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Account management setting</span><span style=" font-size:14px;"> of a previous device</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choose the </span><span style=" font-size:14px; font-weight:600;">Jami account</span><span style=" font-size:14px;"> you want to use</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Devices</span><span style=" font-size:14px;"> tab</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Select </span><span style=" font-size:14px; font-weight:600;">Add a device</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">You will get the necessary PIN to complete this form. The PIN is only valid for </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutes</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="531"/>
+ <source>Enter your pin:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="599"/>
+ <source>Or import a file:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="626"/>
+ <source>Link from exported account archive file</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="629"/>
+ <location filename="../newwizardwidget.cpp" line="83"/>
+ <location filename="../newwizardwidget.cpp" line="218"/>
+ <source>(None)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="705"/>
+ <source>Password:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="799"/>
+ <location filename="../newwizardwidget.ui" line="1586"/>
+ <source>Profile</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="953"/>
+ <location filename="../newwizardwidget.ui" line="1767"/>
+ <source>Profile name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1027"/>
+ <source>Account</source>
+ <translation>Cuenta</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1136"/>
+ <source>Register your username.
+This will reserve the username so that only you can use it.
+Your friends will be able to call you with your usename
+instead of using your ID.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1142"/>
+ <source>Public username checkbox</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1145"/>
+ <source>Checkbox selecting if the user wants a public username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1148"/>
+ <source>Register public username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1367"/>
+ <source>Public username edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1373"/>
+ <source>Choose your username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1289"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1295"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1301"/>
+ <location filename="../newwizardwidget.ui" line="2213"/>
+ <source>Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1211"/>
+ <location filename="../newwizardwidget.ui" line="1217"/>
+ <source>Password confirmation text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1223"/>
+ <source>Confirm password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1814"/>
+ <source>SIP Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1973"/>
+ <source>SIP Server edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1979"/>
+ <source>Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2045"/>
+ <source>SIP proxy input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2051"/>
+ <source>SIP proxy text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2057"/>
+ <source>Proxy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2123"/>
+ <source>SIP username input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2129"/>
+ <source>SIP Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2135"/>
+ <source>Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2201"/>
+ <location filename="../newwizardwidget.ui" line="2207"/>
+ <source>SIP Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message utf8="true">
+ <location filename="../newwizardwidget.ui" line="2282"/>
+ <source>Generating your Jami account…</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2356"/>
+ <source>Previous page button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2362"/>
+ <source>push button to access previous page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2365"/>
+ <source>Previous</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2396"/>
+ <source>Cancel account create/link</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2402"/>
+ <source>push button to cancel account creation or linking</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2405"/>
+ <source>Back</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2442"/>
+ <source>Next page Button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2448"/>
+ <source>Push button to access next page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2451"/>
+ <source>Next</source>
+ <translation>Siguiente</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="75"/>
+ <source>Open File</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="77"/>
+ <source>Jami archive files (*.gz); All files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="123"/>
+ <source>Your account needs to be migrated. Enter your password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="419"/>
+ <source>Migrating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="412"/>
+ <source>Importing account archive...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="404"/>
+ <source>Generating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="422"/>
+ <source>Generating your SIP account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="533"/>
+ <source>Error creating account</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PasswordDialog</name>
+ <message>
+ <location filename="../passworddialog.ui" line="32"/>
+ <source>Change Account Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="97"/>
+ <source>Enter Current Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="169"/>
+ <source>Enter New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="190"/>
+ <source>Confirm New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="247"/>
+ <source>Confirm</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="290"/>
+ <source>Cancel</source>
+ <translation>Cancelar</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="143"/>
+ <source>Current Password Incorrect</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PhotoBoothDialog</name>
+ <message>
+ <location filename="../photoboothdialog.ui" line="14"/>
+ <source>Photobooth</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PhotoboothWidget</name>
+ <message>
+ <location filename="../photoboothwidget.ui" line="20"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.ui" line="120"/>
+ <source>Photobooth display</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="92"/>
+ <source>Choose File</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="94"/>
+ <source>Image Files (*.jpg *.jpeg *.png)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PrivateBridging</name>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Choose File</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../utils.cpp" line="183"/>
+ <source>No default mail client found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="43"/>
+ <location filename="../deviceitemwidget.cpp" line="85"/>
+ <source>Edit Device Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="44"/>
+ <source>Unlink Device From Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="80"/>
+ <source>Save new device name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.cpp" line="39"/>
+ <source>Add as contact</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>RingButton</name>
+ <message>
+ <location filename="../ringbutton.ui" line="140"/>
+ <source>Select folder</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <location filename="../settingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="141"/>
+ <source>Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="229"/>
+ <source>Account</source>
+ <translation>Cuenta</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="267"/>
+ <location filename="../settingswidget.ui" line="503"/>
+ <source>General</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="305"/>
+ <location filename="../settingswidget.ui" line="3416"/>
+ <source>Audio / Video</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="542"/>
+ <source>System</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="610"/>
+ <source>Enable desktop notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="653"/>
+ <source>Keep minimized on close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="678"/>
+ <source>Download folder</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="811"/>
+ <source>Save in</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="904"/>
+ <source>Always Recording</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="943"/>
+ <source>Updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1008"/>
+ <source>Check for updates automatically every</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1032"/>
+ <source>Interval between update checks in days selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1038"/>
+ <source> days</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1081"/>
+ <source>Check for updates now button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1084"/>
+ <source>Check for updates now</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3027"/>
+ <source>Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1418"/>
+ <location filename="../settingswidget.ui" line="2729"/>
+ <source>Enable</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="607"/>
+ <source>toggle enable notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="650"/>
+ <source>Toggle keep minimized on close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="764"/>
+ <source>Call Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1005"/>
+ <source>Toggle automatic updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1231"/>
+ <source>Jami Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1453"/>
+ <location filename="../settingswidget.ui" line="2761"/>
+ <source>Profile</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1567"/>
+ <location filename="../settingswidget.ui" line="2875"/>
+ <source>Identity</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1614"/>
+ <source>Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1673"/>
+ <source>Registered name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1721"/>
+ <source>Type here to register a username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1755"/>
+ <source>Register</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1827"/>
+ <source>Change Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1868"/>
+ <source>Export Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1909"/>
+ <location filename="../settingswidget.ui" line="3089"/>
+ <source>Delete Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1973"/>
+ <source>Linked Devices</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2078"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2142"/>
+ <source>Banned Contacts</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3788"/>
+ <source>Format</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3831"/>
+ <source>Video device framerate selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3967"/>
+ <source>Preview unavailable</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2359"/>
+ <location filename="../settingswidget.ui" line="3187"/>
+ <source>Advanced Account Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2554"/>
+ <source>SIP Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2925"/>
+ <source>Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2958"/>
+ <source>Hostname</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2991"/>
+ <source>Proxy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3461"/>
+ <source>Audio</source>
+ <translation>Audio</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3511"/>
+ <source>Microphone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3551"/>
+ <source>Audio input device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3585"/>
+ <source>Output Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3625"/>
+ <source>Choose the output device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3682"/>
+ <source>Video</source>
+ <translation>Video</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3720"/>
+ <source>Device</source>
+ <translation>Dispositivo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3766"/>
+ <source>Video device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="459"/>
+ <source>A registered name should not have any spaces and must be at least three letters long</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="466"/>
+ <source>This name is already taken</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="92"/>
+ <location filename="../settingswidget.cpp" line="110"/>
+ <source>Enter an alias</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="473"/>
+ <source>Register this name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="550"/>
+ <source>Remove Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="551"/>
+ <source>Enter this account's password to confirm the removal of this device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="558"/>
+ <source>Are you sure you wish to remove this device?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="589"/>
+ <source>Export Account Here</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="887"/>
+ <source>Select A Folder For Your Downloads</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="904"/>
+ <source>Select A Folder For Your Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>VideoOverlay</name>
+ <message>
+ <location filename="../videooverlay.ui" line="419"/>
+ <source>Call on Hold</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="89"/>
+ <source>Hold / Unhold</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="124"/>
+ <source>Chat</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="162"/>
+ <source>Mute Mic</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="244"/>
+ <source>Record call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="325"/>
+ <source>Name label</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="390"/>
+ <source>Time elapsed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="393"/>
+ <source>00:00</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="57"/>
+ <source>Hangup</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="203"/>
+ <source>Mute Video</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>VideoView</name>
+ <message>
+ <location filename="../videoview.cpp" line="271"/>
+ <source>Share entire screen</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="274"/>
+ <source>Share screen area</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="281"/>
+ <source>Share file</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+</TS>
\ No newline at end of file
diff --git a/translations/ring_client_windows_et_EE.ts b/translations/ring_client_windows_et_EE.ts
new file mode 100644
index 0000000..1b90f25
--- /dev/null
+++ b/translations/ring_client_windows_et_EE.ts
@@ -0,0 +1,1591 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="et_EE">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../aboutdialog.ui" line="435"/>
+ <location filename="../aboutdialog.ui" line="465"/>
+ <source>About</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="462"/>
+ <source>about button</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="478"/>
+ <source>credits button</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="481"/>
+ <source>Credits</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="547"/>
+ <source>Free as in Freedom</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="563"/>
+ <source>The Microsoft Windows client for Jami.
+Jami is a secured and distributed communication software.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="32"/>
+ <source>version</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="39"/>
+ <source>Created by:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="73"/>
+ <source>Artwork by:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="77"/>
+ <source>Based on the SFLPhone project</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>AccountItemDelegate</name>
+ <message>
+ <location filename="../accountitemdelegate.cpp" line="91"/>
+ <source>Add Account</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>AdvancedSIPSettingsWidget</name>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="55"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="102"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="130"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="191"/>
+ <source>Connectivity</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="281"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="293"/>
+ <source>Use STUN</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="317"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="329"/>
+ <source>Use TURN</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="359"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="391"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="423"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="464"/>
+ <source>Media</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="515"/>
+ <source>Enable Video</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="539"/>
+ <source>Video Codecs</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="692"/>
+ <source>Audio Codecs</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="142"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="151"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>AdvancedSettingsWidget</name>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="61"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="108"/>
+ <source>Allow Calls From Untrusted Peers</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="133"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="161"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="188"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="225"/>
+ <source>Name Server</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="275"/>
+ <source>Address</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="351"/>
+ <source>OpenDHT Configuration</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="398"/>
+ <source>Enable Proxy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="454"/>
+ <source>Bootstrap</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="530"/>
+ <source>Security</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="571"/>
+ <source>Private Key Password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="583"/>
+ <source>User Certificate</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="622"/>
+ <source>Private Key</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="634"/>
+ <source>CA Certificate</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="766"/>
+ <source>Connectivity</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="868"/>
+ <source>Use STUN</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="856"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="892"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="904"/>
+ <source>Use TURN</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="934"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="966"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="998"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1039"/>
+ <source>Media</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1090"/>
+ <source>Enable Video</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1267"/>
+ <source>Audio Codecs</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1114"/>
+ <source>Video Codecs</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="181"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>AnimatedOverlay</name>
+ <message>
+ <location filename="../animatedoverlay.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>BannedItemWidget</name>
+ <message>
+ <location filename="../banneditemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="80"/>
+ <source>name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="104"/>
+ <source>id</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>CallWidget</name>
+ <message>
+ <location filename="../callwidget.ui" line="184"/>
+ <source>Show conversations</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="187"/>
+ <source>Conversations</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="368"/>
+ <source>Search contact text input</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="653"/>
+ <source>Jami is free software for universal communication which respects the freedoms and privacy of its users.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="693"/>
+ <source>
+ This is your ID.
+Copy and share it with your friends!
+ </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="806"/>
+ <source>Show ring ID QR code</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="857"/>
+ <source>Share ring ID button</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="915"/>
+ <source>Double-click to copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="956"/>
+ <source>Error while generating QR Code</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1184"/>
+ <location filename="../callwidget.ui" line="1434"/>
+ <source>best name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1208"/>
+ <source>best Id</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1734"/>
+ <source>Back to homepage button</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1943"/>
+ <source>Add to contacts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="202"/>
+ <source>Show invites</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="205"/>
+ <source>Invites</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="377"/>
+ <location filename="../callwidget.cpp" line="552"/>
+ <source>Find a new or existing contact</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1444"/>
+ <source>Wants to talk to you!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1517"/>
+ <source>Answer incoming call button</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1589"/>
+ <source>Ignore incoming call button</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1539"/>
+ <source>Answer</source>
+ <translation>vasta</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1617"/>
+ <source>Ignore</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1280"/>
+ <source>Cancel outgoing call</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1305"/>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="332"/>
+ <source>Start video call</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="343"/>
+ <source>Start audio call</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="354"/>
+ <source>Clear conversation</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="361"/>
+ <source>Remove contact</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="373"/>
+ <source>Block contact</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="384"/>
+ <source>Copy number</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="561"/>
+ <source>Search your received invitations</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>Contact me on Jami</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>My Id is : </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="847"/>
+ <source>%1</source>
+ <comment>%1 is the contact username</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="852"/>
+ <source>%1</source>
+ <comment>%1 is the contact unique identifier</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="675"/>
+ <source>Call incoming from %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>DeleteAccountDialog</name>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="35"/>
+ <source>Account deletion</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="58"/>
+ <source>Do you really want to delete the following account?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="153"/>
+ <source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="235"/>
+ <source>Permanently delete account</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="241"/>
+ <source>Delete</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="278"/>
+ <source>Cancel account deletion</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="284"/>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>DeviceItemWidget</name>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="105"/>
+ <source>Device Id</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="143"/>
+ <source>this device</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>InviteButtonsWidget</name>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="83"/>
+ <source>Accept</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="131"/>
+ <source>Refuse</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="179"/>
+ <source>Block</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>LinkDeviceDialog</name>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="62"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="117"/>
+ <source>Password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="184"/>
+ <source>Ok</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="218"/>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="279"/>
+ <source>Exporting account</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="402"/>
+ <source>Your PIN is</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="432"/>
+ <source>PIN</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="477"/>
+ <source>This pin and the account password should be entered in your device within 10 minutes.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="553"/>
+ <source>Close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="34"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="96"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="110"/>
+ <source>Something went wrong.
+Please try again later.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="83"/>
+ <source>Settings</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="94"/>
+ <source>Exit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="111"/>
+ <source>About</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="435"/>
+ <source>Jami</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>NameRegistrationDialog</name>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="35"/>
+ <source>Set Registered Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="163"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="244"/>
+ <source>Password text input</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="250"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="256"/>
+ <source>Password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="323"/>
+ <source>Register</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="357"/>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="424"/>
+ <source>Registering Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="548"/>
+ <source>Something went wrong</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="618"/>
+ <source>Close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="82"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="85"/>
+ <source>Network error</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>NewWizardWidget</name>
+ <message>
+ <location filename="../newwizardwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="141"/>
+ <source>Welcome Label</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="147"/>
+ <source> Welcome to</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="185"/>
+ <source>Welcome Logo</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="239"/>
+ <source>Create Jami account button</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="245"/>
+ <source>Push button for Jami account creation start trigger</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="251"/>
+ <source>Create a Jami account</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="282"/>
+ <source>Link device button</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="288"/>
+ <source>Push button for device linkage start trigger</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="291"/>
+ <source>Link this device to an account</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="328"/>
+ <source>Create Jami SIP account button</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="334"/>
+ <source>Push button for Jami SIP account creation start trigger</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="340"/>
+ <source>Create a SIP account</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="405"/>
+ <source>Link this device to an existing account</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="469"/>
+ <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">To link this device to another account, you first </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">need to obtain a PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> code. To generate the PIN code:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Account management setting</span><span style=" font-size:14px;"> of a previous device</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choose the </span><span style=" font-size:14px; font-weight:600;">Jami account</span><span style=" font-size:14px;"> you want to use</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Devices</span><span style=" font-size:14px;"> tab</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Select </span><span style=" font-size:14px; font-weight:600;">Add a device</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">You will get the necessary PIN to complete this form. The PIN is only valid for </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutes</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="531"/>
+ <source>Enter your pin:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="599"/>
+ <source>Or import a file:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="626"/>
+ <source>Link from exported account archive file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="629"/>
+ <location filename="../newwizardwidget.cpp" line="83"/>
+ <location filename="../newwizardwidget.cpp" line="218"/>
+ <source>(None)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="705"/>
+ <source>Password:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="799"/>
+ <location filename="../newwizardwidget.ui" line="1586"/>
+ <source>Profile</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="953"/>
+ <location filename="../newwizardwidget.ui" line="1767"/>
+ <source>Profile name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1027"/>
+ <source>Account</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1136"/>
+ <source>Register your username.
+This will reserve the username so that only you can use it.
+Your friends will be able to call you with your usename
+instead of using your ID.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1142"/>
+ <source>Public username checkbox</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1145"/>
+ <source>Checkbox selecting if the user wants a public username</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1148"/>
+ <source>Register public username</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1367"/>
+ <source>Public username edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1373"/>
+ <source>Choose your username</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1289"/>
+ <source>Password text input</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1295"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1301"/>
+ <location filename="../newwizardwidget.ui" line="2213"/>
+ <source>Password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1211"/>
+ <location filename="../newwizardwidget.ui" line="1217"/>
+ <source>Password confirmation text input</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1223"/>
+ <source>Confirm password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1814"/>
+ <source>SIP Account</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1973"/>
+ <source>SIP Server edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1979"/>
+ <source>Server</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2045"/>
+ <source>SIP proxy input</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2051"/>
+ <source>SIP proxy text entry</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2057"/>
+ <source>Proxy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2123"/>
+ <source>SIP username input</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2129"/>
+ <source>SIP Password text entry</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2135"/>
+ <source>Username</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2201"/>
+ <location filename="../newwizardwidget.ui" line="2207"/>
+ <source>SIP Password text input</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message utf8="true">
+ <location filename="../newwizardwidget.ui" line="2282"/>
+ <source>Generating your Jami account…</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2356"/>
+ <source>Previous page button</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2362"/>
+ <source>push button to access previous page of wizard</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2365"/>
+ <source>Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2396"/>
+ <source>Cancel account create/link</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2402"/>
+ <source>push button to cancel account creation or linking</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2405"/>
+ <source>Back</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2442"/>
+ <source>Next page Button</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2448"/>
+ <source>Push button to access next page of wizard</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2451"/>
+ <source>Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="75"/>
+ <source>Open File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="77"/>
+ <source>Jami archive files (*.gz); All files (*)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="123"/>
+ <source>Your account needs to be migrated. Enter your password.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="419"/>
+ <source>Migrating your Jami account...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="412"/>
+ <source>Importing account archive...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="404"/>
+ <source>Generating your Jami account...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="422"/>
+ <source>Generating your SIP account...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="533"/>
+ <source>Error creating account</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>PasswordDialog</name>
+ <message>
+ <location filename="../passworddialog.ui" line="32"/>
+ <source>Change Account Password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="97"/>
+ <source>Enter Current Password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="169"/>
+ <source>Enter New Password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="190"/>
+ <source>Confirm New Password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="247"/>
+ <source>Confirm</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="290"/>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="143"/>
+ <source>Current Password Incorrect</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>PhotoBoothDialog</name>
+ <message>
+ <location filename="../photoboothdialog.ui" line="14"/>
+ <source>Photobooth</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>PhotoboothWidget</name>
+ <message>
+ <location filename="../photoboothwidget.ui" line="20"/>
+ <source>Form</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.ui" line="120"/>
+ <source>Photobooth display</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="92"/>
+ <source>Choose File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="94"/>
+ <source>Image Files (*.jpg *.jpeg *.png)</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>PrivateBridging</name>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Choose File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Files (*)</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../utils.cpp" line="183"/>
+ <source>No default mail client found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="43"/>
+ <location filename="../deviceitemwidget.cpp" line="85"/>
+ <source>Edit Device Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="44"/>
+ <source>Unlink Device From Account</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="80"/>
+ <source>Save new device name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.cpp" line="39"/>
+ <source>Add as contact</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>RingButton</name>
+ <message>
+ <location filename="../ringbutton.ui" line="140"/>
+ <source>Select folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <location filename="../settingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="141"/>
+ <source>Settings</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="229"/>
+ <source>Account</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="267"/>
+ <location filename="../settingswidget.ui" line="503"/>
+ <source>General</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="305"/>
+ <location filename="../settingswidget.ui" line="3416"/>
+ <source>Audio / Video</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="542"/>
+ <source>System</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="610"/>
+ <source>Enable desktop notifications</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="653"/>
+ <source>Keep minimized on close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="678"/>
+ <source>Download folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="811"/>
+ <source>Save in</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="904"/>
+ <source>Always Recording</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="943"/>
+ <source>Updates</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1008"/>
+ <source>Check for updates automatically every</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1032"/>
+ <source>Interval between update checks in days selector</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1038"/>
+ <source> days</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1081"/>
+ <source>Check for updates now button</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1084"/>
+ <source>Check for updates now</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3027"/>
+ <source>Password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1418"/>
+ <location filename="../settingswidget.ui" line="2729"/>
+ <source>Enable</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="607"/>
+ <source>toggle enable notifications</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="650"/>
+ <source>Toggle keep minimized on close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="764"/>
+ <source>Call Recordings</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1005"/>
+ <source>Toggle automatic updates</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1231"/>
+ <source>Jami Account</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1453"/>
+ <location filename="../settingswidget.ui" line="2761"/>
+ <source>Profile</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1567"/>
+ <location filename="../settingswidget.ui" line="2875"/>
+ <source>Identity</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1614"/>
+ <source>Id</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1673"/>
+ <source>Registered name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1721"/>
+ <source>Type here to register a username</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1755"/>
+ <source>Register</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1827"/>
+ <source>Change Password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1868"/>
+ <source>Export Account</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1909"/>
+ <location filename="../settingswidget.ui" line="3089"/>
+ <source>Delete Account</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1973"/>
+ <source>Linked Devices</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2078"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2142"/>
+ <source>Banned Contacts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3788"/>
+ <source>Format</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3831"/>
+ <source>Video device framerate selector</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3967"/>
+ <source>Preview unavailable</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2359"/>
+ <location filename="../settingswidget.ui" line="3187"/>
+ <source>Advanced Account Settings</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2554"/>
+ <source>SIP Account</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2925"/>
+ <source>Username</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2958"/>
+ <source>Hostname</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2991"/>
+ <source>Proxy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3461"/>
+ <source>Audio</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3511"/>
+ <source>Microphone</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3551"/>
+ <source>Audio input device selector</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3585"/>
+ <source>Output Device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3625"/>
+ <source>Choose the output device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3682"/>
+ <source>Video</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3720"/>
+ <source>Device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3766"/>
+ <source>Video device selector</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="459"/>
+ <source>A registered name should not have any spaces and must be at least three letters long</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="466"/>
+ <source>This name is already taken</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="92"/>
+ <location filename="../settingswidget.cpp" line="110"/>
+ <source>Enter an alias</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="473"/>
+ <source>Register this name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="550"/>
+ <source>Remove Device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="551"/>
+ <source>Enter this account's password to confirm the removal of this device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="558"/>
+ <source>Are you sure you wish to remove this device?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="589"/>
+ <source>Export Account Here</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="887"/>
+ <source>Select A Folder For Your Downloads</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="904"/>
+ <source>Select A Folder For Your Recordings</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>VideoOverlay</name>
+ <message>
+ <location filename="../videooverlay.ui" line="419"/>
+ <source>Call on Hold</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="89"/>
+ <source>Hold / Unhold</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="124"/>
+ <source>Chat</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="162"/>
+ <source>Mute Mic</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="244"/>
+ <source>Record call</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="325"/>
+ <source>Name label</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="390"/>
+ <source>Time elapsed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="393"/>
+ <source>00:00</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="57"/>
+ <source>Hangup</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="203"/>
+ <source>Mute Video</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>VideoView</name>
+ <message>
+ <location filename="../videoview.cpp" line="271"/>
+ <source>Share entire screen</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="274"/>
+ <source>Share screen area</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="281"/>
+ <source>Share file</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/translations/ring_client_windows_eu.ts b/translations/ring_client_windows_eu.ts
new file mode 100644
index 0000000..a50d2c9
--- /dev/null
+++ b/translations/ring_client_windows_eu.ts
@@ -0,0 +1,1589 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="eu" version="2.0">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../aboutdialog.ui" line="435"/>
+ <location filename="../aboutdialog.ui" line="465"/>
+ <source>About</source>
+ <translation>Honi buruz</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="462"/>
+ <source>about button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="478"/>
+ <source>credits button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="481"/>
+ <source>Credits</source>
+ <translation>Kredituak</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="547"/>
+ <source>Free as in Freedom</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="563"/>
+ <source>The Microsoft Windows client for Jami.
+Jami is a secured and distributed communication software.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="32"/>
+ <source>version</source>
+ <translation>bertsioa</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="39"/>
+ <source>Created by:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="73"/>
+ <source>Artwork by:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="77"/>
+ <source>Based on the SFLPhone project</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AccountItemDelegate</name>
+ <message>
+ <location filename="../accountitemdelegate.cpp" line="91"/>
+ <source>Add Account</source>
+ <translation>Gehitu kontua</translation>
+ </message>
+</context>
+<context>
+ <name>AdvancedSIPSettingsWidget</name>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="55"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="102"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="130"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="191"/>
+ <source>Connectivity</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="281"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="293"/>
+ <source>Use STUN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="317"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="329"/>
+ <source>Use TURN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="359"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="391"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="423"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="464"/>
+ <source>Media</source>
+ <translation>Multimedia</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="515"/>
+ <source>Enable Video</source>
+ <translation>Gaitu bideoa</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="539"/>
+ <source>Video Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="692"/>
+ <source>Audio Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="142"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="151"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSettingsWidget</name>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="61"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="108"/>
+ <source>Allow Calls From Untrusted Peers</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="133"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="161"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="188"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="225"/>
+ <source>Name Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="275"/>
+ <source>Address</source>
+ <translation>Helbidea</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="351"/>
+ <source>OpenDHT Configuration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="398"/>
+ <source>Enable Proxy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="454"/>
+ <source>Bootstrap</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="530"/>
+ <source>Security</source>
+ <translation>Segurtasuna</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="571"/>
+ <source>Private Key Password</source>
+ <translation>Gako pribatuaren pasahitza</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="583"/>
+ <source>User Certificate</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="622"/>
+ <source>Private Key</source>
+ <translation>Gako pribatua</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="634"/>
+ <source>CA Certificate</source>
+ <translation>CA ziurtagiria</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="766"/>
+ <source>Connectivity</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="868"/>
+ <source>Use STUN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="856"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="892"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="904"/>
+ <source>Use TURN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="934"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="966"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="998"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1039"/>
+ <source>Media</source>
+ <translation>Multimedia</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1090"/>
+ <source>Enable Video</source>
+ <translation>Gaitu bideoa</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1267"/>
+ <source>Audio Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1114"/>
+ <source>Video Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="181"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AnimatedOverlay</name>
+ <message>
+ <location filename="../animatedoverlay.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>BannedItemWidget</name>
+ <message>
+ <location filename="../banneditemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="80"/>
+ <source>name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="104"/>
+ <source>id</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>CallWidget</name>
+ <message>
+ <location filename="../callwidget.ui" line="184"/>
+ <source>Show conversations</source>
+ <translation>Erakutsi elkarrizketa</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="187"/>
+ <source>Conversations</source>
+ <translation>Elkarrizketak</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="368"/>
+ <source>Search contact text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="653"/>
+ <source>Jami is free software for universal communication which respects the freedoms and privacy of its users.</source>
+ <translation>Jami komunikazio unibertsalerako software librea da, erabiltzaileek askatasunak eta pribatutasuna aintzat hartzen dituena</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="693"/>
+ <source>
+ This is your ID.
+Copy and share it with your friends!
+ </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="806"/>
+ <source>Show ring ID QR code</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="857"/>
+ <source>Share ring ID button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="915"/>
+ <source>Double-click to copy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="956"/>
+ <source>Error while generating QR Code</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1184"/>
+ <location filename="../callwidget.ui" line="1434"/>
+ <source>best name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1208"/>
+ <source>best Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1734"/>
+ <source>Back to homepage button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1943"/>
+ <source>Add to contacts</source>
+ <translation>Gehitu kontaktuetara</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="202"/>
+ <source>Show invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="205"/>
+ <source>Invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="377"/>
+ <location filename="../callwidget.cpp" line="552"/>
+ <source>Find a new or existing contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1444"/>
+ <source>Wants to talk to you!</source>
+ <translation>Zurekin hitz egin nahi du!</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1517"/>
+ <source>Answer incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1589"/>
+ <source>Ignore incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1539"/>
+ <source>Answer</source>
+ <translation>Erantzun</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1617"/>
+ <source>Ignore</source>
+ <translation>Ezikusi</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1280"/>
+ <source>Cancel outgoing call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1305"/>
+ <source>Cancel</source>
+ <translation>Ezeztatu</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="332"/>
+ <source>Start video call</source>
+ <translation>Hasi bideo-deia</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="343"/>
+ <source>Start audio call</source>
+ <translation>Hasi audio-deia</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="354"/>
+ <source>Clear conversation</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="361"/>
+ <source>Remove contact</source>
+ <translation>Kendu kontaktua</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="373"/>
+ <source>Block contact</source>
+ <translation>Blokeatu kontaktua</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="384"/>
+ <source>Copy number</source>
+ <translation>Kopiatu zenbakia</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="561"/>
+ <source>Search your received invitations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>Contact me on Jami</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>My Id is : </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="847"/>
+ <source>%1</source>
+ <comment>%1 is the contact username</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="852"/>
+ <source>%1</source>
+ <comment>%1 is the contact unique identifier</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="675"/>
+ <source>Call incoming from %1</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>DeleteAccountDialog</name>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="35"/>
+ <source>Account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="58"/>
+ <source>Do you really want to delete the following account?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="153"/>
+ <source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="235"/>
+ <source>Permanently delete account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="241"/>
+ <source>Delete</source>
+ <translation>Ezabatu</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="278"/>
+ <source>Cancel account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="284"/>
+ <source>Cancel</source>
+ <translation>Ezeztatu</translation>
+ </message>
+</context>
+<context>
+ <name>DeviceItemWidget</name>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="105"/>
+ <source>Device Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="143"/>
+ <source>this device</source>
+ <translation>gailu hau</translation>
+ </message>
+</context>
+<context>
+ <name>InviteButtonsWidget</name>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="83"/>
+ <source>Accept</source>
+ <translation>Onartu</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="131"/>
+ <source>Refuse</source>
+ <translation>Ukatu</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="179"/>
+ <source>Block</source>
+ <translation>Bloketu</translation>
+ </message>
+</context>
+<context>
+ <name>LinkDeviceDialog</name>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="62"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="117"/>
+ <source>Password</source>
+ <translation>Pasahitza</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="184"/>
+ <source>Ok</source>
+ <translation>Ados</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="218"/>
+ <source>Cancel</source>
+ <translation>Ezeztatu</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="279"/>
+ <source>Exporting account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="402"/>
+ <source>Your PIN is</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="432"/>
+ <source>PIN</source>
+ <translation>PIN-a</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="477"/>
+ <source>This pin and the account password should be entered in your device within 10 minutes.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="553"/>
+ <source>Close</source>
+ <translation>Itxi</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="34"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="96"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="110"/>
+ <source>Something went wrong.
+Please try again later.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="83"/>
+ <source>Settings</source>
+ <translation>Ezarpenak</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="94"/>
+ <source>Exit</source>
+ <translation>Irten</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="111"/>
+ <source>About</source>
+ <translation>Honi buruz</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="435"/>
+ <source>Jami</source>
+ <translation>Jami</translation>
+ </message>
+</context>
+<context>
+ <name>NameRegistrationDialog</name>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="35"/>
+ <source>Set Registered Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="163"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="244"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="250"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="256"/>
+ <source>Password</source>
+ <translation>Pasahitza</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="323"/>
+ <source>Register</source>
+ <translation>Erregistratu</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="357"/>
+ <source>Cancel</source>
+ <translation>Ezeztatu</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="424"/>
+ <source>Registering Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="548"/>
+ <source>Something went wrong</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="618"/>
+ <source>Close</source>
+ <translation>Itxi</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="82"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="85"/>
+ <source>Network error</source>
+ <translation>Sare errorea</translation>
+ </message>
+</context>
+<context>
+ <name>NewWizardWidget</name>
+ <message>
+ <location filename="../newwizardwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="141"/>
+ <source>Welcome Label</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="147"/>
+ <source> Welcome to</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="185"/>
+ <source>Welcome Logo</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="239"/>
+ <source>Create Jami account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="245"/>
+ <source>Push button for Jami account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="251"/>
+ <source>Create a Jami account</source>
+ <translation>Sortu Jami kontua</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="282"/>
+ <source>Link device button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="288"/>
+ <source>Push button for device linkage start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="291"/>
+ <source>Link this device to an account</source>
+ <translation>Estekatu gailua kontu batekin</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="328"/>
+ <source>Create Jami SIP account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="334"/>
+ <source>Push button for Jami SIP account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="340"/>
+ <source>Create a SIP account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="405"/>
+ <source>Link this device to an existing account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="469"/>
+ <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">To link this device to another account, you first </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">need to obtain a PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> code. To generate the PIN code:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Account management setting</span><span style=" font-size:14px;"> of a previous device</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choose the </span><span style=" font-size:14px; font-weight:600;">Jami account</span><span style=" font-size:14px;"> you want to use</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Devices</span><span style=" font-size:14px;"> tab</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Select </span><span style=" font-size:14px; font-weight:600;">Add a device</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">You will get the necessary PIN to complete this form. The PIN is only valid for </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutes</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="531"/>
+ <source>Enter your pin:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="599"/>
+ <source>Or import a file:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="626"/>
+ <source>Link from exported account archive file</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="629"/>
+ <location filename="../newwizardwidget.cpp" line="83"/>
+ <location filename="../newwizardwidget.cpp" line="218"/>
+ <source>(None)</source>
+ <translation>(Bat ere ez)</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="705"/>
+ <source>Password:</source>
+ <translation>Pasahitza:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="799"/>
+ <location filename="../newwizardwidget.ui" line="1586"/>
+ <source>Profile</source>
+ <translation>Profila</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="953"/>
+ <location filename="../newwizardwidget.ui" line="1767"/>
+ <source>Profile name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1027"/>
+ <source>Account</source>
+ <translation>Kontua</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1136"/>
+ <source>Register your username.
+This will reserve the username so that only you can use it.
+Your friends will be able to call you with your usename
+instead of using your ID.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1142"/>
+ <source>Public username checkbox</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1145"/>
+ <source>Checkbox selecting if the user wants a public username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1148"/>
+ <source>Register public username</source>
+ <translation>Erregistratu izen publikoa</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1367"/>
+ <source>Public username edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1373"/>
+ <source>Choose your username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1289"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1295"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1301"/>
+ <location filename="../newwizardwidget.ui" line="2213"/>
+ <source>Password</source>
+ <translation>Pasahitza</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1211"/>
+ <location filename="../newwizardwidget.ui" line="1217"/>
+ <source>Password confirmation text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1223"/>
+ <source>Confirm password</source>
+ <translation>Berretsi pasahitza</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1814"/>
+ <source>SIP Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1973"/>
+ <source>SIP Server edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1979"/>
+ <source>Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2045"/>
+ <source>SIP proxy input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2051"/>
+ <source>SIP proxy text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2057"/>
+ <source>Proxy</source>
+ <translation>Proxya</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2123"/>
+ <source>SIP username input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2129"/>
+ <source>SIP Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2135"/>
+ <source>Username</source>
+ <translation>Erabiltzaile-izena</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2201"/>
+ <location filename="../newwizardwidget.ui" line="2207"/>
+ <source>SIP Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message utf8="true">
+ <location filename="../newwizardwidget.ui" line="2282"/>
+ <source>Generating your Jami account…</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2356"/>
+ <source>Previous page button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2362"/>
+ <source>push button to access previous page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2365"/>
+ <source>Previous</source>
+ <translation>Aurrekoa</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2396"/>
+ <source>Cancel account create/link</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2402"/>
+ <source>push button to cancel account creation or linking</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2405"/>
+ <source>Back</source>
+ <translation>Atzera</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2442"/>
+ <source>Next page Button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2448"/>
+ <source>Push button to access next page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2451"/>
+ <source>Next</source>
+ <translation>Hurrengoa</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="75"/>
+ <source>Open File</source>
+ <translation>Ireki fitxategia</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="77"/>
+ <source>Jami archive files (*.gz); All files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="123"/>
+ <source>Your account needs to be migrated. Enter your password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="419"/>
+ <source>Migrating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="412"/>
+ <source>Importing account archive...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="404"/>
+ <source>Generating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="422"/>
+ <source>Generating your SIP account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="533"/>
+ <source>Error creating account</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PasswordDialog</name>
+ <message>
+ <location filename="../passworddialog.ui" line="32"/>
+ <source>Change Account Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="97"/>
+ <source>Enter Current Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="169"/>
+ <source>Enter New Password</source>
+ <translation>Sartu pasahitz berria</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="190"/>
+ <source>Confirm New Password</source>
+ <translation>Baieztatu pasahitz berria</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="247"/>
+ <source>Confirm</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="290"/>
+ <source>Cancel</source>
+ <translation>Ezeztatu</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="143"/>
+ <source>Current Password Incorrect</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PhotoBoothDialog</name>
+ <message>
+ <location filename="../photoboothdialog.ui" line="14"/>
+ <source>Photobooth</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PhotoboothWidget</name>
+ <message>
+ <location filename="../photoboothwidget.ui" line="20"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.ui" line="120"/>
+ <source>Photobooth display</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="92"/>
+ <source>Choose File</source>
+ <translation>Hautatu fitxategia</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="94"/>
+ <source>Image Files (*.jpg *.jpeg *.png)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PrivateBridging</name>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Choose File</source>
+ <translation>Hautatu fitxategia</translation>
+ </message>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../utils.cpp" line="183"/>
+ <source>No default mail client found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="43"/>
+ <location filename="../deviceitemwidget.cpp" line="85"/>
+ <source>Edit Device Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="44"/>
+ <source>Unlink Device From Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="80"/>
+ <source>Save new device name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.cpp" line="39"/>
+ <source>Add as contact</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>RingButton</name>
+ <message>
+ <location filename="../ringbutton.ui" line="140"/>
+ <source>Select folder</source>
+ <translation>Hautatu karpeta</translation>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <location filename="../settingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="141"/>
+ <source>Settings</source>
+ <translation>Ezarpenak</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="229"/>
+ <source>Account</source>
+ <translation>Kontua</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="267"/>
+ <location filename="../settingswidget.ui" line="503"/>
+ <source>General</source>
+ <translation>Orokorra</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="305"/>
+ <location filename="../settingswidget.ui" line="3416"/>
+ <source>Audio / Video</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="542"/>
+ <source>System</source>
+ <translation>Sistema</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="610"/>
+ <source>Enable desktop notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="653"/>
+ <source>Keep minimized on close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="678"/>
+ <source>Download folder</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="811"/>
+ <source>Save in</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="904"/>
+ <source>Always Recording</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="943"/>
+ <source>Updates</source>
+ <translation>Eguneratzeak</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1008"/>
+ <source>Check for updates automatically every</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1032"/>
+ <source>Interval between update checks in days selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1038"/>
+ <source> days</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1081"/>
+ <source>Check for updates now button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1084"/>
+ <source>Check for updates now</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3027"/>
+ <source>Password</source>
+ <translation>Pasahitza</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1418"/>
+ <location filename="../settingswidget.ui" line="2729"/>
+ <source>Enable</source>
+ <translation>Gaitu</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="607"/>
+ <source>toggle enable notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="650"/>
+ <source>Toggle keep minimized on close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="764"/>
+ <source>Call Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1005"/>
+ <source>Toggle automatic updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1231"/>
+ <source>Jami Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1453"/>
+ <location filename="../settingswidget.ui" line="2761"/>
+ <source>Profile</source>
+ <translation>Profila</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1567"/>
+ <location filename="../settingswidget.ui" line="2875"/>
+ <source>Identity</source>
+ <translation>Identitatea</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1614"/>
+ <source>Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1673"/>
+ <source>Registered name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1721"/>
+ <source>Type here to register a username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1755"/>
+ <source>Register</source>
+ <translation>Erregistratu</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1827"/>
+ <source>Change Password</source>
+ <translation>Aldatu pasahitza</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1868"/>
+ <source>Export Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1909"/>
+ <location filename="../settingswidget.ui" line="3089"/>
+ <source>Delete Account</source>
+ <translation>Ezabatu kontua</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1973"/>
+ <source>Linked Devices</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2078"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2142"/>
+ <source>Banned Contacts</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3788"/>
+ <source>Format</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3831"/>
+ <source>Video device framerate selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3967"/>
+ <source>Preview unavailable</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2359"/>
+ <location filename="../settingswidget.ui" line="3187"/>
+ <source>Advanced Account Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2554"/>
+ <source>SIP Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2925"/>
+ <source>Username</source>
+ <translation>Erabiltzaile-izena</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2958"/>
+ <source>Hostname</source>
+ <translation>Ostalari-izena</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2991"/>
+ <source>Proxy</source>
+ <translation>Proxya</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3461"/>
+ <source>Audio</source>
+ <translation>Audioa</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3511"/>
+ <source>Microphone</source>
+ <translation>Mikrofonoa</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3551"/>
+ <source>Audio input device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3585"/>
+ <source>Output Device</source>
+ <translation>Irteera gailua</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3625"/>
+ <source>Choose the output device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3682"/>
+ <source>Video</source>
+ <translation>Bideoa</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3720"/>
+ <source>Device</source>
+ <translation>Gailua</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3766"/>
+ <source>Video device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="459"/>
+ <source>A registered name should not have any spaces and must be at least three letters long</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="466"/>
+ <source>This name is already taken</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="92"/>
+ <location filename="../settingswidget.cpp" line="110"/>
+ <source>Enter an alias</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="473"/>
+ <source>Register this name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="550"/>
+ <source>Remove Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="551"/>
+ <source>Enter this account's password to confirm the removal of this device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="558"/>
+ <source>Are you sure you wish to remove this device?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="589"/>
+ <source>Export Account Here</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="887"/>
+ <source>Select A Folder For Your Downloads</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="904"/>
+ <source>Select A Folder For Your Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>VideoOverlay</name>
+ <message>
+ <location filename="../videooverlay.ui" line="419"/>
+ <source>Call on Hold</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="89"/>
+ <source>Hold / Unhold</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="124"/>
+ <source>Chat</source>
+ <translation>Txata</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="162"/>
+ <source>Mute Mic</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="244"/>
+ <source>Record call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="325"/>
+ <source>Name label</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="390"/>
+ <source>Time elapsed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="393"/>
+ <source>00:00</source>
+ <translation>00:00</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="57"/>
+ <source>Hangup</source>
+ <translation>Eseki</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="203"/>
+ <source>Mute Video</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>VideoView</name>
+ <message>
+ <location filename="../videoview.cpp" line="271"/>
+ <source>Share entire screen</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="274"/>
+ <source>Share screen area</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="281"/>
+ <source>Share file</source>
+ <translation>Partekatu fitxategia</translation>
+ </message>
+</context>
+</TS>
\ No newline at end of file
diff --git a/translations/ring_client_windows_fa_IR.ts b/translations/ring_client_windows_fa_IR.ts
new file mode 100644
index 0000000..a31c68b
--- /dev/null
+++ b/translations/ring_client_windows_fa_IR.ts
@@ -0,0 +1,1602 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="fa_IR" version="2.0">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../aboutdialog.ui" line="435"/>
+ <location filename="../aboutdialog.ui" line="465"/>
+ <source>About</source>
+ <translation>درباره</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="462"/>
+ <source>about button</source>
+ <translation>دکمه درباره</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="478"/>
+ <source>credits button</source>
+ <translation>دکمه دستاندرکاران</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="481"/>
+ <source>Credits</source>
+ <translation>دستاندرکاران</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="547"/>
+ <source>Free as in Freedom</source>
+ <translation>آزاد مانند آزادی</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="563"/>
+ <source>The Microsoft Windows client for Jami.
+Jami is a secured and distributed communication software.</source>
+ <translation>سرویسگیرنده ویندوز مایکروسافت برای جمی.
+جمی یک نرم افزار ارتباطی امن و توزیع شده است.</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="32"/>
+ <source>version</source>
+ <translation>نسخه</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="39"/>
+ <source>Created by:</source>
+ <translation>ساختهشده توسط:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="73"/>
+ <source>Artwork by:</source>
+ <translation>اثر هنری توسط:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="77"/>
+ <source>Based on the SFLPhone project</source>
+ <translation>برمبنای پروژه SFLPhone</translation>
+ </message>
+</context>
+<context>
+ <name>AccountItemDelegate</name>
+ <message>
+ <location filename="../accountitemdelegate.cpp" line="91"/>
+ <source>Add Account</source>
+ <translation>افزودن حساب</translation>
+ </message>
+</context>
+<context>
+ <name>AdvancedSIPSettingsWidget</name>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>فرم</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="55"/>
+ <source>Call Settings</source>
+ <translation>تنظیمات تماس</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="102"/>
+ <source>Auto Answer Calls</source>
+ <translation>پاسخگویی خودکار تماسها</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="130"/>
+ <source>Enable Custom Ringtone</source>
+ <translation>فعالسازی صدای زنگ سفارشی</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="191"/>
+ <source>Connectivity</source>
+ <translation>اتصال</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="281"/>
+ <source>STUN Address</source>
+ <translation>نشانی STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="293"/>
+ <source>Use STUN</source>
+ <translation>استفاده از STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="317"/>
+ <source>Use UPnP</source>
+ <translation>استفاده از UPnP</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="329"/>
+ <source>Use TURN</source>
+ <translation>استفاده از TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="359"/>
+ <source>TURN Password</source>
+ <translation>گذرواژه TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="391"/>
+ <source>TURN Username</source>
+ <translation>نام کاربری TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="423"/>
+ <source>TURN Address</source>
+ <translation>نشانی TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="464"/>
+ <source>Media</source>
+ <translation>رسانه</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="515"/>
+ <source>Enable Video</source>
+ <translation>فعّال کردن ویدیو</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="539"/>
+ <source>Video Codecs</source>
+ <translation>کدکهای ویدیویی</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="692"/>
+ <source>Audio Codecs</source>
+ <translation>رمزینههای صوتی</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="142"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation>فایلهای صوتی (*.wav *.ogg *.opus *.mp3 *.aiff *.wma)</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="151"/>
+ <source>Add a custom ringtone</source>
+ <translation>افزودن یک صدای زنگ سفارشی</translation>
+ </message>
+</context>
+<context>
+ <name>AdvancedSettingsWidget</name>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>فرم</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="61"/>
+ <source>Call Settings</source>
+ <translation>تنظیمات تماس</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="108"/>
+ <source>Allow Calls From Untrusted Peers</source>
+ <translation>اجازه تماس به همتاهای ناشناخته</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="133"/>
+ <source>Auto Answer Calls</source>
+ <translation>پاسخگویی خودکار تماسها</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="161"/>
+ <source>Enable Custom Ringtone</source>
+ <translation>فعالسازی صدای زنگ سفارشی</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="188"/>
+ <source>Add a custom ringtone</source>
+ <translation>افزودن یک صدای زنگ سفارشی</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="225"/>
+ <source>Name Server</source>
+ <translation>سرور نام</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="275"/>
+ <source>Address</source>
+ <translation>نشانی</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="351"/>
+ <source>OpenDHT Configuration</source>
+ <translation>پکربندی OpenDHT </translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="398"/>
+ <source>Enable Proxy</source>
+ <translation>فعال سازی پروکسی</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="454"/>
+ <source>Bootstrap</source>
+ <translation>خود راه اندازی</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="530"/>
+ <source>Security</source>
+ <translation>امنیت</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="571"/>
+ <source>Private Key Password</source>
+ <translation>گذرواژه کلید خصوصی</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="583"/>
+ <source>User Certificate</source>
+ <translation>گواهی کاربر</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="622"/>
+ <source>Private Key</source>
+ <translation>کلید خصوصی</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="634"/>
+ <source>CA Certificate</source>
+ <translation>گواهی CA</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="766"/>
+ <source>Connectivity</source>
+ <translation>اتصال</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="868"/>
+ <source>Use STUN</source>
+ <translation>استفاده از STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="856"/>
+ <source>STUN Address</source>
+ <translation>نشانی STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="892"/>
+ <source>Use UPnP</source>
+ <translation>استفاده از UPnP</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="904"/>
+ <source>Use TURN</source>
+ <translation>استفاده از TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="934"/>
+ <source>TURN Password</source>
+ <translation>گذرواژه TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="966"/>
+ <source>TURN Username</source>
+ <translation>نامکاربری TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="998"/>
+ <source>TURN Address</source>
+ <translation>نشانی TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1039"/>
+ <source>Media</source>
+ <translation>رسانه</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1090"/>
+ <source>Enable Video</source>
+ <translation>فعّال کردن ویدیو</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1267"/>
+ <source>Audio Codecs</source>
+ <translation>رمزینههای صوتی</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1114"/>
+ <source>Video Codecs</source>
+ <translation>کدکهای ویدیویی</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="181"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation>فایلهای صوتی (*.wav *.ogg *.opus *.mp3 *.aiff *.wma)</translation>
+ </message>
+</context>
+<context>
+ <name>AnimatedOverlay</name>
+ <message>
+ <location filename="../animatedoverlay.ui" line="14"/>
+ <source>Form</source>
+ <translation>فرم</translation>
+ </message>
+</context>
+<context>
+ <name>BannedItemWidget</name>
+ <message>
+ <location filename="../banneditemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>فرم</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="80"/>
+ <source>name</source>
+ <translation>نام</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="104"/>
+ <source>id</source>
+ <translation>شناسه</translation>
+ </message>
+</context>
+<context>
+ <name>CallWidget</name>
+ <message>
+ <location filename="../callwidget.ui" line="184"/>
+ <source>Show conversations</source>
+ <translation>نمایش گفتگوها</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="187"/>
+ <source>Conversations</source>
+ <translation>گفتگوها</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="368"/>
+ <source>Search contact text input</source>
+ <translation>جستجوی متن ورودی مخاطب</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="653"/>
+ <source>Jami is free software for universal communication which respects the freedoms and privacy of its users.</source>
+ <translation>جمی نرمافزار آزاد برای ارتباط جهانی است که به آزادیها و محرمانگی کاربرانش احترام میگذارد.</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="693"/>
+ <source>
+ This is your ID.
+Copy and share it with your friends!
+ </source>
+ <translation>
+این شناسه شماست.
+آن را کپی کنید و با دوستان خود به اشتراک بگذارید!
+</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="806"/>
+ <source>Show ring ID QR code</source>
+ <translation>نمایش کد QR شناسه رینگ</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="857"/>
+ <source>Share ring ID button</source>
+ <translation>به اشتراک گذاری دکمه آیدی رینگ</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="915"/>
+ <source>Double-click to copy</source>
+ <translation>برای کپی کردن دو بار کلیک کنید</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="956"/>
+ <source>Error while generating QR Code</source>
+ <translation>خطا در هنگام تولید کد QR</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1184"/>
+ <location filename="../callwidget.ui" line="1434"/>
+ <source>best name</source>
+ <translation>بهترین نام</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1208"/>
+ <source>best Id</source>
+ <translation>بهترین شناسه</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1734"/>
+ <source>Back to homepage button</source>
+ <translation>دکمه برگشت به صفحه نخست</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1943"/>
+ <source>Add to contacts</source>
+ <translation>افزودن به مخاطبان</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="202"/>
+ <source>Show invites</source>
+ <translation>نمایش دعوت ها</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="205"/>
+ <source>Invites</source>
+ <translation>دعوت ها</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="377"/>
+ <location filename="../callwidget.cpp" line="552"/>
+ <source>Find a new or existing contact</source>
+ <translation>یافتن مخاطب جدید یا موجود</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1444"/>
+ <source>Wants to talk to you!</source>
+ <translation>میخواهد با شما حرف بزند!</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1517"/>
+ <source>Answer incoming call button</source>
+ <translation>دکمه پاسخ به تماس ورودی</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1589"/>
+ <source>Ignore incoming call button</source>
+ <translation>دکمه نادیده گرفتن تماس ورودی</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1539"/>
+ <source>Answer</source>
+ <translation>پاسخ</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1617"/>
+ <source>Ignore</source>
+ <translation>رد</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1280"/>
+ <source>Cancel outgoing call</source>
+ <translation>لغو تماس خروجی</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1305"/>
+ <source>Cancel</source>
+ <translation>لغو</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="332"/>
+ <source>Start video call</source>
+ <translation>شروع تماس ویدیویی</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="343"/>
+ <source>Start audio call</source>
+ <translation>شروع تماس صوتی</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="354"/>
+ <source>Clear conversation</source>
+ <translation>پاک کردن گفتگو</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="361"/>
+ <source>Remove contact</source>
+ <translation>حذف مخاطب</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="373"/>
+ <source>Block contact</source>
+ <translation>مسدودسازی مخاطب</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="384"/>
+ <source>Copy number</source>
+ <translation>رونوشت از شماره</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="561"/>
+ <source>Search your received invitations</source>
+ <translation>جستجوی دعوت نامههای دریافتشده شما</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>Contact me on Jami</source>
+ <translation>با من روی جمی در تماس باشید!</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>My Id is : </source>
+ <translation>شناسه من:</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="847"/>
+ <source>%1</source>
+ <comment>%1 is the contact username</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="852"/>
+ <source>%1</source>
+ <comment>%1 is the contact unique identifier</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="675"/>
+ <source>Call incoming from %1</source>
+ <translation>تماس ورودی از %1</translation>
+ </message>
+</context>
+<context>
+ <name>DeleteAccountDialog</name>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="35"/>
+ <source>Account deletion</source>
+ <translation>حذف حساب</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="58"/>
+ <source>Do you really want to delete the following account?</source>
+ <translation>آیا واقعا میخواهید حساب زیر را پاک کنید؟</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="153"/>
+ <source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
+ <translation>اگر این حساب برونبرد نشده یا به دستگاه دیگری اضافه نشده باشد، برگشتناپذیر خواهد بود.</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="235"/>
+ <source>Permanently delete account</source>
+ <translation>حذف حساب برای همیشه</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="241"/>
+ <source>Delete</source>
+ <translation>حذف</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="278"/>
+ <source>Cancel account deletion</source>
+ <translation>لغو حذف حساب</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="284"/>
+ <source>Cancel</source>
+ <translation>لغو</translation>
+ </message>
+</context>
+<context>
+ <name>DeviceItemWidget</name>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>فرم</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="105"/>
+ <source>Device Id</source>
+ <translation>شناسه دستگاه</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="143"/>
+ <source>this device</source>
+ <translation>این دستگاه</translation>
+ </message>
+</context>
+<context>
+ <name>InviteButtonsWidget</name>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="83"/>
+ <source>Accept</source>
+ <translation>پذیرش</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="131"/>
+ <source>Refuse</source>
+ <translation>رد</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="179"/>
+ <source>Block</source>
+ <translation>مسدود</translation>
+ </message>
+</context>
+<context>
+ <name>LinkDeviceDialog</name>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation>گفتگو</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="62"/>
+ <source>Enter your account password</source>
+ <translation>گذرواژه حسابتان را وارد کنید</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="117"/>
+ <source>Password</source>
+ <translation>گذرواژه</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="184"/>
+ <source>Ok</source>
+ <translation>باشه</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="218"/>
+ <source>Cancel</source>
+ <translation>لغو</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="279"/>
+ <source>Exporting account</source>
+ <translation>برونبرد حساب</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="402"/>
+ <source>Your PIN is</source>
+ <translation>پین شما</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="432"/>
+ <source>PIN</source>
+ <translation>پین</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="477"/>
+ <source>This pin and the account password should be entered in your device within 10 minutes.</source>
+ <translation>این پین و گذرواژه حساب باید ظرف 10 دقیقه در دستگاه شما وارد شود.</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="553"/>
+ <source>Close</source>
+ <translation>بستن</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="34"/>
+ <source>Link Another Device</source>
+ <translation>پیوند یک دستگاه دیگر</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="96"/>
+ <source>Incorrect password</source>
+ <translation>گذرواژه ناصحیح</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="110"/>
+ <source>Something went wrong.
+Please try again later.</source>
+ <translation>مشکلی پیش آمد.
+ لطفا بعدا دوباره امتحان کنید.</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="83"/>
+ <source>Settings</source>
+ <translation>تنظیمات</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="94"/>
+ <source>Exit</source>
+ <translation>خروج</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="111"/>
+ <source>About</source>
+ <translation>درباره</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="435"/>
+ <source>Jami</source>
+ <translation>جمی</translation>
+ </message>
+</context>
+<context>
+ <name>NameRegistrationDialog</name>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="35"/>
+ <source>Set Registered Name</source>
+ <translation>تنظیم نام ثبتشده</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="163"/>
+ <source>Enter your account password</source>
+ <translation>گذرواژه حسابتان را وارد کنید</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="244"/>
+ <source>Password text input</source>
+ <translation>ورودی متن گذرواژه</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="250"/>
+ <source>Password text entry</source>
+ <translation>ورودی متن گذرواژه</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="256"/>
+ <source>Password</source>
+ <translation>گذرواژه</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="323"/>
+ <source>Register</source>
+ <translation>ثبتنام</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="357"/>
+ <source>Cancel</source>
+ <translation>لغو</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="424"/>
+ <source>Registering Name</source>
+ <translation>ثبت نام</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="548"/>
+ <source>Something went wrong</source>
+ <translation>مشکلی پیش آمد.</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="618"/>
+ <source>Close</source>
+ <translation>بستن</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="82"/>
+ <source>Incorrect password</source>
+ <translation>گذرواژه ناصحیح</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="85"/>
+ <source>Network error</source>
+ <translation>خطای شبکه</translation>
+ </message>
+</context>
+<context>
+ <name>NewWizardWidget</name>
+ <message>
+ <location filename="../newwizardwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>فرم</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="141"/>
+ <source>Welcome Label</source>
+ <translation>برچست خوش آمد</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="147"/>
+ <source> Welcome to</source>
+ <translation>خوش آمدید به</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="185"/>
+ <source>Welcome Logo</source>
+ <translation>لوگو خوش آمد</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="239"/>
+ <source>Create Jami account button</source>
+ <translation>دکمه ایجاد حساب جمی</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="245"/>
+ <source>Push button for Jami account creation start trigger</source>
+ <translation>راهانداز دکمه فشاری برای ایجاد حساب جمی </translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="251"/>
+ <source>Create a Jami account</source>
+ <translation>ایجاد یک حساب جمی</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="282"/>
+ <source>Link device button</source>
+ <translation>دکمه پیوند دستگاه</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="288"/>
+ <source>Push button for device linkage start trigger</source>
+ <translation>راهانداز دکمه فشاری برای پیوند دستگاه</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="291"/>
+ <source>Link this device to an account</source>
+ <translation>پیوند این دستگاه به یک حساب</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="328"/>
+ <source>Create Jami SIP account button</source>
+ <translation>دکمه ایجاد حساب SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="334"/>
+ <source>Push button for Jami SIP account creation start trigger</source>
+ <translation>راهانداز دکمه فشاری برای ایجاد حساب SIP جمی </translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="340"/>
+ <source>Create a SIP account</source>
+ <translation>ایجاد یک حساب SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="405"/>
+ <source>Link this device to an existing account</source>
+ <translation>پیوند این دستگاه به یک حساب کاربری موجود</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="469"/>
+ <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">To link this device to another account, you first </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">need to obtain a PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> code. To generate the PIN code:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Account management setting</span><span style=" font-size:14px;"> of a previous device</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choose the </span><span style=" font-size:14px; font-weight:600;">Jami account</span><span style=" font-size:14px;"> you want to use</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Devices</span><span style=" font-size:14px;"> tab</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Select </span><span style=" font-size:14px; font-weight:600;">Add a device</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">You will get the necessary PIN to complete this form. The PIN is only valid for </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutes</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></source>
+ <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">برای پیوند این دستگاه به حسابی دیگر شما در ابتدا </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">نیاز است کد پین را تولید کنید.</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> برای تولید کد پین:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">به </span><span style=" font-size:14px; font-weight:600;">تنظیمات مدیریت حساب</span><span style=" font-size:14px;"> در دستگاه قبلی رفته،</li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">حساب جمی را </span><span style=" font-size:14px; font-weight:600;">که میخواهید استفاده کنید،</span><span style=" font-size:14px;"> انتخاب کنید</span></li><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">به برگه </span><span style=" font-size:14px; font-weight:600;">دستگاهها</span><span style=" font-size:14px;"> بروید و افزودن یک دستگاه را </span>انتخاب کنید</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">شما پین لازم برای تکمیل این فرم را دریافت خواهید کرد که تنها برای </span>10 دقیقه معتبر خواهد بود<span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="531"/>
+ <source>Enter your pin:</source>
+ <translation>پین خود را وارد کنید:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="599"/>
+ <source>Or import a file:</source>
+ <translation>یا درونریزی یک پرونده:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="626"/>
+ <source>Link from exported account archive file</source>
+ <translation>پیوند از فایل بایگانی حساب برونبردشده</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="629"/>
+ <location filename="../newwizardwidget.cpp" line="83"/>
+ <location filename="../newwizardwidget.cpp" line="218"/>
+ <source>(None)</source>
+ <translation>(هیچ)</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="705"/>
+ <source>Password:</source>
+ <translation>گذرواژه:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="799"/>
+ <location filename="../newwizardwidget.ui" line="1586"/>
+ <source>Profile</source>
+ <translation>نمایه</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="953"/>
+ <location filename="../newwizardwidget.ui" line="1767"/>
+ <source>Profile name</source>
+ <translation>نام نمایه</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1027"/>
+ <source>Account</source>
+ <translation>حساب کاربری</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1136"/>
+ <source>Register your username.
+This will reserve the username so that only you can use it.
+Your friends will be able to call you with your usename
+instead of using your ID.</source>
+ <translation>نامکاربری خود را ثبت کنید.
+با این کار نامکاربری رزرو میشود تا فقط شما بتوانید از آن استفاده کنید.
+ دوستان شما میتوانند به جای استفاده از شناسه شما با نامکاربریتان با شما تماس بگیرند.</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1142"/>
+ <source>Public username checkbox</source>
+ <translation>چکباکس نامکاربری عمومی</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1145"/>
+ <source>Checkbox selecting if the user wants a public username</source>
+ <translation>چکباکس انتخاب اینکه آیا کاربر یک نامکاربری عمومی میخواهد</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1148"/>
+ <source>Register public username</source>
+ <translation>ثبت نامکاربری عمومی</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1367"/>
+ <source>Public username edit</source>
+ <translation>ویرایش نام کاربری عمومی</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1373"/>
+ <source>Choose your username</source>
+ <translation>نام کاربری خود را انتخاب کنید</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1289"/>
+ <source>Password text input</source>
+ <translation>ورودی متن گذرواژه</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1295"/>
+ <source>Password text entry</source>
+ <translation>ورودی متن گذرواژه</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1301"/>
+ <location filename="../newwizardwidget.ui" line="2213"/>
+ <source>Password</source>
+ <translation>گذرواژه</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1211"/>
+ <location filename="../newwizardwidget.ui" line="1217"/>
+ <source>Password confirmation text input</source>
+ <translation>متن واردشده تایید گذرواژه</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1223"/>
+ <source>Confirm password</source>
+ <translation>تأیید گذرواژه</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1814"/>
+ <source>SIP Account</source>
+ <translation>حساب کاربری سیپ</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1973"/>
+ <source>SIP Server edit</source>
+ <translation>ویرایش سرور SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1979"/>
+ <source>Server</source>
+ <translation>سرور</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2045"/>
+ <source>SIP proxy input</source>
+ <translation>پروکسی SIP واردشده</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2051"/>
+ <source>SIP proxy text entry</source>
+ <translation>ورودی متن پروکسی SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2057"/>
+ <source>Proxy</source>
+ <translation>پیشکار یا پروکسی</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2123"/>
+ <source>SIP username input</source>
+ <translation>ورودی نام کاربری SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2129"/>
+ <source>SIP Password text entry</source>
+ <translation>ورودی متن گذرواژه SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2135"/>
+ <source>Username</source>
+ <translation>نام کاربری</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2201"/>
+ <location filename="../newwizardwidget.ui" line="2207"/>
+ <source>SIP Password text input</source>
+ <translation>متن گذرواژه SIP واردشده</translation>
+ </message>
+ <message utf8="true">
+ <location filename="../newwizardwidget.ui" line="2282"/>
+ <source>Generating your Jami account…</source>
+ <translation>تولید حساب جمی شما...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2356"/>
+ <source>Previous page button</source>
+ <translation>دکمه صفحه قبلی</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2362"/>
+ <source>push button to access previous page of wizard</source>
+ <translation>دکمه فشاری برای دسترسی به صفحه قبلی wizard</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2365"/>
+ <source>Previous</source>
+ <translation>پیشین</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2396"/>
+ <source>Cancel account create/link</source>
+ <translation>لغو ساخت/پیوند حساب</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2402"/>
+ <source>push button to cancel account creation or linking</source>
+ <translation>دکمه فشاری برای لغو ایجاد یا پیوند حساب</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2405"/>
+ <source>Back</source>
+ <translation>بازگشت</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2442"/>
+ <source>Next page Button</source>
+ <translation>دکمه صفحه بعد</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2448"/>
+ <source>Push button to access next page of wizard</source>
+ <translation>دکمه فشاری برای دسترسی به صفحه بعدی wizard</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2451"/>
+ <source>Next</source>
+ <translation>بعدی</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="75"/>
+ <source>Open File</source>
+ <translation>باز کردن فایل</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="77"/>
+ <source>Jami archive files (*.gz); All files (*)</source>
+ <translation>فایلهای بایگانی جمی (*.gz)؛ تمام فایلها (*)</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="123"/>
+ <source>Your account needs to be migrated. Enter your password.</source>
+ <translation>نیاز است که حساب شما انتقال یابد. گذرواژه خود را وارد کنید.</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="419"/>
+ <source>Migrating your Jami account...</source>
+ <translation>در حال انتقال حساب جمی شما...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="412"/>
+ <source>Importing account archive...</source>
+ <translation>ورود بایگانی حساب...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="404"/>
+ <source>Generating your Jami account...</source>
+ <translation>تولید حساب جمی شما...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="422"/>
+ <source>Generating your SIP account...</source>
+ <translation>تولید حساب SIP شما...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="533"/>
+ <source>Error creating account</source>
+ <translation>خطای ایجاد حساب</translation>
+ </message>
+</context>
+<context>
+ <name>PasswordDialog</name>
+ <message>
+ <location filename="../passworddialog.ui" line="32"/>
+ <source>Change Account Password</source>
+ <translation>تغییر گذرواژه حساب</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="97"/>
+ <source>Enter Current Password</source>
+ <translation>ورود گذرواژه فعلی</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="169"/>
+ <source>Enter New Password</source>
+ <translation>ورود گذرواژه جدید</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="190"/>
+ <source>Confirm New Password</source>
+ <translation>تایید گذرواژه جدید</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="247"/>
+ <source>Confirm</source>
+ <translation>تایید</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="290"/>
+ <source>Cancel</source>
+ <translation>لغو</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="143"/>
+ <source>Current Password Incorrect</source>
+ <translation>گذرواژه فعلی نادرست است.</translation>
+ </message>
+</context>
+<context>
+ <name>PhotoBoothDialog</name>
+ <message>
+ <location filename="../photoboothdialog.ui" line="14"/>
+ <source>Photobooth</source>
+ <translation>غرفه عکس</translation>
+ </message>
+</context>
+<context>
+ <name>PhotoboothWidget</name>
+ <message>
+ <location filename="../photoboothwidget.ui" line="20"/>
+ <source>Form</source>
+ <translation>فرم</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.ui" line="120"/>
+ <source>Photobooth display</source>
+ <translation>نمایش غرفه عکس</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="92"/>
+ <source>Choose File</source>
+ <translation>انتخاب فایل</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="94"/>
+ <source>Image Files (*.jpg *.jpeg *.png)</source>
+ <translation>فایلهای تصویر (*.jpg *.jpeg *.png)</translation>
+ </message>
+</context>
+<context>
+ <name>PrivateBridging</name>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Choose File</source>
+ <translation>انتخاب فایل</translation>
+ </message>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Files (*)</source>
+ <translation>فایلها (*)</translation>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../utils.cpp" line="183"/>
+ <source>No default mail client found</source>
+ <translation>هیچ سرویسگیرنده ایمیل پیشفرضی یافت نشد</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="43"/>
+ <location filename="../deviceitemwidget.cpp" line="85"/>
+ <source>Edit Device Name</source>
+ <translation>ویرایش نام دستگاه</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="44"/>
+ <source>Unlink Device From Account</source>
+ <translation>حذف پیوند دستگاه به حساب</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="80"/>
+ <source>Save new device name</source>
+ <translation>ذخیره نام جدید دستگاه </translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.cpp" line="39"/>
+ <source>Add as contact</source>
+ <translation>افزودن به عنوان مخاطب</translation>
+ </message>
+</context>
+<context>
+ <name>RingButton</name>
+ <message>
+ <location filename="../ringbutton.ui" line="140"/>
+ <source>Select folder</source>
+ <translation>انتخاب پوشه</translation>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <location filename="../settingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>فرم</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="141"/>
+ <source>Settings</source>
+ <translation>تنظیمات</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="229"/>
+ <source>Account</source>
+ <translation>حساب کاربری</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="267"/>
+ <location filename="../settingswidget.ui" line="503"/>
+ <source>General</source>
+ <translation>عمومی</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="305"/>
+ <location filename="../settingswidget.ui" line="3416"/>
+ <source>Audio / Video</source>
+ <translation>صدا / تصویر</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="542"/>
+ <source>System</source>
+ <translation>سامانه</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="610"/>
+ <source>Enable desktop notifications</source>
+ <translation>فعالسازی اعلانها</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="653"/>
+ <source>Keep minimized on close</source>
+ <translation>در هنگام بستن کمینه نگه دار</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="678"/>
+ <source>Download folder</source>
+ <translation>شاخهٔ بارگیری</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="811"/>
+ <source>Save in</source>
+ <translation>ذخیره کن در</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="904"/>
+ <source>Always Recording</source>
+ <translation>همیشه در حال ضبط</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="943"/>
+ <source>Updates</source>
+ <translation>بهروزرسانیها</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1008"/>
+ <source>Check for updates automatically every</source>
+ <translation>بررسی خودکار بهروزرسانیها هر</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1032"/>
+ <source>Interval between update checks in days selector</source>
+ <translation>انتخابگر بازه بین بررسیهای برای بهروزرسانی در واحد روز</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1038"/>
+ <source> days</source>
+ <translation>روز</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1081"/>
+ <source>Check for updates now button</source>
+ <translation>دکمه همین الان برروزرسانی ها را چک کن</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1084"/>
+ <source>Check for updates now</source>
+ <translation>بهروزرسانیها را همین الان بررسی کن</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3027"/>
+ <source>Password</source>
+ <translation>گذرواژه</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1418"/>
+ <location filename="../settingswidget.ui" line="2729"/>
+ <source>Enable</source>
+ <translation>فعالسازی</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="607"/>
+ <source>toggle enable notifications</source>
+ <translation>تغییر وضعیت فعالسازی اعلانها</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="650"/>
+ <source>Toggle keep minimized on close</source>
+ <translation>تغییر وضعیت کمینه نگه داشتن در هنگام بستن</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="764"/>
+ <source>Call Recordings</source>
+ <translation>تماسهای ضبطشده</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1005"/>
+ <source>Toggle automatic updates</source>
+ <translation>تغییر وضعیت بهروزرسانیهای خودکار</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1231"/>
+ <source>Jami Account</source>
+ <translation>حساب جمی</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1453"/>
+ <location filename="../settingswidget.ui" line="2761"/>
+ <source>Profile</source>
+ <translation>نمایه</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1567"/>
+ <location filename="../settingswidget.ui" line="2875"/>
+ <source>Identity</source>
+ <translation>هویت</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1614"/>
+ <source>Id</source>
+ <translation>شناسایی ID</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1673"/>
+ <source>Registered name</source>
+ <translation>نام ثبت شده</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1721"/>
+ <source>Type here to register a username</source>
+ <translation>برای ثبت نامکاربری اینجا بنویسید</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1755"/>
+ <source>Register</source>
+ <translation>ثبتنام</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1827"/>
+ <source>Change Password</source>
+ <translation>تغییر گذرواژه</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1868"/>
+ <source>Export Account</source>
+ <translation>برونبرد (ذخیره) حساب</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1909"/>
+ <location filename="../settingswidget.ui" line="3089"/>
+ <source>Delete Account</source>
+ <translation>حذف حساب</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1973"/>
+ <source>Linked Devices</source>
+ <translation>دستگاههای پیونددادهشده</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2078"/>
+ <source>Link Another Device</source>
+ <translation>پیوند یک دستگاه دیگر</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2142"/>
+ <source>Banned Contacts</source>
+ <translation>مخاطبان مسدود شده</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3788"/>
+ <source>Format</source>
+ <translation>قالب</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3831"/>
+ <source>Video device framerate selector</source>
+ <translation>انتخابگر نرخ فریم دستگاه ویدیویی</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3967"/>
+ <source>Preview unavailable</source>
+ <translation>پیشنمایش دردسترس نیست</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2359"/>
+ <location filename="../settingswidget.ui" line="3187"/>
+ <source>Advanced Account Settings</source>
+ <translation>تنظیمات پیشرفته حساب</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2554"/>
+ <source>SIP Account</source>
+ <translation>حساب کاربری سیپ</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2925"/>
+ <source>Username</source>
+ <translation>نام کاربری</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2958"/>
+ <source>Hostname</source>
+ <translation>نام میزبان</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2991"/>
+ <source>Proxy</source>
+ <translation>پیشکار یا پروکسی</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3461"/>
+ <source>Audio</source>
+ <translation>صدا</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3511"/>
+ <source>Microphone</source>
+ <translation>میکروفون</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3551"/>
+ <source>Audio input device selector</source>
+ <translation>انتخاب کننده دستگاه ورودی صوتی</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3585"/>
+ <source>Output Device</source>
+ <translation>دستگاه خروجی</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3625"/>
+ <source>Choose the output device</source>
+ <translation>انتخاب دستگاه خروجی</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3682"/>
+ <source>Video</source>
+ <translation>ویدیو</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3720"/>
+ <source>Device</source>
+ <translation>دستگاه</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3766"/>
+ <source>Video device selector</source>
+ <translation>انتخاب کننده دستگاه ویدیو</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="459"/>
+ <source>A registered name should not have any spaces and must be at least three letters long</source>
+ <translation>یک نام ثبت شده نمیبایست دارای هیچ فضای خالی بوده و حداقل دارای سه حرف باشد</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="466"/>
+ <source>This name is already taken</source>
+ <translation>این نام پیش از این گرفته شده است</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="92"/>
+ <location filename="../settingswidget.cpp" line="110"/>
+ <source>Enter an alias</source>
+ <translation>یک نام مستعار وارد کنید</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="473"/>
+ <source>Register this name</source>
+ <translation>تبت این نام</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="550"/>
+ <source>Remove Device</source>
+ <translation>حذف دستگاه</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="551"/>
+ <source>Enter this account's password to confirm the removal of this device</source>
+ <translation>گذرواژه این حساب را برای تایید حذف این دستگاه وارد کنید</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="558"/>
+ <source>Are you sure you wish to remove this device?</source>
+ <translation>اطمینان دارید که میخواهید این دستگاه را حذف کنید؟</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="589"/>
+ <source>Export Account Here</source>
+ <translation>حساب را در اینجا برونبرد کن</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="887"/>
+ <source>Select A Folder For Your Downloads</source>
+ <translation>یک پوشه برای دانلودهای خود انتخاب کنید</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="904"/>
+ <source>Select A Folder For Your Recordings</source>
+ <translation>یک پوشه برای صداهای ضبطشده خود انتخاب کنید</translation>
+ </message>
+</context>
+<context>
+ <name>VideoOverlay</name>
+ <message>
+ <location filename="../videooverlay.ui" line="419"/>
+ <source>Call on Hold</source>
+ <translation>تماس نگهداشته</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="89"/>
+ <source>Hold / Unhold</source>
+ <translation>نگهداشتن / رها کردن</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="124"/>
+ <source>Chat</source>
+ <translation>چت</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="162"/>
+ <source>Mute Mic</source>
+ <translation>قطع میکروفون</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="244"/>
+ <source>Record call</source>
+ <translation>ضبط تماس</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="325"/>
+ <source>Name label</source>
+ <translation>نامگذاری برچسب</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="390"/>
+ <source>Time elapsed</source>
+ <translation>زمان سپری شده</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="393"/>
+ <source>00:00</source>
+ <translation>00:00</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="57"/>
+ <source>Hangup</source>
+ <translation>به صحبت تلفنی خاتمه دادن</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="203"/>
+ <source>Mute Video</source>
+ <translation>بیصدا کردن ویدیو</translation>
+ </message>
+</context>
+<context>
+ <name>VideoView</name>
+ <message>
+ <location filename="../videoview.cpp" line="271"/>
+ <source>Share entire screen</source>
+ <translation>به اشتراک گذاری تمام صفحه نمایش</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="274"/>
+ <source>Share screen area</source>
+ <translation>ناحیه اشتراک صفحه</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="281"/>
+ <source>Share file</source>
+ <translation>همرسانی پرونده</translation>
+ </message>
+</context>
+</TS>
\ No newline at end of file
diff --git a/translations/ring_client_windows_fi.ts b/translations/ring_client_windows_fi.ts
new file mode 100644
index 0000000..f202c84
--- /dev/null
+++ b/translations/ring_client_windows_fi.ts
@@ -0,0 +1,1605 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="fi" version="2.0">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../aboutdialog.ui" line="435"/>
+ <location filename="../aboutdialog.ui" line="465"/>
+ <source>About</source>
+ <translation>Tietoa</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="462"/>
+ <source>about button</source>
+ <translation>tietoja-painike</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="478"/>
+ <source>credits button</source>
+ <translation>tekijät -painike</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="481"/>
+ <source>Credits</source>
+ <translation>Tekijät</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="547"/>
+ <source>Free as in Freedom</source>
+ <translation>Ilmainen kuin vapaus</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="563"/>
+ <source>The Microsoft Windows client for Jami.
+Jami is a secured and distributed communication software.</source>
+ <translation>Jami -sovellus Microsoft Windowsille.
+Jami on turvallinen ja hajautettu viestintäsovellus.</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="32"/>
+ <source>version</source>
+ <translation>versio</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="39"/>
+ <source>Created by:</source>
+ <translation>Luonut:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="73"/>
+ <source>Artwork by:</source>
+ <translation>Grafiikka:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="77"/>
+ <source>Based on the SFLPhone project</source>
+ <translation>Pohjautuu SFLPhone-projektiin</translation>
+ </message>
+</context>
+<context>
+ <name>AccountItemDelegate</name>
+ <message>
+ <location filename="../accountitemdelegate.cpp" line="91"/>
+ <source>Add Account</source>
+ <translation>Lisää tunnus</translation>
+ </message>
+</context>
+<context>
+ <name>AdvancedSIPSettingsWidget</name>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Muoto</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="55"/>
+ <source>Call Settings</source>
+ <translation>Puheluasetukset</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="102"/>
+ <source>Auto Answer Calls</source>
+ <translation>Vastaa puheluihin automaattisesti</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="130"/>
+ <source>Enable Custom Ringtone</source>
+ <translation>Oma soittoääni</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="191"/>
+ <source>Connectivity</source>
+ <translation>Yhteydet</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="281"/>
+ <source>STUN Address</source>
+ <translation>STUN osoite</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="293"/>
+ <source>Use STUN</source>
+ <translation>Käytä STUNia</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="317"/>
+ <source>Use UPnP</source>
+ <translation>Käytä UPnP</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="329"/>
+ <source>Use TURN</source>
+ <translation>Käytä TURNia</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="359"/>
+ <source>TURN Password</source>
+ <translation>TURN salasana</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="391"/>
+ <source>TURN Username</source>
+ <translation>TURN käyttäjänimi</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="423"/>
+ <source>TURN Address</source>
+ <translation>TURN osoite</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="464"/>
+ <source>Media</source>
+ <translation>Media</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="515"/>
+ <source>Enable Video</source>
+ <translation>Video päälle</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="539"/>
+ <source>Video Codecs</source>
+ <translation>Videokoodekit</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="692"/>
+ <source>Audio Codecs</source>
+ <translation>Äänikoodekit</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="142"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation>Äänitiedostot (*.wav *.ogg *.opus *.mp3 *aiff *wma)</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="151"/>
+ <source>Add a custom ringtone</source>
+ <translation>Lisää oma soittoääni</translation>
+ </message>
+</context>
+<context>
+ <name>AdvancedSettingsWidget</name>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Muoto</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="61"/>
+ <source>Call Settings</source>
+ <translation>Puheluasetukset</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="108"/>
+ <source>Allow Calls From Untrusted Peers</source>
+ <translation>Salli puhelut tuntemattomilta</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="133"/>
+ <source>Auto Answer Calls</source>
+ <translation>Vastaa puheluihin automaattisesti</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="161"/>
+ <source>Enable Custom Ringtone</source>
+ <translation>Oma soittoääni</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="188"/>
+ <source>Add a custom ringtone</source>
+ <translation>Lisää oma soittoääni</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="225"/>
+ <source>Name Server</source>
+ <translation>Nimipalvelin</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="275"/>
+ <source>Address</source>
+ <translation>Osoite</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="351"/>
+ <source>OpenDHT Configuration</source>
+ <translation>OpenDHT-määritykset</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="398"/>
+ <source>Enable Proxy</source>
+ <translation>Proxy käyttöön</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="454"/>
+ <source>Bootstrap</source>
+ <translation>Bootstrap</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="530"/>
+ <source>Security</source>
+ <translation>Turvallisuus</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="571"/>
+ <source>Private Key Password</source>
+ <translation>Salausavaimen salassana</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="583"/>
+ <source>User Certificate</source>
+ <translation>Käyttäjävarmenne</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="622"/>
+ <source>Private Key</source>
+ <translation>Henkilökohtainen salausavain</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="634"/>
+ <source>CA Certificate</source>
+ <translation>CA-varmenne</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="766"/>
+ <source>Connectivity</source>
+ <translation>Yhteydet</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="868"/>
+ <source>Use STUN</source>
+ <translation>Käytä STUNia</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="856"/>
+ <source>STUN Address</source>
+ <translation>STUN-osoite</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="892"/>
+ <source>Use UPnP</source>
+ <translation>Käytä UPnP</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="904"/>
+ <source>Use TURN</source>
+ <translation>Käytä TURNia</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="934"/>
+ <source>TURN Password</source>
+ <translation>TURN salasana</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="966"/>
+ <source>TURN Username</source>
+ <translation>TURN käyttäjänimi</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="998"/>
+ <source>TURN Address</source>
+ <translation>TURN osoite</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1039"/>
+ <source>Media</source>
+ <translation>Media</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1090"/>
+ <source>Enable Video</source>
+ <translation>Video päälle</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1267"/>
+ <source>Audio Codecs</source>
+ <translation>Äänikoodekit</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1114"/>
+ <source>Video Codecs</source>
+ <translation>Videokoodekit</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="181"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation>Äänitiedostot (*.wav *.ogg *.opus *.mp3 *aiff * wma)</translation>
+ </message>
+</context>
+<context>
+ <name>AnimatedOverlay</name>
+ <message>
+ <location filename="../animatedoverlay.ui" line="14"/>
+ <source>Form</source>
+ <translation>Muoto</translation>
+ </message>
+</context>
+<context>
+ <name>BannedItemWidget</name>
+ <message>
+ <location filename="../banneditemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Muoto</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="80"/>
+ <source>name</source>
+ <translation>nimi</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="104"/>
+ <source>id</source>
+ <translation>id</translation>
+ </message>
+</context>
+<context>
+ <name>CallWidget</name>
+ <message>
+ <location filename="../callwidget.ui" line="184"/>
+ <source>Show conversations</source>
+ <translation>Näytä keskustelu</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="187"/>
+ <source>Conversations</source>
+ <translation>Keskustelu</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="368"/>
+ <source>Search contact text input</source>
+ <translation>Hae yhteystieto tekstihaulla</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="653"/>
+ <source>Jami is free software for universal communication which respects the freedoms and privacy of its users.</source>
+ <translation>Jami on vapaa ja universaali viestintäalusta, joka kunnioittaa käyttäjiensä vapauksia ja yksityisyyttä.</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="693"/>
+ <source>
+ This is your ID.
+Copy and share it with your friends!
+ </source>
+ <translation>
+Tämä on sinun ID-tunnus.
+Kopioi ja jaa se ystäviesi kanssa!</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="806"/>
+ <source>Show ring ID QR code</source>
+ <translation>Näytä ring ID QR-koodi</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="857"/>
+ <source>Share ring ID button</source>
+ <translation>Jaa ring ID -painike</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="915"/>
+ <source>Double-click to copy</source>
+ <translation>Kopioi kaksoisnapsauttamalla</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="956"/>
+ <source>Error while generating QR Code</source>
+ <translation>Virhe generoidessa QR-koodia</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1184"/>
+ <location filename="../callwidget.ui" line="1434"/>
+ <source>best name</source>
+ <translation>paras nimi</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1208"/>
+ <source>best Id</source>
+ <translation>paras Id</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1734"/>
+ <source>Back to homepage button</source>
+ <translation>Takaisin kotisivulle -painike</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1943"/>
+ <source>Add to contacts</source>
+ <translation>Lisää yhteystietoihin</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="202"/>
+ <source>Show invites</source>
+ <translation>Näytä kutsut</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="205"/>
+ <source>Invites</source>
+ <translation>Kutsut</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="377"/>
+ <location filename="../callwidget.cpp" line="552"/>
+ <source>Find a new or existing contact</source>
+ <translation>Etsi uusi tai olemassaoleva yhteystieto</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1444"/>
+ <source>Wants to talk to you!</source>
+ <translation>Haluaa puhua kanssasi!</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1517"/>
+ <source>Answer incoming call button</source>
+ <translation>Vastaa saapuvaan puheluun -painike</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1589"/>
+ <source>Ignore incoming call button</source>
+ <translation>Ohita saapuvan puhelun -painike</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1539"/>
+ <source>Answer</source>
+ <translation>Vastaa</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1617"/>
+ <source>Ignore</source>
+ <translation>Sivuuta</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1280"/>
+ <source>Cancel outgoing call</source>
+ <translation>Peruuta lähtevä puhelu</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1305"/>
+ <source>Cancel</source>
+ <translation>Peru</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="332"/>
+ <source>Start video call</source>
+ <translation>Aloita videopuhelu</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="343"/>
+ <source>Start audio call</source>
+ <translation>Aloita äänipuhelu</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="354"/>
+ <source>Clear conversation</source>
+ <translation>Tyhjennä keskustelu</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="361"/>
+ <source>Remove contact</source>
+ <translation>Poista yhteystieto</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="373"/>
+ <source>Block contact</source>
+ <translation>Estä yhteystieto</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="384"/>
+ <source>Copy number</source>
+ <translation>Kopioi numero</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="561"/>
+ <source>Search your received invitations</source>
+ <translation>Hae vastaanotetuista kutsuista</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>Contact me on Jami</source>
+ <translation>Ota minuun yhteyttä Jamilla</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>My Id is : </source>
+ <translation>Minun id on : </translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="847"/>
+ <source>%1</source>
+ <comment>%1 is the contact username</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="852"/>
+ <source>%1</source>
+ <comment>%1 is the contact unique identifier</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="675"/>
+ <source>Call incoming from %1</source>
+ <translation>Saapuva puhelu %1</translation>
+ </message>
+</context>
+<context>
+ <name>DeleteAccountDialog</name>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="35"/>
+ <source>Account deletion</source>
+ <translation>Tunnuksen poisto</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="58"/>
+ <source>Do you really want to delete the following account?</source>
+ <translation>Haluatko todella poistaa seuraavan tunnuksen?</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="153"/>
+ <source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
+ <translation>Jos tätä tunnusta ei ole viety tai lisätty toiseen laitteeseen, se katoaa lopullisesti.</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="235"/>
+ <source>Permanently delete account</source>
+ <translation>Poista tunnus pysyvästi</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="241"/>
+ <source>Delete</source>
+ <translation>Poista</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="278"/>
+ <source>Cancel account deletion</source>
+ <translation>Peruuta tunnuksen poisto</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="284"/>
+ <source>Cancel</source>
+ <translation>Peru</translation>
+ </message>
+</context>
+<context>
+ <name>DeviceItemWidget</name>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Muoto</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="105"/>
+ <source>Device Id</source>
+ <translation>Laitteen Id</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="143"/>
+ <source>this device</source>
+ <translation>tämä laite</translation>
+ </message>
+</context>
+<context>
+ <name>InviteButtonsWidget</name>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="83"/>
+ <source>Accept</source>
+ <translation>Hyväksy</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="131"/>
+ <source>Refuse</source>
+ <translation>Kieltäydy</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="179"/>
+ <source>Block</source>
+ <translation>Estä</translation>
+ </message>
+</context>
+<context>
+ <name>LinkDeviceDialog</name>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation>Valintaikkuna</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="62"/>
+ <source>Enter your account password</source>
+ <translation>Anna tunnuksen salasana</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="117"/>
+ <source>Password</source>
+ <translation>Salasana</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="184"/>
+ <source>Ok</source>
+ <translation>Vahvista</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="218"/>
+ <source>Cancel</source>
+ <translation>Peruuta</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="279"/>
+ <source>Exporting account</source>
+ <translation>Tunnuksen vienti</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="402"/>
+ <source>Your PIN is</source>
+ <translation>Sinun PIN on</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="432"/>
+ <source>PIN</source>
+ <translation>PIN</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="477"/>
+ <source>This pin and the account password should be entered in your device within 10 minutes.</source>
+ <translation>Tämä pin-koodi ja tunnuksen salasana on syötettävä laitteeseesi 10 minuutin kuluessa.</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="553"/>
+ <source>Close</source>
+ <translation>Sulje</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="34"/>
+ <source>Link Another Device</source>
+ <translation>Linkitä toinen laite</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="96"/>
+ <source>Incorrect password</source>
+ <translation>Väärä salasana</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="110"/>
+ <source>Something went wrong.
+Please try again later.</source>
+ <translation>Jokin meni pieleen.
+Yritä myöhemmin uudelleen.</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="83"/>
+ <source>Settings</source>
+ <translation>Asetukset</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="94"/>
+ <source>Exit</source>
+ <translation>Poistu</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="111"/>
+ <source>About</source>
+ <translation>Tietoa</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="435"/>
+ <source>Jami</source>
+ <translation>Jami</translation>
+ </message>
+</context>
+<context>
+ <name>NameRegistrationDialog</name>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="35"/>
+ <source>Set Registered Name</source>
+ <translation>Aseta rekisteröity nimi</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="163"/>
+ <source>Enter your account password</source>
+ <translation>Anna tunnuksen salasana</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="244"/>
+ <source>Password text input</source>
+ <translation>Salasana tekstinsyöttö</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="250"/>
+ <source>Password text entry</source>
+ <translation>Salasanan tekstikenttä</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="256"/>
+ <source>Password</source>
+ <translation>Salasana</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="323"/>
+ <source>Register</source>
+ <translation>Rekistöröi</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="357"/>
+ <source>Cancel</source>
+ <translation>Peruuta</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="424"/>
+ <source>Registering Name</source>
+ <translation>Rekisteröidään nimeä</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="548"/>
+ <source>Something went wrong</source>
+ <translation>Jokin meni pieleen.</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="618"/>
+ <source>Close</source>
+ <translation>Sulje</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="82"/>
+ <source>Incorrect password</source>
+ <translation>Väärä salasana</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="85"/>
+ <source>Network error</source>
+ <translation>Verkkovirhe</translation>
+ </message>
+</context>
+<context>
+ <name>NewWizardWidget</name>
+ <message>
+ <location filename="../newwizardwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Muoto</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="141"/>
+ <source>Welcome Label</source>
+ <translation>Tervehdysmerkki</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="147"/>
+ <source> Welcome to</source>
+ <translation>Tervetuloa</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="185"/>
+ <source>Welcome Logo</source>
+ <translation>Tervetuloa logo</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="239"/>
+ <source>Create Jami account button</source>
+ <translation>Luo Jami-tunnuksen painike</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="245"/>
+ <source>Push button for Jami account creation start trigger</source>
+ <translation>Paina painiketta Jami-tunnuksen luomiseksi</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="251"/>
+ <source>Create a Jami account</source>
+ <translation>Luo Jami-tunnus</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="282"/>
+ <source>Link device button</source>
+ <translation>Linkitä laite painike</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="288"/>
+ <source>Push button for device linkage start trigger</source>
+ <translation>Paina painiketta laitteen linkittämiseksi</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="291"/>
+ <source>Link this device to an account</source>
+ <translation>Yhdistä tämä laite tunnukseen</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="328"/>
+ <source>Create Jami SIP account button</source>
+ <translation>Luo Jami SIP-tunnuksen painike</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="334"/>
+ <source>Push button for Jami SIP account creation start trigger</source>
+ <translation>Paina painiketta Jami SIP-tunnuksen luomiseksi</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="340"/>
+ <source>Create a SIP account</source>
+ <translation>Luo SIP tunnus</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="405"/>
+ <source>Link this device to an existing account</source>
+ <translation>Yhdistä tämä laite olemassa olevaan tunnukseen</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="469"/>
+ <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">To link this device to another account, you first </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">need to obtain a PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> code. To generate the PIN code:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Account management setting</span><span style=" font-size:14px;"> of a previous device</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choose the </span><span style=" font-size:14px; font-weight:600;">Jami account</span><span style=" font-size:14px;"> you want to use</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Devices</span><span style=" font-size:14px;"> tab</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Select </span><span style=" font-size:14px; font-weight:600;">Add a device</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">You will get the necessary PIN to complete this form. The PIN is only valid for </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutes</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></source>
+ <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">Jos haluat linkittää tämän laitteen toiseen tunnukseen, sinun on </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">ensin hankittava PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> -koodi. PIN-koodin luominen:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Mene </span><span style=" font-size:14px; font-weight:600;">käyttäjäasetuksiin</span><span style=" font-size:14px;"> aiemmasta laitteesta.</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Valitse </span><span style=" font-size:14px; font-weight:600;">Jami-tunnus</span><span style=" font-size:14px;"> jota haluat käyttää</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Mene </span><span style=" font-size:14px; font-weight:600;">Laitteet</span><span style=" font-size:14px;"> välilehteen</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Valitse </span><span style=" font-size:14px; font-weight:600;">Lisää laite</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">Saat tarvittavan PIN-koodin tämän lomakkeen lopussa. PIN-koodi on voimassa vain </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minuuttia</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="531"/>
+ <source>Enter your pin:</source>
+ <translation>Syötä pin-koodisi:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="599"/>
+ <source>Or import a file:</source>
+ <translation>Tai tuo tiedosto:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="626"/>
+ <source>Link from exported account archive file</source>
+ <translation>Linkki viedystä tunnuksen arkistotiedostosta</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="629"/>
+ <location filename="../newwizardwidget.cpp" line="83"/>
+ <location filename="../newwizardwidget.cpp" line="218"/>
+ <source>(None)</source>
+ <translation>(Ei mitään)</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="705"/>
+ <source>Password:</source>
+ <translation>Salasana:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="799"/>
+ <location filename="../newwizardwidget.ui" line="1586"/>
+ <source>Profile</source>
+ <translation>Profiili</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="953"/>
+ <location filename="../newwizardwidget.ui" line="1767"/>
+ <source>Profile name</source>
+ <translation>Profiilin nimi</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1027"/>
+ <source>Account</source>
+ <translation>Tunnus</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1136"/>
+ <source>Register your username.
+This will reserve the username so that only you can use it.
+Your friends will be able to call you with your usename
+instead of using your ID.</source>
+ <translation>Rekisteröi käyttäjänimesi.
+Tämä varaa käyttäjätunnuksen, jotta vain sinä voit käyttää sitä.
+Kaverisi voivat soittaa sinulle käyttäjänimelläsi sen sijaan,
+että käyttäisit tunnustasi.</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1142"/>
+ <source>Public username checkbox</source>
+ <translation>Julkinen käyttäjänimi valintaruutu</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1145"/>
+ <source>Checkbox selecting if the user wants a public username</source>
+ <translation>Merkitse laatikko, jos käyttäjä haluaa julkisen käyttänimen</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1148"/>
+ <source>Register public username</source>
+ <translation>Rekisteröi julkinen käyttäjänimi</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1367"/>
+ <source>Public username edit</source>
+ <translation>Julkisen käyttäjänimen muokkaus</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1373"/>
+ <source>Choose your username</source>
+ <translation>Valitse käyttäjänimesi</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1289"/>
+ <source>Password text input</source>
+ <translation>Salasana tekstinsyöttö</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1295"/>
+ <source>Password text entry</source>
+ <translation>Salasanan tekstikenttä</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1301"/>
+ <location filename="../newwizardwidget.ui" line="2213"/>
+ <source>Password</source>
+ <translation>Salasana</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1211"/>
+ <location filename="../newwizardwidget.ui" line="1217"/>
+ <source>Password confirmation text input</source>
+ <translation>Salasanan vahvistuksen tekstikenttä</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1223"/>
+ <source>Confirm password</source>
+ <translation>Varmista salasana</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1814"/>
+ <source>SIP Account</source>
+ <translation>SIP tunnus</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1973"/>
+ <source>SIP Server edit</source>
+ <translation>SIP-palvelimen muokkaus</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1979"/>
+ <source>Server</source>
+ <translation>Palvelin</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2045"/>
+ <source>SIP proxy input</source>
+ <translation>Syötä SIP-välityspalvelin</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2051"/>
+ <source>SIP proxy text entry</source>
+ <translation>SIP-välityspalvelimen tekstikenttä</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2057"/>
+ <source>Proxy</source>
+ <translation>Välityspalvelin</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2123"/>
+ <source>SIP username input</source>
+ <translation>Syötä SIP-käyttäjänimi</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2129"/>
+ <source>SIP Password text entry</source>
+ <translation>SIP-salasanan tekstikenttä</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2135"/>
+ <source>Username</source>
+ <translation>Käyttäjänimi</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2201"/>
+ <location filename="../newwizardwidget.ui" line="2207"/>
+ <source>SIP Password text input</source>
+ <translation>Syötä SIP-salasana</translation>
+ </message>
+ <message utf8="true">
+ <location filename="../newwizardwidget.ui" line="2282"/>
+ <source>Generating your Jami account…</source>
+ <translation>Luodaan Jami-tunnusta...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2356"/>
+ <source>Previous page button</source>
+ <translation>Edellinen sivu -painike</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2362"/>
+ <source>push button to access previous page of wizard</source>
+ <translation>paina painiketta päästäksesi ohjatun toiminnon edelliselle sivulle</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2365"/>
+ <source>Previous</source>
+ <translation>Edellinen</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2396"/>
+ <source>Cancel account create/link</source>
+ <translation>Peruuta tunnuksen luominen/linkitys</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2402"/>
+ <source>push button to cancel account creation or linking</source>
+ <translation>painamalla painiketta voit peruuttaa tunnuksen luomisen tai linkittämisen</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2405"/>
+ <source>Back</source>
+ <translation>Takaisin</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2442"/>
+ <source>Next page Button</source>
+ <translation>Seuraava sivu -painike</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2448"/>
+ <source>Push button to access next page of wizard</source>
+ <translation>Painamalla painiketta pääset ohjatun toiminnon seuraavalle sivulle</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2451"/>
+ <source>Next</source>
+ <translation>Seuraava</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="75"/>
+ <source>Open File</source>
+ <translation>Avaa tiedosto</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="77"/>
+ <source>Jami archive files (*.gz); All files (*)</source>
+ <translation>Jami-arkistoidut tiedostot (*.gz); Kaikki tiedostot (*)</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="123"/>
+ <source>Your account needs to be migrated. Enter your password.</source>
+ <translation>Tunnuksesi on siirrettävä. Syötä salasanasi.</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="419"/>
+ <source>Migrating your Jami account...</source>
+ <translation>Jami-tunnuksesi siirretään…</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="412"/>
+ <source>Importing account archive...</source>
+ <translation>Tuodaan Tunnus-arkistoa...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="404"/>
+ <source>Generating your Jami account...</source>
+ <translation>Luodaan sinun Jami-tunnusta...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="422"/>
+ <source>Generating your SIP account...</source>
+ <translation>Luodaan sinun SIP-tunnusta...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="533"/>
+ <source>Error creating account</source>
+ <translation>Virhe tunnuksen luomisessa</translation>
+ </message>
+</context>
+<context>
+ <name>PasswordDialog</name>
+ <message>
+ <location filename="../passworddialog.ui" line="32"/>
+ <source>Change Account Password</source>
+ <translation>Vaihda tunnuksen salasana</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="97"/>
+ <source>Enter Current Password</source>
+ <translation>Anna nykyinen salasana</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="169"/>
+ <source>Enter New Password</source>
+ <translation>Anna uusi salasana</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="190"/>
+ <source>Confirm New Password</source>
+ <translation>Vahvista uusi salasana</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="247"/>
+ <source>Confirm</source>
+ <translation>Vahvista</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="290"/>
+ <source>Cancel</source>
+ <translation>Peruuta</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="143"/>
+ <source>Current Password Incorrect</source>
+ <translation>Nykyinen salasana väärä</translation>
+ </message>
+</context>
+<context>
+ <name>PhotoBoothDialog</name>
+ <message>
+ <location filename="../photoboothdialog.ui" line="14"/>
+ <source>Photobooth</source>
+ <translation>Valokuva-automaatti</translation>
+ </message>
+</context>
+<context>
+ <name>PhotoboothWidget</name>
+ <message>
+ <location filename="../photoboothwidget.ui" line="20"/>
+ <source>Form</source>
+ <translation>Muoto</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.ui" line="120"/>
+ <source>Photobooth display</source>
+ <translation>Valokuvanäyttö</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="92"/>
+ <source>Choose File</source>
+ <translation>Valitse tiedosto</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="94"/>
+ <source>Image Files (*.jpg *.jpeg *.png)</source>
+ <translation>Kuvatiedostot (*.jpg *.jpeg *.png)</translation>
+ </message>
+</context>
+<context>
+ <name>PrivateBridging</name>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Choose File</source>
+ <translation>Valitse tiedosto</translation>
+ </message>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Files (*)</source>
+ <translation>Tiedostot (*)</translation>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../utils.cpp" line="183"/>
+ <source>No default mail client found</source>
+ <translation>Oletussähköpostiohjelmaa ei löytynyt</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="43"/>
+ <location filename="../deviceitemwidget.cpp" line="85"/>
+ <source>Edit Device Name</source>
+ <translation>Muokkaa laitteen nimeä</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="44"/>
+ <source>Unlink Device From Account</source>
+ <translation>Irrota laite tunnuksesta</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="80"/>
+ <source>Save new device name</source>
+ <translation>Tallenna uuden laitteen nimi</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.cpp" line="39"/>
+ <source>Add as contact</source>
+ <translation>Lisää yhteystietona</translation>
+ </message>
+</context>
+<context>
+ <name>RingButton</name>
+ <message>
+ <location filename="../ringbutton.ui" line="140"/>
+ <source>Select folder</source>
+ <translation>Valitse kansio</translation>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <location filename="../settingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Muoto</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="141"/>
+ <source>Settings</source>
+ <translation>Asetukset</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="229"/>
+ <source>Account</source>
+ <translation>Tunnus</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="267"/>
+ <location filename="../settingswidget.ui" line="503"/>
+ <source>General</source>
+ <translation>Yleiset</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="305"/>
+ <location filename="../settingswidget.ui" line="3416"/>
+ <source>Audio / Video</source>
+ <translation>Ääni / Video</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="542"/>
+ <source>System</source>
+ <translation>Järjestelmä</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="610"/>
+ <source>Enable desktop notifications</source>
+ <translation>Työpöytäilmoitukset käyttöön</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="653"/>
+ <source>Keep minimized on close</source>
+ <translation>Pidä pienennettynä suljettaessa</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="678"/>
+ <source>Download folder</source>
+ <translation>Ladatut kansio</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="811"/>
+ <source>Save in</source>
+ <translation>Tallenna sisään</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="904"/>
+ <source>Always Recording</source>
+ <translation>Tallentaa aina</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="943"/>
+ <source>Updates</source>
+ <translation>Päivitykset</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1008"/>
+ <source>Check for updates automatically every</source>
+ <translation>Tarkista päivitykset automaattisesti joka</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1032"/>
+ <source>Interval between update checks in days selector</source>
+ <translation>Päivitystarkistusten välinen aika</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1038"/>
+ <source> days</source>
+ <translation>päivää</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1081"/>
+ <source>Check for updates now button</source>
+ <translation>Tarkista päivitykset nyt -painike</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1084"/>
+ <source>Check for updates now</source>
+ <translation>Tarkista päivitykset nyt</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3027"/>
+ <source>Password</source>
+ <translation>Salasana</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1418"/>
+ <location filename="../settingswidget.ui" line="2729"/>
+ <source>Enable</source>
+ <translation>Päällä</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="607"/>
+ <source>toggle enable notifications</source>
+ <translation>Vaihda ilmoitukset käyttöön</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="650"/>
+ <source>Toggle keep minimized on close</source>
+ <translation>Valinta pidä pinennettynä suljettaessa</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="764"/>
+ <source>Call Recordings</source>
+ <translation>Puhelun tallenteet</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1005"/>
+ <source>Toggle automatic updates</source>
+ <translation>Vaihda automaattiset päivitykset</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1231"/>
+ <source>Jami Account</source>
+ <translation>Jami tunnus</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1453"/>
+ <location filename="../settingswidget.ui" line="2761"/>
+ <source>Profile</source>
+ <translation>Profiili</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1567"/>
+ <location filename="../settingswidget.ui" line="2875"/>
+ <source>Identity</source>
+ <translation>Tunnistetiedot</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1614"/>
+ <source>Id</source>
+ <translation>Id</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1673"/>
+ <source>Registered name</source>
+ <translation>Rekisteröity nimi</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1721"/>
+ <source>Type here to register a username</source>
+ <translation>Kirjoita tähän rekisteröidäksesi käyttäjänimen</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1755"/>
+ <source>Register</source>
+ <translation>Rekistöröi</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1827"/>
+ <source>Change Password</source>
+ <translation>Vaihda salasana</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1868"/>
+ <source>Export Account</source>
+ <translation>Vie tunnus</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1909"/>
+ <location filename="../settingswidget.ui" line="3089"/>
+ <source>Delete Account</source>
+ <translation>Poista tunnus</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1973"/>
+ <source>Linked Devices</source>
+ <translation>Linkitetyt laitteet</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2078"/>
+ <source>Link Another Device</source>
+ <translation>Linkitä toinen laite</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2142"/>
+ <source>Banned Contacts</source>
+ <translation>Estetyt yhteystiedot</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3788"/>
+ <source>Format</source>
+ <translation>Muoto</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3831"/>
+ <source>Video device framerate selector</source>
+ <translation>Videolaitteen kuvanopeuden valitsin</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3967"/>
+ <source>Preview unavailable</source>
+ <translation>Esikatselua ei käytettävissä</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2359"/>
+ <location filename="../settingswidget.ui" line="3187"/>
+ <source>Advanced Account Settings</source>
+ <translation>Tilin lisäasetukset</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2554"/>
+ <source>SIP Account</source>
+ <translation>SIP tunnus</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2925"/>
+ <source>Username</source>
+ <translation>Käyttäjänimi</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2958"/>
+ <source>Hostname</source>
+ <translation>Yhteysosoite</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2991"/>
+ <source>Proxy</source>
+ <translation>Välityspalvelin</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3461"/>
+ <source>Audio</source>
+ <translation>Ääni</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3511"/>
+ <source>Microphone</source>
+ <translation>Mikrofoni</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3551"/>
+ <source>Audio input device selector</source>
+ <translation>Äänen sisääntulon valitsin</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3585"/>
+ <source>Output Device</source>
+ <translation>Ulostulon laite</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3625"/>
+ <source>Choose the output device</source>
+ <translation>Valitse laitteen ulostulo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3682"/>
+ <source>Video</source>
+ <translation>Video</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3720"/>
+ <source>Device</source>
+ <translation>Laite</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3766"/>
+ <source>Video device selector</source>
+ <translation>Videolaitteen valitsin</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="459"/>
+ <source>A registered name should not have any spaces and must be at least three letters long</source>
+ <translation>Rekisteröitävässä nimessä ei saa olla välilyöntejä ja sen on oltava vähintään kolme kirjainta pitkä</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="466"/>
+ <source>This name is already taken</source>
+ <translation>Tämä nimi on jo varattu</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="92"/>
+ <location filename="../settingswidget.cpp" line="110"/>
+ <source>Enter an alias</source>
+ <translation>Anna lempinimi</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="473"/>
+ <source>Register this name</source>
+ <translation>Rekisteröi tämä nimi</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="550"/>
+ <source>Remove Device</source>
+ <translation>Poista laite</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="551"/>
+ <source>Enter this account's password to confirm the removal of this device</source>
+ <translation>Anna tämän tunnuksen salasana vahvistaaksesi laitteen poistamisen</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="558"/>
+ <source>Are you sure you wish to remove this device?</source>
+ <translation>Haluatko varmasti poistaa tämän laitteen?</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="589"/>
+ <source>Export Account Here</source>
+ <translation>Vie tunnus tähän</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="887"/>
+ <source>Select A Folder For Your Downloads</source>
+ <translation>Valitse kansio latauksia varten</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="904"/>
+ <source>Select A Folder For Your Recordings</source>
+ <translation>Valitse kansio tallennuksia varten</translation>
+ </message>
+</context>
+<context>
+ <name>VideoOverlay</name>
+ <message>
+ <location filename="../videooverlay.ui" line="419"/>
+ <source>Call on Hold</source>
+ <translation>Puhelu pidossa</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="89"/>
+ <source>Hold / Unhold</source>
+ <translation>Pitoon / poista pidosta</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="124"/>
+ <source>Chat</source>
+ <translation>keskustelu</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="162"/>
+ <source>Mute Mic</source>
+ <translation>Mykistä mikki</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="244"/>
+ <source>Record call</source>
+ <translation>Tallenna puhelu</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="325"/>
+ <source>Name label</source>
+ <translation>Nimikenttä</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="390"/>
+ <source>Time elapsed</source>
+ <translation>Kulunut aika</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="393"/>
+ <source>00:00</source>
+ <translation>00:00</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="57"/>
+ <source>Hangup</source>
+ <translation>Katkaisu</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="203"/>
+ <source>Mute Video</source>
+ <translation>Mykistä video</translation>
+ </message>
+</context>
+<context>
+ <name>VideoView</name>
+ <message>
+ <location filename="../videoview.cpp" line="271"/>
+ <source>Share entire screen</source>
+ <translation>Jaa näyttö</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="274"/>
+ <source>Share screen area</source>
+ <translation>Jaa osa näytöstä</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="281"/>
+ <source>Share file</source>
+ <translation>Jaa tiedosto</translation>
+ </message>
+</context>
+</TS>
\ No newline at end of file
diff --git a/translations/ring_client_windows_fr.ts b/translations/ring_client_windows_fr.ts
new file mode 100644
index 0000000..a3fd61b
--- /dev/null
+++ b/translations/ring_client_windows_fr.ts
@@ -0,0 +1,1600 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="fr" version="2.0">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../aboutdialog.ui" line="435"/>
+ <location filename="../aboutdialog.ui" line="465"/>
+ <source>About</source>
+ <translation>À Propos</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="462"/>
+ <source>about button</source>
+ <translation>Le bouton à-propos </translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="478"/>
+ <source>credits button</source>
+ <translation>Bouton de crédits</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="481"/>
+ <source>Credits</source>
+ <translation>Crédits</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="547"/>
+ <source>Free as in Freedom</source>
+ <translation>Free as in Freedom</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="563"/>
+ <source>The Microsoft Windows client for Jami.
+Jami is a secured and distributed communication software.</source>
+ <translation>Le client Windows de Jami
+Jami est un logiciel libre de communication sécurisé et distribué.</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="32"/>
+ <source>version</source>
+ <translation>version</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="39"/>
+ <source>Created by:</source>
+ <translation>Créé par :</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="73"/>
+ <source>Artwork by:</source>
+ <translation>Graphismes par :</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="77"/>
+ <source>Based on the SFLPhone project</source>
+ <translation>Basé sur le projet SFLphone</translation>
+ </message>
+</context>
+<context>
+ <name>AccountItemDelegate</name>
+ <message>
+ <location filename="../accountitemdelegate.cpp" line="91"/>
+ <source>Add Account</source>
+ <translation>Ajouter un compte</translation>
+ </message>
+</context>
+<context>
+ <name>AdvancedSIPSettingsWidget</name>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulaire</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="55"/>
+ <source>Call Settings</source>
+ <translation>Paramètres des Appels</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="102"/>
+ <source>Auto Answer Calls</source>
+ <translation>Répondre automatiquement les appels</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="130"/>
+ <source>Enable Custom Ringtone</source>
+ <translation>Activer les sonneries personnalisables</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="191"/>
+ <source>Connectivity</source>
+ <translation>Connectivité</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="281"/>
+ <source>STUN Address</source>
+ <translation>Adresse STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="293"/>
+ <source>Use STUN</source>
+ <translation>Utiliser STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="317"/>
+ <source>Use UPnP</source>
+ <translation>Utiliser UPnP</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="329"/>
+ <source>Use TURN</source>
+ <translation>Utiliser TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="359"/>
+ <source>TURN Password</source>
+ <translation>Mot de passe TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="391"/>
+ <source>TURN Username</source>
+ <translation>Nom d'utilisateur TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="423"/>
+ <source>TURN Address</source>
+ <translation>Adresse du serveur TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="464"/>
+ <source>Media</source>
+ <translation>Médias</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="515"/>
+ <source>Enable Video</source>
+ <translation>Activer la vidéo</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="539"/>
+ <source>Video Codecs</source>
+ <translation>Codecs vidéo</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="692"/>
+ <source>Audio Codecs</source>
+ <translation>Codecs audio</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="142"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation>Fichiers audio ( wav, ogg, opus, mp3, aiff, wma)</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="151"/>
+ <source>Add a custom ringtone</source>
+ <translation>Ajouter une sonnerie externe</translation>
+ </message>
+</context>
+<context>
+ <name>AdvancedSettingsWidget</name>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulaire</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="61"/>
+ <source>Call Settings</source>
+ <translation>Paramètres des Appels</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="108"/>
+ <source>Allow Calls From Untrusted Peers</source>
+ <translation>Accepter les appels provenant de peers non fiables</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="133"/>
+ <source>Auto Answer Calls</source>
+ <translation>Répondre automatiquement les appels</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="161"/>
+ <source>Enable Custom Ringtone</source>
+ <translation>Activer les sonneries personnalisables</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="188"/>
+ <source>Add a custom ringtone</source>
+ <translation>Ajouter une sonnerie externe</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="225"/>
+ <source>Name Server</source>
+ <translation>Nom du Serveur</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="275"/>
+ <source>Address</source>
+ <translation>Adresse</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="351"/>
+ <source>OpenDHT Configuration</source>
+ <translation>Configuration OpenDHT</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="398"/>
+ <source>Enable Proxy</source>
+ <translation>Utiliser un nœud délégataire </translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="454"/>
+ <source>Bootstrap</source>
+ <translation>Adresse du nœud d'amorçage</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="530"/>
+ <source>Security</source>
+ <translation>Sécurité</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="571"/>
+ <source>Private Key Password</source>
+ <translation>Mot de passe de la clé</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="583"/>
+ <source>User Certificate</source>
+ <translation>Certificat de l'utilisateur</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="622"/>
+ <source>Private Key</source>
+ <translation>Clé privée</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="634"/>
+ <source>CA Certificate</source>
+ <translation>Certificat CA</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="766"/>
+ <source>Connectivity</source>
+ <translation>Connectivité</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="868"/>
+ <source>Use STUN</source>
+ <translation>Utiliser STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="856"/>
+ <source>STUN Address</source>
+ <translation>Adresse STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="892"/>
+ <source>Use UPnP</source>
+ <translation>Utiliser UPnP</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="904"/>
+ <source>Use TURN</source>
+ <translation>Utiliser TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="934"/>
+ <source>TURN Password</source>
+ <translation>Mot de passe TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="966"/>
+ <source>TURN Username</source>
+ <translation>Nom d'utilisateur TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="998"/>
+ <source>TURN Address</source>
+ <translation>Adresse du serveur TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1039"/>
+ <source>Media</source>
+ <translation>Médias</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1090"/>
+ <source>Enable Video</source>
+ <translation>Activer la vidéo</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1267"/>
+ <source>Audio Codecs</source>
+ <translation>Codecs audio</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1114"/>
+ <source>Video Codecs</source>
+ <translation>Codecs vidéo</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="181"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation>Fichiers audio ( wav, ogg, opus, mp3, aiff, wma)</translation>
+ </message>
+</context>
+<context>
+ <name>AnimatedOverlay</name>
+ <message>
+ <location filename="../animatedoverlay.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulaire</translation>
+ </message>
+</context>
+<context>
+ <name>BannedItemWidget</name>
+ <message>
+ <location filename="../banneditemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulaire</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="80"/>
+ <source>name</source>
+ <translation>nom</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="104"/>
+ <source>id</source>
+ <translation>id</translation>
+ </message>
+</context>
+<context>
+ <name>CallWidget</name>
+ <message>
+ <location filename="../callwidget.ui" line="184"/>
+ <source>Show conversations</source>
+ <translation>Montrer les conversations</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="187"/>
+ <source>Conversations</source>
+ <translation>Conversations</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="368"/>
+ <source>Search contact text input</source>
+ <translation>Rechercher le texte du contact</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="653"/>
+ <source>Jami is free software for universal communication which respects the freedoms and privacy of its users.</source>
+ <translation>Jami est un logiciel libre de communication universel qui respecte la vie privée et l'intimité de ses utilisateurs.</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="693"/>
+ <source>
+ This is your ID.
+Copy and share it with your friends!
+ </source>
+ <translation>Ceci est votre identifiant Jami. Conservez et partagez-le avec vos amis !</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="806"/>
+ <source>Show ring ID QR code</source>
+ <translation>Montrer le code QR d'identification ring </translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="857"/>
+ <source>Share ring ID button</source>
+ <translation>Partager le bouton d'identification ring </translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="915"/>
+ <source>Double-click to copy</source>
+ <translation>Double-cliquez pour copier</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="956"/>
+ <source>Error while generating QR Code</source>
+ <translation>Erreur pendant la génération du QR code</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1184"/>
+ <location filename="../callwidget.ui" line="1434"/>
+ <source>best name</source>
+ <translation>meilleur nom</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1208"/>
+ <source>best Id</source>
+ <translation>Meilleur ID</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1734"/>
+ <source>Back to homepage button</source>
+ <translation>Bouton de retour a la page d'accueil</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1943"/>
+ <source>Add to contacts</source>
+ <translation>Ajouter aux contacts</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="202"/>
+ <source>Show invites</source>
+ <translation>Montrer les invitations</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="205"/>
+ <source>Invites</source>
+ <translation>Invitations</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="377"/>
+ <location filename="../callwidget.cpp" line="552"/>
+ <source>Find a new or existing contact</source>
+ <translation>Recherche de contacts nouveaux ou existants</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1444"/>
+ <source>Wants to talk to you!</source>
+ <translation>souhaite entrer en communication !</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1517"/>
+ <source>Answer incoming call button</source>
+ <translation>Bouton de réponse d'appel </translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1589"/>
+ <source>Ignore incoming call button</source>
+ <translation>Bouton de refus d'appel </translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1539"/>
+ <source>Answer</source>
+ <translation>Répondre</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1617"/>
+ <source>Ignore</source>
+ <translation>Ignorer</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1280"/>
+ <source>Cancel outgoing call</source>
+ <translation>Annuler l'appel sortant</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1305"/>
+ <source>Cancel</source>
+ <translation>Annuler</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="332"/>
+ <source>Start video call</source>
+ <translation>Démarrer un appel vidéo</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="343"/>
+ <source>Start audio call</source>
+ <translation>Démarrer un appel audio</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="354"/>
+ <source>Clear conversation</source>
+ <translation>Effacer la conversation</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="361"/>
+ <source>Remove contact</source>
+ <translation>Retirer le contact</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="373"/>
+ <source>Block contact</source>
+ <translation>Bloquer le contact</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="384"/>
+ <source>Copy number</source>
+ <translation>Copier le numéro ou identifiant Ring</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="561"/>
+ <source>Search your received invitations</source>
+ <translation>Rechercher dans les invitations reçues</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>Contact me on Jami</source>
+ <translation>Contactez moi sur Jami</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>My Id is : </source>
+ <translation>Mon ID est :</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="847"/>
+ <source>%1</source>
+ <comment>%1 is the contact username</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="852"/>
+ <source>%1</source>
+ <comment>%1 is the contact unique identifier</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="675"/>
+ <source>Call incoming from %1</source>
+ <translation>Appel entrant de %1</translation>
+ </message>
+</context>
+<context>
+ <name>DeleteAccountDialog</name>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="35"/>
+ <source>Account deletion</source>
+ <translation>Suppression de compte</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="58"/>
+ <source>Do you really want to delete the following account?</source>
+ <translation>Souhaitez-vous vraiment supprimer ce compte ?</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="153"/>
+ <source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
+ <translation>Si ce compte n'a pas été exporté, ou ajouté vers un autre appareil, il sera perdu irrémédiablement.</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="235"/>
+ <source>Permanently delete account</source>
+ <translation>Supprimer de manière définitive le compte</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="241"/>
+ <source>Delete</source>
+ <translation>Supprimer</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="278"/>
+ <source>Cancel account deletion</source>
+ <translation>Annuler la suppression du compte</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="284"/>
+ <source>Cancel</source>
+ <translation>Annuler</translation>
+ </message>
+</context>
+<context>
+ <name>DeviceItemWidget</name>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulaire</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="105"/>
+ <source>Device Id</source>
+ <translation>Identifiant d'appareil</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="143"/>
+ <source>this device</source>
+ <translation>cet appareil</translation>
+ </message>
+</context>
+<context>
+ <name>InviteButtonsWidget</name>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="83"/>
+ <source>Accept</source>
+ <translation>Accepter</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="131"/>
+ <source>Refuse</source>
+ <translation>Refuser</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="179"/>
+ <source>Block</source>
+ <translation>Bloquer</translation>
+ </message>
+</context>
+<context>
+ <name>LinkDeviceDialog</name>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation>Dialogue</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="62"/>
+ <source>Enter your account password</source>
+ <translation>Entrer le mot de passe de votre compte</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="117"/>
+ <source>Password</source>
+ <translation>Mot de passe</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="184"/>
+ <source>Ok</source>
+ <translation>OK</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="218"/>
+ <source>Cancel</source>
+ <translation>Annuler</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="279"/>
+ <source>Exporting account</source>
+ <translation>Compte exporté</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="402"/>
+ <source>Your PIN is</source>
+ <translation>Votre NIP est </translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="432"/>
+ <source>PIN</source>
+ <translation>NIP</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="477"/>
+ <source>This pin and the account password should be entered in your device within 10 minutes.</source>
+ <translation>Ce NIP ainsi que le mot de passe du compte doivent être saisis dans votre nouvel appareil dans les 10 prochaines minutes. </translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="553"/>
+ <source>Close</source>
+ <translation>Fermer</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="34"/>
+ <source>Link Another Device</source>
+ <translation>Associer un autre appareil</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="96"/>
+ <source>Incorrect password</source>
+ <translation>Mot de passe incorrecte</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="110"/>
+ <source>Something went wrong.
+Please try again later.</source>
+ <translation>Quelque chose s'est mal passée.
+Veuillez réessayer plus tard.</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="83"/>
+ <source>Settings</source>
+ <translation>Paramètres</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="94"/>
+ <source>Exit</source>
+ <translation>Sortir</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="111"/>
+ <source>About</source>
+ <translation>À Propos</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="435"/>
+ <source>Jami</source>
+ <translation>Jami</translation>
+ </message>
+</context>
+<context>
+ <name>NameRegistrationDialog</name>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="35"/>
+ <source>Set Registered Name</source>
+ <translation>Enregistrer un nom d'utilisateur</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="163"/>
+ <source>Enter your account password</source>
+ <translation>Entrer le mot de passe de votre compte</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="244"/>
+ <source>Password text input</source>
+ <translation>Saisie du mot de passe</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="250"/>
+ <source>Password text entry</source>
+ <translation>Saisie de mot de passe</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="256"/>
+ <source>Password</source>
+ <translation>Mot de passe</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="323"/>
+ <source>Register</source>
+ <translation>Enregistrer</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="357"/>
+ <source>Cancel</source>
+ <translation>Annuler</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="424"/>
+ <source>Registering Name</source>
+ <translation>En cours d’enregistrement du nom</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="548"/>
+ <source>Something went wrong</source>
+ <translation>Quelque chose s'est mal passée.</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="618"/>
+ <source>Close</source>
+ <translation>Fermer</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="82"/>
+ <source>Incorrect password</source>
+ <translation>Mot de passe incorrecte</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="85"/>
+ <source>Network error</source>
+ <translation>Erreur de réseau</translation>
+ </message>
+</context>
+<context>
+ <name>NewWizardWidget</name>
+ <message>
+ <location filename="../newwizardwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulaire</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="141"/>
+ <source>Welcome Label</source>
+ <translation>étiquette de bienvenue</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="147"/>
+ <source> Welcome to</source>
+ <translation>Bienvenue sur</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="185"/>
+ <source>Welcome Logo</source>
+ <translation>Logo d'accueil</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="239"/>
+ <source>Create Jami account button</source>
+ <translation>Bouton de création de compte Jami</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="245"/>
+ <source>Push button for Jami account creation start trigger</source>
+ <translation>Bouton pour déclencher la création d'un compte Ring</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="251"/>
+ <source>Create a Jami account</source>
+ <translation>Créer un compte Jami</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="282"/>
+ <source>Link device button</source>
+ <translation>Bouton pour lier le compte de l'appareil</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="288"/>
+ <source>Push button for device linkage start trigger</source>
+ <translation>Appuyez sur le bouton pour déclencher la liaison de l'appareil</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="291"/>
+ <source>Link this device to an account</source>
+ <translation>Lier cet appareil à un compte</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="328"/>
+ <source>Create Jami SIP account button</source>
+ <translation>Bouton de création de compte SIP Jami</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="334"/>
+ <source>Push button for Jami SIP account creation start trigger</source>
+ <translation>Bouton pour déclencher la création d'un compte Jami</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="340"/>
+ <source>Create a SIP account</source>
+ <translation>Créer un compte SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="405"/>
+ <source>Link this device to an existing account</source>
+ <translation>Lier cet appareil à un compte existant</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="469"/>
+ <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">To link this device to another account, you first </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">need to obtain a PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> code. To generate the PIN code:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Account management setting</span><span style=" font-size:14px;"> of a previous device</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choose the </span><span style=" font-size:14px; font-weight:600;">Jami account</span><span style=" font-size:14px;"> you want to use</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Devices</span><span style=" font-size:14px;"> tab</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Select </span><span style=" font-size:14px; font-weight:600;">Add a device</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">You will get the necessary PIN to complete this form. The PIN is only valid for </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutes</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></source>
+ <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Cantarell'; font-size:11pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:12pt;">Pour associer cet appareil à un autre compte, vous devez d'abord obtenir un NIP</span>Pour cela, allez dans la gestion des comptes de l'appareil contenant le compte voulu et sélectionnez le compte que vous souhaitez utiliser.
+<li style=" font-family:'Ubuntu'; font-size:12pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Allez à la tabulation<span style=" font-weight:600;">Appareils</span></li>
+<li style=" font-family:'Ubuntu'; font-size:12pt;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Choisissez<span style=" font-weight:600;">Ajouter un appareil</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:12pt;">Vous obtiendrez alors un NIP qui vous permettra de terminer l'opération. Ce NIP est seulement valide pour une durée de </span><span style=" font-family:'Ubuntu'; font-size:12pt; font-weight:600;">10 minutes</span><span style=" font-family:'Ubuntu'; font-size:12pt;">.</span></p></body></html></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="531"/>
+ <source>Enter your pin:</source>
+ <translation>Entrez votre NIP :</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="599"/>
+ <source>Or import a file:</source>
+ <translation>Ou importer une archive : </translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="626"/>
+ <source>Link from exported account archive file</source>
+ <translation>Lier depuis une archive du compte exportée</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="629"/>
+ <location filename="../newwizardwidget.cpp" line="83"/>
+ <location filename="../newwizardwidget.cpp" line="218"/>
+ <source>(None)</source>
+ <translation>(None)</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="705"/>
+ <source>Password:</source>
+ <translation>Mot de passe :</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="799"/>
+ <location filename="../newwizardwidget.ui" line="1586"/>
+ <source>Profile</source>
+ <translation>Profil</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="953"/>
+ <location filename="../newwizardwidget.ui" line="1767"/>
+ <source>Profile name</source>
+ <translation>Nom du profile</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1027"/>
+ <source>Account</source>
+ <translation>Compte</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1136"/>
+ <source>Register your username.
+This will reserve the username so that only you can use it.
+Your friends will be able to call you with your usename
+instead of using your ID.</source>
+ <translation>Enregistre votre nom d'utilisateur Jami.
+Ceci réserve ce nom de façon définitive et uniquement pour votre usage.
+Vos amis pourront vous appeler avec ce nom.</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1142"/>
+ <source>Public username checkbox</source>
+ <translation>case à cocher nom d'utilisateur public</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1145"/>
+ <source>Checkbox selecting if the user wants a public username</source>
+ <translation>Case à cocher si l'utilisateur veut un identifiant public</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1148"/>
+ <source>Register public username</source>
+ <translation>Enregistrer un nom d'utilisateur public</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1367"/>
+ <source>Public username edit</source>
+ <translation>Modification de l'identifiant public</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1373"/>
+ <source>Choose your username</source>
+ <translation>Choisissez un nom d'utilisateur</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1289"/>
+ <source>Password text input</source>
+ <translation>Saisie du mot de passe</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1295"/>
+ <source>Password text entry</source>
+ <translation>Saisie de mot de passe</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1301"/>
+ <location filename="../newwizardwidget.ui" line="2213"/>
+ <source>Password</source>
+ <translation>Mot de passe</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1211"/>
+ <location filename="../newwizardwidget.ui" line="1217"/>
+ <source>Password confirmation text input</source>
+ <translation>Texte de confirmation de l'entrée du mot de passe</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1223"/>
+ <source>Confirm password</source>
+ <translation>Confirmer le mot de passe</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1814"/>
+ <source>SIP Account</source>
+ <translation>Compte SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1973"/>
+ <source>SIP Server edit</source>
+ <translation>Adresse du serveur SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1979"/>
+ <source>Server</source>
+ <translation>Serveur</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2045"/>
+ <source>SIP proxy input</source>
+ <translation>Adresse du proxy SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2051"/>
+ <source>SIP proxy text entry</source>
+ <translation>Texte du proxy SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2057"/>
+ <source>Proxy</source>
+ <translation>Serveur mandataire</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2123"/>
+ <source>SIP username input</source>
+ <translation>SIP du nom d'usager en entré</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2129"/>
+ <source>SIP Password text entry</source>
+ <translation>Texte de mot de passe du compte SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2135"/>
+ <source>Username</source>
+ <translation>Nom d'utilisateur</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2201"/>
+ <location filename="../newwizardwidget.ui" line="2207"/>
+ <source>SIP Password text input</source>
+ <translation>Texte de mot de passe du compte SIP</translation>
+ </message>
+ <message utf8="true">
+ <location filename="../newwizardwidget.ui" line="2282"/>
+ <source>Generating your Jami account…</source>
+ <translation>Génération de votre compte Jami...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2356"/>
+ <source>Previous page button</source>
+ <translation>Bouton de la page précédente</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2362"/>
+ <source>push button to access previous page of wizard</source>
+ <translation>Appuyez sur le bouton pour accéder à la page précédente</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2365"/>
+ <source>Previous</source>
+ <translation>Précédent</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2396"/>
+ <source>Cancel account create/link</source>
+ <translation>Annuler la création/lien de compte</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2402"/>
+ <source>push button to cancel account creation or linking</source>
+ <translation>Bouton pour déclencher la création d'un compte Jami ou association</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2405"/>
+ <source>Back</source>
+ <translation>Précédent</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2442"/>
+ <source>Next page Button</source>
+ <translation>bouton prochaine page</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2448"/>
+ <source>Push button to access next page of wizard</source>
+ <translation>Appuyez sur le bouton pour accéder à la page suivante de l'assistant</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2451"/>
+ <source>Next</source>
+ <translation>Suivant</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="75"/>
+ <source>Open File</source>
+ <translation>Ouvrir un fichier</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="77"/>
+ <source>Jami archive files (*.gz); All files (*)</source>
+ <translation>Fichier d'archive de compte Jami (*.gz); Tout fichier (*)</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="123"/>
+ <source>Your account needs to be migrated. Enter your password.</source>
+ <translation>Votre compte doit être migré. Entrez votre mot de passe</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="419"/>
+ <source>Migrating your Jami account...</source>
+ <translation>Migration de votre compte Jami...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="412"/>
+ <source>Importing account archive...</source>
+ <translation>Importation de l'archive du compte</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="404"/>
+ <source>Generating your Jami account...</source>
+ <translation>Génération de votre compte Jami...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="422"/>
+ <source>Generating your SIP account...</source>
+ <translation>Création de votre compte SIP ...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="533"/>
+ <source>Error creating account</source>
+ <translation>Erreur pendant la création du compte</translation>
+ </message>
+</context>
+<context>
+ <name>PasswordDialog</name>
+ <message>
+ <location filename="../passworddialog.ui" line="32"/>
+ <source>Change Account Password</source>
+ <translation>Changer le mot de passe du compte</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="97"/>
+ <source>Enter Current Password</source>
+ <translation>Entrez le mot de passe actuel</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="169"/>
+ <source>Enter New Password</source>
+ <translation>Entrez le nouveau mot de passe</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="190"/>
+ <source>Confirm New Password</source>
+ <translation>Confirmer le nouveau mot de passe</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="247"/>
+ <source>Confirm</source>
+ <translation>Confirmer</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="290"/>
+ <source>Cancel</source>
+ <translation>Annuler</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="143"/>
+ <source>Current Password Incorrect</source>
+ <translation>Mot de passe actuel incorrect </translation>
+ </message>
+</context>
+<context>
+ <name>PhotoBoothDialog</name>
+ <message>
+ <location filename="../photoboothdialog.ui" line="14"/>
+ <source>Photobooth</source>
+ <translation>Kiosque de photo</translation>
+ </message>
+</context>
+<context>
+ <name>PhotoboothWidget</name>
+ <message>
+ <location filename="../photoboothwidget.ui" line="20"/>
+ <source>Form</source>
+ <translation>Formulaire</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.ui" line="120"/>
+ <source>Photobooth display</source>
+ <translation>Affichage du photomaton</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="92"/>
+ <source>Choose File</source>
+ <translation>Choisir un fichier</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="94"/>
+ <source>Image Files (*.jpg *.jpeg *.png)</source>
+ <translation>Fichiers images (JPG, JPEG, PNG)</translation>
+ </message>
+</context>
+<context>
+ <name>PrivateBridging</name>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Choose File</source>
+ <translation>Choisir un fichier</translation>
+ </message>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Files (*)</source>
+ <translation>Fichiers (*)</translation>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../utils.cpp" line="183"/>
+ <source>No default mail client found</source>
+ <translation>Aucun client email trouvé</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="43"/>
+ <location filename="../deviceitemwidget.cpp" line="85"/>
+ <source>Edit Device Name</source>
+ <translation>Modifier le nom de l'appareil</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="44"/>
+ <source>Unlink Device From Account</source>
+ <translation>Dissocier cet appareil d'un compte</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="80"/>
+ <source>Save new device name</source>
+ <translation>Sauvegarder le nouveau nom d'appareil</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.cpp" line="39"/>
+ <source>Add as contact</source>
+ <translation>Rajouter comme contact</translation>
+ </message>
+</context>
+<context>
+ <name>RingButton</name>
+ <message>
+ <location filename="../ringbutton.ui" line="140"/>
+ <source>Select folder</source>
+ <translation>Selectionner le fichier</translation>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <location filename="../settingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulaire</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="141"/>
+ <source>Settings</source>
+ <translation>Paramètres</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="229"/>
+ <source>Account</source>
+ <translation>Compte</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="267"/>
+ <location filename="../settingswidget.ui" line="503"/>
+ <source>General</source>
+ <translation>Général</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="305"/>
+ <location filename="../settingswidget.ui" line="3416"/>
+ <source>Audio / Video</source>
+ <translation>Audio / Vidéo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="542"/>
+ <source>System</source>
+ <translation>Système</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="610"/>
+ <source>Enable desktop notifications</source>
+ <translation>Activer les notifications du bureau</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="653"/>
+ <source>Keep minimized on close</source>
+ <translation>Laisser minimisé en fermant</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="678"/>
+ <source>Download folder</source>
+ <translation>Répertoire de téléchargement</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="811"/>
+ <source>Save in</source>
+ <translation>Enregistrer dans</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="904"/>
+ <source>Always Recording</source>
+ <translation>Enregistrer tout le temps</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="943"/>
+ <source>Updates</source>
+ <translation>Mises à jour</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1008"/>
+ <source>Check for updates automatically every</source>
+ <translation>Vérifiez automatiquement les mises à jours tous les </translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1032"/>
+ <source>Interval between update checks in days selector</source>
+ <translation>Sélectionneur d'intervalle de jour pour la vérification des mises à jour</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1038"/>
+ <source> days</source>
+ <translation>jours</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1081"/>
+ <source>Check for updates now button</source>
+ <translation>Bouton vérifier les mises à jour actuelles</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1084"/>
+ <source>Check for updates now</source>
+ <translation>Vérifier les mises-à-jour</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3027"/>
+ <source>Password</source>
+ <translation>Mot de passe</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1418"/>
+ <location filename="../settingswidget.ui" line="2729"/>
+ <source>Enable</source>
+ <translation>Activer</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="607"/>
+ <source>toggle enable notifications</source>
+ <translation>Case à cocher Activer les notifications</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="650"/>
+ <source>Toggle keep minimized on close</source>
+ <translation>Case à cocher laisser minimisé à la fermeture</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="764"/>
+ <source>Call Recordings</source>
+ <translation>Appel enregistrement</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1005"/>
+ <source>Toggle automatic updates</source>
+ <translation>Case à cocher des mises à jour automatiques</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1231"/>
+ <source>Jami Account</source>
+ <translation>Compte Jami</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1453"/>
+ <location filename="../settingswidget.ui" line="2761"/>
+ <source>Profile</source>
+ <translation>Profil</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1567"/>
+ <location filename="../settingswidget.ui" line="2875"/>
+ <source>Identity</source>
+ <translation>Identité</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1614"/>
+ <source>Id</source>
+ <translation>Identifiant</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1673"/>
+ <source>Registered name</source>
+ <translation>Nom enregistré</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1721"/>
+ <source>Type here to register a username</source>
+ <translation>Saisissez ici le nom d'enregistrement</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1755"/>
+ <source>Register</source>
+ <translation>Enregistrer</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1827"/>
+ <source>Change Password</source>
+ <translation>Changer le mot de passe</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1868"/>
+ <source>Export Account</source>
+ <translation>Exporter le compte</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1909"/>
+ <location filename="../settingswidget.ui" line="3089"/>
+ <source>Delete Account</source>
+ <translation>Supprimer le compte</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1973"/>
+ <source>Linked Devices</source>
+ <translation>Appareils associés</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2078"/>
+ <source>Link Another Device</source>
+ <translation>Associer un autre appareil</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2142"/>
+ <source>Banned Contacts</source>
+ <translation>Contacts bannis</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3788"/>
+ <source>Format</source>
+ <translation>Format</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3831"/>
+ <source>Video device framerate selector</source>
+ <translation>Sélecteur du débit de trame vidéo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3967"/>
+ <source>Preview unavailable</source>
+ <translation>Prévisualisation indisponible</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2359"/>
+ <location filename="../settingswidget.ui" line="3187"/>
+ <source>Advanced Account Settings</source>
+ <translation>Paramètres avancés du compte</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2554"/>
+ <source>SIP Account</source>
+ <translation>Compte SIP</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2925"/>
+ <source>Username</source>
+ <translation>Nom d'utilisateur</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2958"/>
+ <source>Hostname</source>
+ <translation>Nom d'hôte</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2991"/>
+ <source>Proxy</source>
+ <translation>Serveur mandataire</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3461"/>
+ <source>Audio</source>
+ <translation>Audio</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3511"/>
+ <source>Microphone</source>
+ <translation>Microphone</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3551"/>
+ <source>Audio input device selector</source>
+ <translation>Sélecteur d'entrée audio </translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3585"/>
+ <source>Output Device</source>
+ <translation>Périphérique de sortie</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3625"/>
+ <source>Choose the output device</source>
+ <translation>Choisissez le périphérique de sortie</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3682"/>
+ <source>Video</source>
+ <translation>Vidéo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3720"/>
+ <source>Device</source>
+ <translation>Appareil</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3766"/>
+ <source>Video device selector</source>
+ <translation>Sélecteur de périphérique vidéeo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="459"/>
+ <source>A registered name should not have any spaces and must be at least three letters long</source>
+ <translation>Un nom d’enregistrement est composé d'un minimum de 3 caractères et ne doit contenir aucun espace</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="466"/>
+ <source>This name is already taken</source>
+ <translation>Ce nom a déjà été pris</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="92"/>
+ <location filename="../settingswidget.cpp" line="110"/>
+ <source>Enter an alias</source>
+ <translation>Entrer un alias</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="473"/>
+ <source>Register this name</source>
+ <translation>Enregistrer ce nom</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="550"/>
+ <source>Remove Device</source>
+ <translation>Supprimer cet appareil</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="551"/>
+ <source>Enter this account's password to confirm the removal of this device</source>
+ <translation>Entrer le mot de passe du compte pour confirmer la suppression de cet appareil</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="558"/>
+ <source>Are you sure you wish to remove this device?</source>
+ <translation>Êtes-vous certain que vous souhaitez supprimer cet appareil ?</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="589"/>
+ <source>Export Account Here</source>
+ <translation>Exporter le compte ici</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="887"/>
+ <source>Select A Folder For Your Downloads</source>
+ <translation>Choisissez un répertoire pour vos téléchargements</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="904"/>
+ <source>Select A Folder For Your Recordings</source>
+ <translation>Choisissez un répertoire pour vos enregistrements</translation>
+ </message>
+</context>
+<context>
+ <name>VideoOverlay</name>
+ <message>
+ <location filename="../videooverlay.ui" line="419"/>
+ <source>Call on Hold</source>
+ <translation>Appel en attente</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="89"/>
+ <source>Hold / Unhold</source>
+ <translation>Pause / Reprendre</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="124"/>
+ <source>Chat</source>
+ <translation>Clavardage</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="162"/>
+ <source>Mute Mic</source>
+ <translation>Couper le micro</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="244"/>
+ <source>Record call</source>
+ <translation>Enregistrer l'appel</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="325"/>
+ <source>Name label</source>
+ <translation>Étiquette de nom</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="390"/>
+ <source>Time elapsed</source>
+ <translation>Temps écoulé</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="393"/>
+ <source>00:00</source>
+ <translation>00:00</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="57"/>
+ <source>Hangup</source>
+ <translation>Raccrocher</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="203"/>
+ <source>Mute Video</source>
+ <translation>Désactiver la vidéo</translation>
+ </message>
+</context>
+<context>
+ <name>VideoView</name>
+ <message>
+ <location filename="../videoview.cpp" line="271"/>
+ <source>Share entire screen</source>
+ <translation>Partager tout l'écran</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="274"/>
+ <source>Share screen area</source>
+ <translation>Partager une partie de l'écran</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="281"/>
+ <source>Share file</source>
+ <translation>Partager un fichier</translation>
+ </message>
+</context>
+</TS>
\ No newline at end of file
diff --git a/translations/ring_client_windows_fr_BE.ts b/translations/ring_client_windows_fr_BE.ts
new file mode 100644
index 0000000..f94c386
--- /dev/null
+++ b/translations/ring_client_windows_fr_BE.ts
@@ -0,0 +1,1589 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="fr_BE" version="2.0">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../aboutdialog.ui" line="435"/>
+ <location filename="../aboutdialog.ui" line="465"/>
+ <source>About</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="462"/>
+ <source>about button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="478"/>
+ <source>credits button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="481"/>
+ <source>Credits</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="547"/>
+ <source>Free as in Freedom</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="563"/>
+ <source>The Microsoft Windows client for Jami.
+Jami is a secured and distributed communication software.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="32"/>
+ <source>version</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="39"/>
+ <source>Created by:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="73"/>
+ <source>Artwork by:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="77"/>
+ <source>Based on the SFLPhone project</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AccountItemDelegate</name>
+ <message>
+ <location filename="../accountitemdelegate.cpp" line="91"/>
+ <source>Add Account</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSIPSettingsWidget</name>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="55"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="102"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="130"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="191"/>
+ <source>Connectivity</source>
+ <translation>Connectivité</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="281"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="293"/>
+ <source>Use STUN</source>
+ <translation>Utiliser STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="317"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="329"/>
+ <source>Use TURN</source>
+ <translation>Utiliser le TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="359"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="391"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="423"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="464"/>
+ <source>Media</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="515"/>
+ <source>Enable Video</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="539"/>
+ <source>Video Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="692"/>
+ <source>Audio Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="142"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="151"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSettingsWidget</name>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="61"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="108"/>
+ <source>Allow Calls From Untrusted Peers</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="133"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="161"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="188"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="225"/>
+ <source>Name Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="275"/>
+ <source>Address</source>
+ <translation>Adresse</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="351"/>
+ <source>OpenDHT Configuration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="398"/>
+ <source>Enable Proxy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="454"/>
+ <source>Bootstrap</source>
+ <translation>Amorcer</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="530"/>
+ <source>Security</source>
+ <translation>Sécurité</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="571"/>
+ <source>Private Key Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="583"/>
+ <source>User Certificate</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="622"/>
+ <source>Private Key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="634"/>
+ <source>CA Certificate</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="766"/>
+ <source>Connectivity</source>
+ <translation>Connectivité</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="868"/>
+ <source>Use STUN</source>
+ <translation>Utiliser STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="856"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="892"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="904"/>
+ <source>Use TURN</source>
+ <translation>Utiliser le TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="934"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="966"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="998"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1039"/>
+ <source>Media</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1090"/>
+ <source>Enable Video</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1267"/>
+ <source>Audio Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1114"/>
+ <source>Video Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="181"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AnimatedOverlay</name>
+ <message>
+ <location filename="../animatedoverlay.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>BannedItemWidget</name>
+ <message>
+ <location filename="../banneditemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="80"/>
+ <source>name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="104"/>
+ <source>id</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>CallWidget</name>
+ <message>
+ <location filename="../callwidget.ui" line="184"/>
+ <source>Show conversations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="187"/>
+ <source>Conversations</source>
+ <translation>Conversations</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="368"/>
+ <source>Search contact text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="653"/>
+ <source>Jami is free software for universal communication which respects the freedoms and privacy of its users.</source>
+ <translation>Jami est un logiciel libre de communication universel qui respecte la vie privée et l'intimité de ses utilisateurs.</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="693"/>
+ <source>
+ This is your ID.
+Copy and share it with your friends!
+ </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="806"/>
+ <source>Show ring ID QR code</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="857"/>
+ <source>Share ring ID button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="915"/>
+ <source>Double-click to copy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="956"/>
+ <source>Error while generating QR Code</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1184"/>
+ <location filename="../callwidget.ui" line="1434"/>
+ <source>best name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1208"/>
+ <source>best Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1734"/>
+ <source>Back to homepage button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1943"/>
+ <source>Add to contacts</source>
+ <translation>Ajouter aux contacts</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="202"/>
+ <source>Show invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="205"/>
+ <source>Invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="377"/>
+ <location filename="../callwidget.cpp" line="552"/>
+ <source>Find a new or existing contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1444"/>
+ <source>Wants to talk to you!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1517"/>
+ <source>Answer incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1589"/>
+ <source>Ignore incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1539"/>
+ <source>Answer</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1617"/>
+ <source>Ignore</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1280"/>
+ <source>Cancel outgoing call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1305"/>
+ <source>Cancel</source>
+ <translation>Annuler</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="332"/>
+ <source>Start video call</source>
+ <translation>Démarrer appel video</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="343"/>
+ <source>Start audio call</source>
+ <translation>Démarrer appel audio</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="354"/>
+ <source>Clear conversation</source>
+ <translation>Effacer la conversation</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="361"/>
+ <source>Remove contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="373"/>
+ <source>Block contact</source>
+ <translation>Bloquer le contact</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="384"/>
+ <source>Copy number</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="561"/>
+ <source>Search your received invitations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>Contact me on Jami</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>My Id is : </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="847"/>
+ <source>%1</source>
+ <comment>%1 is the contact username</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="852"/>
+ <source>%1</source>
+ <comment>%1 is the contact unique identifier</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="675"/>
+ <source>Call incoming from %1</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>DeleteAccountDialog</name>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="35"/>
+ <source>Account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="58"/>
+ <source>Do you really want to delete the following account?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="153"/>
+ <source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="235"/>
+ <source>Permanently delete account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="241"/>
+ <source>Delete</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="278"/>
+ <source>Cancel account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="284"/>
+ <source>Cancel</source>
+ <translation>Annuler</translation>
+ </message>
+</context>
+<context>
+ <name>DeviceItemWidget</name>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="105"/>
+ <source>Device Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="143"/>
+ <source>this device</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>InviteButtonsWidget</name>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="83"/>
+ <source>Accept</source>
+ <translation>Accepter</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="131"/>
+ <source>Refuse</source>
+ <translation>Refuser</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="179"/>
+ <source>Block</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>LinkDeviceDialog</name>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="62"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="117"/>
+ <source>Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="184"/>
+ <source>Ok</source>
+ <translation>OK</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="218"/>
+ <source>Cancel</source>
+ <translation>Annuler</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="279"/>
+ <source>Exporting account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="402"/>
+ <source>Your PIN is</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="432"/>
+ <source>PIN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="477"/>
+ <source>This pin and the account password should be entered in your device within 10 minutes.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="553"/>
+ <source>Close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="34"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="96"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="110"/>
+ <source>Something went wrong.
+Please try again later.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="83"/>
+ <source>Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="94"/>
+ <source>Exit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="111"/>
+ <source>About</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="435"/>
+ <source>Jami</source>
+ <translation>Jami</translation>
+ </message>
+</context>
+<context>
+ <name>NameRegistrationDialog</name>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="35"/>
+ <source>Set Registered Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="163"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="244"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="250"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="256"/>
+ <source>Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="323"/>
+ <source>Register</source>
+ <translation>Enregistrer</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="357"/>
+ <source>Cancel</source>
+ <translation>Annuler</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="424"/>
+ <source>Registering Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="548"/>
+ <source>Something went wrong</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="618"/>
+ <source>Close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="82"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="85"/>
+ <source>Network error</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>NewWizardWidget</name>
+ <message>
+ <location filename="../newwizardwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="141"/>
+ <source>Welcome Label</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="147"/>
+ <source> Welcome to</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="185"/>
+ <source>Welcome Logo</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="239"/>
+ <source>Create Jami account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="245"/>
+ <source>Push button for Jami account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="251"/>
+ <source>Create a Jami account</source>
+ <translation>Créer un compte Jami</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="282"/>
+ <source>Link device button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="288"/>
+ <source>Push button for device linkage start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="291"/>
+ <source>Link this device to an account</source>
+ <translation>Lier cet appareil à un compte</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="328"/>
+ <source>Create Jami SIP account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="334"/>
+ <source>Push button for Jami SIP account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="340"/>
+ <source>Create a SIP account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="405"/>
+ <source>Link this device to an existing account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="469"/>
+ <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">To link this device to another account, you first </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">need to obtain a PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> code. To generate the PIN code:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Account management setting</span><span style=" font-size:14px;"> of a previous device</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choose the </span><span style=" font-size:14px; font-weight:600;">Jami account</span><span style=" font-size:14px;"> you want to use</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Devices</span><span style=" font-size:14px;"> tab</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Select </span><span style=" font-size:14px; font-weight:600;">Add a device</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">You will get the necessary PIN to complete this form. The PIN is only valid for </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutes</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="531"/>
+ <source>Enter your pin:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="599"/>
+ <source>Or import a file:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="626"/>
+ <source>Link from exported account archive file</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="629"/>
+ <location filename="../newwizardwidget.cpp" line="83"/>
+ <location filename="../newwizardwidget.cpp" line="218"/>
+ <source>(None)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="705"/>
+ <source>Password:</source>
+ <translation>Mot de passe:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="799"/>
+ <location filename="../newwizardwidget.ui" line="1586"/>
+ <source>Profile</source>
+ <translation>Profil</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="953"/>
+ <location filename="../newwizardwidget.ui" line="1767"/>
+ <source>Profile name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1027"/>
+ <source>Account</source>
+ <translation>Compte</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1136"/>
+ <source>Register your username.
+This will reserve the username so that only you can use it.
+Your friends will be able to call you with your usename
+instead of using your ID.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1142"/>
+ <source>Public username checkbox</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1145"/>
+ <source>Checkbox selecting if the user wants a public username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1148"/>
+ <source>Register public username</source>
+ <translation>Enregistrer un nom d'utilisateur public</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1367"/>
+ <source>Public username edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1373"/>
+ <source>Choose your username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1289"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1295"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1301"/>
+ <location filename="../newwizardwidget.ui" line="2213"/>
+ <source>Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1211"/>
+ <location filename="../newwizardwidget.ui" line="1217"/>
+ <source>Password confirmation text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1223"/>
+ <source>Confirm password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1814"/>
+ <source>SIP Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1973"/>
+ <source>SIP Server edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1979"/>
+ <source>Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2045"/>
+ <source>SIP proxy input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2051"/>
+ <source>SIP proxy text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2057"/>
+ <source>Proxy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2123"/>
+ <source>SIP username input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2129"/>
+ <source>SIP Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2135"/>
+ <source>Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2201"/>
+ <location filename="../newwizardwidget.ui" line="2207"/>
+ <source>SIP Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message utf8="true">
+ <location filename="../newwizardwidget.ui" line="2282"/>
+ <source>Generating your Jami account…</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2356"/>
+ <source>Previous page button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2362"/>
+ <source>push button to access previous page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2365"/>
+ <source>Previous</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2396"/>
+ <source>Cancel account create/link</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2402"/>
+ <source>push button to cancel account creation or linking</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2405"/>
+ <source>Back</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2442"/>
+ <source>Next page Button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2448"/>
+ <source>Push button to access next page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2451"/>
+ <source>Next</source>
+ <translation>Suivant</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="75"/>
+ <source>Open File</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="77"/>
+ <source>Jami archive files (*.gz); All files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="123"/>
+ <source>Your account needs to be migrated. Enter your password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="419"/>
+ <source>Migrating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="412"/>
+ <source>Importing account archive...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="404"/>
+ <source>Generating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="422"/>
+ <source>Generating your SIP account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="533"/>
+ <source>Error creating account</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PasswordDialog</name>
+ <message>
+ <location filename="../passworddialog.ui" line="32"/>
+ <source>Change Account Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="97"/>
+ <source>Enter Current Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="169"/>
+ <source>Enter New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="190"/>
+ <source>Confirm New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="247"/>
+ <source>Confirm</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="290"/>
+ <source>Cancel</source>
+ <translation>Annuler</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="143"/>
+ <source>Current Password Incorrect</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PhotoBoothDialog</name>
+ <message>
+ <location filename="../photoboothdialog.ui" line="14"/>
+ <source>Photobooth</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PhotoboothWidget</name>
+ <message>
+ <location filename="../photoboothwidget.ui" line="20"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.ui" line="120"/>
+ <source>Photobooth display</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="92"/>
+ <source>Choose File</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="94"/>
+ <source>Image Files (*.jpg *.jpeg *.png)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PrivateBridging</name>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Choose File</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../utils.cpp" line="183"/>
+ <source>No default mail client found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="43"/>
+ <location filename="../deviceitemwidget.cpp" line="85"/>
+ <source>Edit Device Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="44"/>
+ <source>Unlink Device From Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="80"/>
+ <source>Save new device name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.cpp" line="39"/>
+ <source>Add as contact</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>RingButton</name>
+ <message>
+ <location filename="../ringbutton.ui" line="140"/>
+ <source>Select folder</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <location filename="../settingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="141"/>
+ <source>Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="229"/>
+ <source>Account</source>
+ <translation>Compte</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="267"/>
+ <location filename="../settingswidget.ui" line="503"/>
+ <source>General</source>
+ <translation>Général</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="305"/>
+ <location filename="../settingswidget.ui" line="3416"/>
+ <source>Audio / Video</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="542"/>
+ <source>System</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="610"/>
+ <source>Enable desktop notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="653"/>
+ <source>Keep minimized on close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="678"/>
+ <source>Download folder</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="811"/>
+ <source>Save in</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="904"/>
+ <source>Always Recording</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="943"/>
+ <source>Updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1008"/>
+ <source>Check for updates automatically every</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1032"/>
+ <source>Interval between update checks in days selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1038"/>
+ <source> days</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1081"/>
+ <source>Check for updates now button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1084"/>
+ <source>Check for updates now</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3027"/>
+ <source>Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1418"/>
+ <location filename="../settingswidget.ui" line="2729"/>
+ <source>Enable</source>
+ <translation>Activé</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="607"/>
+ <source>toggle enable notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="650"/>
+ <source>Toggle keep minimized on close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="764"/>
+ <source>Call Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1005"/>
+ <source>Toggle automatic updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1231"/>
+ <source>Jami Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1453"/>
+ <location filename="../settingswidget.ui" line="2761"/>
+ <source>Profile</source>
+ <translation>Profil</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1567"/>
+ <location filename="../settingswidget.ui" line="2875"/>
+ <source>Identity</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1614"/>
+ <source>Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1673"/>
+ <source>Registered name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1721"/>
+ <source>Type here to register a username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1755"/>
+ <source>Register</source>
+ <translation>Enregistrer</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1827"/>
+ <source>Change Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1868"/>
+ <source>Export Account</source>
+ <translation>Sauvegarder Compte</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1909"/>
+ <location filename="../settingswidget.ui" line="3089"/>
+ <source>Delete Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1973"/>
+ <source>Linked Devices</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2078"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2142"/>
+ <source>Banned Contacts</source>
+ <translation>Contacts bannis</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3788"/>
+ <source>Format</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3831"/>
+ <source>Video device framerate selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3967"/>
+ <source>Preview unavailable</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2359"/>
+ <location filename="../settingswidget.ui" line="3187"/>
+ <source>Advanced Account Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2554"/>
+ <source>SIP Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2925"/>
+ <source>Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2958"/>
+ <source>Hostname</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2991"/>
+ <source>Proxy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3461"/>
+ <source>Audio</source>
+ <translation>Audio</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3511"/>
+ <source>Microphone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3551"/>
+ <source>Audio input device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3585"/>
+ <source>Output Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3625"/>
+ <source>Choose the output device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3682"/>
+ <source>Video</source>
+ <translation>Vidéo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3720"/>
+ <source>Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3766"/>
+ <source>Video device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="459"/>
+ <source>A registered name should not have any spaces and must be at least three letters long</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="466"/>
+ <source>This name is already taken</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="92"/>
+ <location filename="../settingswidget.cpp" line="110"/>
+ <source>Enter an alias</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="473"/>
+ <source>Register this name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="550"/>
+ <source>Remove Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="551"/>
+ <source>Enter this account's password to confirm the removal of this device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="558"/>
+ <source>Are you sure you wish to remove this device?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="589"/>
+ <source>Export Account Here</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="887"/>
+ <source>Select A Folder For Your Downloads</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="904"/>
+ <source>Select A Folder For Your Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>VideoOverlay</name>
+ <message>
+ <location filename="../videooverlay.ui" line="419"/>
+ <source>Call on Hold</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="89"/>
+ <source>Hold / Unhold</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="124"/>
+ <source>Chat</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="162"/>
+ <source>Mute Mic</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="244"/>
+ <source>Record call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="325"/>
+ <source>Name label</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="390"/>
+ <source>Time elapsed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="393"/>
+ <source>00:00</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="57"/>
+ <source>Hangup</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="203"/>
+ <source>Mute Video</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>VideoView</name>
+ <message>
+ <location filename="../videoview.cpp" line="271"/>
+ <source>Share entire screen</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="274"/>
+ <source>Share screen area</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="281"/>
+ <source>Share file</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+</TS>
\ No newline at end of file
diff --git a/translations/ring_client_windows_fr_CA.ts b/translations/ring_client_windows_fr_CA.ts
new file mode 100644
index 0000000..10e8ad7
--- /dev/null
+++ b/translations/ring_client_windows_fr_CA.ts
@@ -0,0 +1,1591 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="fr_CA" version="2.0">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../aboutdialog.ui" line="435"/>
+ <location filename="../aboutdialog.ui" line="465"/>
+ <source>About</source>
+ <translation>À propos</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="462"/>
+ <source>about button</source>
+ <translation>bouton à propos</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="478"/>
+ <source>credits button</source>
+ <translation>bouton crédits</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="481"/>
+ <source>Credits</source>
+ <translation>Crédits</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="547"/>
+ <source>Free as in Freedom</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="563"/>
+ <source>The Microsoft Windows client for Jami.
+Jami is a secured and distributed communication software.</source>
+ <translation>Le client Microsoft Windows pour Jami.
+Jami est un logiciel de communication sécurisé et distribué.</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="32"/>
+ <source>version</source>
+ <translation>version</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="39"/>
+ <source>Created by:</source>
+ <translation>Créé par :</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="73"/>
+ <source>Artwork by:</source>
+ <translation>Artwork de: </translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="77"/>
+ <source>Based on the SFLPhone project</source>
+ <translation>Basé sur le projet SFLPhone</translation>
+ </message>
+</context>
+<context>
+ <name>AccountItemDelegate</name>
+ <message>
+ <location filename="../accountitemdelegate.cpp" line="91"/>
+ <source>Add Account</source>
+ <translation>Ajouter un compte</translation>
+ </message>
+</context>
+<context>
+ <name>AdvancedSIPSettingsWidget</name>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulaire </translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="55"/>
+ <source>Call Settings</source>
+ <translation>Paramètres d'appel</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="102"/>
+ <source>Auto Answer Calls</source>
+ <translation>Réponse automatique aux appels</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="130"/>
+ <source>Enable Custom Ringtone</source>
+ <translation>Activer une sonnerie personnalisée</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="191"/>
+ <source>Connectivity</source>
+ <translation>Connectivité</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="281"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="293"/>
+ <source>Use STUN</source>
+ <translation>Utiliser STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="317"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="329"/>
+ <source>Use TURN</source>
+ <translation>Utiliser le TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="359"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="391"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="423"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="464"/>
+ <source>Media</source>
+ <translation>Média</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="515"/>
+ <source>Enable Video</source>
+ <translation>Activer la vidéo</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="539"/>
+ <source>Video Codecs</source>
+ <translation>Codecs Vidéo</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="692"/>
+ <source>Audio Codecs</source>
+ <translation>Codecs Audio</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="142"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="151"/>
+ <source>Add a custom ringtone</source>
+ <translation>Ajouter une sonnerie personnalisée</translation>
+ </message>
+</context>
+<context>
+ <name>AdvancedSettingsWidget</name>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulaire </translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="61"/>
+ <source>Call Settings</source>
+ <translation>Paramètres d'appel</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="108"/>
+ <source>Allow Calls From Untrusted Peers</source>
+ <translation> Autoriser les appels d'une source inconnue </translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="133"/>
+ <source>Auto Answer Calls</source>
+ <translation>Réponse automatique aux appels</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="161"/>
+ <source>Enable Custom Ringtone</source>
+ <translation>Activer une sonnerie personnalisée</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="188"/>
+ <source>Add a custom ringtone</source>
+ <translation>Ajouter une sonnerie personnalisée</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="225"/>
+ <source>Name Server</source>
+ <translation>Nom du serveur</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="275"/>
+ <source>Address</source>
+ <translation>Adresse</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="351"/>
+ <source>OpenDHT Configuration</source>
+ <translation>Configuration de l'OpenDHT</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="398"/>
+ <source>Enable Proxy</source>
+ <translation>Activer le Proxy</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="454"/>
+ <source>Bootstrap</source>
+ <translation>Amorcer</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="530"/>
+ <source>Security</source>
+ <translation>Sécurité</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="571"/>
+ <source>Private Key Password</source>
+ <translation>Mot de passe de la clé privée</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="583"/>
+ <source>User Certificate</source>
+ <translation>certificat d'utilisateur</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="622"/>
+ <source>Private Key</source>
+ <translation>Clé privée</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="634"/>
+ <source>CA Certificate</source>
+ <translation>Certificat CA</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="766"/>
+ <source>Connectivity</source>
+ <translation>Connectivité</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="868"/>
+ <source>Use STUN</source>
+ <translation>Utiliser STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="856"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="892"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="904"/>
+ <source>Use TURN</source>
+ <translation>Utiliser le TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="934"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="966"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="998"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1039"/>
+ <source>Media</source>
+ <translation>Média</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1090"/>
+ <source>Enable Video</source>
+ <translation>Activer la vidéo</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1267"/>
+ <source>Audio Codecs</source>
+ <translation>Codecs Audio</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1114"/>
+ <source>Video Codecs</source>
+ <translation>Codecs Vidéo</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="181"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AnimatedOverlay</name>
+ <message>
+ <location filename="../animatedoverlay.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulaire </translation>
+ </message>
+</context>
+<context>
+ <name>BannedItemWidget</name>
+ <message>
+ <location filename="../banneditemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulaire </translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="80"/>
+ <source>name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="104"/>
+ <source>id</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>CallWidget</name>
+ <message>
+ <location filename="../callwidget.ui" line="184"/>
+ <source>Show conversations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="187"/>
+ <source>Conversations</source>
+ <translation>Conversations</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="368"/>
+ <source>Search contact text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="653"/>
+ <source>Jami is free software for universal communication which respects the freedoms and privacy of its users.</source>
+ <translation>Jami est un logiciel libre de communication universel qui respecte la vie privée et l'intimité de ses utilisateurs.</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="693"/>
+ <source>
+ This is your ID.
+Copy and share it with your friends!
+ </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="806"/>
+ <source>Show ring ID QR code</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="857"/>
+ <source>Share ring ID button</source>
+ <translation>Bouton partager l'identificateur Ring</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="915"/>
+ <source>Double-click to copy</source>
+ <translation>Double-cliquez pour copier</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="956"/>
+ <source>Error while generating QR Code</source>
+ <translation>Une erreur s'est produite lors de la génération du code QR</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1184"/>
+ <location filename="../callwidget.ui" line="1434"/>
+ <source>best name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1208"/>
+ <source>best Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1734"/>
+ <source>Back to homepage button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1943"/>
+ <source>Add to contacts</source>
+ <translation>Ajouter aux contacts</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="202"/>
+ <source>Show invites</source>
+ <translation>Montrer les invitations</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="205"/>
+ <source>Invites</source>
+ <translation>Invitations</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="377"/>
+ <location filename="../callwidget.cpp" line="552"/>
+ <source>Find a new or existing contact</source>
+ <translation>Trouver un nouveau contact ou un contact existant</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1444"/>
+ <source>Wants to talk to you!</source>
+ <translation>veut vous parler!</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1517"/>
+ <source>Answer incoming call button</source>
+ <translation>Répondre à l'appel entrant</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1589"/>
+ <source>Ignore incoming call button</source>
+ <translation>Ignorer l'appel entrant</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1539"/>
+ <source>Answer</source>
+ <translation>Répondre</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1617"/>
+ <source>Ignore</source>
+ <translation>Ignorer</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1280"/>
+ <source>Cancel outgoing call</source>
+ <translation>Annuler l'appel sortant</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1305"/>
+ <source>Cancel</source>
+ <translation>Annuler</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="332"/>
+ <source>Start video call</source>
+ <translation>Démarrer appel video</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="343"/>
+ <source>Start audio call</source>
+ <translation>Démarrer appel audio</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="354"/>
+ <source>Clear conversation</source>
+ <translation>Effacer la conversation</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="361"/>
+ <source>Remove contact</source>
+ <translation>Supprimer contact</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="373"/>
+ <source>Block contact</source>
+ <translation>Bloquer le contact</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="384"/>
+ <source>Copy number</source>
+ <translation>Copier le numéro</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="561"/>
+ <source>Search your received invitations</source>
+ <translation>Recherchez vos invitations reçues</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>Contact me on Jami</source>
+ <translation>Contactez-moi sur Jami</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>My Id is : </source>
+ <translation>Mon identifiant est :</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="847"/>
+ <source>%1</source>
+ <comment>%1 is the contact username</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="852"/>
+ <source>%1</source>
+ <comment>%1 is the contact unique identifier</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="675"/>
+ <source>Call incoming from %1</source>
+ <translation>Appel entrant de %1</translation>
+ </message>
+</context>
+<context>
+ <name>DeleteAccountDialog</name>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="35"/>
+ <source>Account deletion</source>
+ <translation>Suppression de compte</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="58"/>
+ <source>Do you really want to delete the following account?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="153"/>
+ <source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="235"/>
+ <source>Permanently delete account</source>
+ <translation>Supprimer définitivement le compte</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="241"/>
+ <source>Delete</source>
+ <translation>Supprimer</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="278"/>
+ <source>Cancel account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="284"/>
+ <source>Cancel</source>
+ <translation>Annuler</translation>
+ </message>
+</context>
+<context>
+ <name>DeviceItemWidget</name>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulaire </translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="105"/>
+ <source>Device Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="143"/>
+ <source>this device</source>
+ <translation>cet appareil</translation>
+ </message>
+</context>
+<context>
+ <name>InviteButtonsWidget</name>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="83"/>
+ <source>Accept</source>
+ <translation>Accepter</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="131"/>
+ <source>Refuse</source>
+ <translation>Refuser</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="179"/>
+ <source>Block</source>
+ <translation>Bloquer</translation>
+ </message>
+</context>
+<context>
+ <name>LinkDeviceDialog</name>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation>Dialogue</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="62"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="117"/>
+ <source>Password</source>
+ <translation>Mot de passe</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="184"/>
+ <source>Ok</source>
+ <translation>Ok</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="218"/>
+ <source>Cancel</source>
+ <translation>Annuler</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="279"/>
+ <source>Exporting account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="402"/>
+ <source>Your PIN is</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="432"/>
+ <source>PIN</source>
+ <translation>NIP</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="477"/>
+ <source>This pin and the account password should be entered in your device within 10 minutes.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="553"/>
+ <source>Close</source>
+ <translation>Fermer</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="34"/>
+ <source>Link Another Device</source>
+ <translation>Connecter un autre appareil</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="96"/>
+ <source>Incorrect password</source>
+ <translation>Mot de passe incorrect</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="110"/>
+ <source>Something went wrong.
+Please try again later.</source>
+ <translation>Une erreur s'est produite.
+Veuillez réessayer plus tard.</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="83"/>
+ <source>Settings</source>
+ <translation>Réglages</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="94"/>
+ <source>Exit</source>
+ <translation>Quitter</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="111"/>
+ <source>About</source>
+ <translation>À propos</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="435"/>
+ <source>Jami</source>
+ <translation>Jami</translation>
+ </message>
+</context>
+<context>
+ <name>NameRegistrationDialog</name>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="35"/>
+ <source>Set Registered Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="163"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="244"/>
+ <source>Password text input</source>
+ <translation>Entrée du mot de passe </translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="250"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="256"/>
+ <source>Password</source>
+ <translation>Mot de passe</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="323"/>
+ <source>Register</source>
+ <translation>Inscription</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="357"/>
+ <source>Cancel</source>
+ <translation>Annuler</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="424"/>
+ <source>Registering Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="548"/>
+ <source>Something went wrong</source>
+ <translation>Une erreur s'est produite</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="618"/>
+ <source>Close</source>
+ <translation>Fermer</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="82"/>
+ <source>Incorrect password</source>
+ <translation>Mot de passe incorrect</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="85"/>
+ <source>Network error</source>
+ <translation>Erreur de réseau</translation>
+ </message>
+</context>
+<context>
+ <name>NewWizardWidget</name>
+ <message>
+ <location filename="../newwizardwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulaire </translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="141"/>
+ <source>Welcome Label</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="147"/>
+ <source> Welcome to</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="185"/>
+ <source>Welcome Logo</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="239"/>
+ <source>Create Jami account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="245"/>
+ <source>Push button for Jami account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="251"/>
+ <source>Create a Jami account</source>
+ <translation>Créer un compte Jami</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="282"/>
+ <source>Link device button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="288"/>
+ <source>Push button for device linkage start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="291"/>
+ <source>Link this device to an account</source>
+ <translation>Associer cet appareil à un compte</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="328"/>
+ <source>Create Jami SIP account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="334"/>
+ <source>Push button for Jami SIP account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="340"/>
+ <source>Create a SIP account</source>
+ <translation>Créer un compte SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="405"/>
+ <source>Link this device to an existing account</source>
+ <translation>Associer cet appareil avec un compte existant</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="469"/>
+ <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">To link this device to another account, you first </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">need to obtain a PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> code. To generate the PIN code:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Account management setting</span><span style=" font-size:14px;"> of a previous device</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choose the </span><span style=" font-size:14px; font-weight:600;">Jami account</span><span style=" font-size:14px;"> you want to use</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Devices</span><span style=" font-size:14px;"> tab</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Select </span><span style=" font-size:14px; font-weight:600;">Add a device</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">You will get the necessary PIN to complete this form. The PIN is only valid for </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutes</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="531"/>
+ <source>Enter your pin:</source>
+ <translation>Entrer votre NIP :</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="599"/>
+ <source>Or import a file:</source>
+ <translation>Ou importer une archive de compte Ring :</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="626"/>
+ <source>Link from exported account archive file</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="629"/>
+ <location filename="../newwizardwidget.cpp" line="83"/>
+ <location filename="../newwizardwidget.cpp" line="218"/>
+ <source>(None)</source>
+ <translation>(aucun)</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="705"/>
+ <source>Password:</source>
+ <translation>Mot de passe:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="799"/>
+ <location filename="../newwizardwidget.ui" line="1586"/>
+ <source>Profile</source>
+ <translation>Profil</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="953"/>
+ <location filename="../newwizardwidget.ui" line="1767"/>
+ <source>Profile name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1027"/>
+ <source>Account</source>
+ <translation>Compte</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1136"/>
+ <source>Register your username.
+This will reserve the username so that only you can use it.
+Your friends will be able to call you with your usename
+instead of using your ID.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1142"/>
+ <source>Public username checkbox</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1145"/>
+ <source>Checkbox selecting if the user wants a public username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1148"/>
+ <source>Register public username</source>
+ <translation>Enregistrer un nom d'utilisateur public</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1367"/>
+ <source>Public username edit</source>
+ <translation>Modification du nom d'utilisateur public</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1373"/>
+ <source>Choose your username</source>
+ <translation>Choisissez votre nom d'utilisateur</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1289"/>
+ <source>Password text input</source>
+ <translation>Entrée du mot de passe </translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1295"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1301"/>
+ <location filename="../newwizardwidget.ui" line="2213"/>
+ <source>Password</source>
+ <translation>Mot de passe</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1211"/>
+ <location filename="../newwizardwidget.ui" line="1217"/>
+ <source>Password confirmation text input</source>
+ <translation>Mot de confirmation de saisie de texte</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1223"/>
+ <source>Confirm password</source>
+ <translation>Confirmer le mot de passe</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1814"/>
+ <source>SIP Account</source>
+ <translation>Compte SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1973"/>
+ <source>SIP Server edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1979"/>
+ <source>Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2045"/>
+ <source>SIP proxy input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2051"/>
+ <source>SIP proxy text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2057"/>
+ <source>Proxy</source>
+ <translation>Proxy</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2123"/>
+ <source>SIP username input</source>
+ <translation>Entrée du username SIP </translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2129"/>
+ <source>SIP Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2135"/>
+ <source>Username</source>
+ <translation>Nom d'utilisateur</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2201"/>
+ <location filename="../newwizardwidget.ui" line="2207"/>
+ <source>SIP Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message utf8="true">
+ <location filename="../newwizardwidget.ui" line="2282"/>
+ <source>Generating your Jami account…</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2356"/>
+ <source>Previous page button</source>
+ <translation>Bouton page précédente</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2362"/>
+ <source>push button to access previous page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2365"/>
+ <source>Previous</source>
+ <translation>Précédent</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2396"/>
+ <source>Cancel account create/link</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2402"/>
+ <source>push button to cancel account creation or linking</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2405"/>
+ <source>Back</source>
+ <translation>Précédent</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2442"/>
+ <source>Next page Button</source>
+ <translation>Bouton page suivante</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2448"/>
+ <source>Push button to access next page of wizard</source>
+ <translation>Appuyer sur le bouton pour accéder à la prochaine page de l'assistant</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2451"/>
+ <source>Next</source>
+ <translation>Suivant</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="75"/>
+ <source>Open File</source>
+ <translation>Ouvrir un fichier</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="77"/>
+ <source>Jami archive files (*.gz); All files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="123"/>
+ <source>Your account needs to be migrated. Enter your password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="419"/>
+ <source>Migrating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="412"/>
+ <source>Importing account archive...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="404"/>
+ <source>Generating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="422"/>
+ <source>Generating your SIP account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="533"/>
+ <source>Error creating account</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PasswordDialog</name>
+ <message>
+ <location filename="../passworddialog.ui" line="32"/>
+ <source>Change Account Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="97"/>
+ <source>Enter Current Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="169"/>
+ <source>Enter New Password</source>
+ <translation>Entrer un nouveau mot de passe</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="190"/>
+ <source>Confirm New Password</source>
+ <translation>Confirmer votre mot de passe</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="247"/>
+ <source>Confirm</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="290"/>
+ <source>Cancel</source>
+ <translation>Annuler</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="143"/>
+ <source>Current Password Incorrect</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PhotoBoothDialog</name>
+ <message>
+ <location filename="../photoboothdialog.ui" line="14"/>
+ <source>Photobooth</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PhotoboothWidget</name>
+ <message>
+ <location filename="../photoboothwidget.ui" line="20"/>
+ <source>Form</source>
+ <translation>Formulaire </translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.ui" line="120"/>
+ <source>Photobooth display</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="92"/>
+ <source>Choose File</source>
+ <translation>Choisir le fichier</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="94"/>
+ <source>Image Files (*.jpg *.jpeg *.png)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PrivateBridging</name>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Choose File</source>
+ <translation>Choisir le fichier</translation>
+ </message>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Files (*)</source>
+ <translation>Fichiers (*)</translation>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../utils.cpp" line="183"/>
+ <source>No default mail client found</source>
+ <translation>Aucun client de courriel par défaut n'a été trouvé</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="43"/>
+ <location filename="../deviceitemwidget.cpp" line="85"/>
+ <source>Edit Device Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="44"/>
+ <source>Unlink Device From Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="80"/>
+ <source>Save new device name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.cpp" line="39"/>
+ <source>Add as contact</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>RingButton</name>
+ <message>
+ <location filename="../ringbutton.ui" line="140"/>
+ <source>Select folder</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <location filename="../settingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulaire </translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="141"/>
+ <source>Settings</source>
+ <translation>Réglages</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="229"/>
+ <source>Account</source>
+ <translation>Compte</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="267"/>
+ <location filename="../settingswidget.ui" line="503"/>
+ <source>General</source>
+ <translation>Général</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="305"/>
+ <location filename="../settingswidget.ui" line="3416"/>
+ <source>Audio / Video</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="542"/>
+ <source>System</source>
+ <translation>Système</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="610"/>
+ <source>Enable desktop notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="653"/>
+ <source>Keep minimized on close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="678"/>
+ <source>Download folder</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="811"/>
+ <source>Save in</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="904"/>
+ <source>Always Recording</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="943"/>
+ <source>Updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1008"/>
+ <source>Check for updates automatically every</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1032"/>
+ <source>Interval between update checks in days selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1038"/>
+ <source> days</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1081"/>
+ <source>Check for updates now button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1084"/>
+ <source>Check for updates now</source>
+ <translation>Vérifier les mises à nouveaux maintenant </translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3027"/>
+ <source>Password</source>
+ <translation>Mot de passe</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1418"/>
+ <location filename="../settingswidget.ui" line="2729"/>
+ <source>Enable</source>
+ <translation>Activé</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="607"/>
+ <source>toggle enable notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="650"/>
+ <source>Toggle keep minimized on close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="764"/>
+ <source>Call Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1005"/>
+ <source>Toggle automatic updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1231"/>
+ <source>Jami Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1453"/>
+ <location filename="../settingswidget.ui" line="2761"/>
+ <source>Profile</source>
+ <translation>Profil</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1567"/>
+ <location filename="../settingswidget.ui" line="2875"/>
+ <source>Identity</source>
+ <translation>Identité</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1614"/>
+ <source>Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1673"/>
+ <source>Registered name</source>
+ <translation>Nom enregistré</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1721"/>
+ <source>Type here to register a username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1755"/>
+ <source>Register</source>
+ <translation>Inscription</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1827"/>
+ <source>Change Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1868"/>
+ <source>Export Account</source>
+ <translation>Sauvegarder Compte</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1909"/>
+ <location filename="../settingswidget.ui" line="3089"/>
+ <source>Delete Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1973"/>
+ <source>Linked Devices</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2078"/>
+ <source>Link Another Device</source>
+ <translation>Connecter un autre appareil</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2142"/>
+ <source>Banned Contacts</source>
+ <translation>Contacts bloqués</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3788"/>
+ <source>Format</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3831"/>
+ <source>Video device framerate selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3967"/>
+ <source>Preview unavailable</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2359"/>
+ <location filename="../settingswidget.ui" line="3187"/>
+ <source>Advanced Account Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2554"/>
+ <source>SIP Account</source>
+ <translation>Compte SIP</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2925"/>
+ <source>Username</source>
+ <translation>Nom d'utilisateur</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2958"/>
+ <source>Hostname</source>
+ <translation>Nom de domaine</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2991"/>
+ <source>Proxy</source>
+ <translation>Proxy</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3461"/>
+ <source>Audio</source>
+ <translation>Audio</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3511"/>
+ <source>Microphone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3551"/>
+ <source>Audio input device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3585"/>
+ <source>Output Device</source>
+ <translation>Périphérique de sortie</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3625"/>
+ <source>Choose the output device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3682"/>
+ <source>Video</source>
+ <translation>Vidéo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3720"/>
+ <source>Device</source>
+ <translation>Appareil</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3766"/>
+ <source>Video device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="459"/>
+ <source>A registered name should not have any spaces and must be at least three letters long</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="466"/>
+ <source>This name is already taken</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="92"/>
+ <location filename="../settingswidget.cpp" line="110"/>
+ <source>Enter an alias</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="473"/>
+ <source>Register this name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="550"/>
+ <source>Remove Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="551"/>
+ <source>Enter this account's password to confirm the removal of this device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="558"/>
+ <source>Are you sure you wish to remove this device?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="589"/>
+ <source>Export Account Here</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="887"/>
+ <source>Select A Folder For Your Downloads</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="904"/>
+ <source>Select A Folder For Your Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>VideoOverlay</name>
+ <message>
+ <location filename="../videooverlay.ui" line="419"/>
+ <source>Call on Hold</source>
+ <translation>Appel en attente</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="89"/>
+ <source>Hold / Unhold</source>
+ <translation>Mettre en attente / Reprendre l'appel</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="124"/>
+ <source>Chat</source>
+ <translation>Clavardage</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="162"/>
+ <source>Mute Mic</source>
+ <translation>Couper le microphone</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="244"/>
+ <source>Record call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="325"/>
+ <source>Name label</source>
+ <translation>Nom de l'étiquette</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="390"/>
+ <source>Time elapsed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="393"/>
+ <source>00:00</source>
+ <translation>00:00</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="57"/>
+ <source>Hangup</source>
+ <translation>Raccrocher</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="203"/>
+ <source>Mute Video</source>
+ <translation>Couper le son de la vidéo</translation>
+ </message>
+</context>
+<context>
+ <name>VideoView</name>
+ <message>
+ <location filename="../videoview.cpp" line="271"/>
+ <source>Share entire screen</source>
+ <translation>Partager la totalité de l'écran</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="274"/>
+ <source>Share screen area</source>
+ <translation>Partager une partie de l'écran</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="281"/>
+ <source>Share file</source>
+ <translation>Partager le fichier</translation>
+ </message>
+</context>
+</TS>
\ No newline at end of file
diff --git a/translations/ring_client_windows_fr_CH.ts b/translations/ring_client_windows_fr_CH.ts
new file mode 100644
index 0000000..b556cef
--- /dev/null
+++ b/translations/ring_client_windows_fr_CH.ts
@@ -0,0 +1,1589 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="fr_CH" version="2.0">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../aboutdialog.ui" line="435"/>
+ <location filename="../aboutdialog.ui" line="465"/>
+ <source>About</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="462"/>
+ <source>about button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="478"/>
+ <source>credits button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="481"/>
+ <source>Credits</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="547"/>
+ <source>Free as in Freedom</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="563"/>
+ <source>The Microsoft Windows client for Jami.
+Jami is a secured and distributed communication software.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="32"/>
+ <source>version</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="39"/>
+ <source>Created by:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="73"/>
+ <source>Artwork by:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="77"/>
+ <source>Based on the SFLPhone project</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AccountItemDelegate</name>
+ <message>
+ <location filename="../accountitemdelegate.cpp" line="91"/>
+ <source>Add Account</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSIPSettingsWidget</name>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="55"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="102"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="130"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="191"/>
+ <source>Connectivity</source>
+ <translation>Connectivité</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="281"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="293"/>
+ <source>Use STUN</source>
+ <translation>Utiliser STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="317"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="329"/>
+ <source>Use TURN</source>
+ <translation>Utiliser le TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="359"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="391"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="423"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="464"/>
+ <source>Media</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="515"/>
+ <source>Enable Video</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="539"/>
+ <source>Video Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="692"/>
+ <source>Audio Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="142"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="151"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSettingsWidget</name>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="61"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="108"/>
+ <source>Allow Calls From Untrusted Peers</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="133"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="161"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="188"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="225"/>
+ <source>Name Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="275"/>
+ <source>Address</source>
+ <translation>Adresse</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="351"/>
+ <source>OpenDHT Configuration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="398"/>
+ <source>Enable Proxy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="454"/>
+ <source>Bootstrap</source>
+ <translation>Amorcer</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="530"/>
+ <source>Security</source>
+ <translation>Sécurité</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="571"/>
+ <source>Private Key Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="583"/>
+ <source>User Certificate</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="622"/>
+ <source>Private Key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="634"/>
+ <source>CA Certificate</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="766"/>
+ <source>Connectivity</source>
+ <translation>Connectivité</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="868"/>
+ <source>Use STUN</source>
+ <translation>Utiliser STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="856"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="892"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="904"/>
+ <source>Use TURN</source>
+ <translation>Utiliser le TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="934"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="966"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="998"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1039"/>
+ <source>Media</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1090"/>
+ <source>Enable Video</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1267"/>
+ <source>Audio Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1114"/>
+ <source>Video Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="181"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AnimatedOverlay</name>
+ <message>
+ <location filename="../animatedoverlay.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>BannedItemWidget</name>
+ <message>
+ <location filename="../banneditemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="80"/>
+ <source>name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="104"/>
+ <source>id</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>CallWidget</name>
+ <message>
+ <location filename="../callwidget.ui" line="184"/>
+ <source>Show conversations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="187"/>
+ <source>Conversations</source>
+ <translation>Conversations</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="368"/>
+ <source>Search contact text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="653"/>
+ <source>Jami is free software for universal communication which respects the freedoms and privacy of its users.</source>
+ <translation>Jami est un logiciel libre de communication universel qui respecte la vie privée et l'intimité de ses utilisateurs.</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="693"/>
+ <source>
+ This is your ID.
+Copy and share it with your friends!
+ </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="806"/>
+ <source>Show ring ID QR code</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="857"/>
+ <source>Share ring ID button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="915"/>
+ <source>Double-click to copy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="956"/>
+ <source>Error while generating QR Code</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1184"/>
+ <location filename="../callwidget.ui" line="1434"/>
+ <source>best name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1208"/>
+ <source>best Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1734"/>
+ <source>Back to homepage button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1943"/>
+ <source>Add to contacts</source>
+ <translation>Ajouter aux contacts</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="202"/>
+ <source>Show invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="205"/>
+ <source>Invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="377"/>
+ <location filename="../callwidget.cpp" line="552"/>
+ <source>Find a new or existing contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1444"/>
+ <source>Wants to talk to you!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1517"/>
+ <source>Answer incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1589"/>
+ <source>Ignore incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1539"/>
+ <source>Answer</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1617"/>
+ <source>Ignore</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1280"/>
+ <source>Cancel outgoing call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1305"/>
+ <source>Cancel</source>
+ <translation>Annuler</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="332"/>
+ <source>Start video call</source>
+ <translation>Démarrer appel video</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="343"/>
+ <source>Start audio call</source>
+ <translation>Démarrer appel audio</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="354"/>
+ <source>Clear conversation</source>
+ <translation>Effacer la conversation</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="361"/>
+ <source>Remove contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="373"/>
+ <source>Block contact</source>
+ <translation>Bloquer le contact</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="384"/>
+ <source>Copy number</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="561"/>
+ <source>Search your received invitations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>Contact me on Jami</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>My Id is : </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="847"/>
+ <source>%1</source>
+ <comment>%1 is the contact username</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="852"/>
+ <source>%1</source>
+ <comment>%1 is the contact unique identifier</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="675"/>
+ <source>Call incoming from %1</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>DeleteAccountDialog</name>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="35"/>
+ <source>Account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="58"/>
+ <source>Do you really want to delete the following account?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="153"/>
+ <source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="235"/>
+ <source>Permanently delete account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="241"/>
+ <source>Delete</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="278"/>
+ <source>Cancel account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="284"/>
+ <source>Cancel</source>
+ <translation>Annuler</translation>
+ </message>
+</context>
+<context>
+ <name>DeviceItemWidget</name>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="105"/>
+ <source>Device Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="143"/>
+ <source>this device</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>InviteButtonsWidget</name>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="83"/>
+ <source>Accept</source>
+ <translation>Accepter</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="131"/>
+ <source>Refuse</source>
+ <translation>Refuser</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="179"/>
+ <source>Block</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>LinkDeviceDialog</name>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="62"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="117"/>
+ <source>Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="184"/>
+ <source>Ok</source>
+ <translation>OK</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="218"/>
+ <source>Cancel</source>
+ <translation>Annuler</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="279"/>
+ <source>Exporting account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="402"/>
+ <source>Your PIN is</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="432"/>
+ <source>PIN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="477"/>
+ <source>This pin and the account password should be entered in your device within 10 minutes.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="553"/>
+ <source>Close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="34"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="96"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="110"/>
+ <source>Something went wrong.
+Please try again later.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="83"/>
+ <source>Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="94"/>
+ <source>Exit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="111"/>
+ <source>About</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="435"/>
+ <source>Jami</source>
+ <translation>Jami</translation>
+ </message>
+</context>
+<context>
+ <name>NameRegistrationDialog</name>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="35"/>
+ <source>Set Registered Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="163"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="244"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="250"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="256"/>
+ <source>Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="323"/>
+ <source>Register</source>
+ <translation>Enregistrer</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="357"/>
+ <source>Cancel</source>
+ <translation>Annuler</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="424"/>
+ <source>Registering Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="548"/>
+ <source>Something went wrong</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="618"/>
+ <source>Close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="82"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="85"/>
+ <source>Network error</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>NewWizardWidget</name>
+ <message>
+ <location filename="../newwizardwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="141"/>
+ <source>Welcome Label</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="147"/>
+ <source> Welcome to</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="185"/>
+ <source>Welcome Logo</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="239"/>
+ <source>Create Jami account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="245"/>
+ <source>Push button for Jami account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="251"/>
+ <source>Create a Jami account</source>
+ <translation>Créer un compte Jami</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="282"/>
+ <source>Link device button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="288"/>
+ <source>Push button for device linkage start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="291"/>
+ <source>Link this device to an account</source>
+ <translation>Lier cet appareil à un compte</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="328"/>
+ <source>Create Jami SIP account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="334"/>
+ <source>Push button for Jami SIP account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="340"/>
+ <source>Create a SIP account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="405"/>
+ <source>Link this device to an existing account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="469"/>
+ <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">To link this device to another account, you first </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">need to obtain a PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> code. To generate the PIN code:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Account management setting</span><span style=" font-size:14px;"> of a previous device</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choose the </span><span style=" font-size:14px; font-weight:600;">Jami account</span><span style=" font-size:14px;"> you want to use</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Devices</span><span style=" font-size:14px;"> tab</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Select </span><span style=" font-size:14px; font-weight:600;">Add a device</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">You will get the necessary PIN to complete this form. The PIN is only valid for </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutes</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="531"/>
+ <source>Enter your pin:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="599"/>
+ <source>Or import a file:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="626"/>
+ <source>Link from exported account archive file</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="629"/>
+ <location filename="../newwizardwidget.cpp" line="83"/>
+ <location filename="../newwizardwidget.cpp" line="218"/>
+ <source>(None)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="705"/>
+ <source>Password:</source>
+ <translation>Mot de passe :</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="799"/>
+ <location filename="../newwizardwidget.ui" line="1586"/>
+ <source>Profile</source>
+ <translation>Profil</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="953"/>
+ <location filename="../newwizardwidget.ui" line="1767"/>
+ <source>Profile name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1027"/>
+ <source>Account</source>
+ <translation>Compte</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1136"/>
+ <source>Register your username.
+This will reserve the username so that only you can use it.
+Your friends will be able to call you with your usename
+instead of using your ID.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1142"/>
+ <source>Public username checkbox</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1145"/>
+ <source>Checkbox selecting if the user wants a public username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1148"/>
+ <source>Register public username</source>
+ <translation>Enregistrer un nom d'utilisateur public</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1367"/>
+ <source>Public username edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1373"/>
+ <source>Choose your username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1289"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1295"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1301"/>
+ <location filename="../newwizardwidget.ui" line="2213"/>
+ <source>Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1211"/>
+ <location filename="../newwizardwidget.ui" line="1217"/>
+ <source>Password confirmation text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1223"/>
+ <source>Confirm password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1814"/>
+ <source>SIP Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1973"/>
+ <source>SIP Server edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1979"/>
+ <source>Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2045"/>
+ <source>SIP proxy input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2051"/>
+ <source>SIP proxy text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2057"/>
+ <source>Proxy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2123"/>
+ <source>SIP username input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2129"/>
+ <source>SIP Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2135"/>
+ <source>Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2201"/>
+ <location filename="../newwizardwidget.ui" line="2207"/>
+ <source>SIP Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message utf8="true">
+ <location filename="../newwizardwidget.ui" line="2282"/>
+ <source>Generating your Jami account…</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2356"/>
+ <source>Previous page button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2362"/>
+ <source>push button to access previous page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2365"/>
+ <source>Previous</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2396"/>
+ <source>Cancel account create/link</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2402"/>
+ <source>push button to cancel account creation or linking</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2405"/>
+ <source>Back</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2442"/>
+ <source>Next page Button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2448"/>
+ <source>Push button to access next page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2451"/>
+ <source>Next</source>
+ <translation>Suivant</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="75"/>
+ <source>Open File</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="77"/>
+ <source>Jami archive files (*.gz); All files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="123"/>
+ <source>Your account needs to be migrated. Enter your password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="419"/>
+ <source>Migrating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="412"/>
+ <source>Importing account archive...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="404"/>
+ <source>Generating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="422"/>
+ <source>Generating your SIP account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="533"/>
+ <source>Error creating account</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PasswordDialog</name>
+ <message>
+ <location filename="../passworddialog.ui" line="32"/>
+ <source>Change Account Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="97"/>
+ <source>Enter Current Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="169"/>
+ <source>Enter New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="190"/>
+ <source>Confirm New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="247"/>
+ <source>Confirm</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="290"/>
+ <source>Cancel</source>
+ <translation>Annuler</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="143"/>
+ <source>Current Password Incorrect</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PhotoBoothDialog</name>
+ <message>
+ <location filename="../photoboothdialog.ui" line="14"/>
+ <source>Photobooth</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PhotoboothWidget</name>
+ <message>
+ <location filename="../photoboothwidget.ui" line="20"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.ui" line="120"/>
+ <source>Photobooth display</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="92"/>
+ <source>Choose File</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="94"/>
+ <source>Image Files (*.jpg *.jpeg *.png)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PrivateBridging</name>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Choose File</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../utils.cpp" line="183"/>
+ <source>No default mail client found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="43"/>
+ <location filename="../deviceitemwidget.cpp" line="85"/>
+ <source>Edit Device Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="44"/>
+ <source>Unlink Device From Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="80"/>
+ <source>Save new device name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.cpp" line="39"/>
+ <source>Add as contact</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>RingButton</name>
+ <message>
+ <location filename="../ringbutton.ui" line="140"/>
+ <source>Select folder</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <location filename="../settingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="141"/>
+ <source>Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="229"/>
+ <source>Account</source>
+ <translation>Compte</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="267"/>
+ <location filename="../settingswidget.ui" line="503"/>
+ <source>General</source>
+ <translation>Général</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="305"/>
+ <location filename="../settingswidget.ui" line="3416"/>
+ <source>Audio / Video</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="542"/>
+ <source>System</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="610"/>
+ <source>Enable desktop notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="653"/>
+ <source>Keep minimized on close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="678"/>
+ <source>Download folder</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="811"/>
+ <source>Save in</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="904"/>
+ <source>Always Recording</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="943"/>
+ <source>Updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1008"/>
+ <source>Check for updates automatically every</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1032"/>
+ <source>Interval between update checks in days selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1038"/>
+ <source> days</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1081"/>
+ <source>Check for updates now button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1084"/>
+ <source>Check for updates now</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3027"/>
+ <source>Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1418"/>
+ <location filename="../settingswidget.ui" line="2729"/>
+ <source>Enable</source>
+ <translation>Activé</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="607"/>
+ <source>toggle enable notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="650"/>
+ <source>Toggle keep minimized on close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="764"/>
+ <source>Call Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1005"/>
+ <source>Toggle automatic updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1231"/>
+ <source>Jami Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1453"/>
+ <location filename="../settingswidget.ui" line="2761"/>
+ <source>Profile</source>
+ <translation>Profil</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1567"/>
+ <location filename="../settingswidget.ui" line="2875"/>
+ <source>Identity</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1614"/>
+ <source>Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1673"/>
+ <source>Registered name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1721"/>
+ <source>Type here to register a username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1755"/>
+ <source>Register</source>
+ <translation>Enregistrer</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1827"/>
+ <source>Change Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1868"/>
+ <source>Export Account</source>
+ <translation>Sauvegarder Compte</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1909"/>
+ <location filename="../settingswidget.ui" line="3089"/>
+ <source>Delete Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1973"/>
+ <source>Linked Devices</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2078"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2142"/>
+ <source>Banned Contacts</source>
+ <translation>Contacts bloqués</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3788"/>
+ <source>Format</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3831"/>
+ <source>Video device framerate selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3967"/>
+ <source>Preview unavailable</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2359"/>
+ <location filename="../settingswidget.ui" line="3187"/>
+ <source>Advanced Account Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2554"/>
+ <source>SIP Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2925"/>
+ <source>Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2958"/>
+ <source>Hostname</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2991"/>
+ <source>Proxy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3461"/>
+ <source>Audio</source>
+ <translation>Audio</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3511"/>
+ <source>Microphone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3551"/>
+ <source>Audio input device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3585"/>
+ <source>Output Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3625"/>
+ <source>Choose the output device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3682"/>
+ <source>Video</source>
+ <translation>Vidéo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3720"/>
+ <source>Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3766"/>
+ <source>Video device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="459"/>
+ <source>A registered name should not have any spaces and must be at least three letters long</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="466"/>
+ <source>This name is already taken</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="92"/>
+ <location filename="../settingswidget.cpp" line="110"/>
+ <source>Enter an alias</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="473"/>
+ <source>Register this name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="550"/>
+ <source>Remove Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="551"/>
+ <source>Enter this account's password to confirm the removal of this device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="558"/>
+ <source>Are you sure you wish to remove this device?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="589"/>
+ <source>Export Account Here</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="887"/>
+ <source>Select A Folder For Your Downloads</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="904"/>
+ <source>Select A Folder For Your Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>VideoOverlay</name>
+ <message>
+ <location filename="../videooverlay.ui" line="419"/>
+ <source>Call on Hold</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="89"/>
+ <source>Hold / Unhold</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="124"/>
+ <source>Chat</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="162"/>
+ <source>Mute Mic</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="244"/>
+ <source>Record call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="325"/>
+ <source>Name label</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="390"/>
+ <source>Time elapsed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="393"/>
+ <source>00:00</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="57"/>
+ <source>Hangup</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="203"/>
+ <source>Mute Video</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>VideoView</name>
+ <message>
+ <location filename="../videoview.cpp" line="271"/>
+ <source>Share entire screen</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="274"/>
+ <source>Share screen area</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="281"/>
+ <source>Share file</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+</TS>
\ No newline at end of file
diff --git a/translations/ring_client_windows_fr_FR.ts b/translations/ring_client_windows_fr_FR.ts
new file mode 100644
index 0000000..c8aa953
--- /dev/null
+++ b/translations/ring_client_windows_fr_FR.ts
@@ -0,0 +1,1589 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="fr_FR" version="2.0">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../aboutdialog.ui" line="435"/>
+ <location filename="../aboutdialog.ui" line="465"/>
+ <source>About</source>
+ <translation>A propos </translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="462"/>
+ <source>about button</source>
+ <translation>à propos du bouton</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="478"/>
+ <source>credits button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="481"/>
+ <source>Credits</source>
+ <translation>Crédits</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="547"/>
+ <source>Free as in Freedom</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="563"/>
+ <source>The Microsoft Windows client for Jami.
+Jami is a secured and distributed communication software.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="32"/>
+ <source>version</source>
+ <translation>version</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="39"/>
+ <source>Created by:</source>
+ <translation>créer par</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="73"/>
+ <source>Artwork by:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="77"/>
+ <source>Based on the SFLPhone project</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AccountItemDelegate</name>
+ <message>
+ <location filename="../accountitemdelegate.cpp" line="91"/>
+ <source>Add Account</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSIPSettingsWidget</name>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="55"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="102"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="130"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="191"/>
+ <source>Connectivity</source>
+ <translation>Connectivité</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="281"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="293"/>
+ <source>Use STUN</source>
+ <translation>Utiliser STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="317"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="329"/>
+ <source>Use TURN</source>
+ <translation>Utiliser le TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="359"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="391"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="423"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="464"/>
+ <source>Media</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="515"/>
+ <source>Enable Video</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="539"/>
+ <source>Video Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="692"/>
+ <source>Audio Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="142"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="151"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSettingsWidget</name>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="61"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="108"/>
+ <source>Allow Calls From Untrusted Peers</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="133"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="161"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="188"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="225"/>
+ <source>Name Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="275"/>
+ <source>Address</source>
+ <translation>Adresse</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="351"/>
+ <source>OpenDHT Configuration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="398"/>
+ <source>Enable Proxy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="454"/>
+ <source>Bootstrap</source>
+ <translation>Amorcer</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="530"/>
+ <source>Security</source>
+ <translation>securité</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="571"/>
+ <source>Private Key Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="583"/>
+ <source>User Certificate</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="622"/>
+ <source>Private Key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="634"/>
+ <source>CA Certificate</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="766"/>
+ <source>Connectivity</source>
+ <translation>Connectivité</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="868"/>
+ <source>Use STUN</source>
+ <translation>Utiliser STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="856"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="892"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="904"/>
+ <source>Use TURN</source>
+ <translation>Utiliser le TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="934"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="966"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="998"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1039"/>
+ <source>Media</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1090"/>
+ <source>Enable Video</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1267"/>
+ <source>Audio Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1114"/>
+ <source>Video Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="181"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AnimatedOverlay</name>
+ <message>
+ <location filename="../animatedoverlay.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>BannedItemWidget</name>
+ <message>
+ <location filename="../banneditemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="80"/>
+ <source>name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="104"/>
+ <source>id</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>CallWidget</name>
+ <message>
+ <location filename="../callwidget.ui" line="184"/>
+ <source>Show conversations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="187"/>
+ <source>Conversations</source>
+ <translation>Conversation</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="368"/>
+ <source>Search contact text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="653"/>
+ <source>Jami is free software for universal communication which respects the freedoms and privacy of its users.</source>
+ <translation>Jami est un logiciel libre de communication universel qui respecte la vie privée et l'intimité de ses utilisateurs.</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="693"/>
+ <source>
+ This is your ID.
+Copy and share it with your friends!
+ </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="806"/>
+ <source>Show ring ID QR code</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="857"/>
+ <source>Share ring ID button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="915"/>
+ <source>Double-click to copy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="956"/>
+ <source>Error while generating QR Code</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1184"/>
+ <location filename="../callwidget.ui" line="1434"/>
+ <source>best name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1208"/>
+ <source>best Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1734"/>
+ <source>Back to homepage button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1943"/>
+ <source>Add to contacts</source>
+ <translation>Ajouter dans les contacts</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="202"/>
+ <source>Show invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="205"/>
+ <source>Invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="377"/>
+ <location filename="../callwidget.cpp" line="552"/>
+ <source>Find a new or existing contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1444"/>
+ <source>Wants to talk to you!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1517"/>
+ <source>Answer incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1589"/>
+ <source>Ignore incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1539"/>
+ <source>Answer</source>
+ <translation>Répondre</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1617"/>
+ <source>Ignore</source>
+ <translation>Ignorer</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1280"/>
+ <source>Cancel outgoing call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1305"/>
+ <source>Cancel</source>
+ <translation>Annuler</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="332"/>
+ <source>Start video call</source>
+ <translation>Démarrer appel video</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="343"/>
+ <source>Start audio call</source>
+ <translation>Démarrer appel audio</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="354"/>
+ <source>Clear conversation</source>
+ <translation>Effacer la conversation</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="361"/>
+ <source>Remove contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="373"/>
+ <source>Block contact</source>
+ <translation>Bloquer le contact</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="384"/>
+ <source>Copy number</source>
+ <translation>Copier le numéro de téléphone</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="561"/>
+ <source>Search your received invitations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>Contact me on Jami</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>My Id is : </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="847"/>
+ <source>%1</source>
+ <comment>%1 is the contact username</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="852"/>
+ <source>%1</source>
+ <comment>%1 is the contact unique identifier</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="675"/>
+ <source>Call incoming from %1</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>DeleteAccountDialog</name>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="35"/>
+ <source>Account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="58"/>
+ <source>Do you really want to delete the following account?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="153"/>
+ <source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="235"/>
+ <source>Permanently delete account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="241"/>
+ <source>Delete</source>
+ <translation>Supprimer</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="278"/>
+ <source>Cancel account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="284"/>
+ <source>Cancel</source>
+ <translation>Annuler</translation>
+ </message>
+</context>
+<context>
+ <name>DeviceItemWidget</name>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="105"/>
+ <source>Device Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="143"/>
+ <source>this device</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>InviteButtonsWidget</name>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="83"/>
+ <source>Accept</source>
+ <translation>Accepter</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="131"/>
+ <source>Refuse</source>
+ <translation>Refuser</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="179"/>
+ <source>Block</source>
+ <translation>Bloquer</translation>
+ </message>
+</context>
+<context>
+ <name>LinkDeviceDialog</name>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="62"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="117"/>
+ <source>Password</source>
+ <translation>mot de passe</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="184"/>
+ <source>Ok</source>
+ <translation>d'accord</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="218"/>
+ <source>Cancel</source>
+ <translation>Annuler</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="279"/>
+ <source>Exporting account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="402"/>
+ <source>Your PIN is</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="432"/>
+ <source>PIN</source>
+ <translation>PIN</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="477"/>
+ <source>This pin and the account password should be entered in your device within 10 minutes.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="553"/>
+ <source>Close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="34"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="96"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="110"/>
+ <source>Something went wrong.
+Please try again later.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="83"/>
+ <source>Settings</source>
+ <translation>Réglages</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="94"/>
+ <source>Exit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="111"/>
+ <source>About</source>
+ <translation>A propos </translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="435"/>
+ <source>Jami</source>
+ <translation>Jami</translation>
+ </message>
+</context>
+<context>
+ <name>NameRegistrationDialog</name>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="35"/>
+ <source>Set Registered Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="163"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="244"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="250"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="256"/>
+ <source>Password</source>
+ <translation>mot de passe</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="323"/>
+ <source>Register</source>
+ <translation>Enregistrer</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="357"/>
+ <source>Cancel</source>
+ <translation>Annuler</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="424"/>
+ <source>Registering Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="548"/>
+ <source>Something went wrong</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="618"/>
+ <source>Close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="82"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="85"/>
+ <source>Network error</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>NewWizardWidget</name>
+ <message>
+ <location filename="../newwizardwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="141"/>
+ <source>Welcome Label</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="147"/>
+ <source> Welcome to</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="185"/>
+ <source>Welcome Logo</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="239"/>
+ <source>Create Jami account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="245"/>
+ <source>Push button for Jami account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="251"/>
+ <source>Create a Jami account</source>
+ <translation>Créer un compte Jami</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="282"/>
+ <source>Link device button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="288"/>
+ <source>Push button for device linkage start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="291"/>
+ <source>Link this device to an account</source>
+ <translation>Lier cet appareil à un compte</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="328"/>
+ <source>Create Jami SIP account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="334"/>
+ <source>Push button for Jami SIP account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="340"/>
+ <source>Create a SIP account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="405"/>
+ <source>Link this device to an existing account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="469"/>
+ <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">To link this device to another account, you first </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">need to obtain a PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> code. To generate the PIN code:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Account management setting</span><span style=" font-size:14px;"> of a previous device</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choose the </span><span style=" font-size:14px; font-weight:600;">Jami account</span><span style=" font-size:14px;"> you want to use</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Devices</span><span style=" font-size:14px;"> tab</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Select </span><span style=" font-size:14px; font-weight:600;">Add a device</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">You will get the necessary PIN to complete this form. The PIN is only valid for </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutes</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="531"/>
+ <source>Enter your pin:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="599"/>
+ <source>Or import a file:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="626"/>
+ <source>Link from exported account archive file</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="629"/>
+ <location filename="../newwizardwidget.cpp" line="83"/>
+ <location filename="../newwizardwidget.cpp" line="218"/>
+ <source>(None)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="705"/>
+ <source>Password:</source>
+ <translation>Mot de passe :</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="799"/>
+ <location filename="../newwizardwidget.ui" line="1586"/>
+ <source>Profile</source>
+ <translation>Profil</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="953"/>
+ <location filename="../newwizardwidget.ui" line="1767"/>
+ <source>Profile name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1027"/>
+ <source>Account</source>
+ <translation>compte</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1136"/>
+ <source>Register your username.
+This will reserve the username so that only you can use it.
+Your friends will be able to call you with your usename
+instead of using your ID.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1142"/>
+ <source>Public username checkbox</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1145"/>
+ <source>Checkbox selecting if the user wants a public username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1148"/>
+ <source>Register public username</source>
+ <translation>Enregistrer un nom d'utilisateur public</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1367"/>
+ <source>Public username edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1373"/>
+ <source>Choose your username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1289"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1295"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1301"/>
+ <location filename="../newwizardwidget.ui" line="2213"/>
+ <source>Password</source>
+ <translation>mot de passe</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1211"/>
+ <location filename="../newwizardwidget.ui" line="1217"/>
+ <source>Password confirmation text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1223"/>
+ <source>Confirm password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1814"/>
+ <source>SIP Account</source>
+ <translation>Compte SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1973"/>
+ <source>SIP Server edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1979"/>
+ <source>Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2045"/>
+ <source>SIP proxy input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2051"/>
+ <source>SIP proxy text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2057"/>
+ <source>Proxy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2123"/>
+ <source>SIP username input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2129"/>
+ <source>SIP Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2135"/>
+ <source>Username</source>
+ <translation>nom d'utilisateur</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2201"/>
+ <location filename="../newwizardwidget.ui" line="2207"/>
+ <source>SIP Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message utf8="true">
+ <location filename="../newwizardwidget.ui" line="2282"/>
+ <source>Generating your Jami account…</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2356"/>
+ <source>Previous page button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2362"/>
+ <source>push button to access previous page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2365"/>
+ <source>Previous</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2396"/>
+ <source>Cancel account create/link</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2402"/>
+ <source>push button to cancel account creation or linking</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2405"/>
+ <source>Back</source>
+ <translation>Retour</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2442"/>
+ <source>Next page Button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2448"/>
+ <source>Push button to access next page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2451"/>
+ <source>Next</source>
+ <translation>Suivant</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="75"/>
+ <source>Open File</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="77"/>
+ <source>Jami archive files (*.gz); All files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="123"/>
+ <source>Your account needs to be migrated. Enter your password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="419"/>
+ <source>Migrating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="412"/>
+ <source>Importing account archive...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="404"/>
+ <source>Generating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="422"/>
+ <source>Generating your SIP account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="533"/>
+ <source>Error creating account</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PasswordDialog</name>
+ <message>
+ <location filename="../passworddialog.ui" line="32"/>
+ <source>Change Account Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="97"/>
+ <source>Enter Current Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="169"/>
+ <source>Enter New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="190"/>
+ <source>Confirm New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="247"/>
+ <source>Confirm</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="290"/>
+ <source>Cancel</source>
+ <translation>Annuler</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="143"/>
+ <source>Current Password Incorrect</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PhotoBoothDialog</name>
+ <message>
+ <location filename="../photoboothdialog.ui" line="14"/>
+ <source>Photobooth</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PhotoboothWidget</name>
+ <message>
+ <location filename="../photoboothwidget.ui" line="20"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.ui" line="120"/>
+ <source>Photobooth display</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="92"/>
+ <source>Choose File</source>
+ <translation>choisir un fichier</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="94"/>
+ <source>Image Files (*.jpg *.jpeg *.png)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PrivateBridging</name>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Choose File</source>
+ <translation>choisir un fichier</translation>
+ </message>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../utils.cpp" line="183"/>
+ <source>No default mail client found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="43"/>
+ <location filename="../deviceitemwidget.cpp" line="85"/>
+ <source>Edit Device Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="44"/>
+ <source>Unlink Device From Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="80"/>
+ <source>Save new device name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.cpp" line="39"/>
+ <source>Add as contact</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>RingButton</name>
+ <message>
+ <location filename="../ringbutton.ui" line="140"/>
+ <source>Select folder</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <location filename="../settingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="141"/>
+ <source>Settings</source>
+ <translation>Réglages</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="229"/>
+ <source>Account</source>
+ <translation>compte</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="267"/>
+ <location filename="../settingswidget.ui" line="503"/>
+ <source>General</source>
+ <translation>Général</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="305"/>
+ <location filename="../settingswidget.ui" line="3416"/>
+ <source>Audio / Video</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="542"/>
+ <source>System</source>
+ <translation>Système</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="610"/>
+ <source>Enable desktop notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="653"/>
+ <source>Keep minimized on close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="678"/>
+ <source>Download folder</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="811"/>
+ <source>Save in</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="904"/>
+ <source>Always Recording</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="943"/>
+ <source>Updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1008"/>
+ <source>Check for updates automatically every</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1032"/>
+ <source>Interval between update checks in days selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1038"/>
+ <source> days</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1081"/>
+ <source>Check for updates now button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1084"/>
+ <source>Check for updates now</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3027"/>
+ <source>Password</source>
+ <translation>mot de passe</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1418"/>
+ <location filename="../settingswidget.ui" line="2729"/>
+ <source>Enable</source>
+ <translation>Activé</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="607"/>
+ <source>toggle enable notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="650"/>
+ <source>Toggle keep minimized on close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="764"/>
+ <source>Call Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1005"/>
+ <source>Toggle automatic updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1231"/>
+ <source>Jami Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1453"/>
+ <location filename="../settingswidget.ui" line="2761"/>
+ <source>Profile</source>
+ <translation>Profil</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1567"/>
+ <location filename="../settingswidget.ui" line="2875"/>
+ <source>Identity</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1614"/>
+ <source>Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1673"/>
+ <source>Registered name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1721"/>
+ <source>Type here to register a username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1755"/>
+ <source>Register</source>
+ <translation>Enregistrer</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1827"/>
+ <source>Change Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1868"/>
+ <source>Export Account</source>
+ <translation>Sauvegarder Compte</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1909"/>
+ <location filename="../settingswidget.ui" line="3089"/>
+ <source>Delete Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1973"/>
+ <source>Linked Devices</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2078"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2142"/>
+ <source>Banned Contacts</source>
+ <translation>Contacts bloqués</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3788"/>
+ <source>Format</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3831"/>
+ <source>Video device framerate selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3967"/>
+ <source>Preview unavailable</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2359"/>
+ <location filename="../settingswidget.ui" line="3187"/>
+ <source>Advanced Account Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2554"/>
+ <source>SIP Account</source>
+ <translation>Compte SIP</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2925"/>
+ <source>Username</source>
+ <translation>nom d'utilisateur</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2958"/>
+ <source>Hostname</source>
+ <translation>nom d'hôte</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2991"/>
+ <source>Proxy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3461"/>
+ <source>Audio</source>
+ <translation>Audio</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3511"/>
+ <source>Microphone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3551"/>
+ <source>Audio input device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3585"/>
+ <source>Output Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3625"/>
+ <source>Choose the output device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3682"/>
+ <source>Video</source>
+ <translation>Vidéo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3720"/>
+ <source>Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3766"/>
+ <source>Video device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="459"/>
+ <source>A registered name should not have any spaces and must be at least three letters long</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="466"/>
+ <source>This name is already taken</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="92"/>
+ <location filename="../settingswidget.cpp" line="110"/>
+ <source>Enter an alias</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="473"/>
+ <source>Register this name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="550"/>
+ <source>Remove Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="551"/>
+ <source>Enter this account's password to confirm the removal of this device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="558"/>
+ <source>Are you sure you wish to remove this device?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="589"/>
+ <source>Export Account Here</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="887"/>
+ <source>Select A Folder For Your Downloads</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="904"/>
+ <source>Select A Folder For Your Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>VideoOverlay</name>
+ <message>
+ <location filename="../videooverlay.ui" line="419"/>
+ <source>Call on Hold</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="89"/>
+ <source>Hold / Unhold</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="124"/>
+ <source>Chat</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="162"/>
+ <source>Mute Mic</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="244"/>
+ <source>Record call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="325"/>
+ <source>Name label</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="390"/>
+ <source>Time elapsed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="393"/>
+ <source>00:00</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="57"/>
+ <source>Hangup</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="203"/>
+ <source>Mute Video</source>
+ <translation>Vidéo muette</translation>
+ </message>
+</context>
+<context>
+ <name>VideoView</name>
+ <message>
+ <location filename="../videoview.cpp" line="271"/>
+ <source>Share entire screen</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="274"/>
+ <source>Share screen area</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="281"/>
+ <source>Share file</source>
+ <translation>Partager le fichier</translation>
+ </message>
+</context>
+</TS>
\ No newline at end of file
diff --git a/translations/ring_client_windows_gl.ts b/translations/ring_client_windows_gl.ts
new file mode 100644
index 0000000..12a7bf8
--- /dev/null
+++ b/translations/ring_client_windows_gl.ts
@@ -0,0 +1,1589 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="gl" version="2.0">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../aboutdialog.ui" line="435"/>
+ <location filename="../aboutdialog.ui" line="465"/>
+ <source>About</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="462"/>
+ <source>about button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="478"/>
+ <source>credits button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="481"/>
+ <source>Credits</source>
+ <translation>Cŕedito</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="547"/>
+ <source>Free as in Freedom</source>
+ <translation>Libre como en liberdade</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="563"/>
+ <source>The Microsoft Windows client for Jami.
+Jami is a secured and distributed communication software.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="32"/>
+ <source>version</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="39"/>
+ <source>Created by:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="73"/>
+ <source>Artwork by:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="77"/>
+ <source>Based on the SFLPhone project</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AccountItemDelegate</name>
+ <message>
+ <location filename="../accountitemdelegate.cpp" line="91"/>
+ <source>Add Account</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSIPSettingsWidget</name>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="55"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="102"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="130"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="191"/>
+ <source>Connectivity</source>
+ <translation>Conectividade</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="281"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="293"/>
+ <source>Use STUN</source>
+ <translation>Usar STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="317"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="329"/>
+ <source>Use TURN</source>
+ <translation>Usar TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="359"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="391"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="423"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="464"/>
+ <source>Media</source>
+ <translation>Multimedia</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="515"/>
+ <source>Enable Video</source>
+ <translation>Activar vídeo</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="539"/>
+ <source>Video Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="692"/>
+ <source>Audio Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="142"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="151"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSettingsWidget</name>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="61"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="108"/>
+ <source>Allow Calls From Untrusted Peers</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="133"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="161"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="188"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="225"/>
+ <source>Name Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="275"/>
+ <source>Address</source>
+ <translation>Enderezo</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="351"/>
+ <source>OpenDHT Configuration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="398"/>
+ <source>Enable Proxy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="454"/>
+ <source>Bootstrap</source>
+ <translation>Bootstrap</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="530"/>
+ <source>Security</source>
+ <translation>Seguridade</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="571"/>
+ <source>Private Key Password</source>
+ <translation>Contrasinal da chave privada</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="583"/>
+ <source>User Certificate</source>
+ <translation>Certificado de usuaria</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="622"/>
+ <source>Private Key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="634"/>
+ <source>CA Certificate</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="766"/>
+ <source>Connectivity</source>
+ <translation>Conectividade</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="868"/>
+ <source>Use STUN</source>
+ <translation>Usar STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="856"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="892"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="904"/>
+ <source>Use TURN</source>
+ <translation>Usar TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="934"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="966"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="998"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1039"/>
+ <source>Media</source>
+ <translation>Multimedia</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1090"/>
+ <source>Enable Video</source>
+ <translation>Activar vídeo</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1267"/>
+ <source>Audio Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1114"/>
+ <source>Video Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="181"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AnimatedOverlay</name>
+ <message>
+ <location filename="../animatedoverlay.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>BannedItemWidget</name>
+ <message>
+ <location filename="../banneditemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="80"/>
+ <source>name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="104"/>
+ <source>id</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>CallWidget</name>
+ <message>
+ <location filename="../callwidget.ui" line="184"/>
+ <source>Show conversations</source>
+ <translation>Mostrar conversas</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="187"/>
+ <source>Conversations</source>
+ <translation>Conversas</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="368"/>
+ <source>Search contact text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="653"/>
+ <source>Jami is free software for universal communication which respects the freedoms and privacy of its users.</source>
+ <translation>Jami é software libre para comunicacións universais e que respecta as liberdades e privacidade das súas usuarias.</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="693"/>
+ <source>
+ This is your ID.
+Copy and share it with your friends!
+ </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="806"/>
+ <source>Show ring ID QR code</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="857"/>
+ <source>Share ring ID button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="915"/>
+ <source>Double-click to copy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="956"/>
+ <source>Error while generating QR Code</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1184"/>
+ <location filename="../callwidget.ui" line="1434"/>
+ <source>best name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1208"/>
+ <source>best Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1734"/>
+ <source>Back to homepage button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1943"/>
+ <source>Add to contacts</source>
+ <translation>Engadir a contactos</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="202"/>
+ <source>Show invites</source>
+ <translation>Mostrar convites</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="205"/>
+ <source>Invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="377"/>
+ <location filename="../callwidget.cpp" line="552"/>
+ <source>Find a new or existing contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1444"/>
+ <source>Wants to talk to you!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1517"/>
+ <source>Answer incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1589"/>
+ <source>Ignore incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1539"/>
+ <source>Answer</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1617"/>
+ <source>Ignore</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1280"/>
+ <source>Cancel outgoing call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1305"/>
+ <source>Cancel</source>
+ <translation>Cancelar</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="332"/>
+ <source>Start video call</source>
+ <translation>Iniciar chamada de vídeo</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="343"/>
+ <source>Start audio call</source>
+ <translation>Iniciar chamada de audio</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="354"/>
+ <source>Clear conversation</source>
+ <translation>Limpar conversa</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="361"/>
+ <source>Remove contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="373"/>
+ <source>Block contact</source>
+ <translation>Bloquear contacto</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="384"/>
+ <source>Copy number</source>
+ <translation>Copiar número</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="561"/>
+ <source>Search your received invitations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>Contact me on Jami</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>My Id is : </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="847"/>
+ <source>%1</source>
+ <comment>%1 is the contact username</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="852"/>
+ <source>%1</source>
+ <comment>%1 is the contact unique identifier</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="675"/>
+ <source>Call incoming from %1</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>DeleteAccountDialog</name>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="35"/>
+ <source>Account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="58"/>
+ <source>Do you really want to delete the following account?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="153"/>
+ <source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="235"/>
+ <source>Permanently delete account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="241"/>
+ <source>Delete</source>
+ <translation>Eliminar</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="278"/>
+ <source>Cancel account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="284"/>
+ <source>Cancel</source>
+ <translation>Cancelar</translation>
+ </message>
+</context>
+<context>
+ <name>DeviceItemWidget</name>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="105"/>
+ <source>Device Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="143"/>
+ <source>this device</source>
+ <translation>este dispositivo</translation>
+ </message>
+</context>
+<context>
+ <name>InviteButtonsWidget</name>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="83"/>
+ <source>Accept</source>
+ <translation>Aceptar</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="131"/>
+ <source>Refuse</source>
+ <translation>Rexeitar</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="179"/>
+ <source>Block</source>
+ <translation>Bloquar</translation>
+ </message>
+</context>
+<context>
+ <name>LinkDeviceDialog</name>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="62"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="117"/>
+ <source>Password</source>
+ <translation>Contrasinal</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="184"/>
+ <source>Ok</source>
+ <translation>Ok</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="218"/>
+ <source>Cancel</source>
+ <translation>Cancelar</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="279"/>
+ <source>Exporting account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="402"/>
+ <source>Your PIN is</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="432"/>
+ <source>PIN</source>
+ <translation>PIN</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="477"/>
+ <source>This pin and the account password should be entered in your device within 10 minutes.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="553"/>
+ <source>Close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="34"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="96"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="110"/>
+ <source>Something went wrong.
+Please try again later.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="83"/>
+ <source>Settings</source>
+ <translation>Axuste</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="94"/>
+ <source>Exit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="111"/>
+ <source>About</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="435"/>
+ <source>Jami</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>NameRegistrationDialog</name>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="35"/>
+ <source>Set Registered Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="163"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="244"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="250"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="256"/>
+ <source>Password</source>
+ <translation>Contrasinal</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="323"/>
+ <source>Register</source>
+ <translation>Rexistro</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="357"/>
+ <source>Cancel</source>
+ <translation>Cancelar</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="424"/>
+ <source>Registering Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="548"/>
+ <source>Something went wrong</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="618"/>
+ <source>Close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="82"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="85"/>
+ <source>Network error</source>
+ <translation>Fallo na rede</translation>
+ </message>
+</context>
+<context>
+ <name>NewWizardWidget</name>
+ <message>
+ <location filename="../newwizardwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="141"/>
+ <source>Welcome Label</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="147"/>
+ <source> Welcome to</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="185"/>
+ <source>Welcome Logo</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="239"/>
+ <source>Create Jami account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="245"/>
+ <source>Push button for Jami account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="251"/>
+ <source>Create a Jami account</source>
+ <translation>Crear conta Jami</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="282"/>
+ <source>Link device button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="288"/>
+ <source>Push button for device linkage start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="291"/>
+ <source>Link this device to an account</source>
+ <translation>Ligar este dispositivo a unha conta</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="328"/>
+ <source>Create Jami SIP account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="334"/>
+ <source>Push button for Jami SIP account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="340"/>
+ <source>Create a SIP account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="405"/>
+ <source>Link this device to an existing account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="469"/>
+ <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">To link this device to another account, you first </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">need to obtain a PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> code. To generate the PIN code:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Account management setting</span><span style=" font-size:14px;"> of a previous device</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choose the </span><span style=" font-size:14px; font-weight:600;">Jami account</span><span style=" font-size:14px;"> you want to use</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Devices</span><span style=" font-size:14px;"> tab</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Select </span><span style=" font-size:14px; font-weight:600;">Add a device</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">You will get the necessary PIN to complete this form. The PIN is only valid for </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutes</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="531"/>
+ <source>Enter your pin:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="599"/>
+ <source>Or import a file:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="626"/>
+ <source>Link from exported account archive file</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="629"/>
+ <location filename="../newwizardwidget.cpp" line="83"/>
+ <location filename="../newwizardwidget.cpp" line="218"/>
+ <source>(None)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="705"/>
+ <source>Password:</source>
+ <translation>Contrasinal:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="799"/>
+ <location filename="../newwizardwidget.ui" line="1586"/>
+ <source>Profile</source>
+ <translation>Perfil</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="953"/>
+ <location filename="../newwizardwidget.ui" line="1767"/>
+ <source>Profile name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1027"/>
+ <source>Account</source>
+ <translation>Conta</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1136"/>
+ <source>Register your username.
+This will reserve the username so that only you can use it.
+Your friends will be able to call you with your usename
+instead of using your ID.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1142"/>
+ <source>Public username checkbox</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1145"/>
+ <source>Checkbox selecting if the user wants a public username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1148"/>
+ <source>Register public username</source>
+ <translation>Rexistrar o nome público de usuaria</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1367"/>
+ <source>Public username edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1373"/>
+ <source>Choose your username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1289"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1295"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1301"/>
+ <location filename="../newwizardwidget.ui" line="2213"/>
+ <source>Password</source>
+ <translation>Contrasinal</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1211"/>
+ <location filename="../newwizardwidget.ui" line="1217"/>
+ <source>Password confirmation text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1223"/>
+ <source>Confirm password</source>
+ <translation>Confirmar contrasinal</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1814"/>
+ <source>SIP Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1973"/>
+ <source>SIP Server edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1979"/>
+ <source>Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2045"/>
+ <source>SIP proxy input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2051"/>
+ <source>SIP proxy text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2057"/>
+ <source>Proxy</source>
+ <translation>Proxy</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2123"/>
+ <source>SIP username input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2129"/>
+ <source>SIP Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2135"/>
+ <source>Username</source>
+ <translation>Nome de usuaria</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2201"/>
+ <location filename="../newwizardwidget.ui" line="2207"/>
+ <source>SIP Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message utf8="true">
+ <location filename="../newwizardwidget.ui" line="2282"/>
+ <source>Generating your Jami account…</source>
+ <translation>Estase a xerar a súa conta Jami...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2356"/>
+ <source>Previous page button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2362"/>
+ <source>push button to access previous page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2365"/>
+ <source>Previous</source>
+ <translation>Anterior</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2396"/>
+ <source>Cancel account create/link</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2402"/>
+ <source>push button to cancel account creation or linking</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2405"/>
+ <source>Back</source>
+ <translation>Atrás</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2442"/>
+ <source>Next page Button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2448"/>
+ <source>Push button to access next page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2451"/>
+ <source>Next</source>
+ <translation>Seguinte</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="75"/>
+ <source>Open File</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="77"/>
+ <source>Jami archive files (*.gz); All files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="123"/>
+ <source>Your account needs to be migrated. Enter your password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="419"/>
+ <source>Migrating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="412"/>
+ <source>Importing account archive...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="404"/>
+ <source>Generating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="422"/>
+ <source>Generating your SIP account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="533"/>
+ <source>Error creating account</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PasswordDialog</name>
+ <message>
+ <location filename="../passworddialog.ui" line="32"/>
+ <source>Change Account Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="97"/>
+ <source>Enter Current Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="169"/>
+ <source>Enter New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="190"/>
+ <source>Confirm New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="247"/>
+ <source>Confirm</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="290"/>
+ <source>Cancel</source>
+ <translation>Cancelar</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="143"/>
+ <source>Current Password Incorrect</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PhotoBoothDialog</name>
+ <message>
+ <location filename="../photoboothdialog.ui" line="14"/>
+ <source>Photobooth</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PhotoboothWidget</name>
+ <message>
+ <location filename="../photoboothwidget.ui" line="20"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.ui" line="120"/>
+ <source>Photobooth display</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="92"/>
+ <source>Choose File</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="94"/>
+ <source>Image Files (*.jpg *.jpeg *.png)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PrivateBridging</name>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Choose File</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../utils.cpp" line="183"/>
+ <source>No default mail client found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="43"/>
+ <location filename="../deviceitemwidget.cpp" line="85"/>
+ <source>Edit Device Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="44"/>
+ <source>Unlink Device From Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="80"/>
+ <source>Save new device name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.cpp" line="39"/>
+ <source>Add as contact</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>RingButton</name>
+ <message>
+ <location filename="../ringbutton.ui" line="140"/>
+ <source>Select folder</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <location filename="../settingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="141"/>
+ <source>Settings</source>
+ <translation>Axuste</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="229"/>
+ <source>Account</source>
+ <translation>Conta</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="267"/>
+ <location filename="../settingswidget.ui" line="503"/>
+ <source>General</source>
+ <translation>Xeral</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="305"/>
+ <location filename="../settingswidget.ui" line="3416"/>
+ <source>Audio / Video</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="542"/>
+ <source>System</source>
+ <translation>Sistema</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="610"/>
+ <source>Enable desktop notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="653"/>
+ <source>Keep minimized on close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="678"/>
+ <source>Download folder</source>
+ <translation>Cartafol para descargas</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="811"/>
+ <source>Save in</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="904"/>
+ <source>Always Recording</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="943"/>
+ <source>Updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1008"/>
+ <source>Check for updates automatically every</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1032"/>
+ <source>Interval between update checks in days selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1038"/>
+ <source> days</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1081"/>
+ <source>Check for updates now button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1084"/>
+ <source>Check for updates now</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3027"/>
+ <source>Password</source>
+ <translation>Contrasinal</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1418"/>
+ <location filename="../settingswidget.ui" line="2729"/>
+ <source>Enable</source>
+ <translation>Activar</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="607"/>
+ <source>toggle enable notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="650"/>
+ <source>Toggle keep minimized on close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="764"/>
+ <source>Call Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1005"/>
+ <source>Toggle automatic updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1231"/>
+ <source>Jami Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1453"/>
+ <location filename="../settingswidget.ui" line="2761"/>
+ <source>Profile</source>
+ <translation>Perfil</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1567"/>
+ <location filename="../settingswidget.ui" line="2875"/>
+ <source>Identity</source>
+ <translation>Identidade</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1614"/>
+ <source>Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1673"/>
+ <source>Registered name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1721"/>
+ <source>Type here to register a username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1755"/>
+ <source>Register</source>
+ <translation>Rexistro</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1827"/>
+ <source>Change Password</source>
+ <translation>Cambiar contrasinal</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1868"/>
+ <source>Export Account</source>
+ <translation>Exportar conta</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1909"/>
+ <location filename="../settingswidget.ui" line="3089"/>
+ <source>Delete Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1973"/>
+ <source>Linked Devices</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2078"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2142"/>
+ <source>Banned Contacts</source>
+ <translation>Contactos excluídos</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3788"/>
+ <source>Format</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3831"/>
+ <source>Video device framerate selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3967"/>
+ <source>Preview unavailable</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2359"/>
+ <location filename="../settingswidget.ui" line="3187"/>
+ <source>Advanced Account Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2554"/>
+ <source>SIP Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2925"/>
+ <source>Username</source>
+ <translation>Nome de usuaria</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2958"/>
+ <source>Hostname</source>
+ <translation>Servidor</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2991"/>
+ <source>Proxy</source>
+ <translation>Proxy</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3461"/>
+ <source>Audio</source>
+ <translation>Audio</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3511"/>
+ <source>Microphone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3551"/>
+ <source>Audio input device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3585"/>
+ <source>Output Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3625"/>
+ <source>Choose the output device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3682"/>
+ <source>Video</source>
+ <translation>Vídeo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3720"/>
+ <source>Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3766"/>
+ <source>Video device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="459"/>
+ <source>A registered name should not have any spaces and must be at least three letters long</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="466"/>
+ <source>This name is already taken</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="92"/>
+ <location filename="../settingswidget.cpp" line="110"/>
+ <source>Enter an alias</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="473"/>
+ <source>Register this name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="550"/>
+ <source>Remove Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="551"/>
+ <source>Enter this account's password to confirm the removal of this device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="558"/>
+ <source>Are you sure you wish to remove this device?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="589"/>
+ <source>Export Account Here</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="887"/>
+ <source>Select A Folder For Your Downloads</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="904"/>
+ <source>Select A Folder For Your Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>VideoOverlay</name>
+ <message>
+ <location filename="../videooverlay.ui" line="419"/>
+ <source>Call on Hold</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="89"/>
+ <source>Hold / Unhold</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="124"/>
+ <source>Chat</source>
+ <translation>Conversa</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="162"/>
+ <source>Mute Mic</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="244"/>
+ <source>Record call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="325"/>
+ <source>Name label</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="390"/>
+ <source>Time elapsed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="393"/>
+ <source>00:00</source>
+ <translation>00:00</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="57"/>
+ <source>Hangup</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="203"/>
+ <source>Mute Video</source>
+ <translation>Acalar vídeo</translation>
+ </message>
+</context>
+<context>
+ <name>VideoView</name>
+ <message>
+ <location filename="../videoview.cpp" line="271"/>
+ <source>Share entire screen</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="274"/>
+ <source>Share screen area</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="281"/>
+ <source>Share file</source>
+ <translation>Compartir ficheiro</translation>
+ </message>
+</context>
+</TS>
\ No newline at end of file
diff --git a/translations/ring_client_windows_he.ts b/translations/ring_client_windows_he.ts
new file mode 100644
index 0000000..b459628
--- /dev/null
+++ b/translations/ring_client_windows_he.ts
@@ -0,0 +1,1589 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="he" version="2.0">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../aboutdialog.ui" line="435"/>
+ <location filename="../aboutdialog.ui" line="465"/>
+ <source>About</source>
+ <translation>אודות</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="462"/>
+ <source>about button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="478"/>
+ <source>credits button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="481"/>
+ <source>Credits</source>
+ <translation>תודות</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="547"/>
+ <source>Free as in Freedom</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="563"/>
+ <source>The Microsoft Windows client for Jami.
+Jami is a secured and distributed communication software.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="32"/>
+ <source>version</source>
+ <translation>גירסה</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="39"/>
+ <source>Created by:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="73"/>
+ <source>Artwork by:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="77"/>
+ <source>Based on the SFLPhone project</source>
+ <translation>מבוסס על הפרויקט SFLPhone</translation>
+ </message>
+</context>
+<context>
+ <name>AccountItemDelegate</name>
+ <message>
+ <location filename="../accountitemdelegate.cpp" line="91"/>
+ <source>Add Account</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSIPSettingsWidget</name>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="55"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="102"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="130"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="191"/>
+ <source>Connectivity</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="281"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="293"/>
+ <source>Use STUN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="317"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="329"/>
+ <source>Use TURN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="359"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="391"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="423"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="464"/>
+ <source>Media</source>
+ <translation>מדיה</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="515"/>
+ <source>Enable Video</source>
+ <translation>אפשר וידאו</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="539"/>
+ <source>Video Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="692"/>
+ <source>Audio Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="142"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="151"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSettingsWidget</name>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="61"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="108"/>
+ <source>Allow Calls From Untrusted Peers</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="133"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="161"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="188"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="225"/>
+ <source>Name Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="275"/>
+ <source>Address</source>
+ <translation>כתובת</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="351"/>
+ <source>OpenDHT Configuration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="398"/>
+ <source>Enable Proxy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="454"/>
+ <source>Bootstrap</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="530"/>
+ <source>Security</source>
+ <translation>אבטחה</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="571"/>
+ <source>Private Key Password</source>
+ <translation>סיסמת מפתח פרטי</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="583"/>
+ <source>User Certificate</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="622"/>
+ <source>Private Key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="634"/>
+ <source>CA Certificate</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="766"/>
+ <source>Connectivity</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="868"/>
+ <source>Use STUN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="856"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="892"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="904"/>
+ <source>Use TURN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="934"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="966"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="998"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1039"/>
+ <source>Media</source>
+ <translation>מדיה</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1090"/>
+ <source>Enable Video</source>
+ <translation>אפשר וידאו</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1267"/>
+ <source>Audio Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1114"/>
+ <source>Video Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="181"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AnimatedOverlay</name>
+ <message>
+ <location filename="../animatedoverlay.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>BannedItemWidget</name>
+ <message>
+ <location filename="../banneditemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="80"/>
+ <source>name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="104"/>
+ <source>id</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>CallWidget</name>
+ <message>
+ <location filename="../callwidget.ui" line="184"/>
+ <source>Show conversations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="187"/>
+ <source>Conversations</source>
+ <translation>דיונים</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="368"/>
+ <source>Search contact text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="653"/>
+ <source>Jami is free software for universal communication which respects the freedoms and privacy of its users.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="693"/>
+ <source>
+ This is your ID.
+Copy and share it with your friends!
+ </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="806"/>
+ <source>Show ring ID QR code</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="857"/>
+ <source>Share ring ID button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="915"/>
+ <source>Double-click to copy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="956"/>
+ <source>Error while generating QR Code</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1184"/>
+ <location filename="../callwidget.ui" line="1434"/>
+ <source>best name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1208"/>
+ <source>best Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1734"/>
+ <source>Back to homepage button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1943"/>
+ <source>Add to contacts</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="202"/>
+ <source>Show invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="205"/>
+ <source>Invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="377"/>
+ <location filename="../callwidget.cpp" line="552"/>
+ <source>Find a new or existing contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1444"/>
+ <source>Wants to talk to you!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1517"/>
+ <source>Answer incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1589"/>
+ <source>Ignore incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1539"/>
+ <source>Answer</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1617"/>
+ <source>Ignore</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1280"/>
+ <source>Cancel outgoing call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1305"/>
+ <source>Cancel</source>
+ <translation>ביטול</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="332"/>
+ <source>Start video call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="343"/>
+ <source>Start audio call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="354"/>
+ <source>Clear conversation</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="361"/>
+ <source>Remove contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="373"/>
+ <source>Block contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="384"/>
+ <source>Copy number</source>
+ <translation>העתק מספר</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="561"/>
+ <source>Search your received invitations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>Contact me on Jami</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>My Id is : </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="847"/>
+ <source>%1</source>
+ <comment>%1 is the contact username</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="852"/>
+ <source>%1</source>
+ <comment>%1 is the contact unique identifier</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="675"/>
+ <source>Call incoming from %1</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>DeleteAccountDialog</name>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="35"/>
+ <source>Account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="58"/>
+ <source>Do you really want to delete the following account?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="153"/>
+ <source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="235"/>
+ <source>Permanently delete account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="241"/>
+ <source>Delete</source>
+ <translation>מחק</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="278"/>
+ <source>Cancel account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="284"/>
+ <source>Cancel</source>
+ <translation>ביטול</translation>
+ </message>
+</context>
+<context>
+ <name>DeviceItemWidget</name>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="105"/>
+ <source>Device Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="143"/>
+ <source>this device</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>InviteButtonsWidget</name>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="83"/>
+ <source>Accept</source>
+ <translation>קבל</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="131"/>
+ <source>Refuse</source>
+ <translation>סרב</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="179"/>
+ <source>Block</source>
+ <translation>חסום</translation>
+ </message>
+</context>
+<context>
+ <name>LinkDeviceDialog</name>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation>דו שיח</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="62"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="117"/>
+ <source>Password</source>
+ <translation>סיסמה</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="184"/>
+ <source>Ok</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="218"/>
+ <source>Cancel</source>
+ <translation>ביטול</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="279"/>
+ <source>Exporting account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="402"/>
+ <source>Your PIN is</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="432"/>
+ <source>PIN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="477"/>
+ <source>This pin and the account password should be entered in your device within 10 minutes.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="553"/>
+ <source>Close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="34"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="96"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="110"/>
+ <source>Something went wrong.
+Please try again later.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="83"/>
+ <source>Settings</source>
+ <translation>הגדרות</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="94"/>
+ <source>Exit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="111"/>
+ <source>About</source>
+ <translation>אודות</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="435"/>
+ <source>Jami</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>NameRegistrationDialog</name>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="35"/>
+ <source>Set Registered Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="163"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="244"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="250"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="256"/>
+ <source>Password</source>
+ <translation>סיסמה</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="323"/>
+ <source>Register</source>
+ <translation>הירשם</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="357"/>
+ <source>Cancel</source>
+ <translation>ביטול</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="424"/>
+ <source>Registering Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="548"/>
+ <source>Something went wrong</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="618"/>
+ <source>Close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="82"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="85"/>
+ <source>Network error</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>NewWizardWidget</name>
+ <message>
+ <location filename="../newwizardwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="141"/>
+ <source>Welcome Label</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="147"/>
+ <source> Welcome to</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="185"/>
+ <source>Welcome Logo</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="239"/>
+ <source>Create Jami account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="245"/>
+ <source>Push button for Jami account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="251"/>
+ <source>Create a Jami account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="282"/>
+ <source>Link device button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="288"/>
+ <source>Push button for device linkage start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="291"/>
+ <source>Link this device to an account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="328"/>
+ <source>Create Jami SIP account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="334"/>
+ <source>Push button for Jami SIP account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="340"/>
+ <source>Create a SIP account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="405"/>
+ <source>Link this device to an existing account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="469"/>
+ <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">To link this device to another account, you first </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">need to obtain a PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> code. To generate the PIN code:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Account management setting</span><span style=" font-size:14px;"> of a previous device</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choose the </span><span style=" font-size:14px; font-weight:600;">Jami account</span><span style=" font-size:14px;"> you want to use</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Devices</span><span style=" font-size:14px;"> tab</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Select </span><span style=" font-size:14px; font-weight:600;">Add a device</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">You will get the necessary PIN to complete this form. The PIN is only valid for </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutes</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="531"/>
+ <source>Enter your pin:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="599"/>
+ <source>Or import a file:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="626"/>
+ <source>Link from exported account archive file</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="629"/>
+ <location filename="../newwizardwidget.cpp" line="83"/>
+ <location filename="../newwizardwidget.cpp" line="218"/>
+ <source>(None)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="705"/>
+ <source>Password:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="799"/>
+ <location filename="../newwizardwidget.ui" line="1586"/>
+ <source>Profile</source>
+ <translation>פרופיל</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="953"/>
+ <location filename="../newwizardwidget.ui" line="1767"/>
+ <source>Profile name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1027"/>
+ <source>Account</source>
+ <translation>חשבון</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1136"/>
+ <source>Register your username.
+This will reserve the username so that only you can use it.
+Your friends will be able to call you with your usename
+instead of using your ID.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1142"/>
+ <source>Public username checkbox</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1145"/>
+ <source>Checkbox selecting if the user wants a public username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1148"/>
+ <source>Register public username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1367"/>
+ <source>Public username edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1373"/>
+ <source>Choose your username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1289"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1295"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1301"/>
+ <location filename="../newwizardwidget.ui" line="2213"/>
+ <source>Password</source>
+ <translation>סיסמה</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1211"/>
+ <location filename="../newwizardwidget.ui" line="1217"/>
+ <source>Password confirmation text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1223"/>
+ <source>Confirm password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1814"/>
+ <source>SIP Account</source>
+ <translation>חשבון SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1973"/>
+ <source>SIP Server edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1979"/>
+ <source>Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2045"/>
+ <source>SIP proxy input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2051"/>
+ <source>SIP proxy text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2057"/>
+ <source>Proxy</source>
+ <translation>פרוקסי</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2123"/>
+ <source>SIP username input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2129"/>
+ <source>SIP Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2135"/>
+ <source>Username</source>
+ <translation>שם משתמש</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2201"/>
+ <location filename="../newwizardwidget.ui" line="2207"/>
+ <source>SIP Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message utf8="true">
+ <location filename="../newwizardwidget.ui" line="2282"/>
+ <source>Generating your Jami account…</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2356"/>
+ <source>Previous page button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2362"/>
+ <source>push button to access previous page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2365"/>
+ <source>Previous</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2396"/>
+ <source>Cancel account create/link</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2402"/>
+ <source>push button to cancel account creation or linking</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2405"/>
+ <source>Back</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2442"/>
+ <source>Next page Button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2448"/>
+ <source>Push button to access next page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2451"/>
+ <source>Next</source>
+ <translation>קדימה</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="75"/>
+ <source>Open File</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="77"/>
+ <source>Jami archive files (*.gz); All files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="123"/>
+ <source>Your account needs to be migrated. Enter your password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="419"/>
+ <source>Migrating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="412"/>
+ <source>Importing account archive...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="404"/>
+ <source>Generating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="422"/>
+ <source>Generating your SIP account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="533"/>
+ <source>Error creating account</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PasswordDialog</name>
+ <message>
+ <location filename="../passworddialog.ui" line="32"/>
+ <source>Change Account Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="97"/>
+ <source>Enter Current Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="169"/>
+ <source>Enter New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="190"/>
+ <source>Confirm New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="247"/>
+ <source>Confirm</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="290"/>
+ <source>Cancel</source>
+ <translation>ביטול</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="143"/>
+ <source>Current Password Incorrect</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PhotoBoothDialog</name>
+ <message>
+ <location filename="../photoboothdialog.ui" line="14"/>
+ <source>Photobooth</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PhotoboothWidget</name>
+ <message>
+ <location filename="../photoboothwidget.ui" line="20"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.ui" line="120"/>
+ <source>Photobooth display</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="92"/>
+ <source>Choose File</source>
+ <translation>בחר קובץ</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="94"/>
+ <source>Image Files (*.jpg *.jpeg *.png)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PrivateBridging</name>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Choose File</source>
+ <translation>בחר קובץ</translation>
+ </message>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Files (*)</source>
+ <translation>קבצים (*)</translation>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../utils.cpp" line="183"/>
+ <source>No default mail client found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="43"/>
+ <location filename="../deviceitemwidget.cpp" line="85"/>
+ <source>Edit Device Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="44"/>
+ <source>Unlink Device From Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="80"/>
+ <source>Save new device name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.cpp" line="39"/>
+ <source>Add as contact</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>RingButton</name>
+ <message>
+ <location filename="../ringbutton.ui" line="140"/>
+ <source>Select folder</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <location filename="../settingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="141"/>
+ <source>Settings</source>
+ <translation>הגדרות</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="229"/>
+ <source>Account</source>
+ <translation>חשבון</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="267"/>
+ <location filename="../settingswidget.ui" line="503"/>
+ <source>General</source>
+ <translation>כלליות</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="305"/>
+ <location filename="../settingswidget.ui" line="3416"/>
+ <source>Audio / Video</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="542"/>
+ <source>System</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="610"/>
+ <source>Enable desktop notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="653"/>
+ <source>Keep minimized on close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="678"/>
+ <source>Download folder</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="811"/>
+ <source>Save in</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="904"/>
+ <source>Always Recording</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="943"/>
+ <source>Updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1008"/>
+ <source>Check for updates automatically every</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1032"/>
+ <source>Interval between update checks in days selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1038"/>
+ <source> days</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1081"/>
+ <source>Check for updates now button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1084"/>
+ <source>Check for updates now</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3027"/>
+ <source>Password</source>
+ <translation>סיסמה</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1418"/>
+ <location filename="../settingswidget.ui" line="2729"/>
+ <source>Enable</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="607"/>
+ <source>toggle enable notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="650"/>
+ <source>Toggle keep minimized on close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="764"/>
+ <source>Call Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1005"/>
+ <source>Toggle automatic updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1231"/>
+ <source>Jami Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1453"/>
+ <location filename="../settingswidget.ui" line="2761"/>
+ <source>Profile</source>
+ <translation>פרופיל</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1567"/>
+ <location filename="../settingswidget.ui" line="2875"/>
+ <source>Identity</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1614"/>
+ <source>Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1673"/>
+ <source>Registered name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1721"/>
+ <source>Type here to register a username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1755"/>
+ <source>Register</source>
+ <translation>הירשם</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1827"/>
+ <source>Change Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1868"/>
+ <source>Export Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1909"/>
+ <location filename="../settingswidget.ui" line="3089"/>
+ <source>Delete Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1973"/>
+ <source>Linked Devices</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2078"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2142"/>
+ <source>Banned Contacts</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3788"/>
+ <source>Format</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3831"/>
+ <source>Video device framerate selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3967"/>
+ <source>Preview unavailable</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2359"/>
+ <location filename="../settingswidget.ui" line="3187"/>
+ <source>Advanced Account Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2554"/>
+ <source>SIP Account</source>
+ <translation>חשבון SIP</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2925"/>
+ <source>Username</source>
+ <translation>שם משתמש</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2958"/>
+ <source>Hostname</source>
+ <translation>שם מארח</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2991"/>
+ <source>Proxy</source>
+ <translation>פרוקסי</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3461"/>
+ <source>Audio</source>
+ <translation>אודיו</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3511"/>
+ <source>Microphone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3551"/>
+ <source>Audio input device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3585"/>
+ <source>Output Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3625"/>
+ <source>Choose the output device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3682"/>
+ <source>Video</source>
+ <translation>וידאו</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3720"/>
+ <source>Device</source>
+ <translation>מכשיר</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3766"/>
+ <source>Video device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="459"/>
+ <source>A registered name should not have any spaces and must be at least three letters long</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="466"/>
+ <source>This name is already taken</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="92"/>
+ <location filename="../settingswidget.cpp" line="110"/>
+ <source>Enter an alias</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="473"/>
+ <source>Register this name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="550"/>
+ <source>Remove Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="551"/>
+ <source>Enter this account's password to confirm the removal of this device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="558"/>
+ <source>Are you sure you wish to remove this device?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="589"/>
+ <source>Export Account Here</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="887"/>
+ <source>Select A Folder For Your Downloads</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="904"/>
+ <source>Select A Folder For Your Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>VideoOverlay</name>
+ <message>
+ <location filename="../videooverlay.ui" line="419"/>
+ <source>Call on Hold</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="89"/>
+ <source>Hold / Unhold</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="124"/>
+ <source>Chat</source>
+ <translation>שיחה</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="162"/>
+ <source>Mute Mic</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="244"/>
+ <source>Record call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="325"/>
+ <source>Name label</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="390"/>
+ <source>Time elapsed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="393"/>
+ <source>00:00</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="57"/>
+ <source>Hangup</source>
+ <translation>נתק</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="203"/>
+ <source>Mute Video</source>
+ <translation>כבה וידאו</translation>
+ </message>
+</context>
+<context>
+ <name>VideoView</name>
+ <message>
+ <location filename="../videoview.cpp" line="271"/>
+ <source>Share entire screen</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="274"/>
+ <source>Share screen area</source>
+ <translation>שתף אזור מסך</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="281"/>
+ <source>Share file</source>
+ <translation>שתף קובץ</translation>
+ </message>
+</context>
+</TS>
\ No newline at end of file
diff --git a/translations/ring_client_windows_hi_IN.ts b/translations/ring_client_windows_hi_IN.ts
new file mode 100644
index 0000000..dab0d6f
--- /dev/null
+++ b/translations/ring_client_windows_hi_IN.ts
@@ -0,0 +1,1589 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="hi_IN" version="2.0">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../aboutdialog.ui" line="435"/>
+ <location filename="../aboutdialog.ui" line="465"/>
+ <source>About</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="462"/>
+ <source>about button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="478"/>
+ <source>credits button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="481"/>
+ <source>Credits</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="547"/>
+ <source>Free as in Freedom</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="563"/>
+ <source>The Microsoft Windows client for Jami.
+Jami is a secured and distributed communication software.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="32"/>
+ <source>version</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="39"/>
+ <source>Created by:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="73"/>
+ <source>Artwork by:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="77"/>
+ <source>Based on the SFLPhone project</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AccountItemDelegate</name>
+ <message>
+ <location filename="../accountitemdelegate.cpp" line="91"/>
+ <source>Add Account</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSIPSettingsWidget</name>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="55"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="102"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="130"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="191"/>
+ <source>Connectivity</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="281"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="293"/>
+ <source>Use STUN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="317"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="329"/>
+ <source>Use TURN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="359"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="391"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="423"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="464"/>
+ <source>Media</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="515"/>
+ <source>Enable Video</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="539"/>
+ <source>Video Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="692"/>
+ <source>Audio Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="142"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="151"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSettingsWidget</name>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="61"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="108"/>
+ <source>Allow Calls From Untrusted Peers</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="133"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="161"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="188"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="225"/>
+ <source>Name Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="275"/>
+ <source>Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="351"/>
+ <source>OpenDHT Configuration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="398"/>
+ <source>Enable Proxy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="454"/>
+ <source>Bootstrap</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="530"/>
+ <source>Security</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="571"/>
+ <source>Private Key Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="583"/>
+ <source>User Certificate</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="622"/>
+ <source>Private Key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="634"/>
+ <source>CA Certificate</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="766"/>
+ <source>Connectivity</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="868"/>
+ <source>Use STUN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="856"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="892"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="904"/>
+ <source>Use TURN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="934"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="966"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="998"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1039"/>
+ <source>Media</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1090"/>
+ <source>Enable Video</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1267"/>
+ <source>Audio Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1114"/>
+ <source>Video Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="181"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AnimatedOverlay</name>
+ <message>
+ <location filename="../animatedoverlay.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>BannedItemWidget</name>
+ <message>
+ <location filename="../banneditemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="80"/>
+ <source>name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="104"/>
+ <source>id</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>CallWidget</name>
+ <message>
+ <location filename="../callwidget.ui" line="184"/>
+ <source>Show conversations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="187"/>
+ <source>Conversations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="368"/>
+ <source>Search contact text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="653"/>
+ <source>Jami is free software for universal communication which respects the freedoms and privacy of its users.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="693"/>
+ <source>
+ This is your ID.
+Copy and share it with your friends!
+ </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="806"/>
+ <source>Show ring ID QR code</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="857"/>
+ <source>Share ring ID button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="915"/>
+ <source>Double-click to copy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="956"/>
+ <source>Error while generating QR Code</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1184"/>
+ <location filename="../callwidget.ui" line="1434"/>
+ <source>best name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1208"/>
+ <source>best Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1734"/>
+ <source>Back to homepage button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1943"/>
+ <source>Add to contacts</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="202"/>
+ <source>Show invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="205"/>
+ <source>Invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="377"/>
+ <location filename="../callwidget.cpp" line="552"/>
+ <source>Find a new or existing contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1444"/>
+ <source>Wants to talk to you!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1517"/>
+ <source>Answer incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1589"/>
+ <source>Ignore incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1539"/>
+ <source>Answer</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1617"/>
+ <source>Ignore</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1280"/>
+ <source>Cancel outgoing call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1305"/>
+ <source>Cancel</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="332"/>
+ <source>Start video call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="343"/>
+ <source>Start audio call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="354"/>
+ <source>Clear conversation</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="361"/>
+ <source>Remove contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="373"/>
+ <source>Block contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="384"/>
+ <source>Copy number</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="561"/>
+ <source>Search your received invitations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>Contact me on Jami</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>My Id is : </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="847"/>
+ <source>%1</source>
+ <comment>%1 is the contact username</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="852"/>
+ <source>%1</source>
+ <comment>%1 is the contact unique identifier</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="675"/>
+ <source>Call incoming from %1</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>DeleteAccountDialog</name>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="35"/>
+ <source>Account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="58"/>
+ <source>Do you really want to delete the following account?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="153"/>
+ <source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="235"/>
+ <source>Permanently delete account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="241"/>
+ <source>Delete</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="278"/>
+ <source>Cancel account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="284"/>
+ <source>Cancel</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>DeviceItemWidget</name>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="105"/>
+ <source>Device Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="143"/>
+ <source>this device</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>InviteButtonsWidget</name>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="83"/>
+ <source>Accept</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="131"/>
+ <source>Refuse</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="179"/>
+ <source>Block</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>LinkDeviceDialog</name>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="62"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="117"/>
+ <source>Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="184"/>
+ <source>Ok</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="218"/>
+ <source>Cancel</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="279"/>
+ <source>Exporting account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="402"/>
+ <source>Your PIN is</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="432"/>
+ <source>PIN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="477"/>
+ <source>This pin and the account password should be entered in your device within 10 minutes.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="553"/>
+ <source>Close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="34"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="96"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="110"/>
+ <source>Something went wrong.
+Please try again later.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="83"/>
+ <source>Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="94"/>
+ <source>Exit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="111"/>
+ <source>About</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="435"/>
+ <source>Jami</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>NameRegistrationDialog</name>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="35"/>
+ <source>Set Registered Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="163"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="244"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="250"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="256"/>
+ <source>Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="323"/>
+ <source>Register</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="357"/>
+ <source>Cancel</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="424"/>
+ <source>Registering Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="548"/>
+ <source>Something went wrong</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="618"/>
+ <source>Close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="82"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="85"/>
+ <source>Network error</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>NewWizardWidget</name>
+ <message>
+ <location filename="../newwizardwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="141"/>
+ <source>Welcome Label</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="147"/>
+ <source> Welcome to</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="185"/>
+ <source>Welcome Logo</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="239"/>
+ <source>Create Jami account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="245"/>
+ <source>Push button for Jami account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="251"/>
+ <source>Create a Jami account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="282"/>
+ <source>Link device button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="288"/>
+ <source>Push button for device linkage start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="291"/>
+ <source>Link this device to an account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="328"/>
+ <source>Create Jami SIP account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="334"/>
+ <source>Push button for Jami SIP account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="340"/>
+ <source>Create a SIP account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="405"/>
+ <source>Link this device to an existing account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="469"/>
+ <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">To link this device to another account, you first </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">need to obtain a PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> code. To generate the PIN code:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Account management setting</span><span style=" font-size:14px;"> of a previous device</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choose the </span><span style=" font-size:14px; font-weight:600;">Jami account</span><span style=" font-size:14px;"> you want to use</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Devices</span><span style=" font-size:14px;"> tab</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Select </span><span style=" font-size:14px; font-weight:600;">Add a device</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">You will get the necessary PIN to complete this form. The PIN is only valid for </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutes</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="531"/>
+ <source>Enter your pin:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="599"/>
+ <source>Or import a file:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="626"/>
+ <source>Link from exported account archive file</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="629"/>
+ <location filename="../newwizardwidget.cpp" line="83"/>
+ <location filename="../newwizardwidget.cpp" line="218"/>
+ <source>(None)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="705"/>
+ <source>Password:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="799"/>
+ <location filename="../newwizardwidget.ui" line="1586"/>
+ <source>Profile</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="953"/>
+ <location filename="../newwizardwidget.ui" line="1767"/>
+ <source>Profile name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1027"/>
+ <source>Account</source>
+ <translation>खाता</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1136"/>
+ <source>Register your username.
+This will reserve the username so that only you can use it.
+Your friends will be able to call you with your usename
+instead of using your ID.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1142"/>
+ <source>Public username checkbox</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1145"/>
+ <source>Checkbox selecting if the user wants a public username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1148"/>
+ <source>Register public username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1367"/>
+ <source>Public username edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1373"/>
+ <source>Choose your username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1289"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1295"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1301"/>
+ <location filename="../newwizardwidget.ui" line="2213"/>
+ <source>Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1211"/>
+ <location filename="../newwizardwidget.ui" line="1217"/>
+ <source>Password confirmation text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1223"/>
+ <source>Confirm password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1814"/>
+ <source>SIP Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1973"/>
+ <source>SIP Server edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1979"/>
+ <source>Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2045"/>
+ <source>SIP proxy input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2051"/>
+ <source>SIP proxy text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2057"/>
+ <source>Proxy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2123"/>
+ <source>SIP username input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2129"/>
+ <source>SIP Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2135"/>
+ <source>Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2201"/>
+ <location filename="../newwizardwidget.ui" line="2207"/>
+ <source>SIP Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message utf8="true">
+ <location filename="../newwizardwidget.ui" line="2282"/>
+ <source>Generating your Jami account…</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2356"/>
+ <source>Previous page button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2362"/>
+ <source>push button to access previous page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2365"/>
+ <source>Previous</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2396"/>
+ <source>Cancel account create/link</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2402"/>
+ <source>push button to cancel account creation or linking</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2405"/>
+ <source>Back</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2442"/>
+ <source>Next page Button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2448"/>
+ <source>Push button to access next page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2451"/>
+ <source>Next</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="75"/>
+ <source>Open File</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="77"/>
+ <source>Jami archive files (*.gz); All files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="123"/>
+ <source>Your account needs to be migrated. Enter your password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="419"/>
+ <source>Migrating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="412"/>
+ <source>Importing account archive...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="404"/>
+ <source>Generating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="422"/>
+ <source>Generating your SIP account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="533"/>
+ <source>Error creating account</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PasswordDialog</name>
+ <message>
+ <location filename="../passworddialog.ui" line="32"/>
+ <source>Change Account Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="97"/>
+ <source>Enter Current Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="169"/>
+ <source>Enter New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="190"/>
+ <source>Confirm New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="247"/>
+ <source>Confirm</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="290"/>
+ <source>Cancel</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="143"/>
+ <source>Current Password Incorrect</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PhotoBoothDialog</name>
+ <message>
+ <location filename="../photoboothdialog.ui" line="14"/>
+ <source>Photobooth</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PhotoboothWidget</name>
+ <message>
+ <location filename="../photoboothwidget.ui" line="20"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.ui" line="120"/>
+ <source>Photobooth display</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="92"/>
+ <source>Choose File</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="94"/>
+ <source>Image Files (*.jpg *.jpeg *.png)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PrivateBridging</name>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Choose File</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../utils.cpp" line="183"/>
+ <source>No default mail client found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="43"/>
+ <location filename="../deviceitemwidget.cpp" line="85"/>
+ <source>Edit Device Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="44"/>
+ <source>Unlink Device From Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="80"/>
+ <source>Save new device name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.cpp" line="39"/>
+ <source>Add as contact</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>RingButton</name>
+ <message>
+ <location filename="../ringbutton.ui" line="140"/>
+ <source>Select folder</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <location filename="../settingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="141"/>
+ <source>Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="229"/>
+ <source>Account</source>
+ <translation>खाता</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="267"/>
+ <location filename="../settingswidget.ui" line="503"/>
+ <source>General</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="305"/>
+ <location filename="../settingswidget.ui" line="3416"/>
+ <source>Audio / Video</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="542"/>
+ <source>System</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="610"/>
+ <source>Enable desktop notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="653"/>
+ <source>Keep minimized on close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="678"/>
+ <source>Download folder</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="811"/>
+ <source>Save in</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="904"/>
+ <source>Always Recording</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="943"/>
+ <source>Updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1008"/>
+ <source>Check for updates automatically every</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1032"/>
+ <source>Interval between update checks in days selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1038"/>
+ <source> days</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1081"/>
+ <source>Check for updates now button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1084"/>
+ <source>Check for updates now</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3027"/>
+ <source>Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1418"/>
+ <location filename="../settingswidget.ui" line="2729"/>
+ <source>Enable</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="607"/>
+ <source>toggle enable notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="650"/>
+ <source>Toggle keep minimized on close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="764"/>
+ <source>Call Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1005"/>
+ <source>Toggle automatic updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1231"/>
+ <source>Jami Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1453"/>
+ <location filename="../settingswidget.ui" line="2761"/>
+ <source>Profile</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1567"/>
+ <location filename="../settingswidget.ui" line="2875"/>
+ <source>Identity</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1614"/>
+ <source>Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1673"/>
+ <source>Registered name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1721"/>
+ <source>Type here to register a username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1755"/>
+ <source>Register</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1827"/>
+ <source>Change Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1868"/>
+ <source>Export Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1909"/>
+ <location filename="../settingswidget.ui" line="3089"/>
+ <source>Delete Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1973"/>
+ <source>Linked Devices</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2078"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2142"/>
+ <source>Banned Contacts</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3788"/>
+ <source>Format</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3831"/>
+ <source>Video device framerate selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3967"/>
+ <source>Preview unavailable</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2359"/>
+ <location filename="../settingswidget.ui" line="3187"/>
+ <source>Advanced Account Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2554"/>
+ <source>SIP Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2925"/>
+ <source>Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2958"/>
+ <source>Hostname</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2991"/>
+ <source>Proxy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3461"/>
+ <source>Audio</source>
+ <translation>आॅडियो</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3511"/>
+ <source>Microphone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3551"/>
+ <source>Audio input device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3585"/>
+ <source>Output Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3625"/>
+ <source>Choose the output device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3682"/>
+ <source>Video</source>
+ <translation>वीडियो</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3720"/>
+ <source>Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3766"/>
+ <source>Video device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="459"/>
+ <source>A registered name should not have any spaces and must be at least three letters long</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="466"/>
+ <source>This name is already taken</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="92"/>
+ <location filename="../settingswidget.cpp" line="110"/>
+ <source>Enter an alias</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="473"/>
+ <source>Register this name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="550"/>
+ <source>Remove Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="551"/>
+ <source>Enter this account's password to confirm the removal of this device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="558"/>
+ <source>Are you sure you wish to remove this device?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="589"/>
+ <source>Export Account Here</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="887"/>
+ <source>Select A Folder For Your Downloads</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="904"/>
+ <source>Select A Folder For Your Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>VideoOverlay</name>
+ <message>
+ <location filename="../videooverlay.ui" line="419"/>
+ <source>Call on Hold</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="89"/>
+ <source>Hold / Unhold</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="124"/>
+ <source>Chat</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="162"/>
+ <source>Mute Mic</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="244"/>
+ <source>Record call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="325"/>
+ <source>Name label</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="390"/>
+ <source>Time elapsed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="393"/>
+ <source>00:00</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="57"/>
+ <source>Hangup</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="203"/>
+ <source>Mute Video</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>VideoView</name>
+ <message>
+ <location filename="../videoview.cpp" line="271"/>
+ <source>Share entire screen</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="274"/>
+ <source>Share screen area</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="281"/>
+ <source>Share file</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+</TS>
\ No newline at end of file
diff --git a/translations/ring_client_windows_hr.ts b/translations/ring_client_windows_hr.ts
new file mode 100644
index 0000000..8aa78ba
--- /dev/null
+++ b/translations/ring_client_windows_hr.ts
@@ -0,0 +1,1589 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="hr" version="2.0">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../aboutdialog.ui" line="435"/>
+ <location filename="../aboutdialog.ui" line="465"/>
+ <source>About</source>
+ <translation>O programu</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="462"/>
+ <source>about button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="478"/>
+ <source>credits button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="481"/>
+ <source>Credits</source>
+ <translation>Zasluge</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="547"/>
+ <source>Free as in Freedom</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="563"/>
+ <source>The Microsoft Windows client for Jami.
+Jami is a secured and distributed communication software.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="32"/>
+ <source>version</source>
+ <translation>verzija</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="39"/>
+ <source>Created by:</source>
+ <translation>Napravio:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="73"/>
+ <source>Artwork by:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="77"/>
+ <source>Based on the SFLPhone project</source>
+ <translation>Bazirano na SFLPhone projektu</translation>
+ </message>
+</context>
+<context>
+ <name>AccountItemDelegate</name>
+ <message>
+ <location filename="../accountitemdelegate.cpp" line="91"/>
+ <source>Add Account</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSIPSettingsWidget</name>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="55"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="102"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="130"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="191"/>
+ <source>Connectivity</source>
+ <translation>Spojivost</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="281"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="293"/>
+ <source>Use STUN</source>
+ <translation>Koristi STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="317"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="329"/>
+ <source>Use TURN</source>
+ <translation>Koristi TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="359"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="391"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="423"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="464"/>
+ <source>Media</source>
+ <translation>Medij</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="515"/>
+ <source>Enable Video</source>
+ <translation>Omogući video</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="539"/>
+ <source>Video Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="692"/>
+ <source>Audio Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="142"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="151"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSettingsWidget</name>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="61"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="108"/>
+ <source>Allow Calls From Untrusted Peers</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="133"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="161"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="188"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="225"/>
+ <source>Name Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="275"/>
+ <source>Address</source>
+ <translation>Adresa</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="351"/>
+ <source>OpenDHT Configuration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="398"/>
+ <source>Enable Proxy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="454"/>
+ <source>Bootstrap</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="530"/>
+ <source>Security</source>
+ <translation>Sigurnost</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="571"/>
+ <source>Private Key Password</source>
+ <translation>Lozinka privatnog ključa</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="583"/>
+ <source>User Certificate</source>
+ <translation>Korisnički certifikat</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="622"/>
+ <source>Private Key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="634"/>
+ <source>CA Certificate</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="766"/>
+ <source>Connectivity</source>
+ <translation>Spojivost</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="868"/>
+ <source>Use STUN</source>
+ <translation>Koristi STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="856"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="892"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="904"/>
+ <source>Use TURN</source>
+ <translation>Koristi TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="934"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="966"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="998"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1039"/>
+ <source>Media</source>
+ <translation>Medij</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1090"/>
+ <source>Enable Video</source>
+ <translation>Omogući video</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1267"/>
+ <source>Audio Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1114"/>
+ <source>Video Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="181"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AnimatedOverlay</name>
+ <message>
+ <location filename="../animatedoverlay.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>BannedItemWidget</name>
+ <message>
+ <location filename="../banneditemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="80"/>
+ <source>name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="104"/>
+ <source>id</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>CallWidget</name>
+ <message>
+ <location filename="../callwidget.ui" line="184"/>
+ <source>Show conversations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="187"/>
+ <source>Conversations</source>
+ <translation>Razgovori</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="368"/>
+ <source>Search contact text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="653"/>
+ <source>Jami is free software for universal communication which respects the freedoms and privacy of its users.</source>
+ <translation>Jami je slobodni software za univerzalnu komunikaciju koji poštuje slobode i privatnost svojih korisnika.</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="693"/>
+ <source>
+ This is your ID.
+Copy and share it with your friends!
+ </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="806"/>
+ <source>Show ring ID QR code</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="857"/>
+ <source>Share ring ID button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="915"/>
+ <source>Double-click to copy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="956"/>
+ <source>Error while generating QR Code</source>
+ <translation>Greška prilikom generiranja QR koda</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1184"/>
+ <location filename="../callwidget.ui" line="1434"/>
+ <source>best name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1208"/>
+ <source>best Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1734"/>
+ <source>Back to homepage button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1943"/>
+ <source>Add to contacts</source>
+ <translation>Dodaj u kontakte</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="202"/>
+ <source>Show invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="205"/>
+ <source>Invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="377"/>
+ <location filename="../callwidget.cpp" line="552"/>
+ <source>Find a new or existing contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1444"/>
+ <source>Wants to talk to you!</source>
+ <translation>Želi govoriti sa vama!</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1517"/>
+ <source>Answer incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1589"/>
+ <source>Ignore incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1539"/>
+ <source>Answer</source>
+ <translation>Javi se</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1617"/>
+ <source>Ignore</source>
+ <translation>Ignoriraj</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1280"/>
+ <source>Cancel outgoing call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1305"/>
+ <source>Cancel</source>
+ <translation>Poništi</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="332"/>
+ <source>Start video call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="343"/>
+ <source>Start audio call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="354"/>
+ <source>Clear conversation</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="361"/>
+ <source>Remove contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="373"/>
+ <source>Block contact</source>
+ <translation>Blokiraj kontakt</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="384"/>
+ <source>Copy number</source>
+ <translation>Kopiraj broj</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="561"/>
+ <source>Search your received invitations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>Contact me on Jami</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>My Id is : </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="847"/>
+ <source>%1</source>
+ <comment>%1 is the contact username</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="852"/>
+ <source>%1</source>
+ <comment>%1 is the contact unique identifier</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="675"/>
+ <source>Call incoming from %1</source>
+ <translation>Dolazni poziv od %1</translation>
+ </message>
+</context>
+<context>
+ <name>DeleteAccountDialog</name>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="35"/>
+ <source>Account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="58"/>
+ <source>Do you really want to delete the following account?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="153"/>
+ <source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="235"/>
+ <source>Permanently delete account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="241"/>
+ <source>Delete</source>
+ <translation>Izbriši</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="278"/>
+ <source>Cancel account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="284"/>
+ <source>Cancel</source>
+ <translation>Poništi</translation>
+ </message>
+</context>
+<context>
+ <name>DeviceItemWidget</name>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="105"/>
+ <source>Device Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="143"/>
+ <source>this device</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>InviteButtonsWidget</name>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="83"/>
+ <source>Accept</source>
+ <translation>Prihvati</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="131"/>
+ <source>Refuse</source>
+ <translation>Odbij</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="179"/>
+ <source>Block</source>
+ <translation>Blokiraj</translation>
+ </message>
+</context>
+<context>
+ <name>LinkDeviceDialog</name>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation>Dijalog</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="62"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="117"/>
+ <source>Password</source>
+ <translation>Lozinka</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="184"/>
+ <source>Ok</source>
+ <translation>U redu</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="218"/>
+ <source>Cancel</source>
+ <translation>Poništi</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="279"/>
+ <source>Exporting account</source>
+ <translation>izvozim račun</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="402"/>
+ <source>Your PIN is</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="432"/>
+ <source>PIN</source>
+ <translation>PIN</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="477"/>
+ <source>This pin and the account password should be entered in your device within 10 minutes.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="553"/>
+ <source>Close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="34"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="96"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="110"/>
+ <source>Something went wrong.
+Please try again later.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="83"/>
+ <source>Settings</source>
+ <translation>Postavke</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="94"/>
+ <source>Exit</source>
+ <translation>Izađi</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="111"/>
+ <source>About</source>
+ <translation>O programu</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="435"/>
+ <source>Jami</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>NameRegistrationDialog</name>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="35"/>
+ <source>Set Registered Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="163"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="244"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="250"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="256"/>
+ <source>Password</source>
+ <translation>Lozinka</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="323"/>
+ <source>Register</source>
+ <translation>Registriraj</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="357"/>
+ <source>Cancel</source>
+ <translation>Poništi</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="424"/>
+ <source>Registering Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="548"/>
+ <source>Something went wrong</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="618"/>
+ <source>Close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="82"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="85"/>
+ <source>Network error</source>
+ <translation>Greška mreže</translation>
+ </message>
+</context>
+<context>
+ <name>NewWizardWidget</name>
+ <message>
+ <location filename="../newwizardwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="141"/>
+ <source>Welcome Label</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="147"/>
+ <source> Welcome to</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="185"/>
+ <source>Welcome Logo</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="239"/>
+ <source>Create Jami account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="245"/>
+ <source>Push button for Jami account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="251"/>
+ <source>Create a Jami account</source>
+ <translation>Napravite Jami račun</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="282"/>
+ <source>Link device button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="288"/>
+ <source>Push button for device linkage start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="291"/>
+ <source>Link this device to an account</source>
+ <translation>Povežite ovaj uređaj s računom</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="328"/>
+ <source>Create Jami SIP account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="334"/>
+ <source>Push button for Jami SIP account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="340"/>
+ <source>Create a SIP account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="405"/>
+ <source>Link this device to an existing account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="469"/>
+ <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">To link this device to another account, you first </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">need to obtain a PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> code. To generate the PIN code:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Account management setting</span><span style=" font-size:14px;"> of a previous device</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choose the </span><span style=" font-size:14px; font-weight:600;">Jami account</span><span style=" font-size:14px;"> you want to use</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Devices</span><span style=" font-size:14px;"> tab</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Select </span><span style=" font-size:14px; font-weight:600;">Add a device</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">You will get the necessary PIN to complete this form. The PIN is only valid for </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutes</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="531"/>
+ <source>Enter your pin:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="599"/>
+ <source>Or import a file:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="626"/>
+ <source>Link from exported account archive file</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="629"/>
+ <location filename="../newwizardwidget.cpp" line="83"/>
+ <location filename="../newwizardwidget.cpp" line="218"/>
+ <source>(None)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="705"/>
+ <source>Password:</source>
+ <translation>Lozinka:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="799"/>
+ <location filename="../newwizardwidget.ui" line="1586"/>
+ <source>Profile</source>
+ <translation>Profil</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="953"/>
+ <location filename="../newwizardwidget.ui" line="1767"/>
+ <source>Profile name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1027"/>
+ <source>Account</source>
+ <translation>Račun</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1136"/>
+ <source>Register your username.
+This will reserve the username so that only you can use it.
+Your friends will be able to call you with your usename
+instead of using your ID.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1142"/>
+ <source>Public username checkbox</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1145"/>
+ <source>Checkbox selecting if the user wants a public username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1148"/>
+ <source>Register public username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1367"/>
+ <source>Public username edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1373"/>
+ <source>Choose your username</source>
+ <translation>Izaberite vaše korisničko ime</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1289"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1295"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1301"/>
+ <location filename="../newwizardwidget.ui" line="2213"/>
+ <source>Password</source>
+ <translation>Lozinka</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1211"/>
+ <location filename="../newwizardwidget.ui" line="1217"/>
+ <source>Password confirmation text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1223"/>
+ <source>Confirm password</source>
+ <translation>Potvrdi lozinku</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1814"/>
+ <source>SIP Account</source>
+ <translation>SIP račun</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1973"/>
+ <source>SIP Server edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1979"/>
+ <source>Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2045"/>
+ <source>SIP proxy input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2051"/>
+ <source>SIP proxy text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2057"/>
+ <source>Proxy</source>
+ <translation>Proxy</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2123"/>
+ <source>SIP username input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2129"/>
+ <source>SIP Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2135"/>
+ <source>Username</source>
+ <translation>Korisničko ime</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2201"/>
+ <location filename="../newwizardwidget.ui" line="2207"/>
+ <source>SIP Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message utf8="true">
+ <location filename="../newwizardwidget.ui" line="2282"/>
+ <source>Generating your Jami account…</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2356"/>
+ <source>Previous page button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2362"/>
+ <source>push button to access previous page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2365"/>
+ <source>Previous</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2396"/>
+ <source>Cancel account create/link</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2402"/>
+ <source>push button to cancel account creation or linking</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2405"/>
+ <source>Back</source>
+ <translation>Natrag</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2442"/>
+ <source>Next page Button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2448"/>
+ <source>Push button to access next page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2451"/>
+ <source>Next</source>
+ <translation>Slijedeće</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="75"/>
+ <source>Open File</source>
+ <translation>Otvori datoteku</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="77"/>
+ <source>Jami archive files (*.gz); All files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="123"/>
+ <source>Your account needs to be migrated. Enter your password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="419"/>
+ <source>Migrating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="412"/>
+ <source>Importing account archive...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="404"/>
+ <source>Generating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="422"/>
+ <source>Generating your SIP account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="533"/>
+ <source>Error creating account</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PasswordDialog</name>
+ <message>
+ <location filename="../passworddialog.ui" line="32"/>
+ <source>Change Account Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="97"/>
+ <source>Enter Current Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="169"/>
+ <source>Enter New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="190"/>
+ <source>Confirm New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="247"/>
+ <source>Confirm</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="290"/>
+ <source>Cancel</source>
+ <translation>Poništi</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="143"/>
+ <source>Current Password Incorrect</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PhotoBoothDialog</name>
+ <message>
+ <location filename="../photoboothdialog.ui" line="14"/>
+ <source>Photobooth</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PhotoboothWidget</name>
+ <message>
+ <location filename="../photoboothwidget.ui" line="20"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.ui" line="120"/>
+ <source>Photobooth display</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="92"/>
+ <source>Choose File</source>
+ <translation>Izaberite datoteku</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="94"/>
+ <source>Image Files (*.jpg *.jpeg *.png)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PrivateBridging</name>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Choose File</source>
+ <translation>Izaberite datoteku</translation>
+ </message>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Files (*)</source>
+ <translation>Datoteke (*)</translation>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../utils.cpp" line="183"/>
+ <source>No default mail client found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="43"/>
+ <location filename="../deviceitemwidget.cpp" line="85"/>
+ <source>Edit Device Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="44"/>
+ <source>Unlink Device From Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="80"/>
+ <source>Save new device name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.cpp" line="39"/>
+ <source>Add as contact</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>RingButton</name>
+ <message>
+ <location filename="../ringbutton.ui" line="140"/>
+ <source>Select folder</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <location filename="../settingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="141"/>
+ <source>Settings</source>
+ <translation>Postavke</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="229"/>
+ <source>Account</source>
+ <translation>Račun</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="267"/>
+ <location filename="../settingswidget.ui" line="503"/>
+ <source>General</source>
+ <translation>Opće</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="305"/>
+ <location filename="../settingswidget.ui" line="3416"/>
+ <source>Audio / Video</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="542"/>
+ <source>System</source>
+ <translation>Sustav</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="610"/>
+ <source>Enable desktop notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="653"/>
+ <source>Keep minimized on close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="678"/>
+ <source>Download folder</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="811"/>
+ <source>Save in</source>
+ <translation>Spremi u</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="904"/>
+ <source>Always Recording</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="943"/>
+ <source>Updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1008"/>
+ <source>Check for updates automatically every</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1032"/>
+ <source>Interval between update checks in days selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1038"/>
+ <source> days</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1081"/>
+ <source>Check for updates now button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1084"/>
+ <source>Check for updates now</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3027"/>
+ <source>Password</source>
+ <translation>Lozinka</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1418"/>
+ <location filename="../settingswidget.ui" line="2729"/>
+ <source>Enable</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="607"/>
+ <source>toggle enable notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="650"/>
+ <source>Toggle keep minimized on close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="764"/>
+ <source>Call Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1005"/>
+ <source>Toggle automatic updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1231"/>
+ <source>Jami Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1453"/>
+ <location filename="../settingswidget.ui" line="2761"/>
+ <source>Profile</source>
+ <translation>Profil</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1567"/>
+ <location filename="../settingswidget.ui" line="2875"/>
+ <source>Identity</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1614"/>
+ <source>Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1673"/>
+ <source>Registered name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1721"/>
+ <source>Type here to register a username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1755"/>
+ <source>Register</source>
+ <translation>Registriraj</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1827"/>
+ <source>Change Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1868"/>
+ <source>Export Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1909"/>
+ <location filename="../settingswidget.ui" line="3089"/>
+ <source>Delete Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1973"/>
+ <source>Linked Devices</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2078"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2142"/>
+ <source>Banned Contacts</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3788"/>
+ <source>Format</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3831"/>
+ <source>Video device framerate selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3967"/>
+ <source>Preview unavailable</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2359"/>
+ <location filename="../settingswidget.ui" line="3187"/>
+ <source>Advanced Account Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2554"/>
+ <source>SIP Account</source>
+ <translation>SIP račun</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2925"/>
+ <source>Username</source>
+ <translation>Korisničko ime</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2958"/>
+ <source>Hostname</source>
+ <translation>Ime poslužitelja</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2991"/>
+ <source>Proxy</source>
+ <translation>Proxy</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3461"/>
+ <source>Audio</source>
+ <translation>Zvuk</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3511"/>
+ <source>Microphone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3551"/>
+ <source>Audio input device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3585"/>
+ <source>Output Device</source>
+ <translation>Izlazni uređaj</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3625"/>
+ <source>Choose the output device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3682"/>
+ <source>Video</source>
+ <translation>Video</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3720"/>
+ <source>Device</source>
+ <translation>Uređaj</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3766"/>
+ <source>Video device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="459"/>
+ <source>A registered name should not have any spaces and must be at least three letters long</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="466"/>
+ <source>This name is already taken</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="92"/>
+ <location filename="../settingswidget.cpp" line="110"/>
+ <source>Enter an alias</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="473"/>
+ <source>Register this name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="550"/>
+ <source>Remove Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="551"/>
+ <source>Enter this account's password to confirm the removal of this device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="558"/>
+ <source>Are you sure you wish to remove this device?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="589"/>
+ <source>Export Account Here</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="887"/>
+ <source>Select A Folder For Your Downloads</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="904"/>
+ <source>Select A Folder For Your Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>VideoOverlay</name>
+ <message>
+ <location filename="../videooverlay.ui" line="419"/>
+ <source>Call on Hold</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="89"/>
+ <source>Hold / Unhold</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="124"/>
+ <source>Chat</source>
+ <translation>Čavrljanje</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="162"/>
+ <source>Mute Mic</source>
+ <translation>Isključi mikrofon</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="244"/>
+ <source>Record call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="325"/>
+ <source>Name label</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="390"/>
+ <source>Time elapsed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="393"/>
+ <source>00:00</source>
+ <translation>00:00</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="57"/>
+ <source>Hangup</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="203"/>
+ <source>Mute Video</source>
+ <translation>Ugasi video</translation>
+ </message>
+</context>
+<context>
+ <name>VideoView</name>
+ <message>
+ <location filename="../videoview.cpp" line="271"/>
+ <source>Share entire screen</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="274"/>
+ <source>Share screen area</source>
+ <translation>Dijelite područje zaslona</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="281"/>
+ <source>Share file</source>
+ <translation>Dijeli datoteku</translation>
+ </message>
+</context>
+</TS>
\ No newline at end of file
diff --git a/translations/ring_client_windows_hu.ts b/translations/ring_client_windows_hu.ts
new file mode 100644
index 0000000..6774d34
--- /dev/null
+++ b/translations/ring_client_windows_hu.ts
@@ -0,0 +1,1604 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="hu" version="2.0">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../aboutdialog.ui" line="435"/>
+ <location filename="../aboutdialog.ui" line="465"/>
+ <source>About</source>
+ <translation>Névjegy</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="462"/>
+ <source>about button</source>
+ <translation>Névjegye gombja</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="478"/>
+ <source>credits button</source>
+ <translation>Közreműködők gombja</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="481"/>
+ <source>Credits</source>
+ <translation>Készítők</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="547"/>
+ <source>Free as in Freedom</source>
+ <translation>Szabad, mint a szabadság</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="563"/>
+ <source>The Microsoft Windows client for Jami.
+Jami is a secured and distributed communication software.</source>
+ <translation>A Microsoft Windows ügyfél a Jamihoz.
+A Jami egy biztonságos és osztott csevegőprogram.</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="32"/>
+ <source>version</source>
+ <translation>verzió</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="39"/>
+ <source>Created by:</source>
+ <translation>Szerző:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="73"/>
+ <source>Artwork by:</source>
+ <translation>Művészi elemek készítője:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="77"/>
+ <source>Based on the SFLPhone project</source>
+ <translation>Az SFLPhone termék alapján</translation>
+ </message>
+</context>
+<context>
+ <name>AccountItemDelegate</name>
+ <message>
+ <location filename="../accountitemdelegate.cpp" line="91"/>
+ <source>Add Account</source>
+ <translation>Fiók hozzáadása</translation>
+ </message>
+</context>
+<context>
+ <name>AdvancedSIPSettingsWidget</name>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Feladó</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="55"/>
+ <source>Call Settings</source>
+ <translation>Hívás beállítások</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="102"/>
+ <source>Auto Answer Calls</source>
+ <translation>Hívások önműködő fogadása</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="130"/>
+ <source>Enable Custom Ringtone</source>
+ <translation>Egyéni csengőhang engedélyezése</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="191"/>
+ <source>Connectivity</source>
+ <translation>Kapcsolódás</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="281"/>
+ <source>STUN Address</source>
+ <translation>STUN cím</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="293"/>
+ <source>Use STUN</source>
+ <translation>STUN használata</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="317"/>
+ <source>Use UPnP</source>
+ <translation>UPnP használata</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="329"/>
+ <source>Use TURN</source>
+ <translation>TURN használata</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="359"/>
+ <source>TURN Password</source>
+ <translation>TURN jelszó</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="391"/>
+ <source>TURN Username</source>
+ <translation>TURN felhasználónév</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="423"/>
+ <source>TURN Address</source>
+ <translation>TURN cím</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="464"/>
+ <source>Media</source>
+ <translation>Média</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="515"/>
+ <source>Enable Video</source>
+ <translation>Videó engedélyezése</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="539"/>
+ <source>Video Codecs</source>
+ <translation>Videókodekek</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="692"/>
+ <source>Audio Codecs</source>
+ <translation>Hangkodekek</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="142"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation>Hangfájlok (*aiff *.mp3 *.ogg *.opus *.wav *wma)</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="151"/>
+ <source>Add a custom ringtone</source>
+ <translation>Egyéni csengőhang hozzáadása</translation>
+ </message>
+</context>
+<context>
+ <name>AdvancedSettingsWidget</name>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Feladó</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="61"/>
+ <source>Call Settings</source>
+ <translation>Hívás beállítások</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="108"/>
+ <source>Allow Calls From Untrusted Peers</source>
+ <translation>Hívások engedélyezése ismeretlen kapcsolatoktól</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="133"/>
+ <source>Auto Answer Calls</source>
+ <translation>Hívások önműködő fogadása</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="161"/>
+ <source>Enable Custom Ringtone</source>
+ <translation>Egyéni csengőhang engedélyezése</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="188"/>
+ <source>Add a custom ringtone</source>
+ <translation>Egyéni csengőhang hozzáadása</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="225"/>
+ <source>Name Server</source>
+ <translation>Kiszolgálói néve</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="275"/>
+ <source>Address</source>
+ <translation>Cím</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="351"/>
+ <source>OpenDHT Configuration</source>
+ <translation>OpenDHT beállítások</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="398"/>
+ <source>Enable Proxy</source>
+ <translation>Meghatalmazott engedélyezése</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="454"/>
+ <source>Bootstrap</source>
+ <translation>Bootstrap</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="530"/>
+ <source>Security</source>
+ <translation>Biztonság</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="571"/>
+ <source>Private Key Password</source>
+ <translation>Személyes kulcs jelszava</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="583"/>
+ <source>User Certificate</source>
+ <translation>Felhasználói tanúsítvány</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="622"/>
+ <source>Private Key</source>
+ <translation>Személyes kulcs</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="634"/>
+ <source>CA Certificate</source>
+ <translation>CA tanúsítvány</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="766"/>
+ <source>Connectivity</source>
+ <translation>Kapcsolódás</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="868"/>
+ <source>Use STUN</source>
+ <translation>STUN használata</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="856"/>
+ <source>STUN Address</source>
+ <translation>STUN cím</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="892"/>
+ <source>Use UPnP</source>
+ <translation>UPnP használata</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="904"/>
+ <source>Use TURN</source>
+ <translation>TURN használata</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="934"/>
+ <source>TURN Password</source>
+ <translation>TURN jelszó</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="966"/>
+ <source>TURN Username</source>
+ <translation>TURN felhasználónév</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="998"/>
+ <source>TURN Address</source>
+ <translation>TURN cím</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1039"/>
+ <source>Media</source>
+ <translation>Média</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1090"/>
+ <source>Enable Video</source>
+ <translation>Videó engedélyezése</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1267"/>
+ <source>Audio Codecs</source>
+ <translation>Hangkodekek</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1114"/>
+ <source>Video Codecs</source>
+ <translation>Videókodekek</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="181"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation>Hangfájlok (*aiff *.mp3 *.ogg *.opus *.wav *wma)</translation>
+ </message>
+</context>
+<context>
+ <name>AnimatedOverlay</name>
+ <message>
+ <location filename="../animatedoverlay.ui" line="14"/>
+ <source>Form</source>
+ <translation>Feladó</translation>
+ </message>
+</context>
+<context>
+ <name>BannedItemWidget</name>
+ <message>
+ <location filename="../banneditemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Feladó</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="80"/>
+ <source>name</source>
+ <translation>név</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="104"/>
+ <source>id</source>
+ <translation>Azonosító</translation>
+ </message>
+</context>
+<context>
+ <name>CallWidget</name>
+ <message>
+ <location filename="../callwidget.ui" line="184"/>
+ <source>Show conversations</source>
+ <translation>Beszélgetések megjelenítése</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="187"/>
+ <source>Conversations</source>
+ <translation>Beszélgetések</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="368"/>
+ <source>Search contact text input</source>
+ <translation>Keresés kapcsolati szövegbevitel</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="653"/>
+ <source>Jami is free software for universal communication which respects the freedoms and privacy of its users.</source>
+ <translation>A Jami (GNU csomag, korábban Ring) egy univerzális és elosztott közlés emelvény, amely tiszteletben tartja a felhasználók szabadságait és magánéletét.</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="693"/>
+ <source>
+ This is your ID.
+Copy and share it with your friends!
+ </source>
+ <translation>
+Ez az Ön azonosítója.
+Másolja és ossza meg a barátaival!</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="806"/>
+ <source>Show ring ID QR code</source>
+ <translation>Jami azonosító QR-kód mutatása</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="857"/>
+ <source>Share ring ID button</source>
+ <translation>Ring azonosító megosztó gomb</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="915"/>
+ <source>Double-click to copy</source>
+ <translation>Kattintson duplán a másolásra</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="956"/>
+ <source>Error while generating QR Code</source>
+ <translation>Hiba a QR-kód generálása közben</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1184"/>
+ <location filename="../callwidget.ui" line="1434"/>
+ <source>best name</source>
+ <translation>legjobb név</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1208"/>
+ <source>best Id</source>
+ <translation>legjobb azonosító</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1734"/>
+ <source>Back to homepage button</source>
+ <translation>Vissza a főoldalra gomb</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1943"/>
+ <source>Add to contacts</source>
+ <translation>Hozzáadás a kapcsolatokhoz</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="202"/>
+ <source>Show invites</source>
+ <translation>Meghívók megjelenítése</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="205"/>
+ <source>Invites</source>
+ <translation>Meghívók</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="377"/>
+ <location filename="../callwidget.cpp" line="552"/>
+ <source>Find a new or existing contact</source>
+ <translation>Keressen új vagy meglévő kapcsolatot</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1444"/>
+ <source>Wants to talk to you!</source>
+ <translation>Beszélni akar önnel!</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1517"/>
+ <source>Answer incoming call button</source>
+ <translation>Bejövő hívás fogadása gomb</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1589"/>
+ <source>Ignore incoming call button</source>
+ <translation>Bejövő hívás figyelmen kívül hagyása gomb</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1539"/>
+ <source>Answer</source>
+ <translation>Válaszol</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1617"/>
+ <source>Ignore</source>
+ <translation>Figyelmen kívül hagy</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1280"/>
+ <source>Cancel outgoing call</source>
+ <translation>Kimenő hívás visszavonása</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1305"/>
+ <source>Cancel</source>
+ <translation>Mégse</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="332"/>
+ <source>Start video call</source>
+ <translation>Videóhívás indítása</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="343"/>
+ <source>Start audio call</source>
+ <translation>Hanghívás indítása</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="354"/>
+ <source>Clear conversation</source>
+ <translation>Beszélgetés törlése</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="361"/>
+ <source>Remove contact</source>
+ <translation>Kapcsolat eltávolítása</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="373"/>
+ <source>Block contact</source>
+ <translation>Kapcsolat letiltása</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="384"/>
+ <source>Copy number</source>
+ <translation>Szám másolása</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="561"/>
+ <source>Search your received invitations</source>
+ <translation>Megérkezett meghívások keresése</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>Contact me on Jami</source>
+ <translation>Lépjen kapcsolatba velem a Jami-n</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>My Id is : </source>
+ <translation>Az azonosítóm:</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="847"/>
+ <source>%1</source>
+ <comment>%1 is the contact username</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="852"/>
+ <source>%1</source>
+ <comment>%1 is the contact unique identifier</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="675"/>
+ <source>Call incoming from %1</source>
+ <translation>Bejövő hívás tőle: %1</translation>
+ </message>
+</context>
+<context>
+ <name>DeleteAccountDialog</name>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="35"/>
+ <source>Account deletion</source>
+ <translation>Fiók eltávolítása</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="58"/>
+ <source>Do you really want to delete the following account?</source>
+ <translation>Tényleg törli ezt az fiókot?</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="153"/>
+ <source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
+ <translation>Ha ezt a fiókot nem exportálták vagy hozzáadták egy másik eszközhöz, akkor ez el fog veszni.</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="235"/>
+ <source>Permanently delete account</source>
+ <translation>Fiók végleges törlése</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="241"/>
+ <source>Delete</source>
+ <translation>Törlés</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="278"/>
+ <source>Cancel account deletion</source>
+ <translation>Fiók eltávolítás megszakítása</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="284"/>
+ <source>Cancel</source>
+ <translation>Mé_gse</translation>
+ </message>
+</context>
+<context>
+ <name>DeviceItemWidget</name>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Feladó</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="105"/>
+ <source>Device Id</source>
+ <translation>Eszközazonosító</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="143"/>
+ <source>this device</source>
+ <translation>ez az eszköz</translation>
+ </message>
+</context>
+<context>
+ <name>InviteButtonsWidget</name>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="83"/>
+ <source>Accept</source>
+ <translation>Elfogadás</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="131"/>
+ <source>Refuse</source>
+ <translation>Elutasítás</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="179"/>
+ <source>Block</source>
+ <translation>Letiltás</translation>
+ </message>
+</context>
+<context>
+ <name>LinkDeviceDialog</name>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation>Párbeszédpanel</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="62"/>
+ <source>Enter your account password</source>
+ <translation>Adja meg fiókjának jelszavát</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="117"/>
+ <source>Password</source>
+ <translation>Jelszó</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="184"/>
+ <source>Ok</source>
+ <translation>Rendben</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="218"/>
+ <source>Cancel</source>
+ <translation>Mégse</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="279"/>
+ <source>Exporting account</source>
+ <translation>Fiók exportálása</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="402"/>
+ <source>Your PIN is</source>
+ <translation>A PIN-kódja</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="432"/>
+ <source>PIN</source>
+ <translation>PIN-kód</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="477"/>
+ <source>This pin and the account password should be entered in your device within 10 minutes.</source>
+ <translation>Ezt a PIN-kódot és a fiók jelszót 10 percen belül be kell írni a eszközbe.</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="553"/>
+ <source>Close</source>
+ <translation>Bezárás</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="34"/>
+ <source>Link Another Device</source>
+ <translation>Csatlakoztasson másik eszközt</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="96"/>
+ <source>Incorrect password</source>
+ <translation>Hibás jelszó</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="110"/>
+ <source>Something went wrong.
+Please try again later.</source>
+ <translation>Valami hiba történt.
+Próbálja meg újra később.</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="83"/>
+ <source>Settings</source>
+ <translation>Beállítások</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="94"/>
+ <source>Exit</source>
+ <translation>Kilépés</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="111"/>
+ <source>About</source>
+ <translation>Névjegy</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="435"/>
+ <source>Jami</source>
+ <translation>Jami</translation>
+ </message>
+</context>
+<context>
+ <name>NameRegistrationDialog</name>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="35"/>
+ <source>Set Registered Name</source>
+ <translation>Bejegyzett név beállítása</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="163"/>
+ <source>Enter your account password</source>
+ <translation>Adja meg fiókjának jelszavát</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="244"/>
+ <source>Password text input</source>
+ <translation>Jelszó szövegbevitel</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="250"/>
+ <source>Password text entry</source>
+ <translation>Jelszó beírása</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="256"/>
+ <source>Password</source>
+ <translation>Jelszó</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="323"/>
+ <source>Register</source>
+ <translation>Bejegyez</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="357"/>
+ <source>Cancel</source>
+ <translation>Mégse</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="424"/>
+ <source>Registering Name</source>
+ <translation>Név bejegyzése</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="548"/>
+ <source>Something went wrong</source>
+ <translation>Valami hiba történt</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="618"/>
+ <source>Close</source>
+ <translation>Bezárás</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="82"/>
+ <source>Incorrect password</source>
+ <translation>Hibás jelszó</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="85"/>
+ <source>Network error</source>
+ <translation>Hálózati hiba</translation>
+ </message>
+</context>
+<context>
+ <name>NewWizardWidget</name>
+ <message>
+ <location filename="../newwizardwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Feladó</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="141"/>
+ <source>Welcome Label</source>
+ <translation>Üdvözlő címke</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="147"/>
+ <source> Welcome to</source>
+ <translation>Isten hozott</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="185"/>
+ <source>Welcome Logo</source>
+ <translation>Üdvözlő jelkép</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="239"/>
+ <source>Create Jami account button</source>
+ <translation>Jami fiók létrehozása gomb</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="245"/>
+ <source>Push button for Jami account creation start trigger</source>
+ <translation>Nyomógomb a Jami fiók létrehozás indításának aktivizálásához </translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="251"/>
+ <source>Create a Jami account</source>
+ <translation>Jami-fiók létrehozása</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="282"/>
+ <source>Link device button</source>
+ <translation>Összekapcsoló eszköz gombja</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="288"/>
+ <source>Push button for device linkage start trigger</source>
+ <translation>Nyomógomb a készülék összekapcsolásának indítási triggerjére</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="291"/>
+ <source>Link this device to an account</source>
+ <translation>Ezen eszköz összekapcsolása egy fiókhoz</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="328"/>
+ <source>Create Jami SIP account button</source>
+ <translation>Jami SIP-fiók létrehozása gomb</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="334"/>
+ <source>Push button for Jami SIP account creation start trigger</source>
+ <translation>Nyomógomb a Jami-/SIP-fiók létrehozás indításának aktivizálásához</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="340"/>
+ <source>Create a SIP account</source>
+ <translation>SIP fiók létrehozása</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="405"/>
+ <source>Link this device to an existing account</source>
+ <translation>Ezen eszköz egy létező fiókhoz kapcsolása</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="469"/>
+ <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">To link this device to another account, you first </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">need to obtain a PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> code. To generate the PIN code:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Account management setting</span><span style=" font-size:14px;"> of a previous device</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choose the </span><span style=" font-size:14px; font-weight:600;">Jami account</span><span style=" font-size:14px;"> you want to use</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Devices</span><span style=" font-size:14px;"> tab</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Select </span><span style=" font-size:14px; font-weight:600;">Add a device</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">You will get the necessary PIN to complete this form. The PIN is only valid for </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutes</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></source>
+ <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">Először az eszköz összekapcsolása egy másik fiókkal </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">meg kell szereznie a PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">-kódot. A PIN kód létrehozása:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Menjen a </span><span style=" font-size:14px; font-weight:600;">Fiókkezelés beállítása</span><span style=" font-size:14px;"> egy korábbi eszközről</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Válassza a </span><span style=" font-size:14px; font-weight:600;">Jami fiók</span><span style=" font-size:14px;"> szeretné használni</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Menjen a </span><span style=" font-size:14px; font-weight:600;">Eszközök</span><span style=" font-size:14px;"> lap</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Válassza </span><span style=" font-size:14px; font-weight:600;">Eszköz hozzáadása</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">Kapja meg a szükséges PIN-kódot az űrlap kitöltéséhez. A PIN-kód csak érvényes </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 percig</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="531"/>
+ <source>Enter your pin:</source>
+ <translation>Adja meg a PIN-kódját:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="599"/>
+ <source>Or import a file:</source>
+ <translation>Vagy egy fájl importálása:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="626"/>
+ <source>Link from exported account archive file</source>
+ <translation>Exportált fiók összekapcsolása archív fájlból</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="629"/>
+ <location filename="../newwizardwidget.cpp" line="83"/>
+ <location filename="../newwizardwidget.cpp" line="218"/>
+ <source>(None)</source>
+ <translation>(Nincs)</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="705"/>
+ <source>Password:</source>
+ <translation>Jelszó:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="799"/>
+ <location filename="../newwizardwidget.ui" line="1586"/>
+ <source>Profile</source>
+ <translation>Profil</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="953"/>
+ <location filename="../newwizardwidget.ui" line="1767"/>
+ <source>Profile name</source>
+ <translation>Profilnév</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1027"/>
+ <source>Account</source>
+ <translation>Fiók</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1136"/>
+ <source>Register your username.
+This will reserve the username so that only you can use it.
+Your friends will be able to call you with your usename
+instead of using your ID.</source>
+ <translation>Bejegyeztetés a felhasználónevét.
+Ez fenntartja a felhasználónevet, hogy csak Ön tudja használni.
+Ismerősei képesek lesznek felhívni a felhasználónevét az azonosító használata helyett.</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1142"/>
+ <source>Public username checkbox</source>
+ <translation>Nyilvános felhasználónév jelölőnégyzet</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1145"/>
+ <source>Checkbox selecting if the user wants a public username</source>
+ <translation>Válassza ki a jelölőnégyzetet, ha a felhasználó nyilvános felhasználónevet szeretne</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1148"/>
+ <source>Register public username</source>
+ <translation>Nyilvános felhasználónév bejegyeztetése</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1367"/>
+ <source>Public username edit</source>
+ <translation>Nyilvános felhasználónév szerkesztés</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1373"/>
+ <source>Choose your username</source>
+ <translation>Válasszon egy felhasználónevet</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1289"/>
+ <source>Password text input</source>
+ <translation>Jelszó szövegbevitel</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1295"/>
+ <source>Password text entry</source>
+ <translation>Jelszó beírása</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1301"/>
+ <location filename="../newwizardwidget.ui" line="2213"/>
+ <source>Password</source>
+ <translation>Jelszó</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1211"/>
+ <location filename="../newwizardwidget.ui" line="1217"/>
+ <source>Password confirmation text input</source>
+ <translation>Jelszó megerősítési szövegbevitel</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1223"/>
+ <source>Confirm password</source>
+ <translation>Jelszó megerősítése</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1814"/>
+ <source>SIP Account</source>
+ <translation>SIP fiók </translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1973"/>
+ <source>SIP Server edit</source>
+ <translation>SIP-kiszolgáló szerkesztése</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1979"/>
+ <source>Server</source>
+ <translation>Kiszolgáló</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2045"/>
+ <source>SIP proxy input</source>
+ <translation>SIP-meghatalmazott bevitel</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2051"/>
+ <source>SIP proxy text entry</source>
+ <translation>SIP-meghatalmazott szövegbevitel</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2057"/>
+ <source>Proxy</source>
+ <translation>Meghatalmazott</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2123"/>
+ <source>SIP username input</source>
+ <translation>SIP felhasználónév bevitel</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2129"/>
+ <source>SIP Password text entry</source>
+ <translation>SIP jelszó szövegbevitel</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2135"/>
+ <source>Username</source>
+ <translation>Felhasználónév</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2201"/>
+ <location filename="../newwizardwidget.ui" line="2207"/>
+ <source>SIP Password text input</source>
+ <translation>SIP jelszó szöveg bemenet</translation>
+ </message>
+ <message utf8="true">
+ <location filename="../newwizardwidget.ui" line="2282"/>
+ <source>Generating your Jami account…</source>
+ <translation>Jami fiók létrehozása…</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2356"/>
+ <source>Previous page button</source>
+ <translation>Előző oldal gombja</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2362"/>
+ <source>push button to access previous page of wizard</source>
+ <translation>nyomógomb az előző oldal hozzáférésének varázslója</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2365"/>
+ <source>Previous</source>
+ <translation>Vissza</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2396"/>
+ <source>Cancel account create/link</source>
+ <translation>Fiók létrehozása-/összekapcsolása megszakítása</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2402"/>
+ <source>push button to cancel account creation or linking</source>
+ <translation>nyomja meg a gombot a fiók létrehozása-/összekapcsolása megszakításához</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2405"/>
+ <source>Back</source>
+ <translation>Vissza</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2442"/>
+ <source>Next page Button</source>
+ <translation>Következő oldal gombja</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2448"/>
+ <source>Push button to access next page of wizard</source>
+ <translation>Nyomógomb a következő oldal hozzáférésének varázslója</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2451"/>
+ <source>Next</source>
+ <translation>Tovább</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="75"/>
+ <source>Open File</source>
+ <translation>Fájl megnyitása</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="77"/>
+ <source>Jami archive files (*.gz); All files (*)</source>
+ <translation>Jami archív fájlok (*.gz); Minden fájl (*)</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="123"/>
+ <source>Your account needs to be migrated. Enter your password.</source>
+ <translation>Fiók áttelepítés szükséges. Adja meg a jelszavát.</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="419"/>
+ <source>Migrating your Jami account...</source>
+ <translation>Jami-fiók áttelepítése…</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="412"/>
+ <source>Importing account archive...</source>
+ <translation>Fiók archívum importálása…</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="404"/>
+ <source>Generating your Jami account...</source>
+ <translation>Jami-fiók létrehozása…</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="422"/>
+ <source>Generating your SIP account...</source>
+ <translation>A SIP-fiók létrehozása…</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="533"/>
+ <source>Error creating account</source>
+ <translation>Hiba a fiók létrehozása során</translation>
+ </message>
+</context>
+<context>
+ <name>PasswordDialog</name>
+ <message>
+ <location filename="../passworddialog.ui" line="32"/>
+ <source>Change Account Password</source>
+ <translation>Fiók jelszóváltoztatása</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="97"/>
+ <source>Enter Current Password</source>
+ <translation>Adja meg a jelenlegi jelszót</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="169"/>
+ <source>Enter New Password</source>
+ <translation>Új jelszó megadása</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="190"/>
+ <source>Confirm New Password</source>
+ <translation>Új jelszó megerősítése</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="247"/>
+ <source>Confirm</source>
+ <translation>Megerősítés</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="290"/>
+ <source>Cancel</source>
+ <translation>Mégse</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="143"/>
+ <source>Current Password Incorrect</source>
+ <translation>Hibás jelenlegi jelszót</translation>
+ </message>
+</context>
+<context>
+ <name>PhotoBoothDialog</name>
+ <message>
+ <location filename="../photoboothdialog.ui" line="14"/>
+ <source>Photobooth</source>
+ <translation>Fénykép automata</translation>
+ </message>
+</context>
+<context>
+ <name>PhotoboothWidget</name>
+ <message>
+ <location filename="../photoboothwidget.ui" line="20"/>
+ <source>Form</source>
+ <translation>Feladó</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.ui" line="120"/>
+ <source>Photobooth display</source>
+ <translation>Fénykép automata kijelző</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="92"/>
+ <source>Choose File</source>
+ <translation>Fájl kiválasztása</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="94"/>
+ <source>Image Files (*.jpg *.jpeg *.png)</source>
+ <translation>Képfájlok (*.jpeg *.jpg *.png)</translation>
+ </message>
+</context>
+<context>
+ <name>PrivateBridging</name>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Choose File</source>
+ <translation>Fájl kiválasztása</translation>
+ </message>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Files (*)</source>
+ <translation>Fájlok (*)</translation>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../utils.cpp" line="183"/>
+ <source>No default mail client found</source>
+ <translation>Nem találtam alapértelmezett levelezőügyfélt</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="43"/>
+ <location filename="../deviceitemwidget.cpp" line="85"/>
+ <source>Edit Device Name</source>
+ <translation>Eszköznév szerkesztése</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="44"/>
+ <source>Unlink Device From Account</source>
+ <translation>Ezen eszköz fiókhoz kikapcsolása</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="80"/>
+ <source>Save new device name</source>
+ <translation>Új eszköz nevének mentése</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.cpp" line="39"/>
+ <source>Add as contact</source>
+ <translation>Hozzáadás a partnerekhez</translation>
+ </message>
+</context>
+<context>
+ <name>RingButton</name>
+ <message>
+ <location filename="../ringbutton.ui" line="140"/>
+ <source>Select folder</source>
+ <translation>Mappa kijelölése</translation>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <location filename="../settingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Feladó</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="141"/>
+ <source>Settings</source>
+ <translation>Beállítások</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="229"/>
+ <source>Account</source>
+ <translation>Fiók</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="267"/>
+ <location filename="../settingswidget.ui" line="503"/>
+ <source>General</source>
+ <translation>Általános</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="305"/>
+ <location filename="../settingswidget.ui" line="3416"/>
+ <source>Audio / Video</source>
+ <translation>Hang/Videó</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="542"/>
+ <source>System</source>
+ <translation>Rendszer</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="610"/>
+ <source>Enable desktop notifications</source>
+ <translation>Az asztali értesítések engedélyezése</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="653"/>
+ <source>Keep minimized on close</source>
+ <translation>Bezáráskor legyen minimalizálva</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="678"/>
+ <source>Download folder</source>
+ <translation>Letöltés mappa</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="811"/>
+ <source>Save in</source>
+ <translation>Mentés helye</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="904"/>
+ <source>Always Recording</source>
+ <translation>Mindig legyen felvétel</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="943"/>
+ <source>Updates</source>
+ <translation>Frissítések</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1008"/>
+ <source>Check for updates automatically every</source>
+ <translation>Frissítések keresése minden</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1032"/>
+ <source>Interval between update checks in days selector</source>
+ <translation>Időközönkénti frissítések ellenőrzése napi választó</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1038"/>
+ <source> days</source>
+ <translation> nap</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1081"/>
+ <source>Check for updates now button</source>
+ <translation>Frissítések ellenőrzése most gomb</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1084"/>
+ <source>Check for updates now</source>
+ <translation>Frissítések ellenőrzése most</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3027"/>
+ <source>Password</source>
+ <translation>Jelszó</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1418"/>
+ <location filename="../settingswidget.ui" line="2729"/>
+ <source>Enable</source>
+ <translation>Engedélyezés</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="607"/>
+ <source>toggle enable notifications</source>
+ <translation>Értesítések engedélyezése be-/kikapcsolása</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="650"/>
+ <source>Toggle keep minimized on close</source>
+ <translation>Bezáráskor minimalizálás be-/kikapcsolása</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="764"/>
+ <source>Call Recordings</source>
+ <translation>Hívás felvételek</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1005"/>
+ <source>Toggle automatic updates</source>
+ <translation>Önműködő frissítések engedélyezése be-/kikapcsolása</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1231"/>
+ <source>Jami Account</source>
+ <translation>Jami fiók</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1453"/>
+ <location filename="../settingswidget.ui" line="2761"/>
+ <source>Profile</source>
+ <translation>Profil</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1567"/>
+ <location filename="../settingswidget.ui" line="2875"/>
+ <source>Identity</source>
+ <translation>Személyazonosság</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1614"/>
+ <source>Id</source>
+ <translation>Azonosító</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1673"/>
+ <source>Registered name</source>
+ <translation>Bejegyzett név</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1721"/>
+ <source>Type here to register a username</source>
+ <translation>Adja meg a felhasználónév bejegyeztetése ide</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1755"/>
+ <source>Register</source>
+ <translation>Bejegyez</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1827"/>
+ <source>Change Password</source>
+ <translation>Jelszó megváltoztatása</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1868"/>
+ <source>Export Account</source>
+ <translation>Fiók exportálása</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1909"/>
+ <location filename="../settingswidget.ui" line="3089"/>
+ <source>Delete Account</source>
+ <translation>Fiók törlése</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1973"/>
+ <source>Linked Devices</source>
+ <translation>Összekapcsolt eszközök</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2078"/>
+ <source>Link Another Device</source>
+ <translation>Csatlakoztasson másik eszközt</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2142"/>
+ <source>Banned Contacts</source>
+ <translation>Letiltott kapcsolatok</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3788"/>
+ <source>Format</source>
+ <translation>Formátum</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3831"/>
+ <source>Video device framerate selector</source>
+ <translation>Videó eszköz képkocka sebességválasztó</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3967"/>
+ <source>Preview unavailable</source>
+ <translation>Előnézet nem érhető el</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2359"/>
+ <location filename="../settingswidget.ui" line="3187"/>
+ <source>Advanced Account Settings</source>
+ <translation>Haladó fiókbeállítások</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2554"/>
+ <source>SIP Account</source>
+ <translation>SIP fiók </translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2925"/>
+ <source>Username</source>
+ <translation>Felhasználónév</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2958"/>
+ <source>Hostname</source>
+ <translation>Kiszolgálónév</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2991"/>
+ <source>Proxy</source>
+ <translation>Meghatalmazott</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3461"/>
+ <source>Audio</source>
+ <translation>Hang</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3511"/>
+ <source>Microphone</source>
+ <translation>Mikrofon</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3551"/>
+ <source>Audio input device selector</source>
+ <translation>Audió bemeneti eszköz választó</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3585"/>
+ <source>Output Device</source>
+ <translation>Kimeneti eszköz</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3625"/>
+ <source>Choose the output device</source>
+ <translation>Válasszon ki egy kimeneti eszközt</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3682"/>
+ <source>Video</source>
+ <translation>Videó</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3720"/>
+ <source>Device</source>
+ <translation>Eszköz</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3766"/>
+ <source>Video device selector</source>
+ <translation>Videó eszköz választó</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="459"/>
+ <source>A registered name should not have any spaces and must be at least three letters long</source>
+ <translation>A bejegyzett névnek nem szabad szóközt lennie, és legalább három betűnek kell lennie</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="466"/>
+ <source>This name is already taken</source>
+ <translation>A név már foglalt</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="92"/>
+ <location filename="../settingswidget.cpp" line="110"/>
+ <source>Enter an alias</source>
+ <translation>Adjon meg egy álnevet</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="473"/>
+ <source>Register this name</source>
+ <translation>Bejegyeztetés ezt a nevet</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="550"/>
+ <source>Remove Device</source>
+ <translation>Eszköz eltávolítása</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="551"/>
+ <source>Enter this account's password to confirm the removal of this device</source>
+ <translation>Adja meg a fiók jelszót ehhez eszköz eltávolításának megerősítéséhez</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="558"/>
+ <source>Are you sure you wish to remove this device?</source>
+ <translation>Biztosan eltávolítja ezt az eszközt?</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="589"/>
+ <source>Export Account Here</source>
+ <translation>Fiók exportálása ide</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="887"/>
+ <source>Select A Folder For Your Downloads</source>
+ <translation>Letöltés célmappájának választása</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="904"/>
+ <source>Select A Folder For Your Recordings</source>
+ <translation>Felvétel célmappájának választása</translation>
+ </message>
+</context>
+<context>
+ <name>VideoOverlay</name>
+ <message>
+ <location filename="../videooverlay.ui" line="419"/>
+ <source>Call on Hold</source>
+ <translation>Hívástartás</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="89"/>
+ <source>Hold / Unhold</source>
+ <translation>Tartás/Tartás megszüntetése</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="124"/>
+ <source>Chat</source>
+ <translation>Csevegés</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="162"/>
+ <source>Mute Mic</source>
+ <translation>Mikrofon elnémítása</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="244"/>
+ <source>Record call</source>
+ <translation>Hívás felvétele</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="325"/>
+ <source>Name label</source>
+ <translation>Névcímke</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="390"/>
+ <source>Time elapsed</source>
+ <translation>Eltelt idő</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="393"/>
+ <source>00:00</source>
+ <translation>00:00</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="57"/>
+ <source>Hangup</source>
+ <translation>Hívás befejezése</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="203"/>
+ <source>Mute Video</source>
+ <translation>Videó némítása</translation>
+ </message>
+</context>
+<context>
+ <name>VideoView</name>
+ <message>
+ <location filename="../videoview.cpp" line="271"/>
+ <source>Share entire screen</source>
+ <translation>Az egész képernyő megosztása</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="274"/>
+ <source>Share screen area</source>
+ <translation>Képernyő részének megosztása</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="281"/>
+ <source>Share file</source>
+ <translation>Fájl megosztása</translation>
+ </message>
+</context>
+</TS>
\ No newline at end of file
diff --git a/translations/ring_client_windows_id.ts b/translations/ring_client_windows_id.ts
new file mode 100644
index 0000000..ef7932f
--- /dev/null
+++ b/translations/ring_client_windows_id.ts
@@ -0,0 +1,1589 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="id" version="2.0">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../aboutdialog.ui" line="435"/>
+ <location filename="../aboutdialog.ui" line="465"/>
+ <source>About</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="462"/>
+ <source>about button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="478"/>
+ <source>credits button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="481"/>
+ <source>Credits</source>
+ <translation>Partisipan</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="547"/>
+ <source>Free as in Freedom</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="563"/>
+ <source>The Microsoft Windows client for Jami.
+Jami is a secured and distributed communication software.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="32"/>
+ <source>version</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="39"/>
+ <source>Created by:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="73"/>
+ <source>Artwork by:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="77"/>
+ <source>Based on the SFLPhone project</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AccountItemDelegate</name>
+ <message>
+ <location filename="../accountitemdelegate.cpp" line="91"/>
+ <source>Add Account</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSIPSettingsWidget</name>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="55"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="102"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="130"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="191"/>
+ <source>Connectivity</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="281"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="293"/>
+ <source>Use STUN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="317"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="329"/>
+ <source>Use TURN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="359"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="391"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="423"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="464"/>
+ <source>Media</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="515"/>
+ <source>Enable Video</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="539"/>
+ <source>Video Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="692"/>
+ <source>Audio Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="142"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="151"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSettingsWidget</name>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="61"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="108"/>
+ <source>Allow Calls From Untrusted Peers</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="133"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="161"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="188"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="225"/>
+ <source>Name Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="275"/>
+ <source>Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="351"/>
+ <source>OpenDHT Configuration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="398"/>
+ <source>Enable Proxy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="454"/>
+ <source>Bootstrap</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="530"/>
+ <source>Security</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="571"/>
+ <source>Private Key Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="583"/>
+ <source>User Certificate</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="622"/>
+ <source>Private Key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="634"/>
+ <source>CA Certificate</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="766"/>
+ <source>Connectivity</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="868"/>
+ <source>Use STUN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="856"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="892"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="904"/>
+ <source>Use TURN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="934"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="966"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="998"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1039"/>
+ <source>Media</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1090"/>
+ <source>Enable Video</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1267"/>
+ <source>Audio Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1114"/>
+ <source>Video Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="181"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AnimatedOverlay</name>
+ <message>
+ <location filename="../animatedoverlay.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>BannedItemWidget</name>
+ <message>
+ <location filename="../banneditemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="80"/>
+ <source>name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="104"/>
+ <source>id</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>CallWidget</name>
+ <message>
+ <location filename="../callwidget.ui" line="184"/>
+ <source>Show conversations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="187"/>
+ <source>Conversations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="368"/>
+ <source>Search contact text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="653"/>
+ <source>Jami is free software for universal communication which respects the freedoms and privacy of its users.</source>
+ <translation>Jami adalah perangkat lunak gratis untuk komunikasi universal yang menghormati kebebasan dan privasi penggunanya</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="693"/>
+ <source>
+ This is your ID.
+Copy and share it with your friends!
+ </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="806"/>
+ <source>Show ring ID QR code</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="857"/>
+ <source>Share ring ID button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="915"/>
+ <source>Double-click to copy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="956"/>
+ <source>Error while generating QR Code</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1184"/>
+ <location filename="../callwidget.ui" line="1434"/>
+ <source>best name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1208"/>
+ <source>best Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1734"/>
+ <source>Back to homepage button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1943"/>
+ <source>Add to contacts</source>
+ <translation>Tambah sebagai kontak</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="202"/>
+ <source>Show invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="205"/>
+ <source>Invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="377"/>
+ <location filename="../callwidget.cpp" line="552"/>
+ <source>Find a new or existing contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1444"/>
+ <source>Wants to talk to you!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1517"/>
+ <source>Answer incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1589"/>
+ <source>Ignore incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1539"/>
+ <source>Answer</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1617"/>
+ <source>Ignore</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1280"/>
+ <source>Cancel outgoing call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1305"/>
+ <source>Cancel</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="332"/>
+ <source>Start video call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="343"/>
+ <source>Start audio call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="354"/>
+ <source>Clear conversation</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="361"/>
+ <source>Remove contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="373"/>
+ <source>Block contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="384"/>
+ <source>Copy number</source>
+ <translation>Salin nomor</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="561"/>
+ <source>Search your received invitations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>Contact me on Jami</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>My Id is : </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="847"/>
+ <source>%1</source>
+ <comment>%1 is the contact username</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="852"/>
+ <source>%1</source>
+ <comment>%1 is the contact unique identifier</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="675"/>
+ <source>Call incoming from %1</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>DeleteAccountDialog</name>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="35"/>
+ <source>Account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="58"/>
+ <source>Do you really want to delete the following account?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="153"/>
+ <source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="235"/>
+ <source>Permanently delete account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="241"/>
+ <source>Delete</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="278"/>
+ <source>Cancel account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="284"/>
+ <source>Cancel</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>DeviceItemWidget</name>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="105"/>
+ <source>Device Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="143"/>
+ <source>this device</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>InviteButtonsWidget</name>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="83"/>
+ <source>Accept</source>
+ <translation>Terima</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="131"/>
+ <source>Refuse</source>
+ <translation>Tolak</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="179"/>
+ <source>Block</source>
+ <translation>Blokir</translation>
+ </message>
+</context>
+<context>
+ <name>LinkDeviceDialog</name>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="62"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="117"/>
+ <source>Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="184"/>
+ <source>Ok</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="218"/>
+ <source>Cancel</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="279"/>
+ <source>Exporting account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="402"/>
+ <source>Your PIN is</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="432"/>
+ <source>PIN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="477"/>
+ <source>This pin and the account password should be entered in your device within 10 minutes.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="553"/>
+ <source>Close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="34"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="96"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="110"/>
+ <source>Something went wrong.
+Please try again later.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="83"/>
+ <source>Settings</source>
+ <translation>Setelan</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="94"/>
+ <source>Exit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="111"/>
+ <source>About</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="435"/>
+ <source>Jami</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>NameRegistrationDialog</name>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="35"/>
+ <source>Set Registered Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="163"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="244"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="250"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="256"/>
+ <source>Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="323"/>
+ <source>Register</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="357"/>
+ <source>Cancel</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="424"/>
+ <source>Registering Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="548"/>
+ <source>Something went wrong</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="618"/>
+ <source>Close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="82"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="85"/>
+ <source>Network error</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>NewWizardWidget</name>
+ <message>
+ <location filename="../newwizardwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="141"/>
+ <source>Welcome Label</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="147"/>
+ <source> Welcome to</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="185"/>
+ <source>Welcome Logo</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="239"/>
+ <source>Create Jami account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="245"/>
+ <source>Push button for Jami account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="251"/>
+ <source>Create a Jami account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="282"/>
+ <source>Link device button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="288"/>
+ <source>Push button for device linkage start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="291"/>
+ <source>Link this device to an account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="328"/>
+ <source>Create Jami SIP account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="334"/>
+ <source>Push button for Jami SIP account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="340"/>
+ <source>Create a SIP account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="405"/>
+ <source>Link this device to an existing account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="469"/>
+ <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">To link this device to another account, you first </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">need to obtain a PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> code. To generate the PIN code:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Account management setting</span><span style=" font-size:14px;"> of a previous device</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choose the </span><span style=" font-size:14px; font-weight:600;">Jami account</span><span style=" font-size:14px;"> you want to use</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Devices</span><span style=" font-size:14px;"> tab</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Select </span><span style=" font-size:14px; font-weight:600;">Add a device</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">You will get the necessary PIN to complete this form. The PIN is only valid for </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutes</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="531"/>
+ <source>Enter your pin:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="599"/>
+ <source>Or import a file:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="626"/>
+ <source>Link from exported account archive file</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="629"/>
+ <location filename="../newwizardwidget.cpp" line="83"/>
+ <location filename="../newwizardwidget.cpp" line="218"/>
+ <source>(None)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="705"/>
+ <source>Password:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="799"/>
+ <location filename="../newwizardwidget.ui" line="1586"/>
+ <source>Profile</source>
+ <translation>Profil</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="953"/>
+ <location filename="../newwizardwidget.ui" line="1767"/>
+ <source>Profile name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1027"/>
+ <source>Account</source>
+ <translation>Akun</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1136"/>
+ <source>Register your username.
+This will reserve the username so that only you can use it.
+Your friends will be able to call you with your usename
+instead of using your ID.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1142"/>
+ <source>Public username checkbox</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1145"/>
+ <source>Checkbox selecting if the user wants a public username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1148"/>
+ <source>Register public username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1367"/>
+ <source>Public username edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1373"/>
+ <source>Choose your username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1289"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1295"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1301"/>
+ <location filename="../newwizardwidget.ui" line="2213"/>
+ <source>Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1211"/>
+ <location filename="../newwizardwidget.ui" line="1217"/>
+ <source>Password confirmation text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1223"/>
+ <source>Confirm password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1814"/>
+ <source>SIP Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1973"/>
+ <source>SIP Server edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1979"/>
+ <source>Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2045"/>
+ <source>SIP proxy input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2051"/>
+ <source>SIP proxy text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2057"/>
+ <source>Proxy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2123"/>
+ <source>SIP username input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2129"/>
+ <source>SIP Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2135"/>
+ <source>Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2201"/>
+ <location filename="../newwizardwidget.ui" line="2207"/>
+ <source>SIP Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message utf8="true">
+ <location filename="../newwizardwidget.ui" line="2282"/>
+ <source>Generating your Jami account…</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2356"/>
+ <source>Previous page button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2362"/>
+ <source>push button to access previous page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2365"/>
+ <source>Previous</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2396"/>
+ <source>Cancel account create/link</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2402"/>
+ <source>push button to cancel account creation or linking</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2405"/>
+ <source>Back</source>
+ <translation>Kembali</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2442"/>
+ <source>Next page Button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2448"/>
+ <source>Push button to access next page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2451"/>
+ <source>Next</source>
+ <translation>Selanjutnya</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="75"/>
+ <source>Open File</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="77"/>
+ <source>Jami archive files (*.gz); All files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="123"/>
+ <source>Your account needs to be migrated. Enter your password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="419"/>
+ <source>Migrating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="412"/>
+ <source>Importing account archive...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="404"/>
+ <source>Generating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="422"/>
+ <source>Generating your SIP account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="533"/>
+ <source>Error creating account</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PasswordDialog</name>
+ <message>
+ <location filename="../passworddialog.ui" line="32"/>
+ <source>Change Account Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="97"/>
+ <source>Enter Current Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="169"/>
+ <source>Enter New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="190"/>
+ <source>Confirm New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="247"/>
+ <source>Confirm</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="290"/>
+ <source>Cancel</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="143"/>
+ <source>Current Password Incorrect</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PhotoBoothDialog</name>
+ <message>
+ <location filename="../photoboothdialog.ui" line="14"/>
+ <source>Photobooth</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PhotoboothWidget</name>
+ <message>
+ <location filename="../photoboothwidget.ui" line="20"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.ui" line="120"/>
+ <source>Photobooth display</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="92"/>
+ <source>Choose File</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="94"/>
+ <source>Image Files (*.jpg *.jpeg *.png)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PrivateBridging</name>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Choose File</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../utils.cpp" line="183"/>
+ <source>No default mail client found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="43"/>
+ <location filename="../deviceitemwidget.cpp" line="85"/>
+ <source>Edit Device Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="44"/>
+ <source>Unlink Device From Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="80"/>
+ <source>Save new device name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.cpp" line="39"/>
+ <source>Add as contact</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>RingButton</name>
+ <message>
+ <location filename="../ringbutton.ui" line="140"/>
+ <source>Select folder</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <location filename="../settingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="141"/>
+ <source>Settings</source>
+ <translation>Setelan</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="229"/>
+ <source>Account</source>
+ <translation>Akun</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="267"/>
+ <location filename="../settingswidget.ui" line="503"/>
+ <source>General</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="305"/>
+ <location filename="../settingswidget.ui" line="3416"/>
+ <source>Audio / Video</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="542"/>
+ <source>System</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="610"/>
+ <source>Enable desktop notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="653"/>
+ <source>Keep minimized on close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="678"/>
+ <source>Download folder</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="811"/>
+ <source>Save in</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="904"/>
+ <source>Always Recording</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="943"/>
+ <source>Updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1008"/>
+ <source>Check for updates automatically every</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1032"/>
+ <source>Interval between update checks in days selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1038"/>
+ <source> days</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1081"/>
+ <source>Check for updates now button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1084"/>
+ <source>Check for updates now</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3027"/>
+ <source>Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1418"/>
+ <location filename="../settingswidget.ui" line="2729"/>
+ <source>Enable</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="607"/>
+ <source>toggle enable notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="650"/>
+ <source>Toggle keep minimized on close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="764"/>
+ <source>Call Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1005"/>
+ <source>Toggle automatic updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1231"/>
+ <source>Jami Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1453"/>
+ <location filename="../settingswidget.ui" line="2761"/>
+ <source>Profile</source>
+ <translation>Profil</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1567"/>
+ <location filename="../settingswidget.ui" line="2875"/>
+ <source>Identity</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1614"/>
+ <source>Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1673"/>
+ <source>Registered name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1721"/>
+ <source>Type here to register a username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1755"/>
+ <source>Register</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1827"/>
+ <source>Change Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1868"/>
+ <source>Export Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1909"/>
+ <location filename="../settingswidget.ui" line="3089"/>
+ <source>Delete Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1973"/>
+ <source>Linked Devices</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2078"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2142"/>
+ <source>Banned Contacts</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3788"/>
+ <source>Format</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3831"/>
+ <source>Video device framerate selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3967"/>
+ <source>Preview unavailable</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2359"/>
+ <location filename="../settingswidget.ui" line="3187"/>
+ <source>Advanced Account Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2554"/>
+ <source>SIP Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2925"/>
+ <source>Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2958"/>
+ <source>Hostname</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2991"/>
+ <source>Proxy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3461"/>
+ <source>Audio</source>
+ <translation>Suara</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3511"/>
+ <source>Microphone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3551"/>
+ <source>Audio input device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3585"/>
+ <source>Output Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3625"/>
+ <source>Choose the output device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3682"/>
+ <source>Video</source>
+ <translation>Video</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3720"/>
+ <source>Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3766"/>
+ <source>Video device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="459"/>
+ <source>A registered name should not have any spaces and must be at least three letters long</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="466"/>
+ <source>This name is already taken</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="92"/>
+ <location filename="../settingswidget.cpp" line="110"/>
+ <source>Enter an alias</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="473"/>
+ <source>Register this name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="550"/>
+ <source>Remove Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="551"/>
+ <source>Enter this account's password to confirm the removal of this device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="558"/>
+ <source>Are you sure you wish to remove this device?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="589"/>
+ <source>Export Account Here</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="887"/>
+ <source>Select A Folder For Your Downloads</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="904"/>
+ <source>Select A Folder For Your Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>VideoOverlay</name>
+ <message>
+ <location filename="../videooverlay.ui" line="419"/>
+ <source>Call on Hold</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="89"/>
+ <source>Hold / Unhold</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="124"/>
+ <source>Chat</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="162"/>
+ <source>Mute Mic</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="244"/>
+ <source>Record call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="325"/>
+ <source>Name label</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="390"/>
+ <source>Time elapsed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="393"/>
+ <source>00:00</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="57"/>
+ <source>Hangup</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="203"/>
+ <source>Mute Video</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>VideoView</name>
+ <message>
+ <location filename="../videoview.cpp" line="271"/>
+ <source>Share entire screen</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="274"/>
+ <source>Share screen area</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="281"/>
+ <source>Share file</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+</TS>
\ No newline at end of file
diff --git a/translations/ring_client_windows_it.ts b/translations/ring_client_windows_it.ts
new file mode 100644
index 0000000..493adcc
--- /dev/null
+++ b/translations/ring_client_windows_it.ts
@@ -0,0 +1,1589 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="it" version="2.0">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../aboutdialog.ui" line="435"/>
+ <location filename="../aboutdialog.ui" line="465"/>
+ <source>About</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="462"/>
+ <source>about button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="478"/>
+ <source>credits button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="481"/>
+ <source>Credits</source>
+ <translation>Crediti</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="547"/>
+ <source>Free as in Freedom</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="563"/>
+ <source>The Microsoft Windows client for Jami.
+Jami is a secured and distributed communication software.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="32"/>
+ <source>version</source>
+ <translation>versione</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="39"/>
+ <source>Created by:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="73"/>
+ <source>Artwork by:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="77"/>
+ <source>Based on the SFLPhone project</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AccountItemDelegate</name>
+ <message>
+ <location filename="../accountitemdelegate.cpp" line="91"/>
+ <source>Add Account</source>
+ <translation>Aggiungi Account</translation>
+ </message>
+</context>
+<context>
+ <name>AdvancedSIPSettingsWidget</name>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="55"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="102"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="130"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="191"/>
+ <source>Connectivity</source>
+ <translation>Connettività</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="281"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="293"/>
+ <source>Use STUN</source>
+ <translation>Usare STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="317"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="329"/>
+ <source>Use TURN</source>
+ <translation>Usare TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="359"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="391"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="423"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="464"/>
+ <source>Media</source>
+ <translation>Media</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="515"/>
+ <source>Enable Video</source>
+ <translation>Attivare Video</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="539"/>
+ <source>Video Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="692"/>
+ <source>Audio Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="142"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="151"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSettingsWidget</name>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="61"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="108"/>
+ <source>Allow Calls From Untrusted Peers</source>
+ <translation>Consenti chiamate da peer non attendibili</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="133"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="161"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="188"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="225"/>
+ <source>Name Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="275"/>
+ <source>Address</source>
+ <translation>Indirizzo</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="351"/>
+ <source>OpenDHT Configuration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="398"/>
+ <source>Enable Proxy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="454"/>
+ <source>Bootstrap</source>
+ <translation>Innesco</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="530"/>
+ <source>Security</source>
+ <translation>Sicurezza</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="571"/>
+ <source>Private Key Password</source>
+ <translation>Password della chiave privata</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="583"/>
+ <source>User Certificate</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="622"/>
+ <source>Private Key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="634"/>
+ <source>CA Certificate</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="766"/>
+ <source>Connectivity</source>
+ <translation>Connettività</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="868"/>
+ <source>Use STUN</source>
+ <translation>Usare STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="856"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="892"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="904"/>
+ <source>Use TURN</source>
+ <translation>Usare TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="934"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="966"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="998"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1039"/>
+ <source>Media</source>
+ <translation>Media</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1090"/>
+ <source>Enable Video</source>
+ <translation>Attivare Video</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1267"/>
+ <source>Audio Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1114"/>
+ <source>Video Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="181"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AnimatedOverlay</name>
+ <message>
+ <location filename="../animatedoverlay.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>BannedItemWidget</name>
+ <message>
+ <location filename="../banneditemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="80"/>
+ <source>name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="104"/>
+ <source>id</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>CallWidget</name>
+ <message>
+ <location filename="../callwidget.ui" line="184"/>
+ <source>Show conversations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="187"/>
+ <source>Conversations</source>
+ <translation>Converzazioni</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="368"/>
+ <source>Search contact text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="653"/>
+ <source>Jami is free software for universal communication which respects the freedoms and privacy of its users.</source>
+ <translation>Jami è un software gratuito per la comunicazione universale che rispetta le libertà e la privacy dei suoi utenti.</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="693"/>
+ <source>
+ This is your ID.
+Copy and share it with your friends!
+ </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="806"/>
+ <source>Show ring ID QR code</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="857"/>
+ <source>Share ring ID button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="915"/>
+ <source>Double-click to copy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="956"/>
+ <source>Error while generating QR Code</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1184"/>
+ <location filename="../callwidget.ui" line="1434"/>
+ <source>best name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1208"/>
+ <source>best Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1734"/>
+ <source>Back to homepage button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1943"/>
+ <source>Add to contacts</source>
+ <translation>Aggiungi contatti</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="202"/>
+ <source>Show invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="205"/>
+ <source>Invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="377"/>
+ <location filename="../callwidget.cpp" line="552"/>
+ <source>Find a new or existing contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1444"/>
+ <source>Wants to talk to you!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1517"/>
+ <source>Answer incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1589"/>
+ <source>Ignore incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1539"/>
+ <source>Answer</source>
+ <translation>Rispondi</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1617"/>
+ <source>Ignore</source>
+ <translation>Ignora</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1280"/>
+ <source>Cancel outgoing call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1305"/>
+ <source>Cancel</source>
+ <translation>Cancella</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="332"/>
+ <source>Start video call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="343"/>
+ <source>Start audio call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="354"/>
+ <source>Clear conversation</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="361"/>
+ <source>Remove contact</source>
+ <translation>Rimuovi contatto</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="373"/>
+ <source>Block contact</source>
+ <translation>Blocca contatto</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="384"/>
+ <source>Copy number</source>
+ <translation>Copia il numerp</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="561"/>
+ <source>Search your received invitations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>Contact me on Jami</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>My Id is : </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="847"/>
+ <source>%1</source>
+ <comment>%1 is the contact username</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="852"/>
+ <source>%1</source>
+ <comment>%1 is the contact unique identifier</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="675"/>
+ <source>Call incoming from %1</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>DeleteAccountDialog</name>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="35"/>
+ <source>Account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="58"/>
+ <source>Do you really want to delete the following account?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="153"/>
+ <source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="235"/>
+ <source>Permanently delete account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="241"/>
+ <source>Delete</source>
+ <translation>Cancella</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="278"/>
+ <source>Cancel account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="284"/>
+ <source>Cancel</source>
+ <translation>Cancella</translation>
+ </message>
+</context>
+<context>
+ <name>DeviceItemWidget</name>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="105"/>
+ <source>Device Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="143"/>
+ <source>this device</source>
+ <translation>questo dispositivo</translation>
+ </message>
+</context>
+<context>
+ <name>InviteButtonsWidget</name>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="83"/>
+ <source>Accept</source>
+ <translation>Accettare</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="131"/>
+ <source>Refuse</source>
+ <translation>Rifiuta</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="179"/>
+ <source>Block</source>
+ <translation>Blocca</translation>
+ </message>
+</context>
+<context>
+ <name>LinkDeviceDialog</name>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="62"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="117"/>
+ <source>Password</source>
+ <translation>Password</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="184"/>
+ <source>Ok</source>
+ <translation>Ok</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="218"/>
+ <source>Cancel</source>
+ <translation>Cancella</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="279"/>
+ <source>Exporting account</source>
+ <translation>Esportazione account in corso</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="402"/>
+ <source>Your PIN is</source>
+ <translation>Il tuo PIN è</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="432"/>
+ <source>PIN</source>
+ <translation>PIN</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="477"/>
+ <source>This pin and the account password should be entered in your device within 10 minutes.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="553"/>
+ <source>Close</source>
+ <translation>Chiudi</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="34"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="96"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="110"/>
+ <source>Something went wrong.
+Please try again later.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="83"/>
+ <source>Settings</source>
+ <translation>Impostazioni</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="94"/>
+ <source>Exit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="111"/>
+ <source>About</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="435"/>
+ <source>Jami</source>
+ <translation>Jami</translation>
+ </message>
+</context>
+<context>
+ <name>NameRegistrationDialog</name>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="35"/>
+ <source>Set Registered Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="163"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="244"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="250"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="256"/>
+ <source>Password</source>
+ <translation>Password</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="323"/>
+ <source>Register</source>
+ <translation>Register</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="357"/>
+ <source>Cancel</source>
+ <translation>Cancella</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="424"/>
+ <source>Registering Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="548"/>
+ <source>Something went wrong</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="618"/>
+ <source>Close</source>
+ <translation>Chiudi</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="82"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="85"/>
+ <source>Network error</source>
+ <translation>Errore di rete</translation>
+ </message>
+</context>
+<context>
+ <name>NewWizardWidget</name>
+ <message>
+ <location filename="../newwizardwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="141"/>
+ <source>Welcome Label</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="147"/>
+ <source> Welcome to</source>
+ <translation> Benvenuto in</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="185"/>
+ <source>Welcome Logo</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="239"/>
+ <source>Create Jami account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="245"/>
+ <source>Push button for Jami account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="251"/>
+ <source>Create a Jami account</source>
+ <translation>Crea un account Jami</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="282"/>
+ <source>Link device button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="288"/>
+ <source>Push button for device linkage start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="291"/>
+ <source>Link this device to an account</source>
+ <translation>Collega questo dispositivo a un account</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="328"/>
+ <source>Create Jami SIP account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="334"/>
+ <source>Push button for Jami SIP account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="340"/>
+ <source>Create a SIP account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="405"/>
+ <source>Link this device to an existing account</source>
+ <translation>Collega questo dispositivo a un account esistente</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="469"/>
+ <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">To link this device to another account, you first </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">need to obtain a PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> code. To generate the PIN code:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Account management setting</span><span style=" font-size:14px;"> of a previous device</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choose the </span><span style=" font-size:14px; font-weight:600;">Jami account</span><span style=" font-size:14px;"> you want to use</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Devices</span><span style=" font-size:14px;"> tab</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Select </span><span style=" font-size:14px; font-weight:600;">Add a device</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">You will get the necessary PIN to complete this form. The PIN is only valid for </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutes</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="531"/>
+ <source>Enter your pin:</source>
+ <translation>Inserisci il tuo pin:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="599"/>
+ <source>Or import a file:</source>
+ <translation>O importa un file:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="626"/>
+ <source>Link from exported account archive file</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="629"/>
+ <location filename="../newwizardwidget.cpp" line="83"/>
+ <location filename="../newwizardwidget.cpp" line="218"/>
+ <source>(None)</source>
+ <translation>(Nessuno)</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="705"/>
+ <source>Password:</source>
+ <translation>Password:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="799"/>
+ <location filename="../newwizardwidget.ui" line="1586"/>
+ <source>Profile</source>
+ <translation>Profilo</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="953"/>
+ <location filename="../newwizardwidget.ui" line="1767"/>
+ <source>Profile name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1027"/>
+ <source>Account</source>
+ <translation>Profilo</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1136"/>
+ <source>Register your username.
+This will reserve the username so that only you can use it.
+Your friends will be able to call you with your usename
+instead of using your ID.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1142"/>
+ <source>Public username checkbox</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1145"/>
+ <source>Checkbox selecting if the user wants a public username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1148"/>
+ <source>Register public username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1367"/>
+ <source>Public username edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1373"/>
+ <source>Choose your username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1289"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1295"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1301"/>
+ <location filename="../newwizardwidget.ui" line="2213"/>
+ <source>Password</source>
+ <translation>Password</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1211"/>
+ <location filename="../newwizardwidget.ui" line="1217"/>
+ <source>Password confirmation text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1223"/>
+ <source>Confirm password</source>
+ <translation>Confermare password</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1814"/>
+ <source>SIP Account</source>
+ <translation>Account SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1973"/>
+ <source>SIP Server edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1979"/>
+ <source>Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2045"/>
+ <source>SIP proxy input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2051"/>
+ <source>SIP proxy text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2057"/>
+ <source>Proxy</source>
+ <translation>Proxy</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2123"/>
+ <source>SIP username input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2129"/>
+ <source>SIP Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2135"/>
+ <source>Username</source>
+ <translation>Nome utente</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2201"/>
+ <location filename="../newwizardwidget.ui" line="2207"/>
+ <source>SIP Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message utf8="true">
+ <location filename="../newwizardwidget.ui" line="2282"/>
+ <source>Generating your Jami account…</source>
+ <translation>Generare il tuo account Jami ...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2356"/>
+ <source>Previous page button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2362"/>
+ <source>push button to access previous page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2365"/>
+ <source>Previous</source>
+ <translation>Precedente</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2396"/>
+ <source>Cancel account create/link</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2402"/>
+ <source>push button to cancel account creation or linking</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2405"/>
+ <source>Back</source>
+ <translation>Indietro</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2442"/>
+ <source>Next page Button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2448"/>
+ <source>Push button to access next page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2451"/>
+ <source>Next</source>
+ <translation>Seguente</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="75"/>
+ <source>Open File</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="77"/>
+ <source>Jami archive files (*.gz); All files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="123"/>
+ <source>Your account needs to be migrated. Enter your password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="419"/>
+ <source>Migrating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="412"/>
+ <source>Importing account archive...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="404"/>
+ <source>Generating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="422"/>
+ <source>Generating your SIP account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="533"/>
+ <source>Error creating account</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PasswordDialog</name>
+ <message>
+ <location filename="../passworddialog.ui" line="32"/>
+ <source>Change Account Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="97"/>
+ <source>Enter Current Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="169"/>
+ <source>Enter New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="190"/>
+ <source>Confirm New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="247"/>
+ <source>Confirm</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="290"/>
+ <source>Cancel</source>
+ <translation>Cancella</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="143"/>
+ <source>Current Password Incorrect</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PhotoBoothDialog</name>
+ <message>
+ <location filename="../photoboothdialog.ui" line="14"/>
+ <source>Photobooth</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PhotoboothWidget</name>
+ <message>
+ <location filename="../photoboothwidget.ui" line="20"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.ui" line="120"/>
+ <source>Photobooth display</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="92"/>
+ <source>Choose File</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="94"/>
+ <source>Image Files (*.jpg *.jpeg *.png)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PrivateBridging</name>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Choose File</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../utils.cpp" line="183"/>
+ <source>No default mail client found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="43"/>
+ <location filename="../deviceitemwidget.cpp" line="85"/>
+ <source>Edit Device Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="44"/>
+ <source>Unlink Device From Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="80"/>
+ <source>Save new device name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.cpp" line="39"/>
+ <source>Add as contact</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>RingButton</name>
+ <message>
+ <location filename="../ringbutton.ui" line="140"/>
+ <source>Select folder</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <location filename="../settingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="141"/>
+ <source>Settings</source>
+ <translation>Impostazioni</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="229"/>
+ <source>Account</source>
+ <translation>Profilo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="267"/>
+ <location filename="../settingswidget.ui" line="503"/>
+ <source>General</source>
+ <translation>Generale</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="305"/>
+ <location filename="../settingswidget.ui" line="3416"/>
+ <source>Audio / Video</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="542"/>
+ <source>System</source>
+ <translation>Sistema</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="610"/>
+ <source>Enable desktop notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="653"/>
+ <source>Keep minimized on close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="678"/>
+ <source>Download folder</source>
+ <translation>Cartella download</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="811"/>
+ <source>Save in</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="904"/>
+ <source>Always Recording</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="943"/>
+ <source>Updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1008"/>
+ <source>Check for updates automatically every</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1032"/>
+ <source>Interval between update checks in days selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1038"/>
+ <source> days</source>
+ <translation>giorni</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1081"/>
+ <source>Check for updates now button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1084"/>
+ <source>Check for updates now</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3027"/>
+ <source>Password</source>
+ <translation>Password</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1418"/>
+ <location filename="../settingswidget.ui" line="2729"/>
+ <source>Enable</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="607"/>
+ <source>toggle enable notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="650"/>
+ <source>Toggle keep minimized on close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="764"/>
+ <source>Call Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1005"/>
+ <source>Toggle automatic updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1231"/>
+ <source>Jami Account</source>
+ <translation>Account Jami</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1453"/>
+ <location filename="../settingswidget.ui" line="2761"/>
+ <source>Profile</source>
+ <translation>Profilo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1567"/>
+ <location filename="../settingswidget.ui" line="2875"/>
+ <source>Identity</source>
+ <translation>Identità</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1614"/>
+ <source>Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1673"/>
+ <source>Registered name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1721"/>
+ <source>Type here to register a username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1755"/>
+ <source>Register</source>
+ <translation>Register</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1827"/>
+ <source>Change Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1868"/>
+ <source>Export Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1909"/>
+ <location filename="../settingswidget.ui" line="3089"/>
+ <source>Delete Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1973"/>
+ <source>Linked Devices</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2078"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2142"/>
+ <source>Banned Contacts</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3788"/>
+ <source>Format</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3831"/>
+ <source>Video device framerate selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3967"/>
+ <source>Preview unavailable</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2359"/>
+ <location filename="../settingswidget.ui" line="3187"/>
+ <source>Advanced Account Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2554"/>
+ <source>SIP Account</source>
+ <translation>Account SIP</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2925"/>
+ <source>Username</source>
+ <translation>Nome utente</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2958"/>
+ <source>Hostname</source>
+ <translation>Nome Host</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2991"/>
+ <source>Proxy</source>
+ <translation>Proxy</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3461"/>
+ <source>Audio</source>
+ <translation>Audio</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3511"/>
+ <source>Microphone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3551"/>
+ <source>Audio input device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3585"/>
+ <source>Output Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3625"/>
+ <source>Choose the output device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3682"/>
+ <source>Video</source>
+ <translation>Video</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3720"/>
+ <source>Device</source>
+ <translation>Dispositivo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3766"/>
+ <source>Video device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="459"/>
+ <source>A registered name should not have any spaces and must be at least three letters long</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="466"/>
+ <source>This name is already taken</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="92"/>
+ <location filename="../settingswidget.cpp" line="110"/>
+ <source>Enter an alias</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="473"/>
+ <source>Register this name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="550"/>
+ <source>Remove Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="551"/>
+ <source>Enter this account's password to confirm the removal of this device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="558"/>
+ <source>Are you sure you wish to remove this device?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="589"/>
+ <source>Export Account Here</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="887"/>
+ <source>Select A Folder For Your Downloads</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="904"/>
+ <source>Select A Folder For Your Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>VideoOverlay</name>
+ <message>
+ <location filename="../videooverlay.ui" line="419"/>
+ <source>Call on Hold</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="89"/>
+ <source>Hold / Unhold</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="124"/>
+ <source>Chat</source>
+ <translation>Chat</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="162"/>
+ <source>Mute Mic</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="244"/>
+ <source>Record call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="325"/>
+ <source>Name label</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="390"/>
+ <source>Time elapsed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="393"/>
+ <source>00:00</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="57"/>
+ <source>Hangup</source>
+ <translation>Riattacare</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="203"/>
+ <source>Mute Video</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>VideoView</name>
+ <message>
+ <location filename="../videoview.cpp" line="271"/>
+ <source>Share entire screen</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="274"/>
+ <source>Share screen area</source>
+ <translation>Condividere una porzione dello schermo</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="281"/>
+ <source>Share file</source>
+ <translation>Condividere file</translation>
+ </message>
+</context>
+</TS>
\ No newline at end of file
diff --git a/translations/ring_client_windows_it_IT.ts b/translations/ring_client_windows_it_IT.ts
new file mode 100644
index 0000000..e0b0dcd
--- /dev/null
+++ b/translations/ring_client_windows_it_IT.ts
@@ -0,0 +1,1606 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="it_IT" version="2.0">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../aboutdialog.ui" line="435"/>
+ <location filename="../aboutdialog.ui" line="465"/>
+ <source>About</source>
+ <translation>Informazioni su</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="462"/>
+ <source>about button</source>
+ <translation>pulsante informazioni su</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="478"/>
+ <source>credits button</source>
+ <translation>pulsante crediti</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="481"/>
+ <source>Credits</source>
+ <translation>Crediti</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="547"/>
+ <source>Free as in Freedom</source>
+ <translation>Free as in Freedom</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="563"/>
+ <source>The Microsoft Windows client for Jami.
+Jami is a secured and distributed communication software.</source>
+ <translation>Il client Microsoft Windows per Jami.
+Jami è un software di comunicazione sicuro e distribuito.</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="32"/>
+ <source>version</source>
+ <translation>versione</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="39"/>
+ <source>Created by:</source>
+ <translation>Creato da:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="73"/>
+ <source>Artwork by:</source>
+ <translation>Tema di:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="77"/>
+ <source>Based on the SFLPhone project</source>
+ <translation>Basato sul progetto SFLPhone</translation>
+ </message>
+</context>
+<context>
+ <name>AccountItemDelegate</name>
+ <message>
+ <location filename="../accountitemdelegate.cpp" line="91"/>
+ <source>Add Account</source>
+ <translation>Aggiungi account</translation>
+ </message>
+</context>
+<context>
+ <name>AdvancedSIPSettingsWidget</name>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Modulo</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="55"/>
+ <source>Call Settings</source>
+ <translation>Impostazioni di chiamata</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="102"/>
+ <source>Auto Answer Calls</source>
+ <translation>Risposta automatica alle chiamate</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="130"/>
+ <source>Enable Custom Ringtone</source>
+ <translation>Abilita suoneria personalizzata</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="191"/>
+ <source>Connectivity</source>
+ <translation>Connettività</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="281"/>
+ <source>STUN Address</source>
+ <translation>Indirizzo STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="293"/>
+ <source>Use STUN</source>
+ <translation>Utilizza STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="317"/>
+ <source>Use UPnP</source>
+ <translation>Usa UPnP</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="329"/>
+ <source>Use TURN</source>
+ <translation>Utilizza TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="359"/>
+ <source>TURN Password</source>
+ <translation>TURN Password</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="391"/>
+ <source>TURN Username</source>
+ <translation>TURN Nome Utente</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="423"/>
+ <source>TURN Address</source>
+ <translation>Indirizzo TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="464"/>
+ <source>Media</source>
+ <translation>Media</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="515"/>
+ <source>Enable Video</source>
+ <translation>Attiva Video</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="539"/>
+ <source>Video Codecs</source>
+ <translation>Codec Video</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="692"/>
+ <source>Audio Codecs</source>
+ <translation>Codec audio</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="142"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation>File audio (* .wav * .ogg * .opus * .mp3 * aiff * wma)</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="151"/>
+ <source>Add a custom ringtone</source>
+ <translation>Aggiungi una suoneria personalizzata</translation>
+ </message>
+</context>
+<context>
+ <name>AdvancedSettingsWidget</name>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Modulo</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="61"/>
+ <source>Call Settings</source>
+ <translation>Impostazioni di chiamata</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="108"/>
+ <source>Allow Calls From Untrusted Peers</source>
+ <translation>Consenti chiamate da peer non attendibili</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="133"/>
+ <source>Auto Answer Calls</source>
+ <translation>Risposta automatica alle chiamate</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="161"/>
+ <source>Enable Custom Ringtone</source>
+ <translation>Abilita suoneria personalizzata</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="188"/>
+ <source>Add a custom ringtone</source>
+ <translation>Aggiungi una suoneria personalizzata</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="225"/>
+ <source>Name Server</source>
+ <translation>Nome Server</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="275"/>
+ <source>Address</source>
+ <translation>Indirizzo</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="351"/>
+ <source>OpenDHT Configuration</source>
+ <translation>Configurazione OpenDHT</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="398"/>
+ <source>Enable Proxy</source>
+ <translation>Abilita proxy</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="454"/>
+ <source>Bootstrap</source>
+ <translation>Avvio</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="530"/>
+ <source>Security</source>
+ <translation>Sicurezza</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="571"/>
+ <source>Private Key Password</source>
+ <translation>Password della Chiave Privata</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="583"/>
+ <source>User Certificate</source>
+ <translation>Certificato Utente</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="622"/>
+ <source>Private Key</source>
+ <translation>Chiave privata</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="634"/>
+ <source>CA Certificate</source>
+ <translation>Certificato CA.</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="766"/>
+ <source>Connectivity</source>
+ <translation>Connettività</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="868"/>
+ <source>Use STUN</source>
+ <translation>Utilizza STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="856"/>
+ <source>STUN Address</source>
+ <translation>Indirizzo STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="892"/>
+ <source>Use UPnP</source>
+ <translation>Usa UPnP</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="904"/>
+ <source>Use TURN</source>
+ <translation>Utilizza TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="934"/>
+ <source>TURN Password</source>
+ <translation>TURN Password</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="966"/>
+ <source>TURN Username</source>
+ <translation>TURN Nome Utente</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="998"/>
+ <source>TURN Address</source>
+ <translation>Indirizzo TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1039"/>
+ <source>Media</source>
+ <translation>Media</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1090"/>
+ <source>Enable Video</source>
+ <translation>Attiva Video</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1267"/>
+ <source>Audio Codecs</source>
+ <translation>Codec audio</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1114"/>
+ <source>Video Codecs</source>
+ <translation>Codec Video</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="181"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation>File audio (* .wav * .ogg * .opus * .mp3 * aiff * wma)</translation>
+ </message>
+</context>
+<context>
+ <name>AnimatedOverlay</name>
+ <message>
+ <location filename="../animatedoverlay.ui" line="14"/>
+ <source>Form</source>
+ <translation>Modulo</translation>
+ </message>
+</context>
+<context>
+ <name>BannedItemWidget</name>
+ <message>
+ <location filename="../banneditemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Modulo</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="80"/>
+ <source>name</source>
+ <translation>nome</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="104"/>
+ <source>id</source>
+ <translation>id</translation>
+ </message>
+</context>
+<context>
+ <name>CallWidget</name>
+ <message>
+ <location filename="../callwidget.ui" line="184"/>
+ <source>Show conversations</source>
+ <translation>Mostra conversazioni</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="187"/>
+ <source>Conversations</source>
+ <translation>Conversazioni</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="368"/>
+ <source>Search contact text input</source>
+ <translation>Cerca l'inserimento del testo del contatto</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="653"/>
+ <source>Jami is free software for universal communication which respects the freedoms and privacy of its users.</source>
+ <translation>Jami è un software gratuito per la comunicazione universale che rispetta le libertà e la privacy dei suoi utenti.</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="693"/>
+ <source>
+ This is your ID.
+Copy and share it with your friends!
+ </source>
+ <translation>
+Questo è il tuo ID.
+Copia e condividi con i tuoi amici!
+ </translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="806"/>
+ <source>Show ring ID QR code</source>
+ <translation>Mostra codice ID ring e QR code</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="857"/>
+ <source>Share ring ID button</source>
+ <translation>Condividi il pulsante ID ring</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="915"/>
+ <source>Double-click to copy</source>
+ <translation>Fare doppio clic per copiare</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="956"/>
+ <source>Error while generating QR Code</source>
+ <translation>Errore durante la generazione del Codice QR</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1184"/>
+ <location filename="../callwidget.ui" line="1434"/>
+ <source>best name</source>
+ <translation>miglior nome</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1208"/>
+ <source>best Id</source>
+ <translation>miglior ID</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1734"/>
+ <source>Back to homepage button</source>
+ <translation>Torna al pulsante homepage</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1943"/>
+ <source>Add to contacts</source>
+ <translation>Aggiungi alla rubrica</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="202"/>
+ <source>Show invites</source>
+ <translation>Mostra inviti</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="205"/>
+ <source>Invites</source>
+ <translation>Inviti</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="377"/>
+ <location filename="../callwidget.cpp" line="552"/>
+ <source>Find a new or existing contact</source>
+ <translation>Trova un contatto nuovo o esistente</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1444"/>
+ <source>Wants to talk to you!</source>
+ <translation>Vuole parlare con te!</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1517"/>
+ <source>Answer incoming call button</source>
+ <translation>Rispondi col pulsante di chiamata in arrivo</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1589"/>
+ <source>Ignore incoming call button</source>
+ <translation>Ignora il pulsante di chiamata in arrivo</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1539"/>
+ <source>Answer</source>
+ <translation>Rispondi</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1617"/>
+ <source>Ignore</source>
+ <translation>Ignora</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1280"/>
+ <source>Cancel outgoing call</source>
+ <translation>Annulla chiamata in uscita</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1305"/>
+ <source>Cancel</source>
+ <translation>Annulla</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="332"/>
+ <source>Start video call</source>
+ <translation>Inizia la video chiamata</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="343"/>
+ <source>Start audio call</source>
+ <translation>Avvia chiamata audio</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="354"/>
+ <source>Clear conversation</source>
+ <translation>Pulisci conversazione</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="361"/>
+ <source>Remove contact</source>
+ <translation>Rimuovi contatto</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="373"/>
+ <source>Block contact</source>
+ <translation>Blocca contatto</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="384"/>
+ <source>Copy number</source>
+ <translation>Copia numero</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="561"/>
+ <source>Search your received invitations</source>
+ <translation>Cerca i tuoi inviti ricevuti</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>Contact me on Jami</source>
+ <translation>Contattami su Jami</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>My Id is : </source>
+ <translation>Il mio ID è:</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="847"/>
+ <source>%1</source>
+ <comment>%1 is the contact username</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="852"/>
+ <source>%1</source>
+ <comment>%1 is the contact unique identifier</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="675"/>
+ <source>Call incoming from %1</source>
+ <translation>Chiamata in arrivo da %1</translation>
+ </message>
+</context>
+<context>
+ <name>DeleteAccountDialog</name>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="35"/>
+ <source>Account deletion</source>
+ <translation>Cancellazione dell'account</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="58"/>
+ <source>Do you really want to delete the following account?</source>
+ <translation>Vuoi veramente cancellare il seguente account?</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="153"/>
+ <source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
+ <translation>Se questo account non è stato esportato o aggiunto a un altro dispositivo, verrà perso in modo irrevocabile.</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="235"/>
+ <source>Permanently delete account</source>
+ <translation>Elimina definitivamente l'account</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="241"/>
+ <source>Delete</source>
+ <translation>Elimina</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="278"/>
+ <source>Cancel account deletion</source>
+ <translation>Annulla la cancellazione dell'account</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="284"/>
+ <source>Cancel</source>
+ <translation>Annulla</translation>
+ </message>
+</context>
+<context>
+ <name>DeviceItemWidget</name>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Modulo</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="105"/>
+ <source>Device Id</source>
+ <translation>ID del dispositivo</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="143"/>
+ <source>this device</source>
+ <translation>questo dispositivo</translation>
+ </message>
+</context>
+<context>
+ <name>InviteButtonsWidget</name>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="83"/>
+ <source>Accept</source>
+ <translation>Accetta</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="131"/>
+ <source>Refuse</source>
+ <translation>Rifiuto</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="179"/>
+ <source>Block</source>
+ <translation>Blocca</translation>
+ </message>
+</context>
+<context>
+ <name>LinkDeviceDialog</name>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation>Dialog</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="62"/>
+ <source>Enter your account password</source>
+ <translation>Inserisci la password del tuo account</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="117"/>
+ <source>Password</source>
+ <translation>Password</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="184"/>
+ <source>Ok</source>
+ <translation>Ok</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="218"/>
+ <source>Cancel</source>
+ <translation>Annulla</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="279"/>
+ <source>Exporting account</source>
+ <translation>Esportazione dell'account</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="402"/>
+ <source>Your PIN is</source>
+ <translation>Il tuo PIN è</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="432"/>
+ <source>PIN</source>
+ <translation>PIN</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="477"/>
+ <source>This pin and the account password should be entered in your device within 10 minutes.</source>
+ <translation>Questo pin e la password dell'account devono essere inseriti nel dispositivo entro 10 minuti.</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="553"/>
+ <source>Close</source>
+ <translation>Chiudi</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="34"/>
+ <source>Link Another Device</source>
+ <translation>Collega un altro dispositivo</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="96"/>
+ <source>Incorrect password</source>
+ <translation>password errata</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="110"/>
+ <source>Something went wrong.
+Please try again later.</source>
+ <translation>Qualcosa è andato storto.
+Riprova più tardi.</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="83"/>
+ <source>Settings</source>
+ <translation>Opzioni</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="94"/>
+ <source>Exit</source>
+ <translation>Esci</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="111"/>
+ <source>About</source>
+ <translation>Info</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="435"/>
+ <source>Jami</source>
+ <translation>Jami</translation>
+ </message>
+</context>
+<context>
+ <name>NameRegistrationDialog</name>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="35"/>
+ <source>Set Registered Name</source>
+ <translation>Imposta il nome registrato</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="163"/>
+ <source>Enter your account password</source>
+ <translation>Inserisci la password del tuo account</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="244"/>
+ <source>Password text input</source>
+ <translation>Inserimento testo password</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="250"/>
+ <source>Password text entry</source>
+ <translation>Inserimento testo password</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="256"/>
+ <source>Password</source>
+ <translation>Password</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="323"/>
+ <source>Register</source>
+ <translation>Salva</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="357"/>
+ <source>Cancel</source>
+ <translation>Annulla</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="424"/>
+ <source>Registering Name</source>
+ <translation>Nome di Registrazione</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="548"/>
+ <source>Something went wrong</source>
+ <translation>Qualcosa è andato storto</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="618"/>
+ <source>Close</source>
+ <translation>Chiudi</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="82"/>
+ <source>Incorrect password</source>
+ <translation>password errata</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="85"/>
+ <source>Network error</source>
+ <translation>Errore di rete</translation>
+ </message>
+</context>
+<context>
+ <name>NewWizardWidget</name>
+ <message>
+ <location filename="../newwizardwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Modulo</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="141"/>
+ <source>Welcome Label</source>
+ <translation>Etichetta di Benvenuto</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="147"/>
+ <source> Welcome to</source>
+ <translation>Benvenuto a</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="185"/>
+ <source>Welcome Logo</source>
+ <translation>Logo di benvenuto</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="239"/>
+ <source>Create Jami account button</source>
+ <translation>Pulsante Crea account Jami</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="245"/>
+ <source>Push button for Jami account creation start trigger</source>
+ <translation>Pulsante per l'attivazione della creazione dell'account Jami</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="251"/>
+ <source>Create a Jami account</source>
+ <translation>Crea un account Jami</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="282"/>
+ <source>Link device button</source>
+ <translation>Pulsante Collega dispositivo</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="288"/>
+ <source>Push button for device linkage start trigger</source>
+ <translation>Pulsante per l'attivazione dell'avvio del collegamento del dispositivo</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="291"/>
+ <source>Link this device to an account</source>
+ <translation>Collega questo dispositivo ad un account</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="328"/>
+ <source>Create Jami SIP account button</source>
+ <translation>Crea pulsante account SIP Jami</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="334"/>
+ <source>Push button for Jami SIP account creation start trigger</source>
+ <translation>Pulsante per l'attivazione della creazione dell'account SIP Jami</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="340"/>
+ <source>Create a SIP account</source>
+ <translation>Crea un account SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="405"/>
+ <source>Link this device to an existing account</source>
+ <translation>Collega questo dispositivo ad un account esistente</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="469"/>
+ <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">To link this device to another account, you first </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">need to obtain a PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> code. To generate the PIN code:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Account management setting</span><span style=" font-size:14px;"> of a previous device</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choose the </span><span style=" font-size:14px; font-weight:600;">Jami account</span><span style=" font-size:14px;"> you want to use</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Devices</span><span style=" font-size:14px;"> tab</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Select </span><span style=" font-size:14px; font-weight:600;">Add a device</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">You will get the necessary PIN to complete this form. The PIN is only valid for </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutes</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></source>
+ <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">Per collegare questo dispositivo a un altro account, per prima cosa</span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">è necessario ottenere un codice PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">. Per generare il codice PIN:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Vai su </span><span style=" font-size:14px; font-weight:600;">Impostazioni di gestione dell'account</span><span style=" font-size:14px;"> di un dispositivo precedente</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Scegli l' </span><span style=" font-size:14px; font-weight:600;">account Jami</span><span style=" font-size:14px;"> che vuoi usare</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Vai alla </span><span style=" font-size:14px; font-weight:600;">scheda</span><span style=" font-size:14px;">dispositivi</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Seleziona </span><span style=" font-size:14px; font-weight:600;">Aggiungi dispositivo</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">Riceverai il PIN necessario per completare questo modulo. Il PIN è valido solo per </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minuti</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="531"/>
+ <source>Enter your pin:</source>
+ <translation>Inserire il pin:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="599"/>
+ <source>Or import a file:</source>
+ <translation>O importa un file:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="626"/>
+ <source>Link from exported account archive file</source>
+ <translation>Collegamento dal file di archivio dell'account esportato</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="629"/>
+ <location filename="../newwizardwidget.cpp" line="83"/>
+ <location filename="../newwizardwidget.cpp" line="218"/>
+ <source>(None)</source>
+ <translation>(Nessuno)</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="705"/>
+ <source>Password:</source>
+ <translation>Password:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="799"/>
+ <location filename="../newwizardwidget.ui" line="1586"/>
+ <source>Profile</source>
+ <translation>Profilo</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="953"/>
+ <location filename="../newwizardwidget.ui" line="1767"/>
+ <source>Profile name</source>
+ <translation>Nome del profilo</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1027"/>
+ <source>Account</source>
+ <translation>Account</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1136"/>
+ <source>Register your username.
+This will reserve the username so that only you can use it.
+Your friends will be able to call you with your usename
+instead of using your ID.</source>
+ <translation>Registra il tuo nome utente.
+Questo riserverà il nome utente in modo che solo tu possa usarlo.
+I tuoi amici potranno chiamarti con il tuo nome utente
+invece di usare il tuo ID.</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1142"/>
+ <source>Public username checkbox</source>
+ <translation>Casella di controllo nome utente pubblico</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1145"/>
+ <source>Checkbox selecting if the user wants a public username</source>
+ <translation>Selezionare la casella se l'utente desidera un nome utente pubblico</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1148"/>
+ <source>Register public username</source>
+ <translation>Registra nome utente pubblico</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1367"/>
+ <source>Public username edit</source>
+ <translation>Modifica nome utente pubblico</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1373"/>
+ <source>Choose your username</source>
+ <translation>scegli il tuo nome utente</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1289"/>
+ <source>Password text input</source>
+ <translation>Inserimento testo password</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1295"/>
+ <source>Password text entry</source>
+ <translation>Inserimento testo password</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1301"/>
+ <location filename="../newwizardwidget.ui" line="2213"/>
+ <source>Password</source>
+ <translation>Password</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1211"/>
+ <location filename="../newwizardwidget.ui" line="1217"/>
+ <source>Password confirmation text input</source>
+ <translation>Inserimento di testo di conferma della password</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1223"/>
+ <source>Confirm password</source>
+ <translation>Conferma password</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1814"/>
+ <source>SIP Account</source>
+ <translation>Account SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1973"/>
+ <source>SIP Server edit</source>
+ <translation>Modifica server SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1979"/>
+ <source>Server</source>
+ <translation>Server</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2045"/>
+ <source>SIP proxy input</source>
+ <translation>Ingresso proxy SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2051"/>
+ <source>SIP proxy text entry</source>
+ <translation>Immissione di testo proxy SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2057"/>
+ <source>Proxy</source>
+ <translation>Proxy</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2123"/>
+ <source>SIP username input</source>
+ <translation>Input del nome utente SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2129"/>
+ <source>SIP Password text entry</source>
+ <translation>Immissione di testo password SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2135"/>
+ <source>Username</source>
+ <translation>Utente</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2201"/>
+ <location filename="../newwizardwidget.ui" line="2207"/>
+ <source>SIP Password text input</source>
+ <translation>Immissione di testo password SIP</translation>
+ </message>
+ <message utf8="true">
+ <location filename="../newwizardwidget.ui" line="2282"/>
+ <source>Generating your Jami account…</source>
+ <translation>Generare il tuo account Jami ...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2356"/>
+ <source>Previous page button</source>
+ <translation>Precedente pulsante della pagina</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2362"/>
+ <source>push button to access previous page of wizard</source>
+ <translation>pulsante per accedere alla pagina precedente della procedura guidata</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2365"/>
+ <source>Previous</source>
+ <translation>Precedente</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2396"/>
+ <source>Cancel account create/link</source>
+ <translation>Annulla creazione/collegamento account</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2402"/>
+ <source>push button to cancel account creation or linking</source>
+ <translation>premere il pulsante per annullare la creazione o il collegamento dell'account</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2405"/>
+ <source>Back</source>
+ <translation>Indietro</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2442"/>
+ <source>Next page Button</source>
+ <translation>Pulsante della pagina successiva</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2448"/>
+ <source>Push button to access next page of wizard</source>
+ <translation>Premere il pulsante per accedere alla pagina successiva della procedura guidata</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2451"/>
+ <source>Next</source>
+ <translation>Prossimo</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="75"/>
+ <source>Open File</source>
+ <translation>Apri File</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="77"/>
+ <source>Jami archive files (*.gz); All files (*)</source>
+ <translation>File di archivio Jami (* gz); Tutti i files (*)</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="123"/>
+ <source>Your account needs to be migrated. Enter your password.</source>
+ <translation>Il tuo account deve essere migrato. Inserisci la tua password.</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="419"/>
+ <source>Migrating your Jami account...</source>
+ <translation>Migrazione del tuo account Jami ...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="412"/>
+ <source>Importing account archive...</source>
+ <translation>Importazione dell'archivio dell'account ...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="404"/>
+ <source>Generating your Jami account...</source>
+ <translation>Sto' generando il tuo account Jami ...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="422"/>
+ <source>Generating your SIP account...</source>
+ <translation>Generazione del tuo account SIP...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="533"/>
+ <source>Error creating account</source>
+ <translation>Errore nella creazione dell'account</translation>
+ </message>
+</context>
+<context>
+ <name>PasswordDialog</name>
+ <message>
+ <location filename="../passworddialog.ui" line="32"/>
+ <source>Change Account Password</source>
+ <translation>Cambia password account</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="97"/>
+ <source>Enter Current Password</source>
+ <translation>Immetti la password corrente</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="169"/>
+ <source>Enter New Password</source>
+ <translation>Inserire una nuova password</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="190"/>
+ <source>Confirm New Password</source>
+ <translation>Conferma la nuova password</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="247"/>
+ <source>Confirm</source>
+ <translation>Conferma</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="290"/>
+ <source>Cancel</source>
+ <translation>Annulla</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="143"/>
+ <source>Current Password Incorrect</source>
+ <translation>Password attuale errata</translation>
+ </message>
+</context>
+<context>
+ <name>PhotoBoothDialog</name>
+ <message>
+ <location filename="../photoboothdialog.ui" line="14"/>
+ <source>Photobooth</source>
+ <translation>Photobooth</translation>
+ </message>
+</context>
+<context>
+ <name>PhotoboothWidget</name>
+ <message>
+ <location filename="../photoboothwidget.ui" line="20"/>
+ <source>Form</source>
+ <translation>Modulo</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.ui" line="120"/>
+ <source>Photobooth display</source>
+ <translation>Visualizzazione photobooth</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="92"/>
+ <source>Choose File</source>
+ <translation>Scegli un file</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="94"/>
+ <source>Image Files (*.jpg *.jpeg *.png)</source>
+ <translation>File immagine (* .jpg * .jpeg * .png)</translation>
+ </message>
+</context>
+<context>
+ <name>PrivateBridging</name>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Choose File</source>
+ <translation>Scegli un file</translation>
+ </message>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Files (*)</source>
+ <translation>Files (*)</translation>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../utils.cpp" line="183"/>
+ <source>No default mail client found</source>
+ <translation>Nessun client E-Mail di Default</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="43"/>
+ <location filename="../deviceitemwidget.cpp" line="85"/>
+ <source>Edit Device Name</source>
+ <translation>Modifica nome dispositivo</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="44"/>
+ <source>Unlink Device From Account</source>
+ <translation>Scollega il dispositivo dall'account</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="80"/>
+ <source>Save new device name</source>
+ <translation>Salva il nuovo nome del dispositivo</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.cpp" line="39"/>
+ <source>Add as contact</source>
+ <translation>Aggiungi come contatto</translation>
+ </message>
+</context>
+<context>
+ <name>RingButton</name>
+ <message>
+ <location filename="../ringbutton.ui" line="140"/>
+ <source>Select folder</source>
+ <translation>Seleziona cartella</translation>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <location filename="../settingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Modulo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="141"/>
+ <source>Settings</source>
+ <translation>Opzioni</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="229"/>
+ <source>Account</source>
+ <translation>Account</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="267"/>
+ <location filename="../settingswidget.ui" line="503"/>
+ <source>General</source>
+ <translation>Generale</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="305"/>
+ <location filename="../settingswidget.ui" line="3416"/>
+ <source>Audio / Video</source>
+ <translation>Audio / Video</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="542"/>
+ <source>System</source>
+ <translation>Sistema</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="610"/>
+ <source>Enable desktop notifications</source>
+ <translation>Abilita notifiche desktop</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="653"/>
+ <source>Keep minimized on close</source>
+ <translation>Minimizza alla chiusura</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="678"/>
+ <source>Download folder</source>
+ <translation>Scarica la cartella</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="811"/>
+ <source>Save in</source>
+ <translation>Salva in</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="904"/>
+ <source>Always Recording</source>
+ <translation>Sempre in registrazione</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="943"/>
+ <source>Updates</source>
+ <translation>Aggiornamenti</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1008"/>
+ <source>Check for updates automatically every</source>
+ <translation>Controlla gli aggiornamenti automaticamente ogni</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1032"/>
+ <source>Interval between update checks in days selector</source>
+ <translation>Intervallo tra i controlli di aggiornamento nel selettore giorni</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1038"/>
+ <source> days</source>
+ <translation>giorni</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1081"/>
+ <source>Check for updates now button</source>
+ <translation>Controlla gli aggiornamenti ora col pulsante</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1084"/>
+ <source>Check for updates now</source>
+ <translation>Verifica subito gli aggiornamenti</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3027"/>
+ <source>Password</source>
+ <translation>Password</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1418"/>
+ <location filename="../settingswidget.ui" line="2729"/>
+ <source>Enable</source>
+ <translation>Abilitato</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="607"/>
+ <source>toggle enable notifications</source>
+ <translation>attiva/disattiva le notifiche</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="650"/>
+ <source>Toggle keep minimized on close</source>
+ <translation>Attiva/disattiva mantenimento minimizzato alla chiusura</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="764"/>
+ <source>Call Recordings</source>
+ <translation>Registrazioni delle chiamate</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1005"/>
+ <source>Toggle automatic updates</source>
+ <translation>Attiva/disattiva gli aggiornamenti automatici</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1231"/>
+ <source>Jami Account</source>
+ <translation>Jami account</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1453"/>
+ <location filename="../settingswidget.ui" line="2761"/>
+ <source>Profile</source>
+ <translation>Profilo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1567"/>
+ <location filename="../settingswidget.ui" line="2875"/>
+ <source>Identity</source>
+ <translation>Indentità</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1614"/>
+ <source>Id</source>
+ <translation>Id</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1673"/>
+ <source>Registered name</source>
+ <translation>Nome registrato</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1721"/>
+ <source>Type here to register a username</source>
+ <translation>Digita qui per registrare un nome utente</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1755"/>
+ <source>Register</source>
+ <translation>Salva</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1827"/>
+ <source>Change Password</source>
+ <translation>Cambia password</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1868"/>
+ <source>Export Account</source>
+ <translation>Esporta account</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1909"/>
+ <location filename="../settingswidget.ui" line="3089"/>
+ <source>Delete Account</source>
+ <translation>Elimina account</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1973"/>
+ <source>Linked Devices</source>
+ <translation>Dispositivi collegati</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2078"/>
+ <source>Link Another Device</source>
+ <translation>Collega un altro dispositivo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2142"/>
+ <source>Banned Contacts</source>
+ <translation> Contatti vietati</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3788"/>
+ <source>Format</source>
+ <translation>Formato</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3831"/>
+ <source>Video device framerate selector</source>
+ <translation>Selettore framerate dispositivo video</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3967"/>
+ <source>Preview unavailable</source>
+ <translation>Anteprima non disponibile</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2359"/>
+ <location filename="../settingswidget.ui" line="3187"/>
+ <source>Advanced Account Settings</source>
+ <translation>Impostazioni avanzate account </translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2554"/>
+ <source>SIP Account</source>
+ <translation>Account SIP</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2925"/>
+ <source>Username</source>
+ <translation>Utente</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2958"/>
+ <source>Hostname</source>
+ <translation>Hostname</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2991"/>
+ <source>Proxy</source>
+ <translation>Proxy</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3461"/>
+ <source>Audio</source>
+ <translation>Audio</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3511"/>
+ <source>Microphone</source>
+ <translation>Microfono</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3551"/>
+ <source>Audio input device selector</source>
+ <translation>Selettore del dispositivo di ingresso audio</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3585"/>
+ <source>Output Device</source>
+ <translation>Dispositivo di Uscita</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3625"/>
+ <source>Choose the output device</source>
+ <translation>Scegli il dispositivo di output</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3682"/>
+ <source>Video</source>
+ <translation>Video</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3720"/>
+ <source>Device</source>
+ <translation>Dispositivo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3766"/>
+ <source>Video device selector</source>
+ <translation>Selettore dispositivo video</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="459"/>
+ <source>A registered name should not have any spaces and must be at least three letters long</source>
+ <translation>Un nome registrato non deve contenere spazi e deve contenere almeno tre lettere</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="466"/>
+ <source>This name is already taken</source>
+ <translation>Questo nome è già stato scelto</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="92"/>
+ <location filename="../settingswidget.cpp" line="110"/>
+ <source>Enter an alias</source>
+ <translation>Inserisci un alias</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="473"/>
+ <source>Register this name</source>
+ <translation>Registra questo nome</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="550"/>
+ <source>Remove Device</source>
+ <translation>Rimuovi dispositivo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="551"/>
+ <source>Enter this account's password to confirm the removal of this device</source>
+ <translation>Inserisci la password di questo account per confermare la rimozione di questo dispositivo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="558"/>
+ <source>Are you sure you wish to remove this device?</source>
+ <translation>Sei sicuro di voler rimuovere questo dispositivo?</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="589"/>
+ <source>Export Account Here</source>
+ <translation>Esporta account qui</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="887"/>
+ <source>Select A Folder For Your Downloads</source>
+ <translation>Seleziona una cartella per i tuoi download</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="904"/>
+ <source>Select A Folder For Your Recordings</source>
+ <translation>Seleziona una cartella per le tue registrazioni</translation>
+ </message>
+</context>
+<context>
+ <name>VideoOverlay</name>
+ <message>
+ <location filename="../videooverlay.ui" line="419"/>
+ <source>Call on Hold</source>
+ <translation>Chiamata in attesa...</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="89"/>
+ <source>Hold / Unhold</source>
+ <translation>Pausa / Riprendi</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="124"/>
+ <source>Chat</source>
+ <translation>Chat</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="162"/>
+ <source>Mute Mic</source>
+ <translation>Mutati</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="244"/>
+ <source>Record call</source>
+ <translation>Registra chiamata</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="325"/>
+ <source>Name label</source>
+ <translation>Etichetta Nome</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="390"/>
+ <source>Time elapsed</source>
+ <translation>Tempo trascorso</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="393"/>
+ <source>00:00</source>
+ <translation>00:00</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="57"/>
+ <source>Hangup</source>
+ <translation>Aggancia</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="203"/>
+ <source>Mute Video</source>
+ <translation>Muta Video</translation>
+ </message>
+</context>
+<context>
+ <name>VideoView</name>
+ <message>
+ <location filename="../videoview.cpp" line="271"/>
+ <source>Share entire screen</source>
+ <translation>Condividi l'intero schermo</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="274"/>
+ <source>Share screen area</source>
+ <translation>Condividi l'area dello schermo</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="281"/>
+ <source>Share file</source>
+ <translation>Condividi file</translation>
+ </message>
+</context>
+</TS>
\ No newline at end of file
diff --git a/translations/ring_client_windows_ja.ts b/translations/ring_client_windows_ja.ts
new file mode 100644
index 0000000..93715fc
--- /dev/null
+++ b/translations/ring_client_windows_ja.ts
@@ -0,0 +1,1592 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="ja" version="2.0">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../aboutdialog.ui" line="435"/>
+ <location filename="../aboutdialog.ui" line="465"/>
+ <source>About</source>
+ <translation>アプリについて</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="462"/>
+ <source>about button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="478"/>
+ <source>credits button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="481"/>
+ <source>Credits</source>
+ <translation>クレジット</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="547"/>
+ <source>Free as in Freedom</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="563"/>
+ <source>The Microsoft Windows client for Jami.
+Jami is a secured and distributed communication software.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="32"/>
+ <source>version</source>
+ <translation>バージョン</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="39"/>
+ <source>Created by:</source>
+ <translation>作成者:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="73"/>
+ <source>Artwork by:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="77"/>
+ <source>Based on the SFLPhone project</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AccountItemDelegate</name>
+ <message>
+ <location filename="../accountitemdelegate.cpp" line="91"/>
+ <source>Add Account</source>
+ <translation>アカウントを追加</translation>
+ </message>
+</context>
+<context>
+ <name>AdvancedSIPSettingsWidget</name>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="55"/>
+ <source>Call Settings</source>
+ <translation>着信設定</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="102"/>
+ <source>Auto Answer Calls</source>
+ <translation>自動通話応答</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="130"/>
+ <source>Enable Custom Ringtone</source>
+ <translation>カスタム着信音を有効にする</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="191"/>
+ <source>Connectivity</source>
+ <translation>接続性</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="281"/>
+ <source>STUN Address</source>
+ <translation>STUNサーバーアドレス</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="293"/>
+ <source>Use STUN</source>
+ <translation>STUNを使用</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="317"/>
+ <source>Use UPnP</source>
+ <translation>UPnPを使用</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="329"/>
+ <source>Use TURN</source>
+ <translation>TURNを使用</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="359"/>
+ <source>TURN Password</source>
+ <translation>TURNのパスワード</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="391"/>
+ <source>TURN Username</source>
+ <translation>TURNのユーザー名</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="423"/>
+ <source>TURN Address</source>
+ <translation>TURNサーバーアドレス</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="464"/>
+ <source>Media</source>
+ <translation>メディア</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="515"/>
+ <source>Enable Video</source>
+ <translation>ビデオを有効化</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="539"/>
+ <source>Video Codecs</source>
+ <translation>ビデオコーデック</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="692"/>
+ <source>Audio Codecs</source>
+ <translation>音声コーデック</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="142"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation>音声ファイル(*.wav *.ogg *.opus *.mp3 *aiff *wma)</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="151"/>
+ <source>Add a custom ringtone</source>
+ <translation>カスタム着信音を追加</translation>
+ </message>
+</context>
+<context>
+ <name>AdvancedSettingsWidget</name>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="61"/>
+ <source>Call Settings</source>
+ <translation>通話設定</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="108"/>
+ <source>Allow Calls From Untrusted Peers</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="133"/>
+ <source>Auto Answer Calls</source>
+ <translation>自動通話応答</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="161"/>
+ <source>Enable Custom Ringtone</source>
+ <translation>カスタム着信音を有効にする</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="188"/>
+ <source>Add a custom ringtone</source>
+ <translation>カスタム着信音を追加</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="225"/>
+ <source>Name Server</source>
+ <translation>ネームサーバー</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="275"/>
+ <source>Address</source>
+ <translation>アドレス</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="351"/>
+ <source>OpenDHT Configuration</source>
+ <translation>OpenDHT設定</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="398"/>
+ <source>Enable Proxy</source>
+ <translation>プロキシを有効にする</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="454"/>
+ <source>Bootstrap</source>
+ <translation>ブートストラップ</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="530"/>
+ <source>Security</source>
+ <translation>セキュリティ</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="571"/>
+ <source>Private Key Password</source>
+ <translation>秘密鍵のパスワード</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="583"/>
+ <source>User Certificate</source>
+ <translation>ユーザー証明書</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="622"/>
+ <source>Private Key</source>
+ <translation>秘密鍵</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="634"/>
+ <source>CA Certificate</source>
+ <translation>CA証明書</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="766"/>
+ <source>Connectivity</source>
+ <translation>接続性</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="868"/>
+ <source>Use STUN</source>
+ <translation>STUNを使用</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="856"/>
+ <source>STUN Address</source>
+ <translation>STUNサーバーアドレス</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="892"/>
+ <source>Use UPnP</source>
+ <translation>UPnPを使用</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="904"/>
+ <source>Use TURN</source>
+ <translation>TURNを使用</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="934"/>
+ <source>TURN Password</source>
+ <translation>TURNのパスワード</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="966"/>
+ <source>TURN Username</source>
+ <translation>TURNのユーザー名</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="998"/>
+ <source>TURN Address</source>
+ <translation>TURNサーバーアドレス</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1039"/>
+ <source>Media</source>
+ <translation>メディア</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1090"/>
+ <source>Enable Video</source>
+ <translation>ビデオを有効化</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1267"/>
+ <source>Audio Codecs</source>
+ <translation>音声コーデック</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1114"/>
+ <source>Video Codecs</source>
+ <translation>ビデオコーデック</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="181"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation>音声ファイル(*.wav *.ogg *.opus *.mp3 *aiff *wma)</translation>
+ </message>
+</context>
+<context>
+ <name>AnimatedOverlay</name>
+ <message>
+ <location filename="../animatedoverlay.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>BannedItemWidget</name>
+ <message>
+ <location filename="../banneditemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="80"/>
+ <source>name</source>
+ <translation>名前</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="104"/>
+ <source>id</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>CallWidget</name>
+ <message>
+ <location filename="../callwidget.ui" line="184"/>
+ <source>Show conversations</source>
+ <translation>会話を表示</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="187"/>
+ <source>Conversations</source>
+ <translation>会話</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="368"/>
+ <source>Search contact text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="653"/>
+ <source>Jami is free software for universal communication which respects the freedoms and privacy of its users.</source>
+ <translation>Jamiは、世界中のユーザーと繋がることができるユーザーの自由とプライバシーを尊重したフリーソフトウェアです。</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="693"/>
+ <source>
+ This is your ID.
+Copy and share it with your friends!
+ </source>
+ <translation>
+これがあなたのIDです。
+コピーして友達とシェアしましょう!
+</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="806"/>
+ <source>Show ring ID QR code</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="857"/>
+ <source>Share ring ID button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="915"/>
+ <source>Double-click to copy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="956"/>
+ <source>Error while generating QR Code</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1184"/>
+ <location filename="../callwidget.ui" line="1434"/>
+ <source>best name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1208"/>
+ <source>best Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1734"/>
+ <source>Back to homepage button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1943"/>
+ <source>Add to contacts</source>
+ <translation>連絡先に追加</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="202"/>
+ <source>Show invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="205"/>
+ <source>Invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="377"/>
+ <location filename="../callwidget.cpp" line="552"/>
+ <source>Find a new or existing contact</source>
+ <translation>新規・既存の連絡先を検索</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1444"/>
+ <source>Wants to talk to you!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1517"/>
+ <source>Answer incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1589"/>
+ <source>Ignore incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1539"/>
+ <source>Answer</source>
+ <translation>応答</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1617"/>
+ <source>Ignore</source>
+ <translation>無視</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1280"/>
+ <source>Cancel outgoing call</source>
+ <translation>発信をキャンセル</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1305"/>
+ <source>Cancel</source>
+ <translation>キャンセル</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="332"/>
+ <source>Start video call</source>
+ <translation>ビデオ通話を開始</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="343"/>
+ <source>Start audio call</source>
+ <translation>音声通話を開始</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="354"/>
+ <source>Clear conversation</source>
+ <translation>会話履歴を削除</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="361"/>
+ <source>Remove contact</source>
+ <translation>連絡先を削除</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="373"/>
+ <source>Block contact</source>
+ <translation>連絡先をブロック</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="384"/>
+ <source>Copy number</source>
+ <translation>番号をコピー</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="561"/>
+ <source>Search your received invitations</source>
+ <translation>受信した招待を検索</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>Contact me on Jami</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>My Id is : </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="847"/>
+ <source>%1</source>
+ <comment>%1 is the contact username</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="852"/>
+ <source>%1</source>
+ <comment>%1 is the contact unique identifier</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="675"/>
+ <source>Call incoming from %1</source>
+ <translation>%1 から着信</translation>
+ </message>
+</context>
+<context>
+ <name>DeleteAccountDialog</name>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="35"/>
+ <source>Account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="58"/>
+ <source>Do you really want to delete the following account?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="153"/>
+ <source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="235"/>
+ <source>Permanently delete account</source>
+ <translation>アカウントを完全に削除</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="241"/>
+ <source>Delete</source>
+ <translation>削除</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="278"/>
+ <source>Cancel account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="284"/>
+ <source>Cancel</source>
+ <translation>キャンセル</translation>
+ </message>
+</context>
+<context>
+ <name>DeviceItemWidget</name>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="105"/>
+ <source>Device Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="143"/>
+ <source>this device</source>
+ <translation>このデバイス</translation>
+ </message>
+</context>
+<context>
+ <name>InviteButtonsWidget</name>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="83"/>
+ <source>Accept</source>
+ <translation>受け入れ</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="131"/>
+ <source>Refuse</source>
+ <translation>拒否</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="179"/>
+ <source>Block</source>
+ <translation>ブロック</translation>
+ </message>
+</context>
+<context>
+ <name>LinkDeviceDialog</name>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation>ダイアログ</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="62"/>
+ <source>Enter your account password</source>
+ <translation>アカウントのパスワードを入力してください</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="117"/>
+ <source>Password</source>
+ <translation>パスワード</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="184"/>
+ <source>Ok</source>
+ <translation>OK</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="218"/>
+ <source>Cancel</source>
+ <translation>キャンセル</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="279"/>
+ <source>Exporting account</source>
+ <translation>アカウントをエクスポート中</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="402"/>
+ <source>Your PIN is</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="432"/>
+ <source>PIN</source>
+ <translation>PIN</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="477"/>
+ <source>This pin and the account password should be entered in your device within 10 minutes.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="553"/>
+ <source>Close</source>
+ <translation>閉じる</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="34"/>
+ <source>Link Another Device</source>
+ <translation>別のデバイスをリンク</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="96"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="110"/>
+ <source>Something went wrong.
+Please try again later.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="83"/>
+ <source>Settings</source>
+ <translation>設定</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="94"/>
+ <source>Exit</source>
+ <translation>終了</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="111"/>
+ <source>About</source>
+ <translation>アプリについて</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="435"/>
+ <source>Jami</source>
+ <translation>Jami</translation>
+ </message>
+</context>
+<context>
+ <name>NameRegistrationDialog</name>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="35"/>
+ <source>Set Registered Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="163"/>
+ <source>Enter your account password</source>
+ <translation>アカウントのパスワードを入力してください</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="244"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="250"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="256"/>
+ <source>Password</source>
+ <translation>パスワード</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="323"/>
+ <source>Register</source>
+ <translation>登録</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="357"/>
+ <source>Cancel</source>
+ <translation>キャンセル</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="424"/>
+ <source>Registering Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="548"/>
+ <source>Something went wrong</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="618"/>
+ <source>Close</source>
+ <translation>閉じる</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="82"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="85"/>
+ <source>Network error</source>
+ <translation>ネットワークエラー</translation>
+ </message>
+</context>
+<context>
+ <name>NewWizardWidget</name>
+ <message>
+ <location filename="../newwizardwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="141"/>
+ <source>Welcome Label</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="147"/>
+ <source> Welcome to</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="185"/>
+ <source>Welcome Logo</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="239"/>
+ <source>Create Jami account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="245"/>
+ <source>Push button for Jami account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="251"/>
+ <source>Create a Jami account</source>
+ <translation>Jamiアカウントを作成</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="282"/>
+ <source>Link device button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="288"/>
+ <source>Push button for device linkage start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="291"/>
+ <source>Link this device to an account</source>
+ <translation>このデバイスをアカウントへリンク</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="328"/>
+ <source>Create Jami SIP account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="334"/>
+ <source>Push button for Jami SIP account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="340"/>
+ <source>Create a SIP account</source>
+ <translation>SIPアカウントを作成</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="405"/>
+ <source>Link this device to an existing account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="469"/>
+ <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">To link this device to another account, you first </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">need to obtain a PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> code. To generate the PIN code:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Account management setting</span><span style=" font-size:14px;"> of a previous device</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choose the </span><span style=" font-size:14px; font-weight:600;">Jami account</span><span style=" font-size:14px;"> you want to use</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Devices</span><span style=" font-size:14px;"> tab</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Select </span><span style=" font-size:14px; font-weight:600;">Add a device</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">You will get the necessary PIN to complete this form. The PIN is only valid for </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutes</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="531"/>
+ <source>Enter your pin:</source>
+ <translation>PINを入力:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="599"/>
+ <source>Or import a file:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="626"/>
+ <source>Link from exported account archive file</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="629"/>
+ <location filename="../newwizardwidget.cpp" line="83"/>
+ <location filename="../newwizardwidget.cpp" line="218"/>
+ <source>(None)</source>
+ <translation>(なし)</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="705"/>
+ <source>Password:</source>
+ <translation>パスワード:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="799"/>
+ <location filename="../newwizardwidget.ui" line="1586"/>
+ <source>Profile</source>
+ <translation>プロフィール</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="953"/>
+ <location filename="../newwizardwidget.ui" line="1767"/>
+ <source>Profile name</source>
+ <translation>プロフィール名</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1027"/>
+ <source>Account</source>
+ <translation>アカウント</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1136"/>
+ <source>Register your username.
+This will reserve the username so that only you can use it.
+Your friends will be able to call you with your usename
+instead of using your ID.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1142"/>
+ <source>Public username checkbox</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1145"/>
+ <source>Checkbox selecting if the user wants a public username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1148"/>
+ <source>Register public username</source>
+ <translation>公開ユーザー名を登録</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1367"/>
+ <source>Public username edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1373"/>
+ <source>Choose your username</source>
+ <translation>ユーザー名を選択</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1289"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1295"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1301"/>
+ <location filename="../newwizardwidget.ui" line="2213"/>
+ <source>Password</source>
+ <translation>パスワード</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1211"/>
+ <location filename="../newwizardwidget.ui" line="1217"/>
+ <source>Password confirmation text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1223"/>
+ <source>Confirm password</source>
+ <translation>パスワードの再入力</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1814"/>
+ <source>SIP Account</source>
+ <translation>SIPアカウント</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1973"/>
+ <source>SIP Server edit</source>
+ <translation>SIPサーバーを編集</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1979"/>
+ <source>Server</source>
+ <translation>サーバー</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2045"/>
+ <source>SIP proxy input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2051"/>
+ <source>SIP proxy text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2057"/>
+ <source>Proxy</source>
+ <translation>プロキシ</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2123"/>
+ <source>SIP username input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2129"/>
+ <source>SIP Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2135"/>
+ <source>Username</source>
+ <translation>ユーザー名</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2201"/>
+ <location filename="../newwizardwidget.ui" line="2207"/>
+ <source>SIP Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message utf8="true">
+ <location filename="../newwizardwidget.ui" line="2282"/>
+ <source>Generating your Jami account…</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2356"/>
+ <source>Previous page button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2362"/>
+ <source>push button to access previous page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2365"/>
+ <source>Previous</source>
+ <translation>戻る</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2396"/>
+ <source>Cancel account create/link</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2402"/>
+ <source>push button to cancel account creation or linking</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2405"/>
+ <source>Back</source>
+ <translation>戻る</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2442"/>
+ <source>Next page Button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2448"/>
+ <source>Push button to access next page of wizard</source>
+ <translation>次のページへ進むにはボタンを押してください</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2451"/>
+ <source>Next</source>
+ <translation>次へ</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="75"/>
+ <source>Open File</source>
+ <translation>ファイルを開く</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="77"/>
+ <source>Jami archive files (*.gz); All files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="123"/>
+ <source>Your account needs to be migrated. Enter your password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="419"/>
+ <source>Migrating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="412"/>
+ <source>Importing account archive...</source>
+ <translation>アカウントのアーカイブをインポート中...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="404"/>
+ <source>Generating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="422"/>
+ <source>Generating your SIP account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="533"/>
+ <source>Error creating account</source>
+ <translation>アカウントの作成中にエラーが発生しました</translation>
+ </message>
+</context>
+<context>
+ <name>PasswordDialog</name>
+ <message>
+ <location filename="../passworddialog.ui" line="32"/>
+ <source>Change Account Password</source>
+ <translation>パスワードの変更</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="97"/>
+ <source>Enter Current Password</source>
+ <translation>現在のパスワードを入力</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="169"/>
+ <source>Enter New Password</source>
+ <translation>新しいパスワードを入力</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="190"/>
+ <source>Confirm New Password</source>
+ <translation>新しいパスワードを再入力</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="247"/>
+ <source>Confirm</source>
+ <translation>確認</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="290"/>
+ <source>Cancel</source>
+ <translation>キャンセル</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="143"/>
+ <source>Current Password Incorrect</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PhotoBoothDialog</name>
+ <message>
+ <location filename="../photoboothdialog.ui" line="14"/>
+ <source>Photobooth</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PhotoboothWidget</name>
+ <message>
+ <location filename="../photoboothwidget.ui" line="20"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.ui" line="120"/>
+ <source>Photobooth display</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="92"/>
+ <source>Choose File</source>
+ <translation>ファイルの選択</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="94"/>
+ <source>Image Files (*.jpg *.jpeg *.png)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PrivateBridging</name>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Choose File</source>
+ <translation>ファイルの選択</translation>
+ </message>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../utils.cpp" line="183"/>
+ <source>No default mail client found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="43"/>
+ <location filename="../deviceitemwidget.cpp" line="85"/>
+ <source>Edit Device Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="44"/>
+ <source>Unlink Device From Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="80"/>
+ <source>Save new device name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.cpp" line="39"/>
+ <source>Add as contact</source>
+ <translation>連絡先を追加</translation>
+ </message>
+</context>
+<context>
+ <name>RingButton</name>
+ <message>
+ <location filename="../ringbutton.ui" line="140"/>
+ <source>Select folder</source>
+ <translation>フォルダを選択</translation>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <location filename="../settingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="141"/>
+ <source>Settings</source>
+ <translation>設定</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="229"/>
+ <source>Account</source>
+ <translation>アカウント</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="267"/>
+ <location filename="../settingswidget.ui" line="503"/>
+ <source>General</source>
+ <translation>全般</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="305"/>
+ <location filename="../settingswidget.ui" line="3416"/>
+ <source>Audio / Video</source>
+ <translation>音声/ビデオ</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="542"/>
+ <source>System</source>
+ <translation>システム</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="610"/>
+ <source>Enable desktop notifications</source>
+ <translation>デスクトップ通知を有効化</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="653"/>
+ <source>Keep minimized on close</source>
+ <translation>ウィンドウを閉じたら最小化して待機する</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="678"/>
+ <source>Download folder</source>
+ <translation>ダウンロードフォルダー</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="811"/>
+ <source>Save in</source>
+ <translation>保存先</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="904"/>
+ <source>Always Recording</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="943"/>
+ <source>Updates</source>
+ <translation>アップデート</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1008"/>
+ <source>Check for updates automatically every</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1032"/>
+ <source>Interval between update checks in days selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1038"/>
+ <source> days</source>
+ <translation>日</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1081"/>
+ <source>Check for updates now button</source>
+ <translation>アップデートの確認ボタン</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1084"/>
+ <source>Check for updates now</source>
+ <translation>今すぐアップデートを確認</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3027"/>
+ <source>Password</source>
+ <translation>パスワード</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1418"/>
+ <location filename="../settingswidget.ui" line="2729"/>
+ <source>Enable</source>
+ <translation>有効化</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="607"/>
+ <source>toggle enable notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="650"/>
+ <source>Toggle keep minimized on close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="764"/>
+ <source>Call Recordings</source>
+ <translation>通話の録音</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1005"/>
+ <source>Toggle automatic updates</source>
+ <translation>自動アップデートの切り替え</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1231"/>
+ <source>Jami Account</source>
+ <translation>Jamiアカウント</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1453"/>
+ <location filename="../settingswidget.ui" line="2761"/>
+ <source>Profile</source>
+ <translation>プロフィール</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1567"/>
+ <location filename="../settingswidget.ui" line="2875"/>
+ <source>Identity</source>
+ <translation>ID</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1614"/>
+ <source>Id</source>
+ <translation>ID</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1673"/>
+ <source>Registered name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1721"/>
+ <source>Type here to register a username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1755"/>
+ <source>Register</source>
+ <translation>登録</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1827"/>
+ <source>Change Password</source>
+ <translation>パスワードの変更</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1868"/>
+ <source>Export Account</source>
+ <translation>アカウントのエクスポート</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1909"/>
+ <location filename="../settingswidget.ui" line="3089"/>
+ <source>Delete Account</source>
+ <translation>アカウントの削除</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1973"/>
+ <source>Linked Devices</source>
+ <translation>リンクされたデバイス</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2078"/>
+ <source>Link Another Device</source>
+ <translation>別のデバイスをリンク</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2142"/>
+ <source>Banned Contacts</source>
+ <translation>禁止された連絡先</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3788"/>
+ <source>Format</source>
+ <translation>フォーマット</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3831"/>
+ <source>Video device framerate selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3967"/>
+ <source>Preview unavailable</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2359"/>
+ <location filename="../settingswidget.ui" line="3187"/>
+ <source>Advanced Account Settings</source>
+ <translation>アカウントの拡張設定</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2554"/>
+ <source>SIP Account</source>
+ <translation>SIPアカウント</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2925"/>
+ <source>Username</source>
+ <translation>ユーザー名</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2958"/>
+ <source>Hostname</source>
+ <translation>ホスト名</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2991"/>
+ <source>Proxy</source>
+ <translation>プロキシ</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3461"/>
+ <source>Audio</source>
+ <translation>音声</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3511"/>
+ <source>Microphone</source>
+ <translation>マイク</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3551"/>
+ <source>Audio input device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3585"/>
+ <source>Output Device</source>
+ <translation>出力デバイス</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3625"/>
+ <source>Choose the output device</source>
+ <translation>出力デバイスの選択</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3682"/>
+ <source>Video</source>
+ <translation>動画</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3720"/>
+ <source>Device</source>
+ <translation>デバイス</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3766"/>
+ <source>Video device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="459"/>
+ <source>A registered name should not have any spaces and must be at least three letters long</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="466"/>
+ <source>This name is already taken</source>
+ <translation>この名前はすでに使用されています</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="92"/>
+ <location filename="../settingswidget.cpp" line="110"/>
+ <source>Enter an alias</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="473"/>
+ <source>Register this name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="550"/>
+ <source>Remove Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="551"/>
+ <source>Enter this account's password to confirm the removal of this device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="558"/>
+ <source>Are you sure you wish to remove this device?</source>
+ <translation>デバイスを取り除いてもよろしいですか?</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="589"/>
+ <source>Export Account Here</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="887"/>
+ <source>Select A Folder For Your Downloads</source>
+ <translation>ダウンロードフォルダーの選択</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="904"/>
+ <source>Select A Folder For Your Recordings</source>
+ <translation>記録フォルダーの選択</translation>
+ </message>
+</context>
+<context>
+ <name>VideoOverlay</name>
+ <message>
+ <location filename="../videooverlay.ui" line="419"/>
+ <source>Call on Hold</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="89"/>
+ <source>Hold / Unhold</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="124"/>
+ <source>Chat</source>
+ <translation>チャット</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="162"/>
+ <source>Mute Mic</source>
+ <translation>マイクをミュート</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="244"/>
+ <source>Record call</source>
+ <translation>通話を録画</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="325"/>
+ <source>Name label</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="390"/>
+ <source>Time elapsed</source>
+ <translation>経過時間</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="393"/>
+ <source>00:00</source>
+ <translation>00:00</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="57"/>
+ <source>Hangup</source>
+ <translation>受話</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="203"/>
+ <source>Mute Video</source>
+ <translation>動画オフ</translation>
+ </message>
+</context>
+<context>
+ <name>VideoView</name>
+ <message>
+ <location filename="../videoview.cpp" line="271"/>
+ <source>Share entire screen</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="274"/>
+ <source>Share screen area</source>
+ <translation>画面を共有</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="281"/>
+ <source>Share file</source>
+ <translation>ファイルを共有</translation>
+ </message>
+</context>
+</TS>
\ No newline at end of file
diff --git a/translations/ring_client_windows_ko_KR.ts b/translations/ring_client_windows_ko_KR.ts
new file mode 100644
index 0000000..48195e9
--- /dev/null
+++ b/translations/ring_client_windows_ko_KR.ts
@@ -0,0 +1,1589 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="ko_KR" version="2.0">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../aboutdialog.ui" line="435"/>
+ <location filename="../aboutdialog.ui" line="465"/>
+ <source>About</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="462"/>
+ <source>about button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="478"/>
+ <source>credits button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="481"/>
+ <source>Credits</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="547"/>
+ <source>Free as in Freedom</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="563"/>
+ <source>The Microsoft Windows client for Jami.
+Jami is a secured and distributed communication software.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="32"/>
+ <source>version</source>
+ <translation>버전</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="39"/>
+ <source>Created by:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="73"/>
+ <source>Artwork by:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="77"/>
+ <source>Based on the SFLPhone project</source>
+ <translation>SFLPhone 프로젝트 기반</translation>
+ </message>
+</context>
+<context>
+ <name>AccountItemDelegate</name>
+ <message>
+ <location filename="../accountitemdelegate.cpp" line="91"/>
+ <source>Add Account</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSIPSettingsWidget</name>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>서식</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="55"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="102"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="130"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="191"/>
+ <source>Connectivity</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="281"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="293"/>
+ <source>Use STUN</source>
+ <translation>STUN 사용</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="317"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="329"/>
+ <source>Use TURN</source>
+ <translation>TURN 사용</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="359"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="391"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="423"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="464"/>
+ <source>Media</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="515"/>
+ <source>Enable Video</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="539"/>
+ <source>Video Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="692"/>
+ <source>Audio Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="142"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="151"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSettingsWidget</name>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>서식</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="61"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="108"/>
+ <source>Allow Calls From Untrusted Peers</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="133"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="161"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="188"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="225"/>
+ <source>Name Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="275"/>
+ <source>Address</source>
+ <translation>주소</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="351"/>
+ <source>OpenDHT Configuration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="398"/>
+ <source>Enable Proxy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="454"/>
+ <source>Bootstrap</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="530"/>
+ <source>Security</source>
+ <translation>보안</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="571"/>
+ <source>Private Key Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="583"/>
+ <source>User Certificate</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="622"/>
+ <source>Private Key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="634"/>
+ <source>CA Certificate</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="766"/>
+ <source>Connectivity</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="868"/>
+ <source>Use STUN</source>
+ <translation>STUN 사용</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="856"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="892"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="904"/>
+ <source>Use TURN</source>
+ <translation>TURN 사용</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="934"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="966"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="998"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1039"/>
+ <source>Media</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1090"/>
+ <source>Enable Video</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1267"/>
+ <source>Audio Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1114"/>
+ <source>Video Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="181"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AnimatedOverlay</name>
+ <message>
+ <location filename="../animatedoverlay.ui" line="14"/>
+ <source>Form</source>
+ <translation>서식</translation>
+ </message>
+</context>
+<context>
+ <name>BannedItemWidget</name>
+ <message>
+ <location filename="../banneditemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>서식</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="80"/>
+ <source>name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="104"/>
+ <source>id</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>CallWidget</name>
+ <message>
+ <location filename="../callwidget.ui" line="184"/>
+ <source>Show conversations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="187"/>
+ <source>Conversations</source>
+ <translation>대화</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="368"/>
+ <source>Search contact text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="653"/>
+ <source>Jami is free software for universal communication which respects the freedoms and privacy of its users.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="693"/>
+ <source>
+ This is your ID.
+Copy and share it with your friends!
+ </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="806"/>
+ <source>Show ring ID QR code</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="857"/>
+ <source>Share ring ID button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="915"/>
+ <source>Double-click to copy</source>
+ <translation>더블클릭으로 복사하기</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="956"/>
+ <source>Error while generating QR Code</source>
+ <translation>QR 생성 중 오류</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1184"/>
+ <location filename="../callwidget.ui" line="1434"/>
+ <source>best name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1208"/>
+ <source>best Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1734"/>
+ <source>Back to homepage button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1943"/>
+ <source>Add to contacts</source>
+ <translation>연락처에 추가하기</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="202"/>
+ <source>Show invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="205"/>
+ <source>Invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="377"/>
+ <location filename="../callwidget.cpp" line="552"/>
+ <source>Find a new or existing contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1444"/>
+ <source>Wants to talk to you!</source>
+ <translation>당신과 이야기하고 싶어합니다!</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1517"/>
+ <source>Answer incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1589"/>
+ <source>Ignore incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1539"/>
+ <source>Answer</source>
+ <translation>응답</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1617"/>
+ <source>Ignore</source>
+ <translation>무시</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1280"/>
+ <source>Cancel outgoing call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1305"/>
+ <source>Cancel</source>
+ <translation>취소</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="332"/>
+ <source>Start video call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="343"/>
+ <source>Start audio call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="354"/>
+ <source>Clear conversation</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="361"/>
+ <source>Remove contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="373"/>
+ <source>Block contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="384"/>
+ <source>Copy number</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="561"/>
+ <source>Search your received invitations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>Contact me on Jami</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>My Id is : </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="847"/>
+ <source>%1</source>
+ <comment>%1 is the contact username</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="852"/>
+ <source>%1</source>
+ <comment>%1 is the contact unique identifier</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="675"/>
+ <source>Call incoming from %1</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>DeleteAccountDialog</name>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="35"/>
+ <source>Account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="58"/>
+ <source>Do you really want to delete the following account?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="153"/>
+ <source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="235"/>
+ <source>Permanently delete account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="241"/>
+ <source>Delete</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="278"/>
+ <source>Cancel account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="284"/>
+ <source>Cancel</source>
+ <translation>취소</translation>
+ </message>
+</context>
+<context>
+ <name>DeviceItemWidget</name>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>서식</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="105"/>
+ <source>Device Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="143"/>
+ <source>this device</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>InviteButtonsWidget</name>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="83"/>
+ <source>Accept</source>
+ <translation>수락</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="131"/>
+ <source>Refuse</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="179"/>
+ <source>Block</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>LinkDeviceDialog</name>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="62"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="117"/>
+ <source>Password</source>
+ <translation>암호</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="184"/>
+ <source>Ok</source>
+ <translation>확인</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="218"/>
+ <source>Cancel</source>
+ <translation>취소</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="279"/>
+ <source>Exporting account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="402"/>
+ <source>Your PIN is</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="432"/>
+ <source>PIN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="477"/>
+ <source>This pin and the account password should be entered in your device within 10 minutes.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="553"/>
+ <source>Close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="34"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="96"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="110"/>
+ <source>Something went wrong.
+Please try again later.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="83"/>
+ <source>Settings</source>
+ <translation>설정</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="94"/>
+ <source>Exit</source>
+ <translation>종료</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="111"/>
+ <source>About</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="435"/>
+ <source>Jami</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>NameRegistrationDialog</name>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="35"/>
+ <source>Set Registered Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="163"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="244"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="250"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="256"/>
+ <source>Password</source>
+ <translation>암호</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="323"/>
+ <source>Register</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="357"/>
+ <source>Cancel</source>
+ <translation>취소</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="424"/>
+ <source>Registering Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="548"/>
+ <source>Something went wrong</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="618"/>
+ <source>Close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="82"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="85"/>
+ <source>Network error</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>NewWizardWidget</name>
+ <message>
+ <location filename="../newwizardwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>서식</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="141"/>
+ <source>Welcome Label</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="147"/>
+ <source> Welcome to</source>
+ <translation>환영합니다</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="185"/>
+ <source>Welcome Logo</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="239"/>
+ <source>Create Jami account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="245"/>
+ <source>Push button for Jami account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="251"/>
+ <source>Create a Jami account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="282"/>
+ <source>Link device button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="288"/>
+ <source>Push button for device linkage start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="291"/>
+ <source>Link this device to an account</source>
+ <translation>이 장치를 계정에 연결하기</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="328"/>
+ <source>Create Jami SIP account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="334"/>
+ <source>Push button for Jami SIP account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="340"/>
+ <source>Create a SIP account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="405"/>
+ <source>Link this device to an existing account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="469"/>
+ <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">To link this device to another account, you first </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">need to obtain a PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> code. To generate the PIN code:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Account management setting</span><span style=" font-size:14px;"> of a previous device</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choose the </span><span style=" font-size:14px; font-weight:600;">Jami account</span><span style=" font-size:14px;"> you want to use</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Devices</span><span style=" font-size:14px;"> tab</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Select </span><span style=" font-size:14px; font-weight:600;">Add a device</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">You will get the necessary PIN to complete this form. The PIN is only valid for </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutes</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="531"/>
+ <source>Enter your pin:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="599"/>
+ <source>Or import a file:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="626"/>
+ <source>Link from exported account archive file</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="629"/>
+ <location filename="../newwizardwidget.cpp" line="83"/>
+ <location filename="../newwizardwidget.cpp" line="218"/>
+ <source>(None)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="705"/>
+ <source>Password:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="799"/>
+ <location filename="../newwizardwidget.ui" line="1586"/>
+ <source>Profile</source>
+ <translation>프로필</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="953"/>
+ <location filename="../newwizardwidget.ui" line="1767"/>
+ <source>Profile name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1027"/>
+ <source>Account</source>
+ <translation>계정</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1136"/>
+ <source>Register your username.
+This will reserve the username so that only you can use it.
+Your friends will be able to call you with your usename
+instead of using your ID.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1142"/>
+ <source>Public username checkbox</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1145"/>
+ <source>Checkbox selecting if the user wants a public username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1148"/>
+ <source>Register public username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1367"/>
+ <source>Public username edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1373"/>
+ <source>Choose your username</source>
+ <translation>사용자명 선택</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1289"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1295"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1301"/>
+ <location filename="../newwizardwidget.ui" line="2213"/>
+ <source>Password</source>
+ <translation>암호</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1211"/>
+ <location filename="../newwizardwidget.ui" line="1217"/>
+ <source>Password confirmation text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1223"/>
+ <source>Confirm password</source>
+ <translation>암호 확인</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1814"/>
+ <source>SIP Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1973"/>
+ <source>SIP Server edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1979"/>
+ <source>Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2045"/>
+ <source>SIP proxy input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2051"/>
+ <source>SIP proxy text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2057"/>
+ <source>Proxy</source>
+ <translation>프록시</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2123"/>
+ <source>SIP username input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2129"/>
+ <source>SIP Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2135"/>
+ <source>Username</source>
+ <translation>사용자명</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2201"/>
+ <location filename="../newwizardwidget.ui" line="2207"/>
+ <source>SIP Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message utf8="true">
+ <location filename="../newwizardwidget.ui" line="2282"/>
+ <source>Generating your Jami account…</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2356"/>
+ <source>Previous page button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2362"/>
+ <source>push button to access previous page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2365"/>
+ <source>Previous</source>
+ <translation>이전</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2396"/>
+ <source>Cancel account create/link</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2402"/>
+ <source>push button to cancel account creation or linking</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2405"/>
+ <source>Back</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2442"/>
+ <source>Next page Button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2448"/>
+ <source>Push button to access next page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2451"/>
+ <source>Next</source>
+ <translation>다음</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="75"/>
+ <source>Open File</source>
+ <translation>파일 열기</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="77"/>
+ <source>Jami archive files (*.gz); All files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="123"/>
+ <source>Your account needs to be migrated. Enter your password.</source>
+ <translation>당신의 계정은 이전이 필요합니다. 암호를 입력하세요.</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="419"/>
+ <source>Migrating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="412"/>
+ <source>Importing account archive...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="404"/>
+ <source>Generating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="422"/>
+ <source>Generating your SIP account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="533"/>
+ <source>Error creating account</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PasswordDialog</name>
+ <message>
+ <location filename="../passworddialog.ui" line="32"/>
+ <source>Change Account Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="97"/>
+ <source>Enter Current Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="169"/>
+ <source>Enter New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="190"/>
+ <source>Confirm New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="247"/>
+ <source>Confirm</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="290"/>
+ <source>Cancel</source>
+ <translation>취소</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="143"/>
+ <source>Current Password Incorrect</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PhotoBoothDialog</name>
+ <message>
+ <location filename="../photoboothdialog.ui" line="14"/>
+ <source>Photobooth</source>
+ <translation>포토부스</translation>
+ </message>
+</context>
+<context>
+ <name>PhotoboothWidget</name>
+ <message>
+ <location filename="../photoboothwidget.ui" line="20"/>
+ <source>Form</source>
+ <translation>서식</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.ui" line="120"/>
+ <source>Photobooth display</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="92"/>
+ <source>Choose File</source>
+ <translation>파일 선택하기</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="94"/>
+ <source>Image Files (*.jpg *.jpeg *.png)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PrivateBridging</name>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Choose File</source>
+ <translation>파일 선택하기</translation>
+ </message>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Files (*)</source>
+ <translation>파일들 (*)</translation>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../utils.cpp" line="183"/>
+ <source>No default mail client found</source>
+ <translation>기본 메일 클라이언트를 찾을 수 없습니다.</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="43"/>
+ <location filename="../deviceitemwidget.cpp" line="85"/>
+ <source>Edit Device Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="44"/>
+ <source>Unlink Device From Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="80"/>
+ <source>Save new device name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.cpp" line="39"/>
+ <source>Add as contact</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>RingButton</name>
+ <message>
+ <location filename="../ringbutton.ui" line="140"/>
+ <source>Select folder</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <location filename="../settingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>서식</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="141"/>
+ <source>Settings</source>
+ <translation>설정</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="229"/>
+ <source>Account</source>
+ <translation>계정</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="267"/>
+ <location filename="../settingswidget.ui" line="503"/>
+ <source>General</source>
+ <translation>일반</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="305"/>
+ <location filename="../settingswidget.ui" line="3416"/>
+ <source>Audio / Video</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="542"/>
+ <source>System</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="610"/>
+ <source>Enable desktop notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="653"/>
+ <source>Keep minimized on close</source>
+ <translation>닫을 때 최소화 유지하기</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="678"/>
+ <source>Download folder</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="811"/>
+ <source>Save in</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="904"/>
+ <source>Always Recording</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="943"/>
+ <source>Updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1008"/>
+ <source>Check for updates automatically every</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1032"/>
+ <source>Interval between update checks in days selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1038"/>
+ <source> days</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1081"/>
+ <source>Check for updates now button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1084"/>
+ <source>Check for updates now</source>
+ <translation>지금 업데이트 확인하기</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3027"/>
+ <source>Password</source>
+ <translation>암호</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1418"/>
+ <location filename="../settingswidget.ui" line="2729"/>
+ <source>Enable</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="607"/>
+ <source>toggle enable notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="650"/>
+ <source>Toggle keep minimized on close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="764"/>
+ <source>Call Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1005"/>
+ <source>Toggle automatic updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1231"/>
+ <source>Jami Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1453"/>
+ <location filename="../settingswidget.ui" line="2761"/>
+ <source>Profile</source>
+ <translation>프로필</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1567"/>
+ <location filename="../settingswidget.ui" line="2875"/>
+ <source>Identity</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1614"/>
+ <source>Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1673"/>
+ <source>Registered name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1721"/>
+ <source>Type here to register a username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1755"/>
+ <source>Register</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1827"/>
+ <source>Change Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1868"/>
+ <source>Export Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1909"/>
+ <location filename="../settingswidget.ui" line="3089"/>
+ <source>Delete Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1973"/>
+ <source>Linked Devices</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2078"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2142"/>
+ <source>Banned Contacts</source>
+ <translation>차단한 연락처</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3788"/>
+ <source>Format</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3831"/>
+ <source>Video device framerate selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3967"/>
+ <source>Preview unavailable</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2359"/>
+ <location filename="../settingswidget.ui" line="3187"/>
+ <source>Advanced Account Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2554"/>
+ <source>SIP Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2925"/>
+ <source>Username</source>
+ <translation>사용자명</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2958"/>
+ <source>Hostname</source>
+ <translation>호스트명</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2991"/>
+ <source>Proxy</source>
+ <translation>프록시</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3461"/>
+ <source>Audio</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3511"/>
+ <source>Microphone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3551"/>
+ <source>Audio input device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3585"/>
+ <source>Output Device</source>
+ <translation>출력 장치</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3625"/>
+ <source>Choose the output device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3682"/>
+ <source>Video</source>
+ <translation>비디오</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3720"/>
+ <source>Device</source>
+ <translation>장치</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3766"/>
+ <source>Video device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="459"/>
+ <source>A registered name should not have any spaces and must be at least three letters long</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="466"/>
+ <source>This name is already taken</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="92"/>
+ <location filename="../settingswidget.cpp" line="110"/>
+ <source>Enter an alias</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="473"/>
+ <source>Register this name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="550"/>
+ <source>Remove Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="551"/>
+ <source>Enter this account's password to confirm the removal of this device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="558"/>
+ <source>Are you sure you wish to remove this device?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="589"/>
+ <source>Export Account Here</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="887"/>
+ <source>Select A Folder For Your Downloads</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="904"/>
+ <source>Select A Folder For Your Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>VideoOverlay</name>
+ <message>
+ <location filename="../videooverlay.ui" line="419"/>
+ <source>Call on Hold</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="89"/>
+ <source>Hold / Unhold</source>
+ <translation>대기 / 대기해제</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="124"/>
+ <source>Chat</source>
+ <translation>대화하기</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="162"/>
+ <source>Mute Mic</source>
+ <translation>마이크 끄기</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="244"/>
+ <source>Record call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="325"/>
+ <source>Name label</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="390"/>
+ <source>Time elapsed</source>
+ <translation>경과한 시간</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="393"/>
+ <source>00:00</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="57"/>
+ <source>Hangup</source>
+ <translation>통화종료</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="203"/>
+ <source>Mute Video</source>
+ <translation>비디오 숨기기</translation>
+ </message>
+</context>
+<context>
+ <name>VideoView</name>
+ <message>
+ <location filename="../videoview.cpp" line="271"/>
+ <source>Share entire screen</source>
+ <translation>전체화면 공유하기</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="274"/>
+ <source>Share screen area</source>
+ <translation>화면 영역 공유하기</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="281"/>
+ <source>Share file</source>
+ <translation>파일 공유하기</translation>
+ </message>
+</context>
+</TS>
\ No newline at end of file
diff --git a/translations/ring_client_windows_lt.ts b/translations/ring_client_windows_lt.ts
new file mode 100644
index 0000000..b5eeca8
--- /dev/null
+++ b/translations/ring_client_windows_lt.ts
@@ -0,0 +1,1606 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="lt" version="2.0">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../aboutdialog.ui" line="435"/>
+ <location filename="../aboutdialog.ui" line="465"/>
+ <source>About</source>
+ <translation>Apie</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="462"/>
+ <source>about button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="478"/>
+ <source>credits button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="481"/>
+ <source>Credits</source>
+ <translation>Padėkos</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="547"/>
+ <source>Free as in Freedom</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="563"/>
+ <source>The Microsoft Windows client for Jami.
+Jami is a secured and distributed communication software.</source>
+ <translation>Microsoft Windows kliento programa skirta Jami.
+Jami yra apsaugota ir paskirstytoji bendravimo programinė įranga.</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="32"/>
+ <source>version</source>
+ <translation>versija</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="39"/>
+ <source>Created by:</source>
+ <translation>Sukūrė:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="73"/>
+ <source>Artwork by:</source>
+ <translation>Apipavidalino:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="77"/>
+ <source>Based on the SFLPhone project</source>
+ <translation>Pagrįsta SFLPhone projektu</translation>
+ </message>
+</context>
+<context>
+ <name>AccountItemDelegate</name>
+ <message>
+ <location filename="../accountitemdelegate.cpp" line="91"/>
+ <source>Add Account</source>
+ <translation>Pridėti paskyrą</translation>
+ </message>
+</context>
+<context>
+ <name>AdvancedSIPSettingsWidget</name>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Forma</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="55"/>
+ <source>Call Settings</source>
+ <translation>Skambučio nustatymai</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="102"/>
+ <source>Auto Answer Calls</source>
+ <translation>Automatiškai atsiliepti į skambučius</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="130"/>
+ <source>Enable Custom Ringtone</source>
+ <translation>Įjungti tinkintą skambučio melodiją</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="191"/>
+ <source>Connectivity</source>
+ <translation>Jungiamumas</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="281"/>
+ <source>STUN Address</source>
+ <translation>STUN adresas</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="293"/>
+ <source>Use STUN</source>
+ <translation>Naudoti STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="317"/>
+ <source>Use UPnP</source>
+ <translation>Naudoti UPnP</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="329"/>
+ <source>Use TURN</source>
+ <translation>Naudoti TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="359"/>
+ <source>TURN Password</source>
+ <translation>TURN slaptažodis</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="391"/>
+ <source>TURN Username</source>
+ <translation>TURN naudotojo vardas</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="423"/>
+ <source>TURN Address</source>
+ <translation>TURN adresas</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="464"/>
+ <source>Media</source>
+ <translation>Medija</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="515"/>
+ <source>Enable Video</source>
+ <translation>Įjungti vaizdą</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="539"/>
+ <source>Video Codecs</source>
+ <translation>Vaizdo kodekai</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="692"/>
+ <source>Audio Codecs</source>
+ <translation>Garso kodekai</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="142"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation>Garso failai (*.wav *.ogg *.opus *.mp3 *aiff *wma)</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="151"/>
+ <source>Add a custom ringtone</source>
+ <translation>Pridėti tinkintą skambučio melodiją</translation>
+ </message>
+</context>
+<context>
+ <name>AdvancedSettingsWidget</name>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Forma</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="61"/>
+ <source>Call Settings</source>
+ <translation>Skambučio nustatymai</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="108"/>
+ <source>Allow Calls From Untrusted Peers</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="133"/>
+ <source>Auto Answer Calls</source>
+ <translation>Automatiškai atsiliepti į skambučius</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="161"/>
+ <source>Enable Custom Ringtone</source>
+ <translation>Įjungti tinkintą skambučio melodiją</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="188"/>
+ <source>Add a custom ringtone</source>
+ <translation>Pridėti tinkintą skambučio melodiją</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="225"/>
+ <source>Name Server</source>
+ <translation>Vardų serveris</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="275"/>
+ <source>Address</source>
+ <translation>Adresas</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="351"/>
+ <source>OpenDHT Configuration</source>
+ <translation>OpenDHT konfigūracija</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="398"/>
+ <source>Enable Proxy</source>
+ <translation>Įjungti įgaliotąjį serverį</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="454"/>
+ <source>Bootstrap</source>
+ <translation>Pradinė įkeltis</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="530"/>
+ <source>Security</source>
+ <translation>Saugumas</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="571"/>
+ <source>Private Key Password</source>
+ <translation>Privačiojo rakto slaptažodis</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="583"/>
+ <source>User Certificate</source>
+ <translation>Naudotojo liudijimas</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="622"/>
+ <source>Private Key</source>
+ <translation>Privatusis raktas</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="634"/>
+ <source>CA Certificate</source>
+ <translation>LĮ liudijimas</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="766"/>
+ <source>Connectivity</source>
+ <translation>Jungiamumas</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="868"/>
+ <source>Use STUN</source>
+ <translation>Naudoti STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="856"/>
+ <source>STUN Address</source>
+ <translation>STUN adresas</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="892"/>
+ <source>Use UPnP</source>
+ <translation>Naudoti UPnP</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="904"/>
+ <source>Use TURN</source>
+ <translation>Naudoti TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="934"/>
+ <source>TURN Password</source>
+ <translation>TURN slaptažodis</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="966"/>
+ <source>TURN Username</source>
+ <translation>TURN naudotojo vardas</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="998"/>
+ <source>TURN Address</source>
+ <translation>TURN adresas</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1039"/>
+ <source>Media</source>
+ <translation>Medija</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1090"/>
+ <source>Enable Video</source>
+ <translation>Įjungti vaizdą</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1267"/>
+ <source>Audio Codecs</source>
+ <translation>Garso kodekai</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1114"/>
+ <source>Video Codecs</source>
+ <translation>Vaizdo kodekai</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="181"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation>Garso failai (*.wav *.ogg *.opus *.mp3 *aiff *wma)</translation>
+ </message>
+</context>
+<context>
+ <name>AnimatedOverlay</name>
+ <message>
+ <location filename="../animatedoverlay.ui" line="14"/>
+ <source>Form</source>
+ <translation>Forma</translation>
+ </message>
+</context>
+<context>
+ <name>BannedItemWidget</name>
+ <message>
+ <location filename="../banneditemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Forma</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="80"/>
+ <source>name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="104"/>
+ <source>id</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>CallWidget</name>
+ <message>
+ <location filename="../callwidget.ui" line="184"/>
+ <source>Show conversations</source>
+ <translation>Rodyti pokalbius</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="187"/>
+ <source>Conversations</source>
+ <translation>Pokalbiai</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="368"/>
+ <source>Search contact text input</source>
+ <translation>Ieškoti adresato</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="653"/>
+ <source>Jami is free software for universal communication which respects the freedoms and privacy of its users.</source>
+ <translation>Jami yra visuotiniam bendravimui skirta laisva programinė įranga, kuri gerbia savo naudotojų laisves ir privatumą.</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="693"/>
+ <source>
+ This is your ID.
+Copy and share it with your friends!
+ </source>
+ <translation>
+ Tai yra jūsų ID.
+Nukopijuokite jį ir dalinkitės juo su savo draugais!
+ </translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="806"/>
+ <source>Show ring ID QR code</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="857"/>
+ <source>Share ring ID button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="915"/>
+ <source>Double-click to copy</source>
+ <translation>Spustelėkite du kartus, norėdami nukopijuoti</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="956"/>
+ <source>Error while generating QR Code</source>
+ <translation>Klaida, kuriant QR kodą</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1184"/>
+ <location filename="../callwidget.ui" line="1434"/>
+ <source>best name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1208"/>
+ <source>best Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1734"/>
+ <source>Back to homepage button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1943"/>
+ <source>Add to contacts</source>
+ <translation>Pridėti prie adresatų</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="202"/>
+ <source>Show invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="205"/>
+ <source>Invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="377"/>
+ <location filename="../callwidget.cpp" line="552"/>
+ <source>Find a new or existing contact</source>
+ <translation>Rasti naują ar esamą adresatą</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1444"/>
+ <source>Wants to talk to you!</source>
+ <translation>Nori su jumis pakalbėti!</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1517"/>
+ <source>Answer incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1589"/>
+ <source>Ignore incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1539"/>
+ <source>Answer</source>
+ <translation>Atsiliepti</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1617"/>
+ <source>Ignore</source>
+ <translation>Nepaisyti</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1280"/>
+ <source>Cancel outgoing call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1305"/>
+ <source>Cancel</source>
+ <translation>Atsisakyti</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="332"/>
+ <source>Start video call</source>
+ <translation>Pradėti vaizdo skambutį</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="343"/>
+ <source>Start audio call</source>
+ <translation>Pradėti garso skambutį</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="354"/>
+ <source>Clear conversation</source>
+ <translation>Išvalyti pokalbį</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="361"/>
+ <source>Remove contact</source>
+ <translation>Šalinti adresatą</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="373"/>
+ <source>Block contact</source>
+ <translation>Užblokuoti adresatą</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="384"/>
+ <source>Copy number</source>
+ <translation>Kopijuoti numerį</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="561"/>
+ <source>Search your received invitations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>Contact me on Jami</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>My Id is : </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="847"/>
+ <source>%1</source>
+ <comment>%1 is the contact username</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="852"/>
+ <source>%1</source>
+ <comment>%1 is the contact unique identifier</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="675"/>
+ <source>Call incoming from %1</source>
+ <translation>Gaunamasis skambutis nuo %1</translation>
+ </message>
+</context>
+<context>
+ <name>DeleteAccountDialog</name>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="35"/>
+ <source>Account deletion</source>
+ <translation>Paskyros ištrynimas</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="58"/>
+ <source>Do you really want to delete the following account?</source>
+ <translation>Ar tikrai norite ištrinti šią paskyrą?</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="153"/>
+ <source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
+ <translation>Jeigu ši paskyra nebuvo eksportuota ar pridėta į kitą įrenginį, ji bus negrįžtamai prarasta.</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="235"/>
+ <source>Permanently delete account</source>
+ <translation>Ištrinti paskyrą visiems laikams</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="241"/>
+ <source>Delete</source>
+ <translation>Ištrinti</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="278"/>
+ <source>Cancel account deletion</source>
+ <translation>Atsisakyti paskyros ištrynimo</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="284"/>
+ <source>Cancel</source>
+ <translation>Atsisakyti</translation>
+ </message>
+</context>
+<context>
+ <name>DeviceItemWidget</name>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Forma</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="105"/>
+ <source>Device Id</source>
+ <translation>Įrenginio ID</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="143"/>
+ <source>this device</source>
+ <translation>šis įrenginys</translation>
+ </message>
+</context>
+<context>
+ <name>InviteButtonsWidget</name>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="83"/>
+ <source>Accept</source>
+ <translation>Priimti</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="131"/>
+ <source>Refuse</source>
+ <translation>Atmesti</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="179"/>
+ <source>Block</source>
+ <translation>Užblokuoti</translation>
+ </message>
+</context>
+<context>
+ <name>LinkDeviceDialog</name>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation>Dialogas</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="62"/>
+ <source>Enter your account password</source>
+ <translation>Įveskite savo paskyros slaptažodį</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="117"/>
+ <source>Password</source>
+ <translation>Slaptažodis</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="184"/>
+ <source>Ok</source>
+ <translation>Gerai</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="218"/>
+ <source>Cancel</source>
+ <translation>Atsisakyti</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="279"/>
+ <source>Exporting account</source>
+ <translation>Eksportuojama paskyra</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="402"/>
+ <source>Your PIN is</source>
+ <translation>Jūsų PIN yra</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="432"/>
+ <source>PIN</source>
+ <translation>PIN</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="477"/>
+ <source>This pin and the account password should be entered in your device within 10 minutes.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="553"/>
+ <source>Close</source>
+ <translation>Užverti</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="34"/>
+ <source>Link Another Device</source>
+ <translation>Susieti kitą įrenginį</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="96"/>
+ <source>Incorrect password</source>
+ <translation>Neteisingas slaptažodis</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="110"/>
+ <source>Something went wrong.
+Please try again later.</source>
+ <translation>Kažkas nutiko.
+Vėliau bandykite dar kartą.</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="83"/>
+ <source>Settings</source>
+ <translation>Nustatymai</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="94"/>
+ <source>Exit</source>
+ <translation>Išeiti</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="111"/>
+ <source>About</source>
+ <translation>Apie</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="435"/>
+ <source>Jami</source>
+ <translation>Jami</translation>
+ </message>
+</context>
+<context>
+ <name>NameRegistrationDialog</name>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="35"/>
+ <source>Set Registered Name</source>
+ <translation>Nustatyti registruotą vardą</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="163"/>
+ <source>Enter your account password</source>
+ <translation>Įveskite savo paskyros slaptažodį</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="244"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="250"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="256"/>
+ <source>Password</source>
+ <translation>Slaptažodis</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="323"/>
+ <source>Register</source>
+ <translation>Registruoti</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="357"/>
+ <source>Cancel</source>
+ <translation>Atsisakyti</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="424"/>
+ <source>Registering Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="548"/>
+ <source>Something went wrong</source>
+ <translation>Kažkas nutiko</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="618"/>
+ <source>Close</source>
+ <translation>Užverti</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="82"/>
+ <source>Incorrect password</source>
+ <translation>Neteisingas slaptažodis</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="85"/>
+ <source>Network error</source>
+ <translation>Tinklo klaida</translation>
+ </message>
+</context>
+<context>
+ <name>NewWizardWidget</name>
+ <message>
+ <location filename="../newwizardwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Forma</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="141"/>
+ <source>Welcome Label</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="147"/>
+ <source> Welcome to</source>
+ <translation> Sveiki atvykę į</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="185"/>
+ <source>Welcome Logo</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="239"/>
+ <source>Create Jami account button</source>
+ <translation>Susikurkite Jami paskyrą</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="245"/>
+ <source>Push button for Jami account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="251"/>
+ <source>Create a Jami account</source>
+ <translation>Susikurti Jami paskyrą</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="282"/>
+ <source>Link device button</source>
+ <translation>Susiekite įrenginį</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="288"/>
+ <source>Push button for device linkage start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="291"/>
+ <source>Link this device to an account</source>
+ <translation>Susieti šį įrenginį su paskyra</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="328"/>
+ <source>Create Jami SIP account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="334"/>
+ <source>Push button for Jami SIP account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="340"/>
+ <source>Create a SIP account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="405"/>
+ <source>Link this device to an existing account</source>
+ <translation>Susieti šį įrenginį su esama paskyra</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="469"/>
+ <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">To link this device to another account, you first </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">need to obtain a PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> code. To generate the PIN code:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Account management setting</span><span style=" font-size:14px;"> of a previous device</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choose the </span><span style=" font-size:14px; font-weight:600;">Jami account</span><span style=" font-size:14px;"> you want to use</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Devices</span><span style=" font-size:14px;"> tab</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Select </span><span style=" font-size:14px; font-weight:600;">Add a device</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">You will get the necessary PIN to complete this form. The PIN is only valid for </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutes</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></source>
+ <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">Norėdami susieti šį įrenginį su kita paskyra, iš pradžių, </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">turite gauti PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> kodą. Norėdami generuoti PIN kodą:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Ankstesniajame įrenginyje pereikite į </span><span style=" font-size:14px; font-weight:600;">paskyros tvarkymo nustatymus</span><span style=" font-size:14px;"></span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Pasirinkite norimą naudoti </span><span style=" font-size:14px; font-weight:600;">Jami paskyrą</span><span style=" font-size:14px;"></span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Pereikite į </span><span style=" font-size:14px; font-weight:600;">Įrenginių</span><span style=" font-size:14px;"> kortelę</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Pasirinkite </span><span style=" font-size:14px; font-weight:600;">Pridėti įrenginį</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">Taip gausite šiai formai reikalingą PIN kodą. PIN galios tik </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minučių</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="531"/>
+ <source>Enter your pin:</source>
+ <translation>Įveskite savo pin:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="599"/>
+ <source>Or import a file:</source>
+ <translation>Arba importuokite failą:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="626"/>
+ <source>Link from exported account archive file</source>
+ <translation>Susieti iš eksportuotos paskyros archyvo failo</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="629"/>
+ <location filename="../newwizardwidget.cpp" line="83"/>
+ <location filename="../newwizardwidget.cpp" line="218"/>
+ <source>(None)</source>
+ <translation>(Nėra)</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="705"/>
+ <source>Password:</source>
+ <translation>Slaptažodis:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="799"/>
+ <location filename="../newwizardwidget.ui" line="1586"/>
+ <source>Profile</source>
+ <translation>Profilis</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="953"/>
+ <location filename="../newwizardwidget.ui" line="1767"/>
+ <source>Profile name</source>
+ <translation>Profilio pavadinimas</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1027"/>
+ <source>Account</source>
+ <translation>Paskyra</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1136"/>
+ <source>Register your username.
+This will reserve the username so that only you can use it.
+Your friends will be able to call you with your usename
+instead of using your ID.</source>
+ <translation>Užregistruokite savo naudotojo vardą.
+Tai rezervuos naudotojo vardą ir tokiu būdu tik jūs
+galėsite jį naudoti. Jūsų draugai galės jums skambinti,
+vietoj jūsų ID naudodami jūsų naudotojo vardą.</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1142"/>
+ <source>Public username checkbox</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1145"/>
+ <source>Checkbox selecting if the user wants a public username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1148"/>
+ <source>Register public username</source>
+ <translation>Registruoti viešąjį naudotojo vardą</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1367"/>
+ <source>Public username edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1373"/>
+ <source>Choose your username</source>
+ <translation>Pasirinkite savo naudotojo vardą</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1289"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1295"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1301"/>
+ <location filename="../newwizardwidget.ui" line="2213"/>
+ <source>Password</source>
+ <translation>Slaptažodis</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1211"/>
+ <location filename="../newwizardwidget.ui" line="1217"/>
+ <source>Password confirmation text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1223"/>
+ <source>Confirm password</source>
+ <translation>Patvirtinkite slaptažodį</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1814"/>
+ <source>SIP Account</source>
+ <translation>SIP paskyra</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1973"/>
+ <source>SIP Server edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1979"/>
+ <source>Server</source>
+ <translation>Serveris</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2045"/>
+ <source>SIP proxy input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2051"/>
+ <source>SIP proxy text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2057"/>
+ <source>Proxy</source>
+ <translation>Įgaliotasis serveris</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2123"/>
+ <source>SIP username input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2129"/>
+ <source>SIP Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2135"/>
+ <source>Username</source>
+ <translation>Naudotojo vardas</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2201"/>
+ <location filename="../newwizardwidget.ui" line="2207"/>
+ <source>SIP Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message utf8="true">
+ <location filename="../newwizardwidget.ui" line="2282"/>
+ <source>Generating your Jami account…</source>
+ <translation>Kuriama jūsų Jami paskyra…</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2356"/>
+ <source>Previous page button</source>
+ <translation>Ankstesnis puslapis</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2362"/>
+ <source>push button to access previous page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2365"/>
+ <source>Previous</source>
+ <translation>Ankstesnis</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2396"/>
+ <source>Cancel account create/link</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2402"/>
+ <source>push button to cancel account creation or linking</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2405"/>
+ <source>Back</source>
+ <translation>Atgal</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2442"/>
+ <source>Next page Button</source>
+ <translation>Kitas puslapis</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2448"/>
+ <source>Push button to access next page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2451"/>
+ <source>Next</source>
+ <translation>Kitas</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="75"/>
+ <source>Open File</source>
+ <translation>Atverti failą</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="77"/>
+ <source>Jami archive files (*.gz); All files (*)</source>
+ <translation>Jami archyvų failai (*.gz); Visi failai (*)</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="123"/>
+ <source>Your account needs to be migrated. Enter your password.</source>
+ <translation>Jūsų paskyra turi būti perkelta. Įveskite savo slaptažodį.</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="419"/>
+ <source>Migrating your Jami account...</source>
+ <translation>Perkeliama jūsų Jami paskyra...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="412"/>
+ <source>Importing account archive...</source>
+ <translation>Importuojamas paskyros archyvas...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="404"/>
+ <source>Generating your Jami account...</source>
+ <translation>Kuriama jūsų Jami paskyra...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="422"/>
+ <source>Generating your SIP account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="533"/>
+ <source>Error creating account</source>
+ <translation>Klaida, kuriant paskyrą</translation>
+ </message>
+</context>
+<context>
+ <name>PasswordDialog</name>
+ <message>
+ <location filename="../passworddialog.ui" line="32"/>
+ <source>Change Account Password</source>
+ <translation>Pakeisti paskyros slaptažodį</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="97"/>
+ <source>Enter Current Password</source>
+ <translation>Įveskite dabartinį slaptažodį</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="169"/>
+ <source>Enter New Password</source>
+ <translation>Įveskite naują slaptažodį</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="190"/>
+ <source>Confirm New Password</source>
+ <translation>Pakartokite naują slaptažodį</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="247"/>
+ <source>Confirm</source>
+ <translation>Patvirtinti</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="290"/>
+ <source>Cancel</source>
+ <translation>Atsisakyti</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="143"/>
+ <source>Current Password Incorrect</source>
+ <translation>Dabartinis slaptažodis neteisingas</translation>
+ </message>
+</context>
+<context>
+ <name>PhotoBoothDialog</name>
+ <message>
+ <location filename="../photoboothdialog.ui" line="14"/>
+ <source>Photobooth</source>
+ <translation>Nuotraukų budelė</translation>
+ </message>
+</context>
+<context>
+ <name>PhotoboothWidget</name>
+ <message>
+ <location filename="../photoboothwidget.ui" line="20"/>
+ <source>Form</source>
+ <translation>Forma</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.ui" line="120"/>
+ <source>Photobooth display</source>
+ <translation>Nuotraukų budelės rodinys</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="92"/>
+ <source>Choose File</source>
+ <translation>Pasirinkti failą</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="94"/>
+ <source>Image Files (*.jpg *.jpeg *.png)</source>
+ <translation>Paveikslų failai (*.jpg *.jpeg *.png)</translation>
+ </message>
+</context>
+<context>
+ <name>PrivateBridging</name>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Choose File</source>
+ <translation>Pasirinkti failą</translation>
+ </message>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Files (*)</source>
+ <translation>Failai (*)</translation>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../utils.cpp" line="183"/>
+ <source>No default mail client found</source>
+ <translation>Numatytoji pašto kliento programa nerasta</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="43"/>
+ <location filename="../deviceitemwidget.cpp" line="85"/>
+ <source>Edit Device Name</source>
+ <translation>Taisyti įrenginio pavadinimą</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="44"/>
+ <source>Unlink Device From Account</source>
+ <translation>Atsieti įrenginį nuo paskyros</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="80"/>
+ <source>Save new device name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.cpp" line="39"/>
+ <source>Add as contact</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>RingButton</name>
+ <message>
+ <location filename="../ringbutton.ui" line="140"/>
+ <source>Select folder</source>
+ <translation>Pasirinkti aplanką</translation>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <location filename="../settingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Forma</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="141"/>
+ <source>Settings</source>
+ <translation>Nustatymai</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="229"/>
+ <source>Account</source>
+ <translation>Paskyra</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="267"/>
+ <location filename="../settingswidget.ui" line="503"/>
+ <source>General</source>
+ <translation>Bendra</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="305"/>
+ <location filename="../settingswidget.ui" line="3416"/>
+ <source>Audio / Video</source>
+ <translation>Garsas / Vaizdas</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="542"/>
+ <source>System</source>
+ <translation>Sistema</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="610"/>
+ <source>Enable desktop notifications</source>
+ <translation>Įjungti darbalaukio pranešimus</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="653"/>
+ <source>Keep minimized on close</source>
+ <translation>Užvėrus, palikti suskleistą</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="678"/>
+ <source>Download folder</source>
+ <translation>Atsiuntimų aplankas</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="811"/>
+ <source>Save in</source>
+ <translation>Įrašyti į</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="904"/>
+ <source>Always Recording</source>
+ <translation>Visada įrašinėti</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="943"/>
+ <source>Updates</source>
+ <translation>Atnaujinimai</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1008"/>
+ <source>Check for updates automatically every</source>
+ <translation>Automatiškai tikrinti ar yra atnaujinimų kas</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1032"/>
+ <source>Interval between update checks in days selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1038"/>
+ <source> days</source>
+ <translation>d.</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1081"/>
+ <source>Check for updates now button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1084"/>
+ <source>Check for updates now</source>
+ <translation>Tikrinti dabar ar yra atnaujinimų</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3027"/>
+ <source>Password</source>
+ <translation>Slaptažodis</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1418"/>
+ <location filename="../settingswidget.ui" line="2729"/>
+ <source>Enable</source>
+ <translation>Įjungti</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="607"/>
+ <source>toggle enable notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="650"/>
+ <source>Toggle keep minimized on close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="764"/>
+ <source>Call Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1005"/>
+ <source>Toggle automatic updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1231"/>
+ <source>Jami Account</source>
+ <translation>Jami paskyra</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1453"/>
+ <location filename="../settingswidget.ui" line="2761"/>
+ <source>Profile</source>
+ <translation>Profilis</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1567"/>
+ <location filename="../settingswidget.ui" line="2875"/>
+ <source>Identity</source>
+ <translation>Tapatybė</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1614"/>
+ <source>Id</source>
+ <translation>Id</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1673"/>
+ <source>Registered name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1721"/>
+ <source>Type here to register a username</source>
+ <translation>Rašykite, norėdami registruoti vardą</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1755"/>
+ <source>Register</source>
+ <translation>Registruoti</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1827"/>
+ <source>Change Password</source>
+ <translation>Pakeisti slaptažodį</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1868"/>
+ <source>Export Account</source>
+ <translation>Eksportuoti paskyrą</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1909"/>
+ <location filename="../settingswidget.ui" line="3089"/>
+ <source>Delete Account</source>
+ <translation>Ištrinti paskyrą</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1973"/>
+ <source>Linked Devices</source>
+ <translation>Susieti įrenginiai</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2078"/>
+ <source>Link Another Device</source>
+ <translation>Susieti kitą įrenginį</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2142"/>
+ <source>Banned Contacts</source>
+ <translation>Užblokuoti adresatai</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3788"/>
+ <source>Format</source>
+ <translation>Formatas</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3831"/>
+ <source>Video device framerate selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3967"/>
+ <source>Preview unavailable</source>
+ <translation>Peržiūra neprieinama</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2359"/>
+ <location filename="../settingswidget.ui" line="3187"/>
+ <source>Advanced Account Settings</source>
+ <translation>Išplėstiniai paskyros nustatymai</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2554"/>
+ <source>SIP Account</source>
+ <translation>SIP paskyra</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2925"/>
+ <source>Username</source>
+ <translation>Naudotojo vardas</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2958"/>
+ <source>Hostname</source>
+ <translation>Kompiuterio vardas</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2991"/>
+ <source>Proxy</source>
+ <translation>Įgaliotasis serveris</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3461"/>
+ <source>Audio</source>
+ <translation>Garsas</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3511"/>
+ <source>Microphone</source>
+ <translation>Mikrofonas</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3551"/>
+ <source>Audio input device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3585"/>
+ <source>Output Device</source>
+ <translation>Išvesties įrenginys</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3625"/>
+ <source>Choose the output device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3682"/>
+ <source>Video</source>
+ <translation>Vaizdas</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3720"/>
+ <source>Device</source>
+ <translation>Įrenginys</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3766"/>
+ <source>Video device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="459"/>
+ <source>A registered name should not have any spaces and must be at least three letters long</source>
+ <translation>Registruotame varde negali būti tarpų ir jis privalo būti bent 3 raidžių ilgio</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="466"/>
+ <source>This name is already taken</source>
+ <translation>Šis vardas jau yra užimtas</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="92"/>
+ <location filename="../settingswidget.cpp" line="110"/>
+ <source>Enter an alias</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="473"/>
+ <source>Register this name</source>
+ <translation>Registruoti šį vardą</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="550"/>
+ <source>Remove Device</source>
+ <translation>Šalinti įrenginį</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="551"/>
+ <source>Enter this account's password to confirm the removal of this device</source>
+ <translation>Įveskite šios paskyros slaptažodį, kad patvirtintumėte šio įrenginio šalinimą</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="558"/>
+ <source>Are you sure you wish to remove this device?</source>
+ <translation>Ar tikrai norite pašalinti šį įrenginį?</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="589"/>
+ <source>Export Account Here</source>
+ <translation>Eksportuoti paskyrą čia</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="887"/>
+ <source>Select A Folder For Your Downloads</source>
+ <translation>Pasirinkite atsiuntimų aplanką</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="904"/>
+ <source>Select A Folder For Your Recordings</source>
+ <translation>Pasirinkite įrašų aplanką</translation>
+ </message>
+</context>
+<context>
+ <name>VideoOverlay</name>
+ <message>
+ <location filename="../videooverlay.ui" line="419"/>
+ <source>Call on Hold</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="89"/>
+ <source>Hold / Unhold</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="124"/>
+ <source>Chat</source>
+ <translation>Pokalbis</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="162"/>
+ <source>Mute Mic</source>
+ <translation>Išjungti mikrofoną</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="244"/>
+ <source>Record call</source>
+ <translation>Įrašyti skambutį</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="325"/>
+ <source>Name label</source>
+ <translation>Vardo etiketė</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="390"/>
+ <source>Time elapsed</source>
+ <translation>Praėjęs laikas</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="393"/>
+ <source>00:00</source>
+ <translation>00:00</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="57"/>
+ <source>Hangup</source>
+ <translation>Padėti ragelį</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="203"/>
+ <source>Mute Video</source>
+ <translation>Išjungti vaizdą</translation>
+ </message>
+</context>
+<context>
+ <name>VideoView</name>
+ <message>
+ <location filename="../videoview.cpp" line="271"/>
+ <source>Share entire screen</source>
+ <translation>Bendrinti visą ekraną</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="274"/>
+ <source>Share screen area</source>
+ <translation>Bendrinti ekrano sritį</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="281"/>
+ <source>Share file</source>
+ <translation>Bendrinti failą</translation>
+ </message>
+</context>
+</TS>
\ No newline at end of file
diff --git a/translations/ring_client_windows_ms.ts b/translations/ring_client_windows_ms.ts
new file mode 100644
index 0000000..38a3f47
--- /dev/null
+++ b/translations/ring_client_windows_ms.ts
@@ -0,0 +1,1589 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="ms" version="2.0">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../aboutdialog.ui" line="435"/>
+ <location filename="../aboutdialog.ui" line="465"/>
+ <source>About</source>
+ <translation>Tentang</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="462"/>
+ <source>about button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="478"/>
+ <source>credits button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="481"/>
+ <source>Credits</source>
+ <translation>Kredit</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="547"/>
+ <source>Free as in Freedom</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="563"/>
+ <source>The Microsoft Windows client for Jami.
+Jami is a secured and distributed communication software.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="32"/>
+ <source>version</source>
+ <translation>versi</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="39"/>
+ <source>Created by:</source>
+ <translation>Dicipta oleh:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="73"/>
+ <source>Artwork by:</source>
+ <translation>Kerja seni oleh:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="77"/>
+ <source>Based on the SFLPhone project</source>
+ <translation>Berdasarkan projek </translation>
+ </message>
+</context>
+<context>
+ <name>AccountItemDelegate</name>
+ <message>
+ <location filename="../accountitemdelegate.cpp" line="91"/>
+ <source>Add Account</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSIPSettingsWidget</name>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="55"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="102"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="130"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="191"/>
+ <source>Connectivity</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="281"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="293"/>
+ <source>Use STUN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="317"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="329"/>
+ <source>Use TURN</source>
+ <translation>Guna TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="359"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="391"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="423"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="464"/>
+ <source>Media</source>
+ <translation>Media</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="515"/>
+ <source>Enable Video</source>
+ <translation>Aktifkan panggilan video</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="539"/>
+ <source>Video Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="692"/>
+ <source>Audio Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="142"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="151"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSettingsWidget</name>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="61"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="108"/>
+ <source>Allow Calls From Untrusted Peers</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="133"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="161"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="188"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="225"/>
+ <source>Name Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="275"/>
+ <source>Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="351"/>
+ <source>OpenDHT Configuration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="398"/>
+ <source>Enable Proxy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="454"/>
+ <source>Bootstrap</source>
+ <translation>Bootstrap</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="530"/>
+ <source>Security</source>
+ <translation>Penyulitan</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="571"/>
+ <source>Private Key Password</source>
+ <translation>Kata laluan untuk fail Private Key</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="583"/>
+ <source>User Certificate</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="622"/>
+ <source>Private Key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="634"/>
+ <source>CA Certificate</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="766"/>
+ <source>Connectivity</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="868"/>
+ <source>Use STUN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="856"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="892"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="904"/>
+ <source>Use TURN</source>
+ <translation>Guna TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="934"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="966"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="998"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1039"/>
+ <source>Media</source>
+ <translation>Media</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1090"/>
+ <source>Enable Video</source>
+ <translation>Aktifkan panggilan video</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1267"/>
+ <source>Audio Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1114"/>
+ <source>Video Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="181"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AnimatedOverlay</name>
+ <message>
+ <location filename="../animatedoverlay.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>BannedItemWidget</name>
+ <message>
+ <location filename="../banneditemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="80"/>
+ <source>name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="104"/>
+ <source>id</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>CallWidget</name>
+ <message>
+ <location filename="../callwidget.ui" line="184"/>
+ <source>Show conversations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="187"/>
+ <source>Conversations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="368"/>
+ <source>Search contact text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="653"/>
+ <source>Jami is free software for universal communication which respects the freedoms and privacy of its users.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="693"/>
+ <source>
+ This is your ID.
+Copy and share it with your friends!
+ </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="806"/>
+ <source>Show ring ID QR code</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="857"/>
+ <source>Share ring ID button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="915"/>
+ <source>Double-click to copy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="956"/>
+ <source>Error while generating QR Code</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1184"/>
+ <location filename="../callwidget.ui" line="1434"/>
+ <source>best name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1208"/>
+ <source>best Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1734"/>
+ <source>Back to homepage button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1943"/>
+ <source>Add to contacts</source>
+ <translation>Tambahkan sebagai kenalan</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="202"/>
+ <source>Show invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="205"/>
+ <source>Invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="377"/>
+ <location filename="../callwidget.cpp" line="552"/>
+ <source>Find a new or existing contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1444"/>
+ <source>Wants to talk to you!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1517"/>
+ <source>Answer incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1589"/>
+ <source>Ignore incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1539"/>
+ <source>Answer</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1617"/>
+ <source>Ignore</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1280"/>
+ <source>Cancel outgoing call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1305"/>
+ <source>Cancel</source>
+ <translation>Batal</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="332"/>
+ <source>Start video call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="343"/>
+ <source>Start audio call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="354"/>
+ <source>Clear conversation</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="361"/>
+ <source>Remove contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="373"/>
+ <source>Block contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="384"/>
+ <source>Copy number</source>
+ <translation>Salin nombor</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="561"/>
+ <source>Search your received invitations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>Contact me on Jami</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>My Id is : </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="847"/>
+ <source>%1</source>
+ <comment>%1 is the contact username</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="852"/>
+ <source>%1</source>
+ <comment>%1 is the contact unique identifier</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="675"/>
+ <source>Call incoming from %1</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>DeleteAccountDialog</name>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="35"/>
+ <source>Account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="58"/>
+ <source>Do you really want to delete the following account?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="153"/>
+ <source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="235"/>
+ <source>Permanently delete account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="241"/>
+ <source>Delete</source>
+ <translation>Hapus</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="278"/>
+ <source>Cancel account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="284"/>
+ <source>Cancel</source>
+ <translation>Batal</translation>
+ </message>
+</context>
+<context>
+ <name>DeviceItemWidget</name>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="105"/>
+ <source>Device Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="143"/>
+ <source>this device</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>InviteButtonsWidget</name>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="83"/>
+ <source>Accept</source>
+ <translation>Terima</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="131"/>
+ <source>Refuse</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="179"/>
+ <source>Block</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>LinkDeviceDialog</name>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="62"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="117"/>
+ <source>Password</source>
+ <translation>Kara laluan</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="184"/>
+ <source>Ok</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="218"/>
+ <source>Cancel</source>
+ <translation>Batal</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="279"/>
+ <source>Exporting account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="402"/>
+ <source>Your PIN is</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="432"/>
+ <source>PIN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="477"/>
+ <source>This pin and the account password should be entered in your device within 10 minutes.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="553"/>
+ <source>Close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="34"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="96"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="110"/>
+ <source>Something went wrong.
+Please try again later.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="83"/>
+ <source>Settings</source>
+ <translation>Tetapan</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="94"/>
+ <source>Exit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="111"/>
+ <source>About</source>
+ <translation>Tentang</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="435"/>
+ <source>Jami</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>NameRegistrationDialog</name>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="35"/>
+ <source>Set Registered Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="163"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="244"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="250"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="256"/>
+ <source>Password</source>
+ <translation>Kara laluan</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="323"/>
+ <source>Register</source>
+ <translation>Daftar</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="357"/>
+ <source>Cancel</source>
+ <translation>Batal</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="424"/>
+ <source>Registering Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="548"/>
+ <source>Something went wrong</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="618"/>
+ <source>Close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="82"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="85"/>
+ <source>Network error</source>
+ <translation>Rangkaian gagal</translation>
+ </message>
+</context>
+<context>
+ <name>NewWizardWidget</name>
+ <message>
+ <location filename="../newwizardwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="141"/>
+ <source>Welcome Label</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="147"/>
+ <source> Welcome to</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="185"/>
+ <source>Welcome Logo</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="239"/>
+ <source>Create Jami account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="245"/>
+ <source>Push button for Jami account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="251"/>
+ <source>Create a Jami account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="282"/>
+ <source>Link device button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="288"/>
+ <source>Push button for device linkage start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="291"/>
+ <source>Link this device to an account</source>
+ <translation>Sambungkan perangkat ini dengan akaun</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="328"/>
+ <source>Create Jami SIP account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="334"/>
+ <source>Push button for Jami SIP account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="340"/>
+ <source>Create a SIP account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="405"/>
+ <source>Link this device to an existing account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="469"/>
+ <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">To link this device to another account, you first </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">need to obtain a PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> code. To generate the PIN code:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Account management setting</span><span style=" font-size:14px;"> of a previous device</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choose the </span><span style=" font-size:14px; font-weight:600;">Jami account</span><span style=" font-size:14px;"> you want to use</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Devices</span><span style=" font-size:14px;"> tab</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Select </span><span style=" font-size:14px; font-weight:600;">Add a device</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">You will get the necessary PIN to complete this form. The PIN is only valid for </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutes</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="531"/>
+ <source>Enter your pin:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="599"/>
+ <source>Or import a file:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="626"/>
+ <source>Link from exported account archive file</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="629"/>
+ <location filename="../newwizardwidget.cpp" line="83"/>
+ <location filename="../newwizardwidget.cpp" line="218"/>
+ <source>(None)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="705"/>
+ <source>Password:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="799"/>
+ <location filename="../newwizardwidget.ui" line="1586"/>
+ <source>Profile</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="953"/>
+ <location filename="../newwizardwidget.ui" line="1767"/>
+ <source>Profile name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1027"/>
+ <source>Account</source>
+ <translation>Akaun</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1136"/>
+ <source>Register your username.
+This will reserve the username so that only you can use it.
+Your friends will be able to call you with your usename
+instead of using your ID.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1142"/>
+ <source>Public username checkbox</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1145"/>
+ <source>Checkbox selecting if the user wants a public username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1148"/>
+ <source>Register public username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1367"/>
+ <source>Public username edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1373"/>
+ <source>Choose your username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1289"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1295"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1301"/>
+ <location filename="../newwizardwidget.ui" line="2213"/>
+ <source>Password</source>
+ <translation>Kara laluan</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1211"/>
+ <location filename="../newwizardwidget.ui" line="1217"/>
+ <source>Password confirmation text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1223"/>
+ <source>Confirm password</source>
+ <translation>Sahkan kata laluan</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1814"/>
+ <source>SIP Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1973"/>
+ <source>SIP Server edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1979"/>
+ <source>Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2045"/>
+ <source>SIP proxy input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2051"/>
+ <source>SIP proxy text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2057"/>
+ <source>Proxy</source>
+ <translation>Proksi</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2123"/>
+ <source>SIP username input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2129"/>
+ <source>SIP Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2135"/>
+ <source>Username</source>
+ <translation>Nama pengguna</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2201"/>
+ <location filename="../newwizardwidget.ui" line="2207"/>
+ <source>SIP Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message utf8="true">
+ <location filename="../newwizardwidget.ui" line="2282"/>
+ <source>Generating your Jami account…</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2356"/>
+ <source>Previous page button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2362"/>
+ <source>push button to access previous page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2365"/>
+ <source>Previous</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2396"/>
+ <source>Cancel account create/link</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2402"/>
+ <source>push button to cancel account creation or linking</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2405"/>
+ <source>Back</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2442"/>
+ <source>Next page Button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2448"/>
+ <source>Push button to access next page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2451"/>
+ <source>Next</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="75"/>
+ <source>Open File</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="77"/>
+ <source>Jami archive files (*.gz); All files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="123"/>
+ <source>Your account needs to be migrated. Enter your password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="419"/>
+ <source>Migrating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="412"/>
+ <source>Importing account archive...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="404"/>
+ <source>Generating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="422"/>
+ <source>Generating your SIP account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="533"/>
+ <source>Error creating account</source>
+ <translation>Gagal mencipta akaun</translation>
+ </message>
+</context>
+<context>
+ <name>PasswordDialog</name>
+ <message>
+ <location filename="../passworddialog.ui" line="32"/>
+ <source>Change Account Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="97"/>
+ <source>Enter Current Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="169"/>
+ <source>Enter New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="190"/>
+ <source>Confirm New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="247"/>
+ <source>Confirm</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="290"/>
+ <source>Cancel</source>
+ <translation>Batal</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="143"/>
+ <source>Current Password Incorrect</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PhotoBoothDialog</name>
+ <message>
+ <location filename="../photoboothdialog.ui" line="14"/>
+ <source>Photobooth</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PhotoboothWidget</name>
+ <message>
+ <location filename="../photoboothwidget.ui" line="20"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.ui" line="120"/>
+ <source>Photobooth display</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="92"/>
+ <source>Choose File</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="94"/>
+ <source>Image Files (*.jpg *.jpeg *.png)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PrivateBridging</name>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Choose File</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../utils.cpp" line="183"/>
+ <source>No default mail client found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="43"/>
+ <location filename="../deviceitemwidget.cpp" line="85"/>
+ <source>Edit Device Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="44"/>
+ <source>Unlink Device From Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="80"/>
+ <source>Save new device name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.cpp" line="39"/>
+ <source>Add as contact</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>RingButton</name>
+ <message>
+ <location filename="../ringbutton.ui" line="140"/>
+ <source>Select folder</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <location filename="../settingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="141"/>
+ <source>Settings</source>
+ <translation>Tetapan</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="229"/>
+ <source>Account</source>
+ <translation>Akaun</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="267"/>
+ <location filename="../settingswidget.ui" line="503"/>
+ <source>General</source>
+ <translation>Utama</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="305"/>
+ <location filename="../settingswidget.ui" line="3416"/>
+ <source>Audio / Video</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="542"/>
+ <source>System</source>
+ <translation>Sistem</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="610"/>
+ <source>Enable desktop notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="653"/>
+ <source>Keep minimized on close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="678"/>
+ <source>Download folder</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="811"/>
+ <source>Save in</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="904"/>
+ <source>Always Recording</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="943"/>
+ <source>Updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1008"/>
+ <source>Check for updates automatically every</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1032"/>
+ <source>Interval between update checks in days selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1038"/>
+ <source> days</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1081"/>
+ <source>Check for updates now button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1084"/>
+ <source>Check for updates now</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3027"/>
+ <source>Password</source>
+ <translation>Kara laluan</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1418"/>
+ <location filename="../settingswidget.ui" line="2729"/>
+ <source>Enable</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="607"/>
+ <source>toggle enable notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="650"/>
+ <source>Toggle keep minimized on close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="764"/>
+ <source>Call Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1005"/>
+ <source>Toggle automatic updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1231"/>
+ <source>Jami Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1453"/>
+ <location filename="../settingswidget.ui" line="2761"/>
+ <source>Profile</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1567"/>
+ <location filename="../settingswidget.ui" line="2875"/>
+ <source>Identity</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1614"/>
+ <source>Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1673"/>
+ <source>Registered name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1721"/>
+ <source>Type here to register a username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1755"/>
+ <source>Register</source>
+ <translation>Daftar</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1827"/>
+ <source>Change Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1868"/>
+ <source>Export Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1909"/>
+ <location filename="../settingswidget.ui" line="3089"/>
+ <source>Delete Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1973"/>
+ <source>Linked Devices</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2078"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2142"/>
+ <source>Banned Contacts</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3788"/>
+ <source>Format</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3831"/>
+ <source>Video device framerate selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3967"/>
+ <source>Preview unavailable</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2359"/>
+ <location filename="../settingswidget.ui" line="3187"/>
+ <source>Advanced Account Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2554"/>
+ <source>SIP Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2925"/>
+ <source>Username</source>
+ <translation>Nama pengguna</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2958"/>
+ <source>Hostname</source>
+ <translation>Alamat server</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2991"/>
+ <source>Proxy</source>
+ <translation>Proksi</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3461"/>
+ <source>Audio</source>
+ <translation>Bunyi</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3511"/>
+ <source>Microphone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3551"/>
+ <source>Audio input device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3585"/>
+ <source>Output Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3625"/>
+ <source>Choose the output device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3682"/>
+ <source>Video</source>
+ <translation>Video</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3720"/>
+ <source>Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3766"/>
+ <source>Video device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="459"/>
+ <source>A registered name should not have any spaces and must be at least three letters long</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="466"/>
+ <source>This name is already taken</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="92"/>
+ <location filename="../settingswidget.cpp" line="110"/>
+ <source>Enter an alias</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="473"/>
+ <source>Register this name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="550"/>
+ <source>Remove Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="551"/>
+ <source>Enter this account's password to confirm the removal of this device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="558"/>
+ <source>Are you sure you wish to remove this device?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="589"/>
+ <source>Export Account Here</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="887"/>
+ <source>Select A Folder For Your Downloads</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="904"/>
+ <source>Select A Folder For Your Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>VideoOverlay</name>
+ <message>
+ <location filename="../videooverlay.ui" line="419"/>
+ <source>Call on Hold</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="89"/>
+ <source>Hold / Unhold</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="124"/>
+ <source>Chat</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="162"/>
+ <source>Mute Mic</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="244"/>
+ <source>Record call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="325"/>
+ <source>Name label</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="390"/>
+ <source>Time elapsed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="393"/>
+ <source>00:00</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="57"/>
+ <source>Hangup</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="203"/>
+ <source>Mute Video</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>VideoView</name>
+ <message>
+ <location filename="../videoview.cpp" line="271"/>
+ <source>Share entire screen</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="274"/>
+ <source>Share screen area</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="281"/>
+ <source>Share file</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+</TS>
\ No newline at end of file
diff --git a/translations/ring_client_windows_nb.ts b/translations/ring_client_windows_nb.ts
new file mode 100644
index 0000000..8a15196
--- /dev/null
+++ b/translations/ring_client_windows_nb.ts
@@ -0,0 +1,1589 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="nb" version="2.0">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../aboutdialog.ui" line="435"/>
+ <location filename="../aboutdialog.ui" line="465"/>
+ <source>About</source>
+ <translation>Om</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="462"/>
+ <source>about button</source>
+ <translation>om-knapp</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="478"/>
+ <source>credits button</source>
+ <translation>bidragsytere-knapp</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="481"/>
+ <source>Credits</source>
+ <translation>Bidragsytere</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="547"/>
+ <source>Free as in Freedom</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="563"/>
+ <source>The Microsoft Windows client for Jami.
+Jami is a secured and distributed communication software.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="32"/>
+ <source>version</source>
+ <translation>versjon</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="39"/>
+ <source>Created by:</source>
+ <translation>Opprettet av:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="73"/>
+ <source>Artwork by:</source>
+ <translation>Omslagskunst av:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="77"/>
+ <source>Based on the SFLPhone project</source>
+ <translation>Basert på SFLPhone-prosjektet</translation>
+ </message>
+</context>
+<context>
+ <name>AccountItemDelegate</name>
+ <message>
+ <location filename="../accountitemdelegate.cpp" line="91"/>
+ <source>Add Account</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSIPSettingsWidget</name>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Skjema</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="55"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="102"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="130"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="191"/>
+ <source>Connectivity</source>
+ <translation>Forbindelsesstatus</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="281"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="293"/>
+ <source>Use STUN</source>
+ <translation>Bruk STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="317"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="329"/>
+ <source>Use TURN</source>
+ <translation>Bruk TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="359"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="391"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="423"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="464"/>
+ <source>Media</source>
+ <translation>Media</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="515"/>
+ <source>Enable Video</source>
+ <translation>Aktiver video</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="539"/>
+ <source>Video Codecs</source>
+ <translation>Video-kodeker</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="692"/>
+ <source>Audio Codecs</source>
+ <translation>Lydkodeker</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="142"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="151"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSettingsWidget</name>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Skjema</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="61"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="108"/>
+ <source>Allow Calls From Untrusted Peers</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="133"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="161"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="188"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="225"/>
+ <source>Name Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="275"/>
+ <source>Address</source>
+ <translation>Adresse</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="351"/>
+ <source>OpenDHT Configuration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="398"/>
+ <source>Enable Proxy</source>
+ <translation>Skru på mellomtjener</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="454"/>
+ <source>Bootstrap</source>
+ <translation>Bootstrap</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="530"/>
+ <source>Security</source>
+ <translation>Sikkerhet</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="571"/>
+ <source>Private Key Password</source>
+ <translation>Privat nøkkel-passord</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="583"/>
+ <source>User Certificate</source>
+ <translation>Brukersertifikat</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="622"/>
+ <source>Private Key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="634"/>
+ <source>CA Certificate</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="766"/>
+ <source>Connectivity</source>
+ <translation>Forbindelsesstatus</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="868"/>
+ <source>Use STUN</source>
+ <translation>Bruk STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="856"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="892"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="904"/>
+ <source>Use TURN</source>
+ <translation>Bruk TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="934"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="966"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="998"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1039"/>
+ <source>Media</source>
+ <translation>Media</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1090"/>
+ <source>Enable Video</source>
+ <translation>Aktiver video</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1267"/>
+ <source>Audio Codecs</source>
+ <translation>Lydkodeker</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1114"/>
+ <source>Video Codecs</source>
+ <translation>Video-kodeker</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="181"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AnimatedOverlay</name>
+ <message>
+ <location filename="../animatedoverlay.ui" line="14"/>
+ <source>Form</source>
+ <translation>Skjema</translation>
+ </message>
+</context>
+<context>
+ <name>BannedItemWidget</name>
+ <message>
+ <location filename="../banneditemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Skjema</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="80"/>
+ <source>name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="104"/>
+ <source>id</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>CallWidget</name>
+ <message>
+ <location filename="../callwidget.ui" line="184"/>
+ <source>Show conversations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="187"/>
+ <source>Conversations</source>
+ <translation>Samtaler</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="368"/>
+ <source>Search contact text input</source>
+ <translation>Søk etter kontakttekst -inndata</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="653"/>
+ <source>Jami is free software for universal communication which respects the freedoms and privacy of its users.</source>
+ <translation>Jami er fri programvare for allsidig kommunikasjon som respekterer brukernes frihet og retten til privatliv.</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="693"/>
+ <source>
+ This is your ID.
+Copy and share it with your friends!
+ </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="806"/>
+ <source>Show ring ID QR code</source>
+ <translation>Vis QR-kode for ring ID</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="857"/>
+ <source>Share ring ID button</source>
+ <translation>Del ring ID -knapp</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="915"/>
+ <source>Double-click to copy</source>
+ <translation>Dobbeltklikk for å kopiere</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="956"/>
+ <source>Error while generating QR Code</source>
+ <translation>Feil ved generering av QR-kode</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1184"/>
+ <location filename="../callwidget.ui" line="1434"/>
+ <source>best name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1208"/>
+ <source>best Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1734"/>
+ <source>Back to homepage button</source>
+ <translation>Tilbake til hjemmeside -knapp</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1943"/>
+ <source>Add to contacts</source>
+ <translation>Legg til kontakter</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="202"/>
+ <source>Show invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="205"/>
+ <source>Invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="377"/>
+ <location filename="../callwidget.cpp" line="552"/>
+ <source>Find a new or existing contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1444"/>
+ <source>Wants to talk to you!</source>
+ <translation>Ønsker å snakke med deg!</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1517"/>
+ <source>Answer incoming call button</source>
+ <translation>Svar innkommende anrop -knapp </translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1589"/>
+ <source>Ignore incoming call button</source>
+ <translation>Ignorer innkommende anrop -knapp</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1539"/>
+ <source>Answer</source>
+ <translation>Svar</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1617"/>
+ <source>Ignore</source>
+ <translation>Ignorer</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1280"/>
+ <source>Cancel outgoing call</source>
+ <translation>Avbryt utgående anrop</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1305"/>
+ <source>Cancel</source>
+ <translation>Avbryt</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="332"/>
+ <source>Start video call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="343"/>
+ <source>Start audio call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="354"/>
+ <source>Clear conversation</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="361"/>
+ <source>Remove contact</source>
+ <translation>Fjern kontakt</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="373"/>
+ <source>Block contact</source>
+ <translation>Blokker kontakt</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="384"/>
+ <source>Copy number</source>
+ <translation>Kopier nummer</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="561"/>
+ <source>Search your received invitations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>Contact me on Jami</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>My Id is : </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="847"/>
+ <source>%1</source>
+ <comment>%1 is the contact username</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="852"/>
+ <source>%1</source>
+ <comment>%1 is the contact unique identifier</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="675"/>
+ <source>Call incoming from %1</source>
+ <translation>Innkommende anrop fra %1</translation>
+ </message>
+</context>
+<context>
+ <name>DeleteAccountDialog</name>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="35"/>
+ <source>Account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="58"/>
+ <source>Do you really want to delete the following account?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="153"/>
+ <source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="235"/>
+ <source>Permanently delete account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="241"/>
+ <source>Delete</source>
+ <translation>Slett</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="278"/>
+ <source>Cancel account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="284"/>
+ <source>Cancel</source>
+ <translation>Avbryt</translation>
+ </message>
+</context>
+<context>
+ <name>DeviceItemWidget</name>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Skjema</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="105"/>
+ <source>Device Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="143"/>
+ <source>this device</source>
+ <translation>denne enheten</translation>
+ </message>
+</context>
+<context>
+ <name>InviteButtonsWidget</name>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="83"/>
+ <source>Accept</source>
+ <translation>Aksepter</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="131"/>
+ <source>Refuse</source>
+ <translation>Avslå</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="179"/>
+ <source>Block</source>
+ <translation>Blokker</translation>
+ </message>
+</context>
+<context>
+ <name>LinkDeviceDialog</name>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation>Dialogvindu</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="62"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="117"/>
+ <source>Password</source>
+ <translation>Passord</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="184"/>
+ <source>Ok</source>
+ <translation>OK</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="218"/>
+ <source>Cancel</source>
+ <translation>Avbryt</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="279"/>
+ <source>Exporting account</source>
+ <translation>Eksporterer konto</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="402"/>
+ <source>Your PIN is</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="432"/>
+ <source>PIN</source>
+ <translation>PIN</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="477"/>
+ <source>This pin and the account password should be entered in your device within 10 minutes.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="553"/>
+ <source>Close</source>
+ <translation>Lukk</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="34"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="96"/>
+ <source>Incorrect password</source>
+ <translation>Feil passord</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="110"/>
+ <source>Something went wrong.
+Please try again later.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="83"/>
+ <source>Settings</source>
+ <translation>Innstillinger</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="94"/>
+ <source>Exit</source>
+ <translation>Avslutt</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="111"/>
+ <source>About</source>
+ <translation>Om</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="435"/>
+ <source>Jami</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>NameRegistrationDialog</name>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="35"/>
+ <source>Set Registered Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="163"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="244"/>
+ <source>Password text input</source>
+ <translation>Passordstekstinndata</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="250"/>
+ <source>Password text entry</source>
+ <translation>Passordteksinnskriving</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="256"/>
+ <source>Password</source>
+ <translation>Passord</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="323"/>
+ <source>Register</source>
+ <translation>Registrer</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="357"/>
+ <source>Cancel</source>
+ <translation>Avbryt</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="424"/>
+ <source>Registering Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="548"/>
+ <source>Something went wrong</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="618"/>
+ <source>Close</source>
+ <translation>Lukk</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="82"/>
+ <source>Incorrect password</source>
+ <translation>Feil passord</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="85"/>
+ <source>Network error</source>
+ <translation>Nettverksfeil</translation>
+ </message>
+</context>
+<context>
+ <name>NewWizardWidget</name>
+ <message>
+ <location filename="../newwizardwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Skjema</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="141"/>
+ <source>Welcome Label</source>
+ <translation>Velkomstetikett</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="147"/>
+ <source> Welcome to</source>
+ <translation>Velkommen til</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="185"/>
+ <source>Welcome Logo</source>
+ <translation>Velkomstlogo</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="239"/>
+ <source>Create Jami account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="245"/>
+ <source>Push button for Jami account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="251"/>
+ <source>Create a Jami account</source>
+ <translation>Opprett en Jami-konto</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="282"/>
+ <source>Link device button</source>
+ <translation>Lenk enhet -knapp</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="288"/>
+ <source>Push button for device linkage start trigger</source>
+ <translation>Trykknapp for start av enhetslinking -utløser</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="291"/>
+ <source>Link this device to an account</source>
+ <translation>Lenk denne enheten til en konto</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="328"/>
+ <source>Create Jami SIP account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="334"/>
+ <source>Push button for Jami SIP account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="340"/>
+ <source>Create a SIP account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="405"/>
+ <source>Link this device to an existing account</source>
+ <translation>Lenk denne enheten til en eksisterende konto</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="469"/>
+ <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">To link this device to another account, you first </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">need to obtain a PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> code. To generate the PIN code:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Account management setting</span><span style=" font-size:14px;"> of a previous device</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choose the </span><span style=" font-size:14px; font-weight:600;">Jami account</span><span style=" font-size:14px;"> you want to use</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Devices</span><span style=" font-size:14px;"> tab</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Select </span><span style=" font-size:14px; font-weight:600;">Add a device</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">You will get the necessary PIN to complete this form. The PIN is only valid for </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutes</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="531"/>
+ <source>Enter your pin:</source>
+ <translation>Skriv inn din PIN:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="599"/>
+ <source>Or import a file:</source>
+ <translation>Eller importer fil:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="626"/>
+ <source>Link from exported account archive file</source>
+ <translation>Lenk fra eksportert kontoarkivfil</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="629"/>
+ <location filename="../newwizardwidget.cpp" line="83"/>
+ <location filename="../newwizardwidget.cpp" line="218"/>
+ <source>(None)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="705"/>
+ <source>Password:</source>
+ <translation>Passord:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="799"/>
+ <location filename="../newwizardwidget.ui" line="1586"/>
+ <source>Profile</source>
+ <translation>Profil</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="953"/>
+ <location filename="../newwizardwidget.ui" line="1767"/>
+ <source>Profile name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1027"/>
+ <source>Account</source>
+ <translation>Konto</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1136"/>
+ <source>Register your username.
+This will reserve the username so that only you can use it.
+Your friends will be able to call you with your usename
+instead of using your ID.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1142"/>
+ <source>Public username checkbox</source>
+ <translation>Offentlig brukernavn -avkryssningsboks</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1145"/>
+ <source>Checkbox selecting if the user wants a public username</source>
+ <translation>Avkryssningsboks som velger hvorvidt en bruker ønsker et offentlig brukernavn</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1148"/>
+ <source>Register public username</source>
+ <translation>Registrer offentlig brukernavn</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1367"/>
+ <source>Public username edit</source>
+ <translation>Redigering av offentlig brukernavn</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1373"/>
+ <source>Choose your username</source>
+ <translation>Velg ditt brukernavn</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1289"/>
+ <source>Password text input</source>
+ <translation>Passordstekstinndata</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1295"/>
+ <source>Password text entry</source>
+ <translation>Passordteksinnskriving</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1301"/>
+ <location filename="../newwizardwidget.ui" line="2213"/>
+ <source>Password</source>
+ <translation>Passord</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1211"/>
+ <location filename="../newwizardwidget.ui" line="1217"/>
+ <source>Password confirmation text input</source>
+ <translation>Passordsbekreftelsestekst-inndata</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1223"/>
+ <source>Confirm password</source>
+ <translation>Bekreft passord</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1814"/>
+ <source>SIP Account</source>
+ <translation>SIP-konto</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1973"/>
+ <source>SIP Server edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1979"/>
+ <source>Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2045"/>
+ <source>SIP proxy input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2051"/>
+ <source>SIP proxy text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2057"/>
+ <source>Proxy</source>
+ <translation>Mellomtjener</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2123"/>
+ <source>SIP username input</source>
+ <translation>SIP-brukernavn -inndata</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2129"/>
+ <source>SIP Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2135"/>
+ <source>Username</source>
+ <translation>Brukernavn</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2201"/>
+ <location filename="../newwizardwidget.ui" line="2207"/>
+ <source>SIP Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message utf8="true">
+ <location filename="../newwizardwidget.ui" line="2282"/>
+ <source>Generating your Jami account…</source>
+ <translation>Oppretter Jami-kontoen din</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2356"/>
+ <source>Previous page button</source>
+ <translation>Forrige side -knapp</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2362"/>
+ <source>push button to access previous page of wizard</source>
+ <translation>trykkbar knapp for å nå forrige side av veivisning</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2365"/>
+ <source>Previous</source>
+ <translation>Forrige</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2396"/>
+ <source>Cancel account create/link</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2402"/>
+ <source>push button to cancel account creation or linking</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2405"/>
+ <source>Back</source>
+ <translation>Tilbake</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2442"/>
+ <source>Next page Button</source>
+ <translation>Neste side -knapp</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2448"/>
+ <source>Push button to access next page of wizard</source>
+ <translation>Trykk på knappen for å komme til neste side i veivisningen</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2451"/>
+ <source>Next</source>
+ <translation>Neste</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="75"/>
+ <source>Open File</source>
+ <translation>Åpne fil</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="77"/>
+ <source>Jami archive files (*.gz); All files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="123"/>
+ <source>Your account needs to be migrated. Enter your password.</source>
+ <translation>Kontoen din må flyttes. Skriv inn passordet ditt.</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="419"/>
+ <source>Migrating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="412"/>
+ <source>Importing account archive...</source>
+ <translation>Importerer kontoarkiv…</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="404"/>
+ <source>Generating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="422"/>
+ <source>Generating your SIP account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="533"/>
+ <source>Error creating account</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PasswordDialog</name>
+ <message>
+ <location filename="../passworddialog.ui" line="32"/>
+ <source>Change Account Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="97"/>
+ <source>Enter Current Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="169"/>
+ <source>Enter New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="190"/>
+ <source>Confirm New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="247"/>
+ <source>Confirm</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="290"/>
+ <source>Cancel</source>
+ <translation>Avbryt</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="143"/>
+ <source>Current Password Incorrect</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PhotoBoothDialog</name>
+ <message>
+ <location filename="../photoboothdialog.ui" line="14"/>
+ <source>Photobooth</source>
+ <translation>Fotoboks</translation>
+ </message>
+</context>
+<context>
+ <name>PhotoboothWidget</name>
+ <message>
+ <location filename="../photoboothwidget.ui" line="20"/>
+ <source>Form</source>
+ <translation>Skjema</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.ui" line="120"/>
+ <source>Photobooth display</source>
+ <translation>Fotoboksvisning</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="92"/>
+ <source>Choose File</source>
+ <translation>Velg fil</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="94"/>
+ <source>Image Files (*.jpg *.jpeg *.png)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PrivateBridging</name>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Choose File</source>
+ <translation>Velg fil</translation>
+ </message>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Files (*)</source>
+ <translation>Filer (*)</translation>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../utils.cpp" line="183"/>
+ <source>No default mail client found</source>
+ <translation>Fant ingen forvalgt e-postklient</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="43"/>
+ <location filename="../deviceitemwidget.cpp" line="85"/>
+ <source>Edit Device Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="44"/>
+ <source>Unlink Device From Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="80"/>
+ <source>Save new device name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.cpp" line="39"/>
+ <source>Add as contact</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>RingButton</name>
+ <message>
+ <location filename="../ringbutton.ui" line="140"/>
+ <source>Select folder</source>
+ <translation>Velg mappe</translation>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <location filename="../settingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Skjema</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="141"/>
+ <source>Settings</source>
+ <translation>Innstillinger</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="229"/>
+ <source>Account</source>
+ <translation>Konto</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="267"/>
+ <location filename="../settingswidget.ui" line="503"/>
+ <source>General</source>
+ <translation>Generell</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="305"/>
+ <location filename="../settingswidget.ui" line="3416"/>
+ <source>Audio / Video</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="542"/>
+ <source>System</source>
+ <translation>System</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="610"/>
+ <source>Enable desktop notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="653"/>
+ <source>Keep minimized on close</source>
+ <translation>Behold minimert ved lukking</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="678"/>
+ <source>Download folder</source>
+ <translation>Nedlastingsmappe</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="811"/>
+ <source>Save in</source>
+ <translation>Lagre i</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="904"/>
+ <source>Always Recording</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="943"/>
+ <source>Updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1008"/>
+ <source>Check for updates automatically every</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1032"/>
+ <source>Interval between update checks in days selector</source>
+ <translation>Intervall mellom oppdateringssjekker i dager -velger</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1038"/>
+ <source> days</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1081"/>
+ <source>Check for updates now button</source>
+ <translation>Se etter oppdateringer nå -knapp</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1084"/>
+ <source>Check for updates now</source>
+ <translation>Se etter oppdateringer nå</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3027"/>
+ <source>Password</source>
+ <translation>Passord</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1418"/>
+ <location filename="../settingswidget.ui" line="2729"/>
+ <source>Enable</source>
+ <translation>Aktivèr</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="607"/>
+ <source>toggle enable notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="650"/>
+ <source>Toggle keep minimized on close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="764"/>
+ <source>Call Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1005"/>
+ <source>Toggle automatic updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1231"/>
+ <source>Jami Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1453"/>
+ <location filename="../settingswidget.ui" line="2761"/>
+ <source>Profile</source>
+ <translation>Profil</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1567"/>
+ <location filename="../settingswidget.ui" line="2875"/>
+ <source>Identity</source>
+ <translation>Identitet</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1614"/>
+ <source>Id</source>
+ <translation>ID</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1673"/>
+ <source>Registered name</source>
+ <translation>Registrert navn</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1721"/>
+ <source>Type here to register a username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1755"/>
+ <source>Register</source>
+ <translation>Registrer</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1827"/>
+ <source>Change Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1868"/>
+ <source>Export Account</source>
+ <translation>Eksporter konto</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1909"/>
+ <location filename="../settingswidget.ui" line="3089"/>
+ <source>Delete Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1973"/>
+ <source>Linked Devices</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2078"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2142"/>
+ <source>Banned Contacts</source>
+ <translation>Bannlyste kontakter</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3788"/>
+ <source>Format</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3831"/>
+ <source>Video device framerate selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3967"/>
+ <source>Preview unavailable</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2359"/>
+ <location filename="../settingswidget.ui" line="3187"/>
+ <source>Advanced Account Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2554"/>
+ <source>SIP Account</source>
+ <translation>SIP-konto</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2925"/>
+ <source>Username</source>
+ <translation>Brukernavn</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2958"/>
+ <source>Hostname</source>
+ <translation>Vertsnavn</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2991"/>
+ <source>Proxy</source>
+ <translation>Mellomtjener</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3461"/>
+ <source>Audio</source>
+ <translation>Lyd</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3511"/>
+ <source>Microphone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3551"/>
+ <source>Audio input device selector</source>
+ <translation>Lydinndataenhets-velger</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3585"/>
+ <source>Output Device</source>
+ <translation>Utgangsenhet</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3625"/>
+ <source>Choose the output device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3682"/>
+ <source>Video</source>
+ <translation>Video</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3720"/>
+ <source>Device</source>
+ <translation>Enhet</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3766"/>
+ <source>Video device selector</source>
+ <translation>Videoenhetsvelger</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="459"/>
+ <source>A registered name should not have any spaces and must be at least three letters long</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="466"/>
+ <source>This name is already taken</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="92"/>
+ <location filename="../settingswidget.cpp" line="110"/>
+ <source>Enter an alias</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="473"/>
+ <source>Register this name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="550"/>
+ <source>Remove Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="551"/>
+ <source>Enter this account's password to confirm the removal of this device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="558"/>
+ <source>Are you sure you wish to remove this device?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="589"/>
+ <source>Export Account Here</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="887"/>
+ <source>Select A Folder For Your Downloads</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="904"/>
+ <source>Select A Folder For Your Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>VideoOverlay</name>
+ <message>
+ <location filename="../videooverlay.ui" line="419"/>
+ <source>Call on Hold</source>
+ <translation>Samtale på vent</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="89"/>
+ <source>Hold / Unhold</source>
+ <translation>Parker / gjenoppta parkering</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="124"/>
+ <source>Chat</source>
+ <translation>Sludre</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="162"/>
+ <source>Mute Mic</source>
+ <translation>Demp mikrofon</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="244"/>
+ <source>Record call</source>
+ <translation>Ta opp samtale</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="325"/>
+ <source>Name label</source>
+ <translation>Navneetikett</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="390"/>
+ <source>Time elapsed</source>
+ <translation>Forløpt tid</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="393"/>
+ <source>00:00</source>
+ <translation>00:00</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="57"/>
+ <source>Hangup</source>
+ <translation>Legg på</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="203"/>
+ <source>Mute Video</source>
+ <translation>Demp video</translation>
+ </message>
+</context>
+<context>
+ <name>VideoView</name>
+ <message>
+ <location filename="../videoview.cpp" line="271"/>
+ <source>Share entire screen</source>
+ <translation>Del hele skjermen</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="274"/>
+ <source>Share screen area</source>
+ <translation>Del skjermområde</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="281"/>
+ <source>Share file</source>
+ <translation>Del fil</translation>
+ </message>
+</context>
+</TS>
\ No newline at end of file
diff --git a/translations/ring_client_windows_nb_NO.ts b/translations/ring_client_windows_nb_NO.ts
new file mode 100644
index 0000000..d491fec
--- /dev/null
+++ b/translations/ring_client_windows_nb_NO.ts
@@ -0,0 +1,2073 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="nb_NO" version="2.0">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../aboutdialog.ui" line="435"/>
+ <location filename="../aboutdialog.ui" line="465"/>
+ <source>About</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="462"/>
+ <source>about button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="478"/>
+ <source>credits button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="481"/>
+ <source>Credits</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="547"/>
+ <source>Live Free or Die</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="563"/>
+ <source>The Microsoft Windows client for Jami.
+Jami is a secured and distributed communication software.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="32"/>
+ <source>version</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="39"/>
+ <source>Created by:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="73"/>
+ <source>Artwork by:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="77"/>
+ <source>Based on the SFLPhone project</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AccountDetails</name>
+ <message>
+ <location filename="../accountdetails.ui" line="23"/>
+ <source>Settings</source>
+ <translation>Innstillinger</translation>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="66"/>
+ <source>General</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="143"/>
+ <source>Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="206"/>
+ <source>Type</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="250"/>
+ <source>Parameters</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="280"/>
+ <source>Hostname</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="350"/>
+ <source>Public registered username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="426"/>
+ <location filename="../accountdetails.ui" line="1754"/>
+ <source>Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="469"/>
+ <location filename="../accountdetails.ui" line="1776"/>
+ <source>Password</source>
+ <translation>Passord…</translation>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="515"/>
+ <source>Proxy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="558"/>
+ <source>Voicemail number</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="598"/>
+ <source>Auto-answer calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="619"/>
+ <source>UPnP enabled</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="832"/>
+ <source>Account Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="862"/>
+ <source>Allow Call From Unknown</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="895"/>
+ <source>Allow Call From Contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="880"/>
+ <source>Allow Call From History</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="69"/>
+ <source>General account info configuration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="169"/>
+ <source>Displayed name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="191"/>
+ <source>Displayed alias input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="302"/>
+ <source>Hostname URL for DHT bootstrap or SIP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="323"/>
+ <source>Public username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="369"/>
+ <source>Register username on blockchain button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="372"/>
+ <source>Register on blockchain</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="389"/>
+ <source>Name service URL</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="411"/>
+ <source>Nameservice URL input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="448"/>
+ <source>SIP username input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="491"/>
+ <source>SIP password input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="537"/>
+ <source>SIP proxy URL input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="580"/>
+ <source>SIP voicemail number</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="592"/>
+ <source>Autoanswer call checkbox</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="613"/>
+ <source>UPnP enabled checkbox</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="632"/>
+ <source>Old password input line</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="641"/>
+ <source>Input old password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="656"/>
+ <source>Old Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="669"/>
+ <source>New password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="675"/>
+ <source>Input new password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="692"/>
+ <source>New password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="705"/>
+ <source>Password confirmation text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="711"/>
+ <source>Input confirmation </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="727"/>
+ <source>New pass confirmation</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="751"/>
+ <source>Change password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="770"/>
+ <source>Ok</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="783"/>
+ <source>Cancel password change button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="798"/>
+ <source>Changing password ...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="856"/>
+ <source>Allow call from unknown checkbox</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="874"/>
+ <source>Allow Call From History checkbox</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="892"/>
+ <source>Allow Call From Contact checkbox</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="931"/>
+ <source>Ringtone Selection</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="955"/>
+ <source>Play ringtone button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="958"/>
+ <source>Play</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="971"/>
+ <source>ringtone file selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="1021"/>
+ <source>Audio/Video</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="1024"/>
+ <source>Audio/video codecs preferences configuration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="1240"/>
+ <source>Audio codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="1270"/>
+ <source>Video codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="1287"/>
+ <source>Advanced</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="1290"/>
+ <source>Account advanced configuration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="1336"/>
+ <source>Registration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="1356"/>
+ <source>Registration expire timeout (seconds):</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="1372"/>
+ <source>Registration timeout selector spinbox</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="1397"/>
+ <source>Network Interface</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="1418"/>
+ <source>Local Port:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="1436"/>
+ <source>local port selector spinbox</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="1522"/>
+ <source>same as local radio button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="1528"/>
+ <source>Same as local parameters</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="1546"/>
+ <source>personalise address and ports radio button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="1552"/>
+ <source>Set published address and port:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="1578"/>
+ <source>Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="1597"/>
+ <source>ip address text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="1612"/>
+ <source>Port</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="1631"/>
+ <source>port selector spinbox</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="1666"/>
+ <source>use STUN checkbox</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="1672"/>
+ <source>Use STUN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="1688"/>
+ <location filename="../accountdetails.ui" line="1735"/>
+ <source>Server URL</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="1710"/>
+ <source>use TURN checkbox</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="1716"/>
+ <source>Use TURN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="1732"/>
+ <source>TURN server URL input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="1751"/>
+ <source>TURN server username input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="1770"/>
+ <source>TURN server password input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="1792"/>
+ <source>TURN server Realm input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="1795"/>
+ <source>Realm</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="1844"/>
+ <source>SDP Session Negotiation (ICE Fallback)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="1872"/>
+ <source>These settings are only used during SDP session negotiation in case ICE is not supported by the server or peer.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="1914"/>
+ <source>Audio RTP Port Range</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="1944"/>
+ <location filename="../accountdetails.ui" line="2084"/>
+ <source>Min</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="1960"/>
+ <location filename="../accountdetails.ui" line="2100"/>
+ <source>Lower boundary for audio RTP port range selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="1978"/>
+ <location filename="../accountdetails.ui" line="2118"/>
+ <source>Max</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="1994"/>
+ <location filename="../accountdetails.ui" line="2134"/>
+ <source>higher boundary for audio RTP port range selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="2054"/>
+ <source>Video RTP Port Range</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="2186"/>
+ <source>Security</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="2189"/>
+ <source>Account security configuration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="2276"/>
+ <source>Certificate authaurity certificate selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="2313"/>
+ <source>User certificate selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="2371"/>
+ <source>private key password input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="2393"/>
+ <source>User private key selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="2417"/>
+ <source>Encrypt media stream (SRTP) checkbox</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="2420"/>
+ <source>Media Stream Encryption (SRTP)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="2432"/>
+ <source>use default ciphers checkbox</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="2488"/>
+ <source>Devices</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="2491"/>
+ <source>Account devices management</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="2535"/>
+ <source>Add device button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="2538"/>
+ <source>Add device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="2644"/>
+ <source>Export on the network</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="2578"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="2584"/>
+ <source>Password (required)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="2612"/>
+ <source>Cancel account export for linking button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="786"/>
+ <location filename="../accountdetails.ui" line="2615"/>
+ <source>Cancel</source>
+ <translation>Avbryt</translation>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="2565"/>
+ <source>To add a new device to your Jami account, you export your account on the network. This will generate a pin that must be entered on your new device within 5 minutes of its generation.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="2641"/>
+ <source>Validate export on DHT for device linking button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="2696"/>
+ <source>Your generated pin:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="2709"/>
+ <source>Generated PIN for linking</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="2712"/>
+ <source>PIN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="2722"/>
+ <source>This pin should be entered on your new device within 5 minutes. You may generate a new one at any moment.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="2741"/>
+ <source>Accept PIN generation and quit button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="2744"/>
+ <source>OK</source>
+ <translation>OK</translation>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="2769"/>
+ <source>Banned Contacts</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="2772"/>
+ <source>Account banned contacts management tab</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="1495"/>
+ <source>Published Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="2254"/>
+ <source>CA certificate</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="2294"/>
+ <source>User certificate</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="2331"/>
+ <source>Private key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="2346"/>
+ <source>Private key password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../accountdetails.ui" line="2435"/>
+ <source>Use default ciphers</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AccountItemDelegate</name>
+ <message>
+ <location filename="../accountitemdelegate.cpp" line="91"/>
+ <source>Add Account</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSettingsWidget</name>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="40"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="65"/>
+ <source>Allow Calls From Untrusted Peers</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="79"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="99"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="120"/>
+ <location filename="../advancedsettingswidget.cpp" line="168"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="174"/>
+ <source>Name Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="200"/>
+ <source>Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="269"/>
+ <source>OpenDHT Configuration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="297"/>
+ <source>Enable Proxy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="358"/>
+ <source>Bootstrap</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="427"/>
+ <source>Security</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="444"/>
+ <source>Private Key Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="456"/>
+ <source>User Certificate</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="483"/>
+ <source>no password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="495"/>
+ <source>Private Key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="507"/>
+ <source>CA Certificate</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="689"/>
+ <source>Connectivity</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="734"/>
+ <source> TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="773"/>
+ <source>Use STUN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="800"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="812"/>
+ <source> TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="824"/>
+ <source> TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="836"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="848"/>
+ <source>Use TURN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="899"/>
+ <source>Audio Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1044"/>
+ <source>Video Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="161"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AnimatedOverlay</name>
+ <message>
+ <location filename="../animatedoverlay.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>BannedContactsWidget</name>
+ <message>
+ <location filename="../bannedcontactswidget.ui" line="20"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../bannedcontactswidget.ui" line="41"/>
+ <source>Banned contacts list</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../bannedcontactswidget.ui" line="69"/>
+ <source>Banned ID</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../bannedcontactswidget.ui" line="101"/>
+ <source>Deban contact button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../bannedcontactswidget.ui" line="104"/>
+ <source>Deban contact, and add to contact list</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>CallWidget</name>
+ <message>
+ <location filename="../callwidget.ui" line="178"/>
+ <source>Show conversations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="181"/>
+ <source>Conversations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="362"/>
+ <source>Search contact text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="647"/>
+ <source>Jami is free software for universal communication which respects the freedoms and privacy of its users.</source>
+ <translation>Jami er fri programvare til universell kommunikasjon som respekterer brukernes frihet og rett til privatliv.</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="687"/>
+ <source>
+ This is your ID.
+Copy and share it with your friends!
+ </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="800"/>
+ <source>Show ring ID QR code</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="851"/>
+ <source>Share ring ID button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="909"/>
+ <source>Double-click to copy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="950"/>
+ <source>Error while generating QR Code</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1178"/>
+ <location filename="../callwidget.ui" line="1428"/>
+ <source>best name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1202"/>
+ <source>best Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1728"/>
+ <source>Back to homepage button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1937"/>
+ <source>Add to contacts</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="196"/>
+ <source>Show invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="199"/>
+ <source>Invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="371"/>
+ <location filename="../callwidget.cpp" line="553"/>
+ <source>Find a new or existing contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1438"/>
+ <source>Wants to talk to you!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1511"/>
+ <source>Answer incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1583"/>
+ <source>Ignore incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1533"/>
+ <source>Answer</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1611"/>
+ <source>Ignore</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1274"/>
+ <source>Cancel outgoing call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1299"/>
+ <source>Cancel</source>
+ <translation>Avbryt</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="333"/>
+ <source>Start video call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="344"/>
+ <source>Start audio call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="360"/>
+ <source>Clear conversation</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="367"/>
+ <source>Remove contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="374"/>
+ <source>Block contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="385"/>
+ <source>Copy number</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="562"/>
+ <source>Search your received invitations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="944"/>
+ <source>Contact me on Jami</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="944"/>
+ <source>My Id is : </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="293"/>
+ <source>Message incoming from %1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="848"/>
+ <source>%1</source>
+ <comment>%1 is the contact username</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="853"/>
+ <source>%1</source>
+ <comment>%1 is the contact unique identifier</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="676"/>
+ <source>Call incoming from %1</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>ContactDialog</name>
+ <message>
+ <location filename="../contactdialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../contactdialog.ui" line="26"/>
+ <source>New Contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../contactdialog.ui" line="33"/>
+ <source>Enter a name...</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>DeleteAccountDialog</name>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="35"/>
+ <source>Account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="55"/>
+ <source>Do you really want to delete the following account?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="144"/>
+ <source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="226"/>
+ <source>Permanently delete account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="232"/>
+ <source>Delete</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="269"/>
+ <source>Cancel account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="275"/>
+ <source>Cancel</source>
+ <translation>Avbryt</translation>
+ </message>
+</context>
+<context>
+ <name>Form</name>
+ <message>
+ <location filename="../deviceeditwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceeditwidget.ui" line="36"/>
+ <source>PushButton</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>InviteButtonsWidget</name>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="83"/>
+ <source>Accept</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="131"/>
+ <source>Refuse</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="179"/>
+ <source>Block</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>LinkDevWidget</name>
+ <message>
+ <location filename="../linkdevwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevwidget.ui" line="93"/>
+ <source>Add A New Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevwidget.ui" line="155"/>
+ <source>To add a new device, enter your account password:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevwidget.ui" line="250"/>
+ <source>Cancel</source>
+ <translation>Avbryt</translation>
+ </message>
+ <message>
+ <location filename="../linkdevwidget.ui" line="279"/>
+ <source>Enter</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevwidget.ui" line="365"/>
+ <source>Exporting account on the network</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevwidget.ui" line="509"/>
+ <source>Your generated pin:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevwidget.ui" line="609"/>
+ <source>This pin and the account password should be entered in your device within 5 minutes.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevwidget.ui" line="652"/>
+ <source>Close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevwidget.cpp" line="81"/>
+ <source>Your account password was incorrect</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevwidget.cpp" line="92"/>
+ <source>Something went wrong.
+Please try again later.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="74"/>
+ <source>Settings</source>
+ <translation>Innstillinger</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="82"/>
+ <source>Exit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="99"/>
+ <source>About</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="435"/>
+ <source>Jami</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>NewWizardWidget</name>
+ <message>
+ <location filename="../newwizardwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="141"/>
+ <source>Welcome Label</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="147"/>
+ <source> Welcome to</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="179"/>
+ <source>Welcome Logo</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="228"/>
+ <source>Create Jami account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="234"/>
+ <source>Push button for Jami account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="240"/>
+ <source>Create a Jami account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="266"/>
+ <source>Link device button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="272"/>
+ <source>Push button for device linkage start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="275"/>
+ <source>Link this device to an account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="340"/>
+ <source>Link this device to an existing account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="399"/>
+ <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">To link this device to another account, you first </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">need to obtain a PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> code. To generate the PIN code:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Account management setting</span><span style=" font-size:14px;"> of a previous device</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choose the </span><span style=" font-size:14px; font-weight:600;">Jami account</span><span style=" font-size:14px;"> you want to use</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Devices</span><span style=" font-size:14px;"> tab</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Select </span><span style=" font-size:14px; font-weight:600;">Add a device</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">You will get the necessary PIN to complete this form. The PIN is only valid for </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutes</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="461"/>
+ <source>Enter your pin:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="529"/>
+ <source>Or import a file:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="556"/>
+ <source>Link from exported account archive file</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="559"/>
+ <location filename="../newwizardwidget.cpp" line="86"/>
+ <location filename="../newwizardwidget.cpp" line="227"/>
+ <source>(None)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="635"/>
+ <source>Password:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="729"/>
+ <source>Profile</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="883"/>
+ <source>Profile name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="957"/>
+ <source>Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1143"/>
+ <source>Register your username.
+This will reserve the username so that only you can use it.
+Your friends will be able to call you with your usename
+instead of using your ID.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1149"/>
+ <source>Public username checkbox</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1152"/>
+ <source>Checkbox selecting if the user wants a public username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1155"/>
+ <source>Register public username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1234"/>
+ <source>Public username edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1240"/>
+ <source>Choose your username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1306"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1312"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1318"/>
+ <source>Password</source>
+ <translation>Passord…</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1384"/>
+ <location filename="../newwizardwidget.ui" line="1390"/>
+ <source>Password confirmation text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1396"/>
+ <source>Confirm password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message utf8="true">
+ <location filename="../newwizardwidget.ui" line="1465"/>
+ <source>Generating your Jami account…</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1539"/>
+ <source>Previous page button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1545"/>
+ <source>push button to access previous page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1548"/>
+ <source>Previous</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1579"/>
+ <source>Cancel account create/link</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1585"/>
+ <source>push button to cancel account creation or linking</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1588"/>
+ <source>Back</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1625"/>
+ <source>Next page Button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1631"/>
+ <source>Push button to access next page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1634"/>
+ <source>Next</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="78"/>
+ <source>Open File</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="80"/>
+ <source>Jami archive files (*.gz); All files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="126"/>
+ <source>Your account needs to be migrated. Enter your password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="166"/>
+ <source>Migrating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="168"/>
+ <source>Importing account archive...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="170"/>
+ <source>Generating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="469"/>
+ <source>Error creating account</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PasswordDialog</name>
+ <message>
+ <location filename="../passworddialog.ui" line="32"/>
+ <source>Change Account Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="58"/>
+ <source>Enter Current Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="90"/>
+ <source>Enter New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="106"/>
+ <source>Confirm New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="136"/>
+ <source>Confirm</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="155"/>
+ <source>Cancel</source>
+ <translation>Avbryt</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.cpp" line="90"/>
+ <source>Password Changed Successfully</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.cpp" line="105"/>
+ <source>Current Password Incorrect</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PhotoBoothDialog</name>
+ <message>
+ <location filename="../photoboothdialog.ui" line="14"/>
+ <source>Photobooth</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PhotoboothWidget</name>
+ <message>
+ <location filename="../photoboothwidget.ui" line="20"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.ui" line="129"/>
+ <source>Photobooth display</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="91"/>
+ <source>Choose File</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="93"/>
+ <source>Image Files (*.jpg *.jpeg *.png)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PrivateBridging</name>
+ <message>
+ <location filename="../messagewebview.cpp" line="363"/>
+ <source>Choose File</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../messagewebview.cpp" line="363"/>
+ <source>Files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../utils.cpp" line="195"/>
+ <source>No default mail client found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingsitemwidget.cpp" line="67"/>
+ <source>Edit Device Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingsitemwidget.cpp" line="73"/>
+ <source>Unlink Device From Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingsitemwidget.cpp" line="89"/>
+ <source>Unblock Contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="35"/>
+ <source>Jami account</source>
+ <comment>Default alias for new Jami account</comment>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>RegNameDialog</name>
+ <message>
+ <location filename="../regnamedialog.ui" line="29"/>
+ <source>Set Registered Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../regnamedialog.ui" line="93"/>
+ <source>Are you sure you would like to register this name?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../regnamedialog.ui" line="130"/>
+ <source>Once associated to this account, it cannot be changed.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../regnamedialog.ui" line="167"/>
+ <source>Your new registered name would be:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../regnamedialog.ui" line="283"/>
+ <source>Confirm Registration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../regnamedialog.ui" line="315"/>
+ <source>Cancel</source>
+ <translation>Avbryt</translation>
+ </message>
+ <message>
+ <location filename="../regnamedialog.ui" line="453"/>
+ <source>The name has been successfully registered!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../regnamedialog.ui" line="512"/>
+ <source>Something went wrong.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../regnamedialog.ui" line="549"/>
+ <source>Please try again later</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../regnamedialog.ui" line="602"/>
+ <source>Your account does not have a registered name</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>RingButton</name>
+ <message>
+ <location filename="../ringbutton.ui" line="140"/>
+ <source>Select folder</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>SetAvatarDialog</name>
+ <message>
+ <location filename="../setavatardialog.ui" line="32"/>
+ <source>Change Your Avatar Image</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../setavatardialog.ui" line="134"/>
+ <source>Save</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../setavatardialog.ui" line="153"/>
+ <source>Take Picture</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../setavatardialog.ui" line="169"/>
+ <source>Camera</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../setavatardialog.ui" line="185"/>
+ <source>Select A File</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../setavatardialog.ui" line="204"/>
+ <source>Cancel</source>
+ <translation>Avbryt</translation>
+ </message>
+ <message>
+ <location filename="../setavatardialog.cpp" line="143"/>
+ <source>Open Image</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../setavatardialog.cpp" line="143"/>
+ <source>Image Files (*.jpg *.jpeg *.png *.bmp)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <location filename="../settingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="147"/>
+ <source>Settings</source>
+ <translation>Innstillinger</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="254"/>
+ <location filename="../settingswidget.ui" line="1461"/>
+ <source>Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="298"/>
+ <source>General</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="342"/>
+ <source>Audio / Video</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="524"/>
+ <source>System</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="560"/>
+ <source>enable notifications checkbox</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="566"/>
+ <source>Enable desktop notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="588"/>
+ <source>keep minimized on close checkbox</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="594"/>
+ <source>Keep minimized on close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="635"/>
+ <source>Download folder</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="716"/>
+ <source>Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="754"/>
+ <source>Save in</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="829"/>
+ <source>Always Recording</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="858"/>
+ <source>Updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="897"/>
+ <source>Autamatic update checks checkbox</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="903"/>
+ <source>Check for updates automatically every</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="927"/>
+ <source>Interval between update checks in days selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="930"/>
+ <source> days</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="986"/>
+ <source>Check for updates now button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="994"/>
+ <source>Check for updates now</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1523"/>
+ <source>Registered Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1583"/>
+ <source>ID</source>
+ <translation>ID</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1633"/>
+ <source>Password</source>
+ <translation>Passord…</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1709"/>
+ <source>Enable</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1778"/>
+ <source>Type here to register a username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1934"/>
+ <source>Change Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2012"/>
+ <source>Export Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2038"/>
+ <source>Delete Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2125"/>
+ <location filename="../settingswidget.cpp" line="543"/>
+ <location filename="../settingswidget.cpp" line="572"/>
+ <source>Linked Devices</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2185"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2277"/>
+ <location filename="../settingswidget.cpp" line="544"/>
+ <location filename="../settingswidget.cpp" line="571"/>
+ <source>Blocked Contacts</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2371"/>
+ <source>Advanced Account Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2611"/>
+ <source>Audio</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2648"/>
+ <source>Microphone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2683"/>
+ <source>Audio input device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2717"/>
+ <source>Output Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2752"/>
+ <source>Choose the output device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2809"/>
+ <source>Video</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2831"/>
+ <source>Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2872"/>
+ <source>Video device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2891"/>
+ <source>Resolution</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2932"/>
+ <source>Video device resolution selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3074"/>
+ <source>Preview unavailable during call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="74"/>
+ <source>Enter the displayed name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="391"/>
+ <location filename="../settingswidget.cpp" line="393"/>
+ <source>A registered name should not have any spaces and must be at least three letters long</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="400"/>
+ <source>This name is already taken</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="402"/>
+ <source>This registered name is already taken</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="409"/>
+ <source>This name is available</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="411"/>
+ <source>Register this name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="493"/>
+ <source>Remove Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="494"/>
+ <source>Enter this account's password to confirm the removal of this device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="500"/>
+ <source>Please confirm that you wish to remove this device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="530"/>
+ <source>Export Account Here</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="785"/>
+ <source>Select A Folder For Your Downloads</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="809"/>
+ <source>Select A Folder For Your Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>VideoOverlay</name>
+ <message>
+ <location filename="../videooverlay.ui" line="419"/>
+ <source>Call on Hold</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="89"/>
+ <source>Hold / Unhold</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="124"/>
+ <source>Chat</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="162"/>
+ <source>Mute Mic</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="244"/>
+ <source>Record call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="325"/>
+ <source>Name label</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="390"/>
+ <source>Time elapsed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="393"/>
+ <source>00:00</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="57"/>
+ <source>Hangup</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="203"/>
+ <source>Mute Video</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>VideoView</name>
+ <message>
+ <location filename="../videoview.cpp" line="271"/>
+ <source>Share entire screen</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="274"/>
+ <source>Share screen area</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="281"/>
+ <source>Share file</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+</TS>
\ No newline at end of file
diff --git a/translations/ring_client_windows_nl.ts b/translations/ring_client_windows_nl.ts
new file mode 100644
index 0000000..147db2a
--- /dev/null
+++ b/translations/ring_client_windows_nl.ts
@@ -0,0 +1,1605 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="nl" version="2.0">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../aboutdialog.ui" line="435"/>
+ <location filename="../aboutdialog.ui" line="465"/>
+ <source>About</source>
+ <translation>Over</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="462"/>
+ <source>about button</source>
+ <translation>over-knop</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="478"/>
+ <source>credits button</source>
+ <translation>knop met dank aan</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="481"/>
+ <source>Credits</source>
+ <translation>Met dank aan</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="547"/>
+ <source>Free as in Freedom</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="563"/>
+ <source>The Microsoft Windows client for Jami.
+Jami is a secured and distributed communication software.</source>
+ <translation>De Microsoft Windows-cliënt voor Jami.
+Jami is software voor beveiligde en gedistribueerde communicatie.</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="32"/>
+ <source>version</source>
+ <translation>versie</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="39"/>
+ <source>Created by:</source>
+ <translation>Geschreven door:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="73"/>
+ <source>Artwork by:</source>
+ <translation>Illustraties door:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="77"/>
+ <source>Based on the SFLPhone project</source>
+ <translation>Gebaseerd op het SFLPhone-project</translation>
+ </message>
+</context>
+<context>
+ <name>AccountItemDelegate</name>
+ <message>
+ <location filename="../accountitemdelegate.cpp" line="91"/>
+ <source>Add Account</source>
+ <translation>Account toevoegen</translation>
+ </message>
+</context>
+<context>
+ <name>AdvancedSIPSettingsWidget</name>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulier</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="55"/>
+ <source>Call Settings</source>
+ <translation>Oproepinstellingen</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="102"/>
+ <source>Auto Answer Calls</source>
+ <translation>Oproepen automatisch beantwoorden</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="130"/>
+ <source>Enable Custom Ringtone</source>
+ <translation>Aangepaste beltoon inschakelen</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="191"/>
+ <source>Connectivity</source>
+ <translation>Connectiviteit</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="281"/>
+ <source>STUN Address</source>
+ <translation>STUN-adres</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="293"/>
+ <source>Use STUN</source>
+ <translation>STUN gebruiken</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="317"/>
+ <source>Use UPnP</source>
+ <translation>UPnP gebruiken</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="329"/>
+ <source>Use TURN</source>
+ <translation>TURN gebruiken</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="359"/>
+ <source>TURN Password</source>
+ <translation>TURN-wachtwoord</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="391"/>
+ <source>TURN Username</source>
+ <translation>TURN-gebruikersnaam</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="423"/>
+ <source>TURN Address</source>
+ <translation>TURN-adres</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="464"/>
+ <source>Media</source>
+ <translation>Media</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="515"/>
+ <source>Enable Video</source>
+ <translation>Video inschakelen</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="539"/>
+ <source>Video Codecs</source>
+ <translation>Videocodecs</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="692"/>
+ <source>Audio Codecs</source>
+ <translation>Audiocodecs</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="142"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation>Audiobestanden (*.wav *.ogg *.opus *.mp3 *aiff *wma)</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="151"/>
+ <source>Add a custom ringtone</source>
+ <translation>Voeg een aangepaste beltoon toe</translation>
+ </message>
+</context>
+<context>
+ <name>AdvancedSettingsWidget</name>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulier</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="61"/>
+ <source>Call Settings</source>
+ <translation>Oproepinstellingen</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="108"/>
+ <source>Allow Calls From Untrusted Peers</source>
+ <translation>Oproepen van onvertrouwde gebruikers toestaan</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="133"/>
+ <source>Auto Answer Calls</source>
+ <translation>Oproepen automatisch beantwoorden</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="161"/>
+ <source>Enable Custom Ringtone</source>
+ <translation>Aangepaste beltoon inschakelen</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="188"/>
+ <source>Add a custom ringtone</source>
+ <translation>Voeg een aangepaste beltoon toe</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="225"/>
+ <source>Name Server</source>
+ <translation>Naamserver</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="275"/>
+ <source>Address</source>
+ <translation>Adres</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="351"/>
+ <source>OpenDHT Configuration</source>
+ <translation>OpenDHT-configuratie</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="398"/>
+ <source>Enable Proxy</source>
+ <translation>Proxy inschakelen</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="454"/>
+ <source>Bootstrap</source>
+ <translation>Bootstrap</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="530"/>
+ <source>Security</source>
+ <translation>Beveiliging</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="571"/>
+ <source>Private Key Password</source>
+ <translation>Wachtwoord persoonlijke sleutel</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="583"/>
+ <source>User Certificate</source>
+ <translation>Gebruikerscertificaat</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="622"/>
+ <source>Private Key</source>
+ <translation>Privésleutel</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="634"/>
+ <source>CA Certificate</source>
+ <translation>CA-certificaat</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="766"/>
+ <source>Connectivity</source>
+ <translation>Connectiviteit</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="868"/>
+ <source>Use STUN</source>
+ <translation>STUN gebruiken</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="856"/>
+ <source>STUN Address</source>
+ <translation>STUN-adres</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="892"/>
+ <source>Use UPnP</source>
+ <translation>UPnP gebruiken</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="904"/>
+ <source>Use TURN</source>
+ <translation>TURN gebruiken</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="934"/>
+ <source>TURN Password</source>
+ <translation>TURN-wachtwoord</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="966"/>
+ <source>TURN Username</source>
+ <translation>TURN-gebruikersnaam</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="998"/>
+ <source>TURN Address</source>
+ <translation>TURN-adres</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1039"/>
+ <source>Media</source>
+ <translation>Media</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1090"/>
+ <source>Enable Video</source>
+ <translation>Video inschakelen</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1267"/>
+ <source>Audio Codecs</source>
+ <translation>Audiocodecs</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1114"/>
+ <source>Video Codecs</source>
+ <translation>Videocodecs</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="181"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation>Audiobestanden (*.wav *.ogg *.opus *.mp3 *aiff *wma)</translation>
+ </message>
+</context>
+<context>
+ <name>AnimatedOverlay</name>
+ <message>
+ <location filename="../animatedoverlay.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulier</translation>
+ </message>
+</context>
+<context>
+ <name>BannedItemWidget</name>
+ <message>
+ <location filename="../banneditemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulier</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="80"/>
+ <source>name</source>
+ <translation>naam</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="104"/>
+ <source>id</source>
+ <translation>ID</translation>
+ </message>
+</context>
+<context>
+ <name>CallWidget</name>
+ <message>
+ <location filename="../callwidget.ui" line="184"/>
+ <source>Show conversations</source>
+ <translation>Gesprekken tonen</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="187"/>
+ <source>Conversations</source>
+ <translation>Gesprekken</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="368"/>
+ <source>Search contact text input</source>
+ <translation>Tekstinvoer contact zoeken</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="653"/>
+ <source>Jami is free software for universal communication which respects the freedoms and privacy of its users.</source>
+ <translation>Jami is vrije software voor universele communicatie, die de vrijheden en privacy van haar gebruikers eerbiedigt.</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="693"/>
+ <source>
+ This is your ID.
+Copy and share it with your friends!
+ </source>
+ <translation>
+ Dit is uw ID.
+Kopieer en deel het met uw vrienden!</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="806"/>
+ <source>Show ring ID QR code</source>
+ <translation>Toon QR-code voor Ring-ID</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="857"/>
+ <source>Share ring ID button</source>
+ <translation>Knop Ring-ID delen</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="915"/>
+ <source>Double-click to copy</source>
+ <translation>Dubbelklik om te kopiëren</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="956"/>
+ <source>Error while generating QR Code</source>
+ <translation>Fout bij het aanmaken van QR-code</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1184"/>
+ <location filename="../callwidget.ui" line="1434"/>
+ <source>best name</source>
+ <translation>beste naam</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1208"/>
+ <source>best Id</source>
+ <translation>beste ID</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1734"/>
+ <source>Back to homepage button</source>
+ <translation>Knop terug naar startpagina</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1943"/>
+ <source>Add to contacts</source>
+ <translation>Toevoegen aan contacten</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="202"/>
+ <source>Show invites</source>
+ <translation>Uitnodigingen tonen</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="205"/>
+ <source>Invites</source>
+ <translation>Uitnodigingen</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="377"/>
+ <location filename="../callwidget.cpp" line="552"/>
+ <source>Find a new or existing contact</source>
+ <translation>Zoek een nieuw of bestaand contact</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1444"/>
+ <source>Wants to talk to you!</source>
+ <translation>Wil met u praten!</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1517"/>
+ <source>Answer incoming call button</source>
+ <translation>Knop inkomende oproep beantwoorden</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1589"/>
+ <source>Ignore incoming call button</source>
+ <translation>Knop inkomende oproep negeren</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1539"/>
+ <source>Answer</source>
+ <translation>Beantwoorden</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1617"/>
+ <source>Ignore</source>
+ <translation>Negeren</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1280"/>
+ <source>Cancel outgoing call</source>
+ <translation>Uitgaande oproep annuleren</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1305"/>
+ <source>Cancel</source>
+ <translation>Annuleren</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="332"/>
+ <source>Start video call</source>
+ <translation>Video-oproep starten</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="343"/>
+ <source>Start audio call</source>
+ <translation>Audio-oproep starten</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="354"/>
+ <source>Clear conversation</source>
+ <translation>Gesprek wissen</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="361"/>
+ <source>Remove contact</source>
+ <translation>Contact verwijderen</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="373"/>
+ <source>Block contact</source>
+ <translation>Contact blokkeren</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="384"/>
+ <source>Copy number</source>
+ <translation>Nummer kopiëren</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="561"/>
+ <source>Search your received invitations</source>
+ <translation>Zoek naar uw ontvangen uitnodigingen</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>Contact me on Jami</source>
+ <translation>Contacteer me op Jami</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>My Id is : </source>
+ <translation>Mijn ID is:</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="847"/>
+ <source>%1</source>
+ <comment>%1 is the contact username</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="852"/>
+ <source>%1</source>
+ <comment>%1 is the contact unique identifier</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="675"/>
+ <source>Call incoming from %1</source>
+ <translation>Inkomende oproep van %1</translation>
+ </message>
+</context>
+<context>
+ <name>DeleteAccountDialog</name>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="35"/>
+ <source>Account deletion</source>
+ <translation>Accountverwijdering</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="58"/>
+ <source>Do you really want to delete the following account?</source>
+ <translation>Weet u zeker dat u het volgende account wilt verwijderen?</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="153"/>
+ <source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
+ <translation>Als dit account nog niet geëxporteerd is of nog niet toegevoegd is aan een ander apparaat, zal het onherroepelijk verloren gaan</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="235"/>
+ <source>Permanently delete account</source>
+ <translation>Account voorgoed verwijderen</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="241"/>
+ <source>Delete</source>
+ <translation>Verwijderen</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="278"/>
+ <source>Cancel account deletion</source>
+ <translation>Accountverwijdering annuleren</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="284"/>
+ <source>Cancel</source>
+ <translation>Annuleren</translation>
+ </message>
+</context>
+<context>
+ <name>DeviceItemWidget</name>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulier</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="105"/>
+ <source>Device Id</source>
+ <translation>Apparaat-ID</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="143"/>
+ <source>this device</source>
+ <translation>dit apparaat</translation>
+ </message>
+</context>
+<context>
+ <name>InviteButtonsWidget</name>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="83"/>
+ <source>Accept</source>
+ <translation>Accepteren</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="131"/>
+ <source>Refuse</source>
+ <translation>Afwijzen</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="179"/>
+ <source>Block</source>
+ <translation>Blokkeren</translation>
+ </message>
+</context>
+<context>
+ <name>LinkDeviceDialog</name>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation>Dialoog</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="62"/>
+ <source>Enter your account password</source>
+ <translation>Voer uw accountwachtwoord in</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="117"/>
+ <source>Password</source>
+ <translation>Wachtwoord</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="184"/>
+ <source>Ok</source>
+ <translation>Oké</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="218"/>
+ <source>Cancel</source>
+ <translation>Annuleren</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="279"/>
+ <source>Exporting account</source>
+ <translation>Account wordt geëxporteerd</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="402"/>
+ <source>Your PIN is</source>
+ <translation>Uw pincode is</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="432"/>
+ <source>PIN</source>
+ <translation>Pincode</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="477"/>
+ <source>This pin and the account password should be entered in your device within 10 minutes.</source>
+ <translation>Deze pincode en het accountwachtwoord moeten binnen 10 minuten op uw apparaat worden ingevoerd</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="553"/>
+ <source>Close</source>
+ <translation>Sluiten</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="34"/>
+ <source>Link Another Device</source>
+ <translation>Een ander apparaat koppelen</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="96"/>
+ <source>Incorrect password</source>
+ <translation>Verkeerd wachtwoord</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="110"/>
+ <source>Something went wrong.
+Please try again later.</source>
+ <translation>Er ging iets mis.
+Probeer het later opnieuw.</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="83"/>
+ <source>Settings</source>
+ <translation>Instellingen</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="94"/>
+ <source>Exit</source>
+ <translation>Afsluiten</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="111"/>
+ <source>About</source>
+ <translation>Over</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="435"/>
+ <source>Jami</source>
+ <translation>Jami</translation>
+ </message>
+</context>
+<context>
+ <name>NameRegistrationDialog</name>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="35"/>
+ <source>Set Registered Name</source>
+ <translation>Stel geregistreerde naam in</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="163"/>
+ <source>Enter your account password</source>
+ <translation>Voer uw accountwachtwoord in</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="244"/>
+ <source>Password text input</source>
+ <translation>Wachtwoordtekstinvoer</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="250"/>
+ <source>Password text entry</source>
+ <translation>Wachtwoordtekstinvoer</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="256"/>
+ <source>Password</source>
+ <translation>Wachtwoord</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="323"/>
+ <source>Register</source>
+ <translation>Registreren</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="357"/>
+ <source>Cancel</source>
+ <translation>Annuleren</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="424"/>
+ <source>Registering Name</source>
+ <translation>Naam wordt geregistreerd</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="548"/>
+ <source>Something went wrong</source>
+ <translation>Er ging iets mis</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="618"/>
+ <source>Close</source>
+ <translation>Sluiten</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="82"/>
+ <source>Incorrect password</source>
+ <translation>Verkeerd wachtwoord</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="85"/>
+ <source>Network error</source>
+ <translation>Netwerkfout</translation>
+ </message>
+</context>
+<context>
+ <name>NewWizardWidget</name>
+ <message>
+ <location filename="../newwizardwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulier</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="141"/>
+ <source>Welcome Label</source>
+ <translation>Welkomstlabel</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="147"/>
+ <source> Welcome to</source>
+ <translation>Welkom bij</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="185"/>
+ <source>Welcome Logo</source>
+ <translation>Welkomstlogo</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="239"/>
+ <source>Create Jami account button</source>
+ <translation>Knop Jami-account aanmaken</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="245"/>
+ <source>Push button for Jami account creation start trigger</source>
+ <translation>Trekker voor starten van aanmaken van Jami-account na druk op knop</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="251"/>
+ <source>Create a Jami account</source>
+ <translation>Een Jami-account aanmaken</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="282"/>
+ <source>Link device button</source>
+ <translation>Knop apparaat koppelen</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="288"/>
+ <source>Push button for device linkage start trigger</source>
+ <translation>Trekker voor koppelen van apparaat na druk op knop</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="291"/>
+ <source>Link this device to an account</source>
+ <translation>Dit apparaat aan een account koppelen</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="328"/>
+ <source>Create Jami SIP account button</source>
+ <translation>Knop Jami-SIP-account aanmaken</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="334"/>
+ <source>Push button for Jami SIP account creation start trigger</source>
+ <translation>Trekker voor starten van aanmaken van Jami-SIP-account na druk op knop</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="340"/>
+ <source>Create a SIP account</source>
+ <translation>Een SIP-account aanmaken</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="405"/>
+ <source>Link this device to an existing account</source>
+ <translation>Dit apparaat aan een bestaand account koppelen</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="469"/>
+ <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">To link this device to another account, you first </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">need to obtain a PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> code. To generate the PIN code:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Account management setting</span><span style=" font-size:14px;"> of a previous device</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choose the </span><span style=" font-size:14px; font-weight:600;">Jami account</span><span style=" font-size:14px;"> you want to use</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Devices</span><span style=" font-size:14px;"> tab</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Select </span><span style=" font-size:14px; font-weight:600;">Add a device</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">You will get the necessary PIN to complete this form. The PIN is only valid for </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutes</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></source>
+ <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">Om dit apparaat aan een ander account te koppelen, dient u eerst </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">een pincode te verkrijgen</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">. Om de pincode te genereren:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Ga naar de </span><span style=" font-size:14px; font-weight:600;">Accountbeheerinstellingen</span><span style=" font-size:14px;"> van een vorig apparaat</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Kies het </span><span style=" font-size:14px; font-weight:600;">Jami-account</span><span style=" font-size:14px;"> dat u wilt gebruiken</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Ga naar het tabblad </span><span style=" font-size:14px; font-weight:600;">Apparaten</span><span style=" font-size:14px;"></span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Selecteer </span><span style=" font-size:14px; font-weight:600;">Een apparaat toevoegen</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">U zult de pincode krijgen die u nodig heeft om dit proces te voltooien. De pincode is slechts </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minuten</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;"> geldig.</span></p></body></html></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="531"/>
+ <source>Enter your pin:</source>
+ <translation>Voer uw pincode in:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="599"/>
+ <source>Or import a file:</source>
+ <translation>Of importeer een bestand:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="626"/>
+ <source>Link from exported account archive file</source>
+ <translation>Koppelen van geëxporteerd accountarchiefbestand</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="629"/>
+ <location filename="../newwizardwidget.cpp" line="83"/>
+ <location filename="../newwizardwidget.cpp" line="218"/>
+ <source>(None)</source>
+ <translation>(geen)</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="705"/>
+ <source>Password:</source>
+ <translation>Wachtwoord:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="799"/>
+ <location filename="../newwizardwidget.ui" line="1586"/>
+ <source>Profile</source>
+ <translation>Profiel</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="953"/>
+ <location filename="../newwizardwidget.ui" line="1767"/>
+ <source>Profile name</source>
+ <translation>Profielnaam</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1027"/>
+ <source>Account</source>
+ <translation>Account</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1136"/>
+ <source>Register your username.
+This will reserve the username so that only you can use it.
+Your friends will be able to call you with your usename
+instead of using your ID.</source>
+ <translation>Registreer uw gebruikersnaam.
+Dit zal de gebruikersnaam registreren, zodat enkel u ze kunt gebruiken.
+Uw vrienden zullen u kunnen bellen met uw gebruikersnaam
+in plaats van uw Ring-ID.</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1142"/>
+ <source>Public username checkbox</source>
+ <translation>Selectievakje openbare gebruikersnaam</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1145"/>
+ <source>Checkbox selecting if the user wants a public username</source>
+ <translation>Selectievakje om te kiezen of de gebruiker een openbare gebruikersnaam wil</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1148"/>
+ <source>Register public username</source>
+ <translation>Registreer een openbare gebruikersnaam</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1367"/>
+ <source>Public username edit</source>
+ <translation>Bewerken openbare gebruikersnaam</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1373"/>
+ <source>Choose your username</source>
+ <translation>Kies uw gebruikersnaam</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1289"/>
+ <source>Password text input</source>
+ <translation>Wachtwoordtekstinvoer</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1295"/>
+ <source>Password text entry</source>
+ <translation>Wachtwoordtekstinvoer</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1301"/>
+ <location filename="../newwizardwidget.ui" line="2213"/>
+ <source>Password</source>
+ <translation>Wachtwoord</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1211"/>
+ <location filename="../newwizardwidget.ui" line="1217"/>
+ <source>Password confirmation text input</source>
+ <translation>Wachtwoordbevestigingstekstinvoer</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1223"/>
+ <source>Confirm password</source>
+ <translation>Bevestig wachtwoord</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1814"/>
+ <source>SIP Account</source>
+ <translation>SIP-account</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1973"/>
+ <source>SIP Server edit</source>
+ <translation>SIP-server bewerken</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1979"/>
+ <source>Server</source>
+ <translation>Server</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2045"/>
+ <source>SIP proxy input</source>
+ <translation>SIP-proxy-invoer</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2051"/>
+ <source>SIP proxy text entry</source>
+ <translation>SIP-proxy-tekstinvoer</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2057"/>
+ <source>Proxy</source>
+ <translation>Proxy</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2123"/>
+ <source>SIP username input</source>
+ <translation>SIP-gebruikersnaaminvoer</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2129"/>
+ <source>SIP Password text entry</source>
+ <translation>SIP-wachtwoord-tekstinvoer</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2135"/>
+ <source>Username</source>
+ <translation>Gebruikersnaam</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2201"/>
+ <location filename="../newwizardwidget.ui" line="2207"/>
+ <source>SIP Password text input</source>
+ <translation>SIP-wachtwoord-tekstinvoer</translation>
+ </message>
+ <message utf8="true">
+ <location filename="../newwizardwidget.ui" line="2282"/>
+ <source>Generating your Jami account…</source>
+ <translation>Uw Jami-account wordt aangemaakt…</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2356"/>
+ <source>Previous page button</source>
+ <translation>Knop vorige pagina</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2362"/>
+ <source>push button to access previous page of wizard</source>
+ <translation>druk op de knop om naar de vorige pagina van de assistent te gaan</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2365"/>
+ <source>Previous</source>
+ <translation>Vorige</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2396"/>
+ <source>Cancel account create/link</source>
+ <translation>Aanmaken/koppelen van account annuleren</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2402"/>
+ <source>push button to cancel account creation or linking</source>
+ <translation>trekker voor annuleren van aanmaken of verwijderen van account</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2405"/>
+ <source>Back</source>
+ <translation>Terug</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2442"/>
+ <source>Next page Button</source>
+ <translation>Knop volgende pagina</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2448"/>
+ <source>Push button to access next page of wizard</source>
+ <translation>Druk op de knop om naar de volgende pagina van de assistent te gaan</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2451"/>
+ <source>Next</source>
+ <translation>Volgende</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="75"/>
+ <source>Open File</source>
+ <translation>Bestand openen</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="77"/>
+ <source>Jami archive files (*.gz); All files (*)</source>
+ <translation>Jami-archiefbestanden (*.gz); Alle bestanden (*)</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="123"/>
+ <source>Your account needs to be migrated. Enter your password.</source>
+ <translation>Uw account moet gemigreerd worden. Voer uw wachtwoord in.</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="419"/>
+ <source>Migrating your Jami account...</source>
+ <translation>Uw Jami-account wordt gemigreerd…</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="412"/>
+ <source>Importing account archive...</source>
+ <translation>Accountarchief importeren…</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="404"/>
+ <source>Generating your Jami account...</source>
+ <translation>Uw Jami-account wordt aangemaakt…</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="422"/>
+ <source>Generating your SIP account...</source>
+ <translation>Uw SIP-account wordt gegenereerd…</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="533"/>
+ <source>Error creating account</source>
+ <translation>Fout bij aanmaken van account</translation>
+ </message>
+</context>
+<context>
+ <name>PasswordDialog</name>
+ <message>
+ <location filename="../passworddialog.ui" line="32"/>
+ <source>Change Account Password</source>
+ <translation>Accountwachtwoord wijzigen</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="97"/>
+ <source>Enter Current Password</source>
+ <translation>Voer huidig wachtwoord in</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="169"/>
+ <source>Enter New Password</source>
+ <translation>Voer nieuw wachtwoord in</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="190"/>
+ <source>Confirm New Password</source>
+ <translation>Bevestig nieuw wachtwoord</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="247"/>
+ <source>Confirm</source>
+ <translation>Bevestigen</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="290"/>
+ <source>Cancel</source>
+ <translation>Annuleren</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="143"/>
+ <source>Current Password Incorrect</source>
+ <translation>Huidige wachtwoord is verkeerd</translation>
+ </message>
+</context>
+<context>
+ <name>PhotoBoothDialog</name>
+ <message>
+ <location filename="../photoboothdialog.ui" line="14"/>
+ <source>Photobooth</source>
+ <translation>Fotoautomaat</translation>
+ </message>
+</context>
+<context>
+ <name>PhotoboothWidget</name>
+ <message>
+ <location filename="../photoboothwidget.ui" line="20"/>
+ <source>Form</source>
+ <translation>Formulier</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.ui" line="120"/>
+ <source>Photobooth display</source>
+ <translation>Fotoautomaatweergave</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="92"/>
+ <source>Choose File</source>
+ <translation>Bestand kiezen</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="94"/>
+ <source>Image Files (*.jpg *.jpeg *.png)</source>
+ <translation>Afbeeldingsbestanden (*.jpg *.jpeg *.png)</translation>
+ </message>
+</context>
+<context>
+ <name>PrivateBridging</name>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Choose File</source>
+ <translation>Bestand kiezen</translation>
+ </message>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Files (*)</source>
+ <translation>Bestanden (*)</translation>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../utils.cpp" line="183"/>
+ <source>No default mail client found</source>
+ <translation>Geen standaard-e-mailprogramma gevonden</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="43"/>
+ <location filename="../deviceitemwidget.cpp" line="85"/>
+ <source>Edit Device Name</source>
+ <translation>Apparaatnaam bewerken</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="44"/>
+ <source>Unlink Device From Account</source>
+ <translation>Apparaat ontkoppelen van account</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="80"/>
+ <source>Save new device name</source>
+ <translation>Nieuwe apparaatnaam opslaan</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.cpp" line="39"/>
+ <source>Add as contact</source>
+ <translation>Toevoegen aan contacten</translation>
+ </message>
+</context>
+<context>
+ <name>RingButton</name>
+ <message>
+ <location filename="../ringbutton.ui" line="140"/>
+ <source>Select folder</source>
+ <translation>Kies een map</translation>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <location filename="../settingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulier</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="141"/>
+ <source>Settings</source>
+ <translation>Instellingen</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="229"/>
+ <source>Account</source>
+ <translation>Account</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="267"/>
+ <location filename="../settingswidget.ui" line="503"/>
+ <source>General</source>
+ <translation>Algemeen</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="305"/>
+ <location filename="../settingswidget.ui" line="3416"/>
+ <source>Audio / Video</source>
+ <translation>Audio/video</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="542"/>
+ <source>System</source>
+ <translation>Systeem</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="610"/>
+ <source>Enable desktop notifications</source>
+ <translation>Bureaubladmeldingen inschakelen</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="653"/>
+ <source>Keep minimized on close</source>
+ <translation>Minimaliseren bij sluiten</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="678"/>
+ <source>Download folder</source>
+ <translation>Downloadmap</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="811"/>
+ <source>Save in</source>
+ <translation>Opslaan in</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="904"/>
+ <source>Always Recording</source>
+ <translation>Altijd opnemen</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="943"/>
+ <source>Updates</source>
+ <translation>Updates</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1008"/>
+ <source>Check for updates automatically every</source>
+ <translation>Automatisch controleren op updates elke</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1032"/>
+ <source>Interval between update checks in days selector</source>
+ <translation>Selectie interval in dagen tussen controles op updates</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1038"/>
+ <source> days</source>
+ <translation>dagen</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1081"/>
+ <source>Check for updates now button</source>
+ <translation>Knop nu controleren op updates</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1084"/>
+ <source>Check for updates now</source>
+ <translation>Nu controleren op updates</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3027"/>
+ <source>Password</source>
+ <translation>Wachtwoord</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1418"/>
+ <location filename="../settingswidget.ui" line="2729"/>
+ <source>Enable</source>
+ <translation>Inschakelen</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="607"/>
+ <source>toggle enable notifications</source>
+ <translation>schakelaar meldingen inschakelen</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="650"/>
+ <source>Toggle keep minimized on close</source>
+ <translation>Schakelaar minimaliseren bij sluiten</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="764"/>
+ <source>Call Recordings</source>
+ <translation>Oproepopnamen</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1005"/>
+ <source>Toggle automatic updates</source>
+ <translation>Schakelaar automatische updates</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1231"/>
+ <source>Jami Account</source>
+ <translation>Jami-account</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1453"/>
+ <location filename="../settingswidget.ui" line="2761"/>
+ <source>Profile</source>
+ <translation>Profiel</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1567"/>
+ <location filename="../settingswidget.ui" line="2875"/>
+ <source>Identity</source>
+ <translation>Identiteit</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1614"/>
+ <source>Id</source>
+ <translation>ID</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1673"/>
+ <source>Registered name</source>
+ <translation>Geregistreerde naam</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1721"/>
+ <source>Type here to register a username</source>
+ <translation>Typ hier om een gebruikersnaam te registreren</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1755"/>
+ <source>Register</source>
+ <translation>Registreren</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1827"/>
+ <source>Change Password</source>
+ <translation>Wachtwoord wijzigen</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1868"/>
+ <source>Export Account</source>
+ <translation>Account exporteren</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1909"/>
+ <location filename="../settingswidget.ui" line="3089"/>
+ <source>Delete Account</source>
+ <translation>Account verwijderen</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1973"/>
+ <source>Linked Devices</source>
+ <translation>Gekoppelde apparaten</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2078"/>
+ <source>Link Another Device</source>
+ <translation>Een ander apparaat koppelen</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2142"/>
+ <source>Banned Contacts</source>
+ <translation>Geblokkeerde contacten</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3788"/>
+ <source>Format</source>
+ <translation>Formaat</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3831"/>
+ <source>Video device framerate selector</source>
+ <translation>Framerateselectie voor video-apparaat</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3967"/>
+ <source>Preview unavailable</source>
+ <translation>Voorbeeld niet beschikbaar</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2359"/>
+ <location filename="../settingswidget.ui" line="3187"/>
+ <source>Advanced Account Settings</source>
+ <translation>Geavanceerde accountinstellingen</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2554"/>
+ <source>SIP Account</source>
+ <translation>SIP-account</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2925"/>
+ <source>Username</source>
+ <translation>Gebruikersnaam</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2958"/>
+ <source>Hostname</source>
+ <translation>Hostnaam</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2991"/>
+ <source>Proxy</source>
+ <translation>Proxy</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3461"/>
+ <source>Audio</source>
+ <translation>Geluid</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3511"/>
+ <source>Microphone</source>
+ <translation>Microfoon</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3551"/>
+ <source>Audio input device selector</source>
+ <translation>Selectie audio-invoerapparaat</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3585"/>
+ <source>Output Device</source>
+ <translation>Uitvoerapparaat</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3625"/>
+ <source>Choose the output device</source>
+ <translation>Kies het uitvoerapparaat</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3682"/>
+ <source>Video</source>
+ <translation>Video</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3720"/>
+ <source>Device</source>
+ <translation>Apparaat</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3766"/>
+ <source>Video device selector</source>
+ <translation>Selectie video-apparaat</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="459"/>
+ <source>A registered name should not have any spaces and must be at least three letters long</source>
+ <translation>Een geregistreerde naam mag geen spaties bevatten, en moet minstens drie tekens lang zijn</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="466"/>
+ <source>This name is already taken</source>
+ <translation>Deze naam is reeds in gebruik</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="92"/>
+ <location filename="../settingswidget.cpp" line="110"/>
+ <source>Enter an alias</source>
+ <translation>Voer een alias in</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="473"/>
+ <source>Register this name</source>
+ <translation>Deze naam registreren</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="550"/>
+ <source>Remove Device</source>
+ <translation>Apparaat verwijderen</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="551"/>
+ <source>Enter this account's password to confirm the removal of this device</source>
+ <translation>Voer het wachtwoord van dit account in om het verwijderen van dit apparaat te bevestigen</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="558"/>
+ <source>Are you sure you wish to remove this device?</source>
+ <translation>Weet u zeker dat u dit apparaat wilt verwijderen?</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="589"/>
+ <source>Export Account Here</source>
+ <translation>Account hier exporteren</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="887"/>
+ <source>Select A Folder For Your Downloads</source>
+ <translation>Selecteer een map voor uw downloads</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="904"/>
+ <source>Select A Folder For Your Recordings</source>
+ <translation>Kies een map voor uw opnamen</translation>
+ </message>
+</context>
+<context>
+ <name>VideoOverlay</name>
+ <message>
+ <location filename="../videooverlay.ui" line="419"/>
+ <source>Call on Hold</source>
+ <translation>Telefoongesprek in wacht</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="89"/>
+ <source>Hold / Unhold</source>
+ <translation>In wacht zetten / uit wacht halen</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="124"/>
+ <source>Chat</source>
+ <translation>Chat</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="162"/>
+ <source>Mute Mic</source>
+ <translation>Microfoon dempen</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="244"/>
+ <source>Record call</source>
+ <translation>Gesprek opnemen</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="325"/>
+ <source>Name label</source>
+ <translation>Naamlabel</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="390"/>
+ <source>Time elapsed</source>
+ <translation>Tijd verstreken</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="393"/>
+ <source>00:00</source>
+ <translation>00:00</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="57"/>
+ <source>Hangup</source>
+ <translation>Ophangen</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="203"/>
+ <source>Mute Video</source>
+ <translation>Video uitschakelen</translation>
+ </message>
+</context>
+<context>
+ <name>VideoView</name>
+ <message>
+ <location filename="../videoview.cpp" line="271"/>
+ <source>Share entire screen</source>
+ <translation>Scherm delen</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="274"/>
+ <source>Share screen area</source>
+ <translation>Schermgebied delen</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="281"/>
+ <source>Share file</source>
+ <translation>Bestand delen</translation>
+ </message>
+</context>
+</TS>
\ No newline at end of file
diff --git a/translations/ring_client_windows_nl_BE.ts b/translations/ring_client_windows_nl_BE.ts
new file mode 100644
index 0000000..b78da34
--- /dev/null
+++ b/translations/ring_client_windows_nl_BE.ts
@@ -0,0 +1,1605 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="nl_BE" version="2.0">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../aboutdialog.ui" line="435"/>
+ <location filename="../aboutdialog.ui" line="465"/>
+ <source>About</source>
+ <translation>Over</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="462"/>
+ <source>about button</source>
+ <translation>over-knop</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="478"/>
+ <source>credits button</source>
+ <translation>knop met dank aan</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="481"/>
+ <source>Credits</source>
+ <translation>Met dank aan</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="547"/>
+ <source>Free as in Freedom</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="563"/>
+ <source>The Microsoft Windows client for Jami.
+Jami is a secured and distributed communication software.</source>
+ <translation>De Microsoft Windows-cliënt voor Jami.
+Jami is software voor beveiligde en gedistribueerde communicatie.</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="32"/>
+ <source>version</source>
+ <translation>versie</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="39"/>
+ <source>Created by:</source>
+ <translation>Geschreven door:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="73"/>
+ <source>Artwork by:</source>
+ <translation>Illustraties door:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="77"/>
+ <source>Based on the SFLPhone project</source>
+ <translation>Gebaseerd op het SFLPhone-project</translation>
+ </message>
+</context>
+<context>
+ <name>AccountItemDelegate</name>
+ <message>
+ <location filename="../accountitemdelegate.cpp" line="91"/>
+ <source>Add Account</source>
+ <translation>Account toevoegen</translation>
+ </message>
+</context>
+<context>
+ <name>AdvancedSIPSettingsWidget</name>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulier</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="55"/>
+ <source>Call Settings</source>
+ <translation>Oproepinstellingen</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="102"/>
+ <source>Auto Answer Calls</source>
+ <translation>Oproepen automatisch beantwoorden</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="130"/>
+ <source>Enable Custom Ringtone</source>
+ <translation>Aangepaste beltoon inschakelen</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="191"/>
+ <source>Connectivity</source>
+ <translation>Connectiviteit</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="281"/>
+ <source>STUN Address</source>
+ <translation>STUN-adres</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="293"/>
+ <source>Use STUN</source>
+ <translation>STUN gebruiken</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="317"/>
+ <source>Use UPnP</source>
+ <translation>UPnP gebruiken</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="329"/>
+ <source>Use TURN</source>
+ <translation>TURN gebruiken</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="359"/>
+ <source>TURN Password</source>
+ <translation>TURN-paswoord</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="391"/>
+ <source>TURN Username</source>
+ <translation>TURN-gebruikersnaam</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="423"/>
+ <source>TURN Address</source>
+ <translation>TURN-adres</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="464"/>
+ <source>Media</source>
+ <translation>Media</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="515"/>
+ <source>Enable Video</source>
+ <translation>Video inschakelen</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="539"/>
+ <source>Video Codecs</source>
+ <translation>Videocodecs</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="692"/>
+ <source>Audio Codecs</source>
+ <translation>Audiocodecs</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="142"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation>Audiobestanden (*.wav *.ogg *.opus *.mp3 *aiff *wma)</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="151"/>
+ <source>Add a custom ringtone</source>
+ <translation>Voeg een aangepaste beltoon toe</translation>
+ </message>
+</context>
+<context>
+ <name>AdvancedSettingsWidget</name>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulier</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="61"/>
+ <source>Call Settings</source>
+ <translation>Oproepinstellingen</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="108"/>
+ <source>Allow Calls From Untrusted Peers</source>
+ <translation>Oproepen van onvertrouwde gebruikers toestaan</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="133"/>
+ <source>Auto Answer Calls</source>
+ <translation>Oproepen automatisch beantwoorden</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="161"/>
+ <source>Enable Custom Ringtone</source>
+ <translation>Aangepaste beltoon inschakelen</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="188"/>
+ <source>Add a custom ringtone</source>
+ <translation>Voeg een aangepaste beltoon toe</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="225"/>
+ <source>Name Server</source>
+ <translation>Naamserver</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="275"/>
+ <source>Address</source>
+ <translation>Adres</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="351"/>
+ <source>OpenDHT Configuration</source>
+ <translation>OpenDHT-configuratie</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="398"/>
+ <source>Enable Proxy</source>
+ <translation>Proxy inschakelen</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="454"/>
+ <source>Bootstrap</source>
+ <translation>Bootstrap</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="530"/>
+ <source>Security</source>
+ <translation>Beveiliging</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="571"/>
+ <source>Private Key Password</source>
+ <translation>Paswoord persoonlijke sleutel</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="583"/>
+ <source>User Certificate</source>
+ <translation>Gebruikerscertificaat</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="622"/>
+ <source>Private Key</source>
+ <translation>Privésleutel</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="634"/>
+ <source>CA Certificate</source>
+ <translation>CA-certificaat</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="766"/>
+ <source>Connectivity</source>
+ <translation>Connectiviteit</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="868"/>
+ <source>Use STUN</source>
+ <translation>STUN gebruiken</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="856"/>
+ <source>STUN Address</source>
+ <translation>STUN-adres</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="892"/>
+ <source>Use UPnP</source>
+ <translation>UPnP gebruiken</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="904"/>
+ <source>Use TURN</source>
+ <translation>TURN gebruiken</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="934"/>
+ <source>TURN Password</source>
+ <translation>TURN-paswoord</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="966"/>
+ <source>TURN Username</source>
+ <translation>TURN-gebruikersnaam</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="998"/>
+ <source>TURN Address</source>
+ <translation>TURN-adres</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1039"/>
+ <source>Media</source>
+ <translation>Media</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1090"/>
+ <source>Enable Video</source>
+ <translation>Video inschakelen</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1267"/>
+ <source>Audio Codecs</source>
+ <translation>Audiocodecs</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1114"/>
+ <source>Video Codecs</source>
+ <translation>Videocodecs</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="181"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation>Audiobestanden (*.wav *.ogg *.opus *.mp3 *aiff *wma)</translation>
+ </message>
+</context>
+<context>
+ <name>AnimatedOverlay</name>
+ <message>
+ <location filename="../animatedoverlay.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulier</translation>
+ </message>
+</context>
+<context>
+ <name>BannedItemWidget</name>
+ <message>
+ <location filename="../banneditemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulier</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="80"/>
+ <source>name</source>
+ <translation>naam</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="104"/>
+ <source>id</source>
+ <translation>ID</translation>
+ </message>
+</context>
+<context>
+ <name>CallWidget</name>
+ <message>
+ <location filename="../callwidget.ui" line="184"/>
+ <source>Show conversations</source>
+ <translation>Gesprekken tonen</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="187"/>
+ <source>Conversations</source>
+ <translation>Gesprekken</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="368"/>
+ <source>Search contact text input</source>
+ <translation>Tekstingave contact zoeken</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="653"/>
+ <source>Jami is free software for universal communication which respects the freedoms and privacy of its users.</source>
+ <translation>Jami is vrije software voor universele communicatie, die de vrijheden en privacy van zijn gebruikers eerbiedigt.</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="693"/>
+ <source>
+ This is your ID.
+Copy and share it with your friends!
+ </source>
+ <translation>
+ Dit is uw ID.
+Kopieer en deel hem met uw vrienden!</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="806"/>
+ <source>Show ring ID QR code</source>
+ <translation>Toon QR-code voor Ring-ID</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="857"/>
+ <source>Share ring ID button</source>
+ <translation>Knop Ring-ID delen</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="915"/>
+ <source>Double-click to copy</source>
+ <translation>Dubbelklik om te kopiëren</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="956"/>
+ <source>Error while generating QR Code</source>
+ <translation>Fout bij het aanmaken van QR-code</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1184"/>
+ <location filename="../callwidget.ui" line="1434"/>
+ <source>best name</source>
+ <translation>beste naam</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1208"/>
+ <source>best Id</source>
+ <translation>beste ID</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1734"/>
+ <source>Back to homepage button</source>
+ <translation>Knop terug naar startblad</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1943"/>
+ <source>Add to contacts</source>
+ <translation>Toevoegen aan contacten</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="202"/>
+ <source>Show invites</source>
+ <translation>Uitnodigingen tonen</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="205"/>
+ <source>Invites</source>
+ <translation>Uitnodigingen</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="377"/>
+ <location filename="../callwidget.cpp" line="552"/>
+ <source>Find a new or existing contact</source>
+ <translation>Zoek een nieuw of bestaand contact</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1444"/>
+ <source>Wants to talk to you!</source>
+ <translation>Wilt met u praten!</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1517"/>
+ <source>Answer incoming call button</source>
+ <translation>Knop inkomende oproep beantwoorden</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1589"/>
+ <source>Ignore incoming call button</source>
+ <translation>Knop inkomende oproep negeren</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1539"/>
+ <source>Answer</source>
+ <translation>Beantwoorden</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1617"/>
+ <source>Ignore</source>
+ <translation>Negeren</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1280"/>
+ <source>Cancel outgoing call</source>
+ <translation>Uitgaande oproep annuleren</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1305"/>
+ <source>Cancel</source>
+ <translation>Annuleren</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="332"/>
+ <source>Start video call</source>
+ <translation>Video-oproep starten</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="343"/>
+ <source>Start audio call</source>
+ <translation>Audio-oproep starten</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="354"/>
+ <source>Clear conversation</source>
+ <translation>Gesprek wissen</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="361"/>
+ <source>Remove contact</source>
+ <translation>Contact verwijderen</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="373"/>
+ <source>Block contact</source>
+ <translation>Contact blokkeren</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="384"/>
+ <source>Copy number</source>
+ <translation>Nummer kopiëren</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="561"/>
+ <source>Search your received invitations</source>
+ <translation>Zoek naar uw ontvangen uitnodigingen</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>Contact me on Jami</source>
+ <translation>Contacteer mij op Jami</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>My Id is : </source>
+ <translation>Mijn ID is:</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="847"/>
+ <source>%1</source>
+ <comment>%1 is the contact username</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="852"/>
+ <source>%1</source>
+ <comment>%1 is the contact unique identifier</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="675"/>
+ <source>Call incoming from %1</source>
+ <translation>Inkomende oproep van %1</translation>
+ </message>
+</context>
+<context>
+ <name>DeleteAccountDialog</name>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="35"/>
+ <source>Account deletion</source>
+ <translation>Accountverwijdering</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="58"/>
+ <source>Do you really want to delete the following account?</source>
+ <translation>Weet u zeker dat u de volgende account wilt verwijderen?</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="153"/>
+ <source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
+ <translation>Als deze account nog niet geëxporteerd is of nog niet toegevoegd is aan een ander apparaat, zal hij onherroepelijk verloren gaan</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="235"/>
+ <source>Permanently delete account</source>
+ <translation>Account voorgoed verwijderen</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="241"/>
+ <source>Delete</source>
+ <translation>Verwijderen</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="278"/>
+ <source>Cancel account deletion</source>
+ <translation>Accountverwijdering annuleren</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="284"/>
+ <source>Cancel</source>
+ <translation>Annuleren</translation>
+ </message>
+</context>
+<context>
+ <name>DeviceItemWidget</name>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulier</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="105"/>
+ <source>Device Id</source>
+ <translation>Apparaats-ID</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="143"/>
+ <source>this device</source>
+ <translation>dit apparaat</translation>
+ </message>
+</context>
+<context>
+ <name>InviteButtonsWidget</name>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="83"/>
+ <source>Accept</source>
+ <translation>Aanvaarden</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="131"/>
+ <source>Refuse</source>
+ <translation>Afwijzen</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="179"/>
+ <source>Block</source>
+ <translation>Blokkeren</translation>
+ </message>
+</context>
+<context>
+ <name>LinkDeviceDialog</name>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation>Dialoog</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="62"/>
+ <source>Enter your account password</source>
+ <translation>Geef uw accountpaswoord in</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="117"/>
+ <source>Password</source>
+ <translation>Paswoord</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="184"/>
+ <source>Ok</source>
+ <translation>Oké</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="218"/>
+ <source>Cancel</source>
+ <translation>Annuleren</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="279"/>
+ <source>Exporting account</source>
+ <translation>Account wordt geëxporteerd</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="402"/>
+ <source>Your PIN is</source>
+ <translation>Uw pincode is</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="432"/>
+ <source>PIN</source>
+ <translation>Pincode</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="477"/>
+ <source>This pin and the account password should be entered in your device within 10 minutes.</source>
+ <translation>U moet deze pincode en het accountpaswoord binnen de 10 minuten op uw nieuwe apparaat ingeven.</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="553"/>
+ <source>Close</source>
+ <translation>Sluiten</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="34"/>
+ <source>Link Another Device</source>
+ <translation>Een ander apparaat koppelen</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="96"/>
+ <source>Incorrect password</source>
+ <translation>Verkeerd paswoord</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="110"/>
+ <source>Something went wrong.
+Please try again later.</source>
+ <translation>Er is iets misgegaan.
+Herprobeer het later.</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="83"/>
+ <source>Settings</source>
+ <translation>Instellingen</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="94"/>
+ <source>Exit</source>
+ <translation>Afsluiten</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="111"/>
+ <source>About</source>
+ <translation>Over</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="435"/>
+ <source>Jami</source>
+ <translation>Jami</translation>
+ </message>
+</context>
+<context>
+ <name>NameRegistrationDialog</name>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="35"/>
+ <source>Set Registered Name</source>
+ <translation>Stel geregistreerde naam in</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="163"/>
+ <source>Enter your account password</source>
+ <translation>Geef uw accountpaswoord in</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="244"/>
+ <source>Password text input</source>
+ <translation>Paswoordtekstingave</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="250"/>
+ <source>Password text entry</source>
+ <translation>Paswoordtekstingave</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="256"/>
+ <source>Password</source>
+ <translation>Paswoord</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="323"/>
+ <source>Register</source>
+ <translation>Registreren</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="357"/>
+ <source>Cancel</source>
+ <translation>Annuleren</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="424"/>
+ <source>Registering Name</source>
+ <translation>Naam wordt geregistreerd</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="548"/>
+ <source>Something went wrong</source>
+ <translation>Er is iets misgegaan</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="618"/>
+ <source>Close</source>
+ <translation>Sluiten</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="82"/>
+ <source>Incorrect password</source>
+ <translation>Verkeerd paswoord</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="85"/>
+ <source>Network error</source>
+ <translation>Netwerkfout</translation>
+ </message>
+</context>
+<context>
+ <name>NewWizardWidget</name>
+ <message>
+ <location filename="../newwizardwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulier</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="141"/>
+ <source>Welcome Label</source>
+ <translation>Welkomstlabel</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="147"/>
+ <source> Welcome to</source>
+ <translation>Welkom bij</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="185"/>
+ <source>Welcome Logo</source>
+ <translation>Welkomstlogo</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="239"/>
+ <source>Create Jami account button</source>
+ <translation>Knop Jami-account aanmaken</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="245"/>
+ <source>Push button for Jami account creation start trigger</source>
+ <translation>Trekker voor starten van aanmaken van Jami-account na druk op knop</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="251"/>
+ <source>Create a Jami account</source>
+ <translation>Een Jami-account aanmaken</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="282"/>
+ <source>Link device button</source>
+ <translation>Knop apparaat koppelen</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="288"/>
+ <source>Push button for device linkage start trigger</source>
+ <translation>Trekker voor koppelen van apparaat na druk op knop</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="291"/>
+ <source>Link this device to an account</source>
+ <translation>Dit apparaat aan een account koppelen</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="328"/>
+ <source>Create Jami SIP account button</source>
+ <translation>Knop Jami-SIP-account aanmaken</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="334"/>
+ <source>Push button for Jami SIP account creation start trigger</source>
+ <translation>Trekker voor starten van aanmaken van Jami-SIP-account na druk op knop</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="340"/>
+ <source>Create a SIP account</source>
+ <translation>Maak een SIP-account aan</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="405"/>
+ <source>Link this device to an existing account</source>
+ <translation>Dit apparaat aan een bestaande account koppelen</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="469"/>
+ <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">To link this device to another account, you first </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">need to obtain a PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> code. To generate the PIN code:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Account management setting</span><span style=" font-size:14px;"> of a previous device</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choose the </span><span style=" font-size:14px; font-weight:600;">Jami account</span><span style=" font-size:14px;"> you want to use</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Devices</span><span style=" font-size:14px;"> tab</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Select </span><span style=" font-size:14px; font-weight:600;">Add a device</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">You will get the necessary PIN to complete this form. The PIN is only valid for </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutes</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></source>
+ <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">Om dit apparaat aan een andere account te koppelen, moet u eerst </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">een pincode verkrijgen</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">. Om de pincode te genereren:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Ga naar de </span><span style=" font-size:14px; font-weight:600;">Accountbeheerinstellingen</span><span style=" font-size:14px;"> van een vorig apparaat</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Kies de </span><span style=" font-size:14px; font-weight:600;">Jami-account</span><span style=" font-size:14px;"> die u wilt gebruiken</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Ga naar het tabblad </span><span style=" font-size:14px; font-weight:600;">Apparaten</span><span style=" font-size:14px;"></span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Selecteer </span><span style=" font-size:14px; font-weight:600;">Een apparaat toevoegen</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">U zult de pincode krijgen die u nodig heeft om dit proces te voltooien. De pincode is slechts </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minuten</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;"> geldig.</span></p></body></html></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="531"/>
+ <source>Enter your pin:</source>
+ <translation>Geef uw pincode in:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="599"/>
+ <source>Or import a file:</source>
+ <translation>Of importeer een bestand:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="626"/>
+ <source>Link from exported account archive file</source>
+ <translation>Koppelen van geëxporteerd accountarchiefbestand</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="629"/>
+ <location filename="../newwizardwidget.cpp" line="83"/>
+ <location filename="../newwizardwidget.cpp" line="218"/>
+ <source>(None)</source>
+ <translation>(geen)</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="705"/>
+ <source>Password:</source>
+ <translation>Paswoord:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="799"/>
+ <location filename="../newwizardwidget.ui" line="1586"/>
+ <source>Profile</source>
+ <translation>Profiel</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="953"/>
+ <location filename="../newwizardwidget.ui" line="1767"/>
+ <source>Profile name</source>
+ <translation>Profielnaam</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1027"/>
+ <source>Account</source>
+ <translation>Account</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1136"/>
+ <source>Register your username.
+This will reserve the username so that only you can use it.
+Your friends will be able to call you with your usename
+instead of using your ID.</source>
+ <translation>Registreer uw gebruikersnaam.
+Dit zal de gebruikersnaam registreren, zodat enkel u ze kunt gebruiken.
+Uw vrienden zullen u kunnen bellen met uw gebruikersnaam
+in plaats van uw Ring-ID.</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1142"/>
+ <source>Public username checkbox</source>
+ <translation>Selectievakje openbare gebruikersnaam</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1145"/>
+ <source>Checkbox selecting if the user wants a public username</source>
+ <translation>Selectievakje om te kiezen of de gebruiker een openbare gebruikersnaam wil</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1148"/>
+ <source>Register public username</source>
+ <translation>Registreer een openbare gebruikersnaam</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1367"/>
+ <source>Public username edit</source>
+ <translation>Bewerken openbare gebruikersnaam</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1373"/>
+ <source>Choose your username</source>
+ <translation>Kies uw gebruikersnaam</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1289"/>
+ <source>Password text input</source>
+ <translation>Paswoordtekstingave</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1295"/>
+ <source>Password text entry</source>
+ <translation>Paswoordtekstingave</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1301"/>
+ <location filename="../newwizardwidget.ui" line="2213"/>
+ <source>Password</source>
+ <translation>Paswoord</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1211"/>
+ <location filename="../newwizardwidget.ui" line="1217"/>
+ <source>Password confirmation text input</source>
+ <translation>Paswoordbevestigingstekstingave</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1223"/>
+ <source>Confirm password</source>
+ <translation>Bevestig paswoord</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1814"/>
+ <source>SIP Account</source>
+ <translation>SIP-account</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1973"/>
+ <source>SIP Server edit</source>
+ <translation>SIP-server bewerken</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1979"/>
+ <source>Server</source>
+ <translation>Server</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2045"/>
+ <source>SIP proxy input</source>
+ <translation>SIP-proxy-ingave</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2051"/>
+ <source>SIP proxy text entry</source>
+ <translation>SIP-proxy-tekstingave</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2057"/>
+ <source>Proxy</source>
+ <translation>Proxy</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2123"/>
+ <source>SIP username input</source>
+ <translation>SIP-gebruikersnaamingave</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2129"/>
+ <source>SIP Password text entry</source>
+ <translation>SIP-paswoord-tekstingave</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2135"/>
+ <source>Username</source>
+ <translation>Gebruikersnaam</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2201"/>
+ <location filename="../newwizardwidget.ui" line="2207"/>
+ <source>SIP Password text input</source>
+ <translation>SIP-paswoord-tekstingave</translation>
+ </message>
+ <message utf8="true">
+ <location filename="../newwizardwidget.ui" line="2282"/>
+ <source>Generating your Jami account…</source>
+ <translation>Uw Jami-account wordt aangemaakt…</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2356"/>
+ <source>Previous page button</source>
+ <translation>Knop vorig blad</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2362"/>
+ <source>push button to access previous page of wizard</source>
+ <translation>druk op de knop om naar het vorige blad van de assistent te gaan</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2365"/>
+ <source>Previous</source>
+ <translation>Vorige</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2396"/>
+ <source>Cancel account create/link</source>
+ <translation>Aanmaken/koppelen van account annuleren</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2402"/>
+ <source>push button to cancel account creation or linking</source>
+ <translation>trekker voor annuleren van aanmaken of verwijderen van account</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2405"/>
+ <source>Back</source>
+ <translation>Terug</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2442"/>
+ <source>Next page Button</source>
+ <translation>Knop volgend blad</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2448"/>
+ <source>Push button to access next page of wizard</source>
+ <translation>Druk op de knop om naar het volgende blad van de assistent te gaan</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2451"/>
+ <source>Next</source>
+ <translation>Volgende</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="75"/>
+ <source>Open File</source>
+ <translation>Bestand openen</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="77"/>
+ <source>Jami archive files (*.gz); All files (*)</source>
+ <translation>Jami-archiefbestanden (*.gz); Alle bestanden (*)</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="123"/>
+ <source>Your account needs to be migrated. Enter your password.</source>
+ <translation>Uw account moet gemigreerd worden. Geef uw paswoord in.</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="419"/>
+ <source>Migrating your Jami account...</source>
+ <translation>Uw Jami-account wordt gemigreerd…</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="412"/>
+ <source>Importing account archive...</source>
+ <translation>Accountarchief importeren…</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="404"/>
+ <source>Generating your Jami account...</source>
+ <translation>Uw Jami-account wordt aangemaakt…</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="422"/>
+ <source>Generating your SIP account...</source>
+ <translation>Uw SIP-account wordt gegenereerd…</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="533"/>
+ <source>Error creating account</source>
+ <translation>Fout bij aanmaken van account</translation>
+ </message>
+</context>
+<context>
+ <name>PasswordDialog</name>
+ <message>
+ <location filename="../passworddialog.ui" line="32"/>
+ <source>Change Account Password</source>
+ <translation>Accountpaswoord wijzigen</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="97"/>
+ <source>Enter Current Password</source>
+ <translation>Geef huidig paswoord in</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="169"/>
+ <source>Enter New Password</source>
+ <translation>Geef nieuw paswoord in</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="190"/>
+ <source>Confirm New Password</source>
+ <translation>Bevestig nieuw paswoord</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="247"/>
+ <source>Confirm</source>
+ <translation>Bevestigen</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="290"/>
+ <source>Cancel</source>
+ <translation>Annuleren</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="143"/>
+ <source>Current Password Incorrect</source>
+ <translation>Huidig paswoord is verkeerd</translation>
+ </message>
+</context>
+<context>
+ <name>PhotoBoothDialog</name>
+ <message>
+ <location filename="../photoboothdialog.ui" line="14"/>
+ <source>Photobooth</source>
+ <translation>Fotoautomaat</translation>
+ </message>
+</context>
+<context>
+ <name>PhotoboothWidget</name>
+ <message>
+ <location filename="../photoboothwidget.ui" line="20"/>
+ <source>Form</source>
+ <translation>Formulier</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.ui" line="120"/>
+ <source>Photobooth display</source>
+ <translation>Fotoautomaatweergave</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="92"/>
+ <source>Choose File</source>
+ <translation>Bestand kiezen</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="94"/>
+ <source>Image Files (*.jpg *.jpeg *.png)</source>
+ <translation>Afbeeldingsbestanden (*.jpg *.jpeg *.png)</translation>
+ </message>
+</context>
+<context>
+ <name>PrivateBridging</name>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Choose File</source>
+ <translation>Bestand kiezen</translation>
+ </message>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Files (*)</source>
+ <translation>Bestanden (*)</translation>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../utils.cpp" line="183"/>
+ <source>No default mail client found</source>
+ <translation>Geen standaard-e-mailprogramma gevonden</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="43"/>
+ <location filename="../deviceitemwidget.cpp" line="85"/>
+ <source>Edit Device Name</source>
+ <translation>Apparaatnaam bewerken</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="44"/>
+ <source>Unlink Device From Account</source>
+ <translation>Apparaat ontkoppelen van account</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="80"/>
+ <source>Save new device name</source>
+ <translation>Nieuwe apparaatsnaam opslaan</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.cpp" line="39"/>
+ <source>Add as contact</source>
+ <translation>Toevoegen aan contacten</translation>
+ </message>
+</context>
+<context>
+ <name>RingButton</name>
+ <message>
+ <location filename="../ringbutton.ui" line="140"/>
+ <source>Select folder</source>
+ <translation>Kies een map</translation>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <location filename="../settingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulier</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="141"/>
+ <source>Settings</source>
+ <translation>Instellingen</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="229"/>
+ <source>Account</source>
+ <translation>Account</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="267"/>
+ <location filename="../settingswidget.ui" line="503"/>
+ <source>General</source>
+ <translation>Algemeen</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="305"/>
+ <location filename="../settingswidget.ui" line="3416"/>
+ <source>Audio / Video</source>
+ <translation>Audio/video</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="542"/>
+ <source>System</source>
+ <translation>Systeem</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="610"/>
+ <source>Enable desktop notifications</source>
+ <translation>Bureaubladmeldingen inschakelen</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="653"/>
+ <source>Keep minimized on close</source>
+ <translation>Minimaliseren bij sluiten</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="678"/>
+ <source>Download folder</source>
+ <translation>Downloadmap</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="811"/>
+ <source>Save in</source>
+ <translation>Opslaan in</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="904"/>
+ <source>Always Recording</source>
+ <translation>Altijd opnemen</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="943"/>
+ <source>Updates</source>
+ <translation>Updates</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1008"/>
+ <source>Check for updates automatically every</source>
+ <translation>Automatisch controleren op updates elke</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1032"/>
+ <source>Interval between update checks in days selector</source>
+ <translation>Selectie interval in dagen tussen controles op updates</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1038"/>
+ <source> days</source>
+ <translation>dagen</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1081"/>
+ <source>Check for updates now button</source>
+ <translation>Knop nu controleren op updates</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1084"/>
+ <source>Check for updates now</source>
+ <translation>Nu controleren op updates</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3027"/>
+ <source>Password</source>
+ <translation>Paswoord</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1418"/>
+ <location filename="../settingswidget.ui" line="2729"/>
+ <source>Enable</source>
+ <translation>Inschakelen</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="607"/>
+ <source>toggle enable notifications</source>
+ <translation>schakelaar meldingen inschakelen</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="650"/>
+ <source>Toggle keep minimized on close</source>
+ <translation>Schakelaar minimaliseren bij sluiten</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="764"/>
+ <source>Call Recordings</source>
+ <translation>Gespreksopnames</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1005"/>
+ <source>Toggle automatic updates</source>
+ <translation>Schakelaar automatische updates</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1231"/>
+ <source>Jami Account</source>
+ <translation>Jami-account</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1453"/>
+ <location filename="../settingswidget.ui" line="2761"/>
+ <source>Profile</source>
+ <translation>Profiel</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1567"/>
+ <location filename="../settingswidget.ui" line="2875"/>
+ <source>Identity</source>
+ <translation>Identiteit</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1614"/>
+ <source>Id</source>
+ <translation>ID</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1673"/>
+ <source>Registered name</source>
+ <translation>Geregistreerde naam</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1721"/>
+ <source>Type here to register a username</source>
+ <translation>Typ hier om een gebruikersnaam te registreren</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1755"/>
+ <source>Register</source>
+ <translation>Registreren</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1827"/>
+ <source>Change Password</source>
+ <translation>Paswoord wijzigen</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1868"/>
+ <source>Export Account</source>
+ <translation>Account exporteren</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1909"/>
+ <location filename="../settingswidget.ui" line="3089"/>
+ <source>Delete Account</source>
+ <translation>Account verwijderen</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1973"/>
+ <source>Linked Devices</source>
+ <translation>Gekoppelde apparaten</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2078"/>
+ <source>Link Another Device</source>
+ <translation>Een ander apparaat koppelen</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2142"/>
+ <source>Banned Contacts</source>
+ <translation>Geblokkeerde contacten</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3788"/>
+ <source>Format</source>
+ <translation>Formaat</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3831"/>
+ <source>Video device framerate selector</source>
+ <translation>Framerateselectie video-apparaat</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3967"/>
+ <source>Preview unavailable</source>
+ <translation>Voorbeeld onbeschikbaar</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2359"/>
+ <location filename="../settingswidget.ui" line="3187"/>
+ <source>Advanced Account Settings</source>
+ <translation>Geavanceerde accountinstellingen</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2554"/>
+ <source>SIP Account</source>
+ <translation>SIP-account</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2925"/>
+ <source>Username</source>
+ <translation>Gebruikersnaam</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2958"/>
+ <source>Hostname</source>
+ <translation>Hostnaam</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2991"/>
+ <source>Proxy</source>
+ <translation>Proxy</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3461"/>
+ <source>Audio</source>
+ <translation>Geluid</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3511"/>
+ <source>Microphone</source>
+ <translation>Microfoon</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3551"/>
+ <source>Audio input device selector</source>
+ <translation>Selectie audio-invoerapparaat</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3585"/>
+ <source>Output Device</source>
+ <translation>Uitvoerapparaat</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3625"/>
+ <source>Choose the output device</source>
+ <translation>Kies het uitvoerapparaat</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3682"/>
+ <source>Video</source>
+ <translation>Video</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3720"/>
+ <source>Device</source>
+ <translation>Apparaat</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3766"/>
+ <source>Video device selector</source>
+ <translation>Selectie video-apparaat</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="459"/>
+ <source>A registered name should not have any spaces and must be at least three letters long</source>
+ <translation>Een geregistreerde naam mag geen spaties bevatten, en moet minstens drie tekens lang zijn</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="466"/>
+ <source>This name is already taken</source>
+ <translation>Deze naam is reeds in gebruik</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="92"/>
+ <location filename="../settingswidget.cpp" line="110"/>
+ <source>Enter an alias</source>
+ <translation>Geef een alias in</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="473"/>
+ <source>Register this name</source>
+ <translation>Deze naam registreren</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="550"/>
+ <source>Remove Device</source>
+ <translation>Apparaat verwijderen</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="551"/>
+ <source>Enter this account's password to confirm the removal of this device</source>
+ <translation>Geef het paswoord van deze account in om het verwijderen van dit apparaat te bevestigen</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="558"/>
+ <source>Are you sure you wish to remove this device?</source>
+ <translation>Weet u zeker dat u dit apparaat wilt verwijderen?</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="589"/>
+ <source>Export Account Here</source>
+ <translation>Account hier exporteren</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="887"/>
+ <source>Select A Folder For Your Downloads</source>
+ <translation>Selecteer een map voor uw downloads</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="904"/>
+ <source>Select A Folder For Your Recordings</source>
+ <translation>Kies een map voor uw opnamen</translation>
+ </message>
+</context>
+<context>
+ <name>VideoOverlay</name>
+ <message>
+ <location filename="../videooverlay.ui" line="419"/>
+ <source>Call on Hold</source>
+ <translation>Telefoongesprek in wacht</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="89"/>
+ <source>Hold / Unhold</source>
+ <translation>In wacht zetten / uit wacht halen</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="124"/>
+ <source>Chat</source>
+ <translation>Chat</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="162"/>
+ <source>Mute Mic</source>
+ <translation>Microfoon dempen</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="244"/>
+ <source>Record call</source>
+ <translation>Gesprek opnemen</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="325"/>
+ <source>Name label</source>
+ <translation>Naamlabel</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="390"/>
+ <source>Time elapsed</source>
+ <translation>Tijd verstreken</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="393"/>
+ <source>00:00</source>
+ <translation>00:00</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="57"/>
+ <source>Hangup</source>
+ <translation>Ophangen</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="203"/>
+ <source>Mute Video</source>
+ <translation>Video uitschakelen</translation>
+ </message>
+</context>
+<context>
+ <name>VideoView</name>
+ <message>
+ <location filename="../videoview.cpp" line="271"/>
+ <source>Share entire screen</source>
+ <translation>Scherm delen</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="274"/>
+ <source>Share screen area</source>
+ <translation>Schermgebied delen</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="281"/>
+ <source>Share file</source>
+ <translation>Bestand delen</translation>
+ </message>
+</context>
+</TS>
\ No newline at end of file
diff --git a/translations/ring_client_windows_nl_NL.ts b/translations/ring_client_windows_nl_NL.ts
new file mode 100644
index 0000000..d9457e9
--- /dev/null
+++ b/translations/ring_client_windows_nl_NL.ts
@@ -0,0 +1,1589 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="nl_NL" version="2.0">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../aboutdialog.ui" line="435"/>
+ <location filename="../aboutdialog.ui" line="465"/>
+ <source>About</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="462"/>
+ <source>about button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="478"/>
+ <source>credits button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="481"/>
+ <source>Credits</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="547"/>
+ <source>Free as in Freedom</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="563"/>
+ <source>The Microsoft Windows client for Jami.
+Jami is a secured and distributed communication software.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="32"/>
+ <source>version</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="39"/>
+ <source>Created by:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="73"/>
+ <source>Artwork by:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="77"/>
+ <source>Based on the SFLPhone project</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AccountItemDelegate</name>
+ <message>
+ <location filename="../accountitemdelegate.cpp" line="91"/>
+ <source>Add Account</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSIPSettingsWidget</name>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="55"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="102"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="130"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="191"/>
+ <source>Connectivity</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="281"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="293"/>
+ <source>Use STUN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="317"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="329"/>
+ <source>Use TURN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="359"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="391"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="423"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="464"/>
+ <source>Media</source>
+ <translation>Media</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="515"/>
+ <source>Enable Video</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="539"/>
+ <source>Video Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="692"/>
+ <source>Audio Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="142"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="151"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSettingsWidget</name>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="61"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="108"/>
+ <source>Allow Calls From Untrusted Peers</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="133"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="161"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="188"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="225"/>
+ <source>Name Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="275"/>
+ <source>Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="351"/>
+ <source>OpenDHT Configuration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="398"/>
+ <source>Enable Proxy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="454"/>
+ <source>Bootstrap</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="530"/>
+ <source>Security</source>
+ <translation>Beveiliging</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="571"/>
+ <source>Private Key Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="583"/>
+ <source>User Certificate</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="622"/>
+ <source>Private Key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="634"/>
+ <source>CA Certificate</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="766"/>
+ <source>Connectivity</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="868"/>
+ <source>Use STUN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="856"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="892"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="904"/>
+ <source>Use TURN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="934"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="966"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="998"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1039"/>
+ <source>Media</source>
+ <translation>Media</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1090"/>
+ <source>Enable Video</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1267"/>
+ <source>Audio Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1114"/>
+ <source>Video Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="181"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AnimatedOverlay</name>
+ <message>
+ <location filename="../animatedoverlay.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>BannedItemWidget</name>
+ <message>
+ <location filename="../banneditemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="80"/>
+ <source>name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="104"/>
+ <source>id</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>CallWidget</name>
+ <message>
+ <location filename="../callwidget.ui" line="184"/>
+ <source>Show conversations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="187"/>
+ <source>Conversations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="368"/>
+ <source>Search contact text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="653"/>
+ <source>Jami is free software for universal communication which respects the freedoms and privacy of its users.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="693"/>
+ <source>
+ This is your ID.
+Copy and share it with your friends!
+ </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="806"/>
+ <source>Show ring ID QR code</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="857"/>
+ <source>Share ring ID button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="915"/>
+ <source>Double-click to copy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="956"/>
+ <source>Error while generating QR Code</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1184"/>
+ <location filename="../callwidget.ui" line="1434"/>
+ <source>best name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1208"/>
+ <source>best Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1734"/>
+ <source>Back to homepage button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1943"/>
+ <source>Add to contacts</source>
+ <translation>Voeg toe aan contacten</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="202"/>
+ <source>Show invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="205"/>
+ <source>Invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="377"/>
+ <location filename="../callwidget.cpp" line="552"/>
+ <source>Find a new or existing contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1444"/>
+ <source>Wants to talk to you!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1517"/>
+ <source>Answer incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1589"/>
+ <source>Ignore incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1539"/>
+ <source>Answer</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1617"/>
+ <source>Ignore</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1280"/>
+ <source>Cancel outgoing call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1305"/>
+ <source>Cancel</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="332"/>
+ <source>Start video call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="343"/>
+ <source>Start audio call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="354"/>
+ <source>Clear conversation</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="361"/>
+ <source>Remove contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="373"/>
+ <source>Block contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="384"/>
+ <source>Copy number</source>
+ <translation>Kopieër nummer</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="561"/>
+ <source>Search your received invitations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>Contact me on Jami</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>My Id is : </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="847"/>
+ <source>%1</source>
+ <comment>%1 is the contact username</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="852"/>
+ <source>%1</source>
+ <comment>%1 is the contact unique identifier</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="675"/>
+ <source>Call incoming from %1</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>DeleteAccountDialog</name>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="35"/>
+ <source>Account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="58"/>
+ <source>Do you really want to delete the following account?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="153"/>
+ <source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="235"/>
+ <source>Permanently delete account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="241"/>
+ <source>Delete</source>
+ <translation>Verwijderen</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="278"/>
+ <source>Cancel account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="284"/>
+ <source>Cancel</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>DeviceItemWidget</name>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="105"/>
+ <source>Device Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="143"/>
+ <source>this device</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>InviteButtonsWidget</name>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="83"/>
+ <source>Accept</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="131"/>
+ <source>Refuse</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="179"/>
+ <source>Block</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>LinkDeviceDialog</name>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="62"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="117"/>
+ <source>Password</source>
+ <translation>Wachtwoord</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="184"/>
+ <source>Ok</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="218"/>
+ <source>Cancel</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="279"/>
+ <source>Exporting account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="402"/>
+ <source>Your PIN is</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="432"/>
+ <source>PIN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="477"/>
+ <source>This pin and the account password should be entered in your device within 10 minutes.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="553"/>
+ <source>Close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="34"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="96"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="110"/>
+ <source>Something went wrong.
+Please try again later.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="83"/>
+ <source>Settings</source>
+ <translation>Instellingen</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="94"/>
+ <source>Exit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="111"/>
+ <source>About</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="435"/>
+ <source>Jami</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>NameRegistrationDialog</name>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="35"/>
+ <source>Set Registered Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="163"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="244"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="250"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="256"/>
+ <source>Password</source>
+ <translation>Wachtwoord</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="323"/>
+ <source>Register</source>
+ <translation>Registreren</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="357"/>
+ <source>Cancel</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="424"/>
+ <source>Registering Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="548"/>
+ <source>Something went wrong</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="618"/>
+ <source>Close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="82"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="85"/>
+ <source>Network error</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>NewWizardWidget</name>
+ <message>
+ <location filename="../newwizardwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="141"/>
+ <source>Welcome Label</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="147"/>
+ <source> Welcome to</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="185"/>
+ <source>Welcome Logo</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="239"/>
+ <source>Create Jami account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="245"/>
+ <source>Push button for Jami account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="251"/>
+ <source>Create a Jami account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="282"/>
+ <source>Link device button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="288"/>
+ <source>Push button for device linkage start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="291"/>
+ <source>Link this device to an account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="328"/>
+ <source>Create Jami SIP account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="334"/>
+ <source>Push button for Jami SIP account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="340"/>
+ <source>Create a SIP account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="405"/>
+ <source>Link this device to an existing account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="469"/>
+ <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">To link this device to another account, you first </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">need to obtain a PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> code. To generate the PIN code:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Account management setting</span><span style=" font-size:14px;"> of a previous device</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choose the </span><span style=" font-size:14px; font-weight:600;">Jami account</span><span style=" font-size:14px;"> you want to use</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Devices</span><span style=" font-size:14px;"> tab</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Select </span><span style=" font-size:14px; font-weight:600;">Add a device</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">You will get the necessary PIN to complete this form. The PIN is only valid for </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutes</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="531"/>
+ <source>Enter your pin:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="599"/>
+ <source>Or import a file:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="626"/>
+ <source>Link from exported account archive file</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="629"/>
+ <location filename="../newwizardwidget.cpp" line="83"/>
+ <location filename="../newwizardwidget.cpp" line="218"/>
+ <source>(None)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="705"/>
+ <source>Password:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="799"/>
+ <location filename="../newwizardwidget.ui" line="1586"/>
+ <source>Profile</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="953"/>
+ <location filename="../newwizardwidget.ui" line="1767"/>
+ <source>Profile name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1027"/>
+ <source>Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1136"/>
+ <source>Register your username.
+This will reserve the username so that only you can use it.
+Your friends will be able to call you with your usename
+instead of using your ID.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1142"/>
+ <source>Public username checkbox</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1145"/>
+ <source>Checkbox selecting if the user wants a public username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1148"/>
+ <source>Register public username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1367"/>
+ <source>Public username edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1373"/>
+ <source>Choose your username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1289"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1295"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1301"/>
+ <location filename="../newwizardwidget.ui" line="2213"/>
+ <source>Password</source>
+ <translation>Wachtwoord</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1211"/>
+ <location filename="../newwizardwidget.ui" line="1217"/>
+ <source>Password confirmation text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1223"/>
+ <source>Confirm password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1814"/>
+ <source>SIP Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1973"/>
+ <source>SIP Server edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1979"/>
+ <source>Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2045"/>
+ <source>SIP proxy input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2051"/>
+ <source>SIP proxy text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2057"/>
+ <source>Proxy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2123"/>
+ <source>SIP username input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2129"/>
+ <source>SIP Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2135"/>
+ <source>Username</source>
+ <translation>Gebruikersnaam</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2201"/>
+ <location filename="../newwizardwidget.ui" line="2207"/>
+ <source>SIP Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message utf8="true">
+ <location filename="../newwizardwidget.ui" line="2282"/>
+ <source>Generating your Jami account…</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2356"/>
+ <source>Previous page button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2362"/>
+ <source>push button to access previous page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2365"/>
+ <source>Previous</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2396"/>
+ <source>Cancel account create/link</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2402"/>
+ <source>push button to cancel account creation or linking</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2405"/>
+ <source>Back</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2442"/>
+ <source>Next page Button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2448"/>
+ <source>Push button to access next page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2451"/>
+ <source>Next</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="75"/>
+ <source>Open File</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="77"/>
+ <source>Jami archive files (*.gz); All files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="123"/>
+ <source>Your account needs to be migrated. Enter your password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="419"/>
+ <source>Migrating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="412"/>
+ <source>Importing account archive...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="404"/>
+ <source>Generating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="422"/>
+ <source>Generating your SIP account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="533"/>
+ <source>Error creating account</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PasswordDialog</name>
+ <message>
+ <location filename="../passworddialog.ui" line="32"/>
+ <source>Change Account Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="97"/>
+ <source>Enter Current Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="169"/>
+ <source>Enter New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="190"/>
+ <source>Confirm New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="247"/>
+ <source>Confirm</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="290"/>
+ <source>Cancel</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="143"/>
+ <source>Current Password Incorrect</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PhotoBoothDialog</name>
+ <message>
+ <location filename="../photoboothdialog.ui" line="14"/>
+ <source>Photobooth</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PhotoboothWidget</name>
+ <message>
+ <location filename="../photoboothwidget.ui" line="20"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.ui" line="120"/>
+ <source>Photobooth display</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="92"/>
+ <source>Choose File</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="94"/>
+ <source>Image Files (*.jpg *.jpeg *.png)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PrivateBridging</name>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Choose File</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../utils.cpp" line="183"/>
+ <source>No default mail client found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="43"/>
+ <location filename="../deviceitemwidget.cpp" line="85"/>
+ <source>Edit Device Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="44"/>
+ <source>Unlink Device From Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="80"/>
+ <source>Save new device name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.cpp" line="39"/>
+ <source>Add as contact</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>RingButton</name>
+ <message>
+ <location filename="../ringbutton.ui" line="140"/>
+ <source>Select folder</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <location filename="../settingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="141"/>
+ <source>Settings</source>
+ <translation>Instellingen</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="229"/>
+ <source>Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="267"/>
+ <location filename="../settingswidget.ui" line="503"/>
+ <source>General</source>
+ <translation>Algemeen</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="305"/>
+ <location filename="../settingswidget.ui" line="3416"/>
+ <source>Audio / Video</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="542"/>
+ <source>System</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="610"/>
+ <source>Enable desktop notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="653"/>
+ <source>Keep minimized on close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="678"/>
+ <source>Download folder</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="811"/>
+ <source>Save in</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="904"/>
+ <source>Always Recording</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="943"/>
+ <source>Updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1008"/>
+ <source>Check for updates automatically every</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1032"/>
+ <source>Interval between update checks in days selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1038"/>
+ <source> days</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1081"/>
+ <source>Check for updates now button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1084"/>
+ <source>Check for updates now</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3027"/>
+ <source>Password</source>
+ <translation>Wachtwoord</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1418"/>
+ <location filename="../settingswidget.ui" line="2729"/>
+ <source>Enable</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="607"/>
+ <source>toggle enable notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="650"/>
+ <source>Toggle keep minimized on close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="764"/>
+ <source>Call Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1005"/>
+ <source>Toggle automatic updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1231"/>
+ <source>Jami Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1453"/>
+ <location filename="../settingswidget.ui" line="2761"/>
+ <source>Profile</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1567"/>
+ <location filename="../settingswidget.ui" line="2875"/>
+ <source>Identity</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1614"/>
+ <source>Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1673"/>
+ <source>Registered name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1721"/>
+ <source>Type here to register a username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1755"/>
+ <source>Register</source>
+ <translation>Registreren</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1827"/>
+ <source>Change Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1868"/>
+ <source>Export Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1909"/>
+ <location filename="../settingswidget.ui" line="3089"/>
+ <source>Delete Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1973"/>
+ <source>Linked Devices</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2078"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2142"/>
+ <source>Banned Contacts</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3788"/>
+ <source>Format</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3831"/>
+ <source>Video device framerate selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3967"/>
+ <source>Preview unavailable</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2359"/>
+ <location filename="../settingswidget.ui" line="3187"/>
+ <source>Advanced Account Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2554"/>
+ <source>SIP Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2925"/>
+ <source>Username</source>
+ <translation>Gebruikersnaam</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2958"/>
+ <source>Hostname</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2991"/>
+ <source>Proxy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3461"/>
+ <source>Audio</source>
+ <translation>Geluid</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3511"/>
+ <source>Microphone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3551"/>
+ <source>Audio input device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3585"/>
+ <source>Output Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3625"/>
+ <source>Choose the output device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3682"/>
+ <source>Video</source>
+ <translation>Beeld</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3720"/>
+ <source>Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3766"/>
+ <source>Video device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="459"/>
+ <source>A registered name should not have any spaces and must be at least three letters long</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="466"/>
+ <source>This name is already taken</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="92"/>
+ <location filename="../settingswidget.cpp" line="110"/>
+ <source>Enter an alias</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="473"/>
+ <source>Register this name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="550"/>
+ <source>Remove Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="551"/>
+ <source>Enter this account's password to confirm the removal of this device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="558"/>
+ <source>Are you sure you wish to remove this device?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="589"/>
+ <source>Export Account Here</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="887"/>
+ <source>Select A Folder For Your Downloads</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="904"/>
+ <source>Select A Folder For Your Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>VideoOverlay</name>
+ <message>
+ <location filename="../videooverlay.ui" line="419"/>
+ <source>Call on Hold</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="89"/>
+ <source>Hold / Unhold</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="124"/>
+ <source>Chat</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="162"/>
+ <source>Mute Mic</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="244"/>
+ <source>Record call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="325"/>
+ <source>Name label</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="390"/>
+ <source>Time elapsed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="393"/>
+ <source>00:00</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="57"/>
+ <source>Hangup</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="203"/>
+ <source>Mute Video</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>VideoView</name>
+ <message>
+ <location filename="../videoview.cpp" line="271"/>
+ <source>Share entire screen</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="274"/>
+ <source>Share screen area</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="281"/>
+ <source>Share file</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+</TS>
\ No newline at end of file
diff --git a/translations/ring_client_windows_oc.ts b/translations/ring_client_windows_oc.ts
new file mode 100644
index 0000000..0a5d2e5
--- /dev/null
+++ b/translations/ring_client_windows_oc.ts
@@ -0,0 +1,1589 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="oc" version="2.0">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../aboutdialog.ui" line="435"/>
+ <location filename="../aboutdialog.ui" line="465"/>
+ <source>About</source>
+ <translation>A prepaus</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="462"/>
+ <source>about button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="478"/>
+ <source>credits button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="481"/>
+ <source>Credits</source>
+ <translation>Crèdit</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="547"/>
+ <source>Free as in Freedom</source>
+ <translation>Liure coma la libertat</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="563"/>
+ <source>The Microsoft Windows client for Jami.
+Jami is a secured and distributed communication software.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="32"/>
+ <source>version</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="39"/>
+ <source>Created by:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="73"/>
+ <source>Artwork by:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="77"/>
+ <source>Based on the SFLPhone project</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AccountItemDelegate</name>
+ <message>
+ <location filename="../accountitemdelegate.cpp" line="91"/>
+ <source>Add Account</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSIPSettingsWidget</name>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="55"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="102"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="130"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="191"/>
+ <source>Connectivity</source>
+ <translation>Connectivitat</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="281"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="293"/>
+ <source>Use STUN</source>
+ <translation>Utilizar STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="317"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="329"/>
+ <source>Use TURN</source>
+ <translation>Utilizar TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="359"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="391"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="423"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="464"/>
+ <source>Media</source>
+ <translation>Mèdia</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="515"/>
+ <source>Enable Video</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="539"/>
+ <source>Video Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="692"/>
+ <source>Audio Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="142"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="151"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSettingsWidget</name>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="61"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="108"/>
+ <source>Allow Calls From Untrusted Peers</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="133"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="161"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="188"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="225"/>
+ <source>Name Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="275"/>
+ <source>Address</source>
+ <translation>Adreça</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="351"/>
+ <source>OpenDHT Configuration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="398"/>
+ <source>Enable Proxy</source>
+ <translation>Activar lo servidor mandatari</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="454"/>
+ <source>Bootstrap</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="530"/>
+ <source>Security</source>
+ <translation>Seguretat</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="571"/>
+ <source>Private Key Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="583"/>
+ <source>User Certificate</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="622"/>
+ <source>Private Key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="634"/>
+ <source>CA Certificate</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="766"/>
+ <source>Connectivity</source>
+ <translation>Connectivitat</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="868"/>
+ <source>Use STUN</source>
+ <translation>Utilizar STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="856"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="892"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="904"/>
+ <source>Use TURN</source>
+ <translation>Utilizar TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="934"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="966"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="998"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1039"/>
+ <source>Media</source>
+ <translation>Mèdia</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1090"/>
+ <source>Enable Video</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1267"/>
+ <source>Audio Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1114"/>
+ <source>Video Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="181"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AnimatedOverlay</name>
+ <message>
+ <location filename="../animatedoverlay.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>BannedItemWidget</name>
+ <message>
+ <location filename="../banneditemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="80"/>
+ <source>name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="104"/>
+ <source>id</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>CallWidget</name>
+ <message>
+ <location filename="../callwidget.ui" line="184"/>
+ <source>Show conversations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="187"/>
+ <source>Conversations</source>
+ <translation>Discutidas</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="368"/>
+ <source>Search contact text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="653"/>
+ <source>Jami is free software for universal communication which respects the freedoms and privacy of its users.</source>
+ <translation>Jami es un logicial liure per comunicacions universalas que respèctan la libertat e la vida privada de sos utilizaires.</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="693"/>
+ <source>
+ This is your ID.
+Copy and share it with your friends!
+ </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="806"/>
+ <source>Show ring ID QR code</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="857"/>
+ <source>Share ring ID button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="915"/>
+ <source>Double-click to copy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="956"/>
+ <source>Error while generating QR Code</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1184"/>
+ <location filename="../callwidget.ui" line="1434"/>
+ <source>best name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1208"/>
+ <source>best Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1734"/>
+ <source>Back to homepage button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1943"/>
+ <source>Add to contacts</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="202"/>
+ <source>Show invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="205"/>
+ <source>Invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="377"/>
+ <location filename="../callwidget.cpp" line="552"/>
+ <source>Find a new or existing contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1444"/>
+ <source>Wants to talk to you!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1517"/>
+ <source>Answer incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1589"/>
+ <source>Ignore incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1539"/>
+ <source>Answer</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1617"/>
+ <source>Ignore</source>
+ <translation>Ignorar</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1280"/>
+ <source>Cancel outgoing call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1305"/>
+ <source>Cancel</source>
+ <translation>anullar</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="332"/>
+ <source>Start video call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="343"/>
+ <source>Start audio call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="354"/>
+ <source>Clear conversation</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="361"/>
+ <source>Remove contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="373"/>
+ <source>Block contact</source>
+ <translation>Blocar contacte</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="384"/>
+ <source>Copy number</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="561"/>
+ <source>Search your received invitations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>Contact me on Jami</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>My Id is : </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="847"/>
+ <source>%1</source>
+ <comment>%1 is the contact username</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="852"/>
+ <source>%1</source>
+ <comment>%1 is the contact unique identifier</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="675"/>
+ <source>Call incoming from %1</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>DeleteAccountDialog</name>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="35"/>
+ <source>Account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="58"/>
+ <source>Do you really want to delete the following account?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="153"/>
+ <source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="235"/>
+ <source>Permanently delete account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="241"/>
+ <source>Delete</source>
+ <translation>Suprimir</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="278"/>
+ <source>Cancel account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="284"/>
+ <source>Cancel</source>
+ <translation>anullar</translation>
+ </message>
+</context>
+<context>
+ <name>DeviceItemWidget</name>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="105"/>
+ <source>Device Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="143"/>
+ <source>this device</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>InviteButtonsWidget</name>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="83"/>
+ <source>Accept</source>
+ <translation>Acceptar</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="131"/>
+ <source>Refuse</source>
+ <translation>Refusar</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="179"/>
+ <source>Block</source>
+ <translation>Blocar</translation>
+ </message>
+</context>
+<context>
+ <name>LinkDeviceDialog</name>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="62"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="117"/>
+ <source>Password</source>
+ <translation>Senha</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="184"/>
+ <source>Ok</source>
+ <translation>D’acòrdi</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="218"/>
+ <source>Cancel</source>
+ <translation>anullar</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="279"/>
+ <source>Exporting account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="402"/>
+ <source>Your PIN is</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="432"/>
+ <source>PIN</source>
+ <translation>PIN</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="477"/>
+ <source>This pin and the account password should be entered in your device within 10 minutes.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="553"/>
+ <source>Close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="34"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="96"/>
+ <source>Incorrect password</source>
+ <translation>Marrit senhal</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="110"/>
+ <source>Something went wrong.
+Please try again later.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="83"/>
+ <source>Settings</source>
+ <translation>Paramètres</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="94"/>
+ <source>Exit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="111"/>
+ <source>About</source>
+ <translation>A prepaus</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="435"/>
+ <source>Jami</source>
+ <translation>Jami</translation>
+ </message>
+</context>
+<context>
+ <name>NameRegistrationDialog</name>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="35"/>
+ <source>Set Registered Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="163"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="244"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="250"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="256"/>
+ <source>Password</source>
+ <translation>Senha</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="323"/>
+ <source>Register</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="357"/>
+ <source>Cancel</source>
+ <translation>anullar</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="424"/>
+ <source>Registering Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="548"/>
+ <source>Something went wrong</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="618"/>
+ <source>Close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="82"/>
+ <source>Incorrect password</source>
+ <translation>Marrit senhal</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="85"/>
+ <source>Network error</source>
+ <translation>Error ret</translation>
+ </message>
+</context>
+<context>
+ <name>NewWizardWidget</name>
+ <message>
+ <location filename="../newwizardwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="141"/>
+ <source>Welcome Label</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="147"/>
+ <source> Welcome to</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="185"/>
+ <source>Welcome Logo</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="239"/>
+ <source>Create Jami account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="245"/>
+ <source>Push button for Jami account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="251"/>
+ <source>Create a Jami account</source>
+ <translation>Crear un compte Jami</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="282"/>
+ <source>Link device button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="288"/>
+ <source>Push button for device linkage start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="291"/>
+ <source>Link this device to an account</source>
+ <translation>Associar aqueste aparelh a un compte</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="328"/>
+ <source>Create Jami SIP account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="334"/>
+ <source>Push button for Jami SIP account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="340"/>
+ <source>Create a SIP account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="405"/>
+ <source>Link this device to an existing account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="469"/>
+ <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">To link this device to another account, you first </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">need to obtain a PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> code. To generate the PIN code:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Account management setting</span><span style=" font-size:14px;"> of a previous device</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choose the </span><span style=" font-size:14px; font-weight:600;">Jami account</span><span style=" font-size:14px;"> you want to use</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Devices</span><span style=" font-size:14px;"> tab</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Select </span><span style=" font-size:14px; font-weight:600;">Add a device</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">You will get the necessary PIN to complete this form. The PIN is only valid for </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutes</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="531"/>
+ <source>Enter your pin:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="599"/>
+ <source>Or import a file:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="626"/>
+ <source>Link from exported account archive file</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="629"/>
+ <location filename="../newwizardwidget.cpp" line="83"/>
+ <location filename="../newwizardwidget.cpp" line="218"/>
+ <source>(None)</source>
+ <translation>(Cap)</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="705"/>
+ <source>Password:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="799"/>
+ <location filename="../newwizardwidget.ui" line="1586"/>
+ <source>Profile</source>
+ <translation>Perfil</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="953"/>
+ <location filename="../newwizardwidget.ui" line="1767"/>
+ <source>Profile name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1027"/>
+ <source>Account</source>
+ <translation>Compte</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1136"/>
+ <source>Register your username.
+This will reserve the username so that only you can use it.
+Your friends will be able to call you with your usename
+instead of using your ID.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1142"/>
+ <source>Public username checkbox</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1145"/>
+ <source>Checkbox selecting if the user wants a public username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1148"/>
+ <source>Register public username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1367"/>
+ <source>Public username edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1373"/>
+ <source>Choose your username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1289"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1295"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1301"/>
+ <location filename="../newwizardwidget.ui" line="2213"/>
+ <source>Password</source>
+ <translation>Senha</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1211"/>
+ <location filename="../newwizardwidget.ui" line="1217"/>
+ <source>Password confirmation text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1223"/>
+ <source>Confirm password</source>
+ <translation>Confirmar lo senhal</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1814"/>
+ <source>SIP Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1973"/>
+ <source>SIP Server edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1979"/>
+ <source>Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2045"/>
+ <source>SIP proxy input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2051"/>
+ <source>SIP proxy text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2057"/>
+ <source>Proxy</source>
+ <translation>Servidor mandatari</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2123"/>
+ <source>SIP username input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2129"/>
+ <source>SIP Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2135"/>
+ <source>Username</source>
+ <translation>Nom d’utilizaire</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2201"/>
+ <location filename="../newwizardwidget.ui" line="2207"/>
+ <source>SIP Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message utf8="true">
+ <location filename="../newwizardwidget.ui" line="2282"/>
+ <source>Generating your Jami account…</source>
+ <translation>Generacion del compte Jami…</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2356"/>
+ <source>Previous page button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2362"/>
+ <source>push button to access previous page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2365"/>
+ <source>Previous</source>
+ <translation>Precedent</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2396"/>
+ <source>Cancel account create/link</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2402"/>
+ <source>push button to cancel account creation or linking</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2405"/>
+ <source>Back</source>
+ <translation>Tornar</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2442"/>
+ <source>Next page Button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2448"/>
+ <source>Push button to access next page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2451"/>
+ <source>Next</source>
+ <translation>Seguent</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="75"/>
+ <source>Open File</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="77"/>
+ <source>Jami archive files (*.gz); All files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="123"/>
+ <source>Your account needs to be migrated. Enter your password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="419"/>
+ <source>Migrating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="412"/>
+ <source>Importing account archive...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="404"/>
+ <source>Generating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="422"/>
+ <source>Generating your SIP account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="533"/>
+ <source>Error creating account</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PasswordDialog</name>
+ <message>
+ <location filename="../passworddialog.ui" line="32"/>
+ <source>Change Account Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="97"/>
+ <source>Enter Current Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="169"/>
+ <source>Enter New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="190"/>
+ <source>Confirm New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="247"/>
+ <source>Confirm</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="290"/>
+ <source>Cancel</source>
+ <translation>anullar</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="143"/>
+ <source>Current Password Incorrect</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PhotoBoothDialog</name>
+ <message>
+ <location filename="../photoboothdialog.ui" line="14"/>
+ <source>Photobooth</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PhotoboothWidget</name>
+ <message>
+ <location filename="../photoboothwidget.ui" line="20"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.ui" line="120"/>
+ <source>Photobooth display</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="92"/>
+ <source>Choose File</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="94"/>
+ <source>Image Files (*.jpg *.jpeg *.png)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PrivateBridging</name>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Choose File</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../utils.cpp" line="183"/>
+ <source>No default mail client found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="43"/>
+ <location filename="../deviceitemwidget.cpp" line="85"/>
+ <source>Edit Device Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="44"/>
+ <source>Unlink Device From Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="80"/>
+ <source>Save new device name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.cpp" line="39"/>
+ <source>Add as contact</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>RingButton</name>
+ <message>
+ <location filename="../ringbutton.ui" line="140"/>
+ <source>Select folder</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <location filename="../settingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="141"/>
+ <source>Settings</source>
+ <translation>Paramètres</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="229"/>
+ <source>Account</source>
+ <translation>Compte</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="267"/>
+ <location filename="../settingswidget.ui" line="503"/>
+ <source>General</source>
+ <translation>General</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="305"/>
+ <location filename="../settingswidget.ui" line="3416"/>
+ <source>Audio / Video</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="542"/>
+ <source>System</source>
+ <translation>Sistèma</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="610"/>
+ <source>Enable desktop notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="653"/>
+ <source>Keep minimized on close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="678"/>
+ <source>Download folder</source>
+ <translation>Dossièr de telecargament</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="811"/>
+ <source>Save in</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="904"/>
+ <source>Always Recording</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="943"/>
+ <source>Updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1008"/>
+ <source>Check for updates automatically every</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1032"/>
+ <source>Interval between update checks in days selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1038"/>
+ <source> days</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1081"/>
+ <source>Check for updates now button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1084"/>
+ <source>Check for updates now</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3027"/>
+ <source>Password</source>
+ <translation>Senha</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1418"/>
+ <location filename="../settingswidget.ui" line="2729"/>
+ <source>Enable</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="607"/>
+ <source>toggle enable notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="650"/>
+ <source>Toggle keep minimized on close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="764"/>
+ <source>Call Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1005"/>
+ <source>Toggle automatic updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1231"/>
+ <source>Jami Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1453"/>
+ <location filename="../settingswidget.ui" line="2761"/>
+ <source>Profile</source>
+ <translation>Perfil</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1567"/>
+ <location filename="../settingswidget.ui" line="2875"/>
+ <source>Identity</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1614"/>
+ <source>Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1673"/>
+ <source>Registered name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1721"/>
+ <source>Type here to register a username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1755"/>
+ <source>Register</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1827"/>
+ <source>Change Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1868"/>
+ <source>Export Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1909"/>
+ <location filename="../settingswidget.ui" line="3089"/>
+ <source>Delete Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1973"/>
+ <source>Linked Devices</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2078"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2142"/>
+ <source>Banned Contacts</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3788"/>
+ <source>Format</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3831"/>
+ <source>Video device framerate selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3967"/>
+ <source>Preview unavailable</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2359"/>
+ <location filename="../settingswidget.ui" line="3187"/>
+ <source>Advanced Account Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2554"/>
+ <source>SIP Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2925"/>
+ <source>Username</source>
+ <translation>Nom d’utilizaire</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2958"/>
+ <source>Hostname</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2991"/>
+ <source>Proxy</source>
+ <translation>Servidor mandatari</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3461"/>
+ <source>Audio</source>
+ <translation>Àudio</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3511"/>
+ <source>Microphone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3551"/>
+ <source>Audio input device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3585"/>
+ <source>Output Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3625"/>
+ <source>Choose the output device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3682"/>
+ <source>Video</source>
+ <translation>Vidèo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3720"/>
+ <source>Device</source>
+ <translation>Periferic</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3766"/>
+ <source>Video device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="459"/>
+ <source>A registered name should not have any spaces and must be at least three letters long</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="466"/>
+ <source>This name is already taken</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="92"/>
+ <location filename="../settingswidget.cpp" line="110"/>
+ <source>Enter an alias</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="473"/>
+ <source>Register this name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="550"/>
+ <source>Remove Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="551"/>
+ <source>Enter this account's password to confirm the removal of this device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="558"/>
+ <source>Are you sure you wish to remove this device?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="589"/>
+ <source>Export Account Here</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="887"/>
+ <source>Select A Folder For Your Downloads</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="904"/>
+ <source>Select A Folder For Your Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>VideoOverlay</name>
+ <message>
+ <location filename="../videooverlay.ui" line="419"/>
+ <source>Call on Hold</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="89"/>
+ <source>Hold / Unhold</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="124"/>
+ <source>Chat</source>
+ <translation>Conversacion</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="162"/>
+ <source>Mute Mic</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="244"/>
+ <source>Record call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="325"/>
+ <source>Name label</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="390"/>
+ <source>Time elapsed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="393"/>
+ <source>00:00</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="57"/>
+ <source>Hangup</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="203"/>
+ <source>Mute Video</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>VideoView</name>
+ <message>
+ <location filename="../videoview.cpp" line="271"/>
+ <source>Share entire screen</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="274"/>
+ <source>Share screen area</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="281"/>
+ <source>Share file</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+</TS>
\ No newline at end of file
diff --git a/translations/ring_client_windows_pa.ts b/translations/ring_client_windows_pa.ts
new file mode 100644
index 0000000..1ab8496
--- /dev/null
+++ b/translations/ring_client_windows_pa.ts
@@ -0,0 +1,1589 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="pa" version="2.0">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../aboutdialog.ui" line="435"/>
+ <location filename="../aboutdialog.ui" line="465"/>
+ <source>About</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="462"/>
+ <source>about button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="478"/>
+ <source>credits button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="481"/>
+ <source>Credits</source>
+ <translation>ਸ਼ਲਾਘਾਯੋਗ ਵਿਅਕਤੀ</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="547"/>
+ <source>Free as in Freedom</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="563"/>
+ <source>The Microsoft Windows client for Jami.
+Jami is a secured and distributed communication software.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="32"/>
+ <source>version</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="39"/>
+ <source>Created by:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="73"/>
+ <source>Artwork by:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="77"/>
+ <source>Based on the SFLPhone project</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AccountItemDelegate</name>
+ <message>
+ <location filename="../accountitemdelegate.cpp" line="91"/>
+ <source>Add Account</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSIPSettingsWidget</name>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="55"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="102"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="130"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="191"/>
+ <source>Connectivity</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="281"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="293"/>
+ <source>Use STUN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="317"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="329"/>
+ <source>Use TURN</source>
+ <translation>TURN ਵਰਤੋ</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="359"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="391"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="423"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="464"/>
+ <source>Media</source>
+ <translation>ਮੀਡੀਆ</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="515"/>
+ <source>Enable Video</source>
+ <translation>ਵੀਡੀਓ ਚਾਲੂ ਕਰੋ</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="539"/>
+ <source>Video Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="692"/>
+ <source>Audio Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="142"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="151"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSettingsWidget</name>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="61"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="108"/>
+ <source>Allow Calls From Untrusted Peers</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="133"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="161"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="188"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="225"/>
+ <source>Name Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="275"/>
+ <source>Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="351"/>
+ <source>OpenDHT Configuration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="398"/>
+ <source>Enable Proxy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="454"/>
+ <source>Bootstrap</source>
+ <translation>ਬੂਟਸਟ੍ਰੈਪ</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="530"/>
+ <source>Security</source>
+ <translation>ਸੁਰੱਖਿਆ</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="571"/>
+ <source>Private Key Password</source>
+ <translation>ਨਿੱਜੀ ਕੁੰਜੀ ਪਾਸਵਰਡ</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="583"/>
+ <source>User Certificate</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="622"/>
+ <source>Private Key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="634"/>
+ <source>CA Certificate</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="766"/>
+ <source>Connectivity</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="868"/>
+ <source>Use STUN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="856"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="892"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="904"/>
+ <source>Use TURN</source>
+ <translation>TURN ਵਰਤੋ</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="934"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="966"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="998"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1039"/>
+ <source>Media</source>
+ <translation>ਮੀਡੀਆ</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1090"/>
+ <source>Enable Video</source>
+ <translation>ਵੀਡੀਓ ਚਾਲੂ ਕਰੋ</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1267"/>
+ <source>Audio Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1114"/>
+ <source>Video Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="181"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AnimatedOverlay</name>
+ <message>
+ <location filename="../animatedoverlay.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>BannedItemWidget</name>
+ <message>
+ <location filename="../banneditemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="80"/>
+ <source>name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="104"/>
+ <source>id</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>CallWidget</name>
+ <message>
+ <location filename="../callwidget.ui" line="184"/>
+ <source>Show conversations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="187"/>
+ <source>Conversations</source>
+ <translation>ਗੱਲਾਂਬਾਤਾਂ</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="368"/>
+ <source>Search contact text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="653"/>
+ <source>Jami is free software for universal communication which respects the freedoms and privacy of its users.</source>
+ <translation>Jami ਦੁਨੀਆ ਭਰ ਵਿੱਚ ਸੰਚਾਰ ਕਰਨ ਲਈ ਮੁਫ਼ਤ ਸਾਫ਼ਟਵੇਅਰ ਹੈ ਜੋ ਆਪਣੇ ਵਰਤੋਂਕਾਰਾਂ ਦੀ ਅਜ਼ਾਦੀ ਅਤੇ ਪਰਦੇਦਾਰੀ ਦਾ ਖਿਆਲ ਰੱਖਦਾ ਹੈ।</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="693"/>
+ <source>
+ This is your ID.
+Copy and share it with your friends!
+ </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="806"/>
+ <source>Show ring ID QR code</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="857"/>
+ <source>Share ring ID button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="915"/>
+ <source>Double-click to copy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="956"/>
+ <source>Error while generating QR Code</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1184"/>
+ <location filename="../callwidget.ui" line="1434"/>
+ <source>best name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1208"/>
+ <source>best Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1734"/>
+ <source>Back to homepage button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1943"/>
+ <source>Add to contacts</source>
+ <translation>ਸੰਪਰਕਾਂ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰੋ</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="202"/>
+ <source>Show invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="205"/>
+ <source>Invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="377"/>
+ <location filename="../callwidget.cpp" line="552"/>
+ <source>Find a new or existing contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1444"/>
+ <source>Wants to talk to you!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1517"/>
+ <source>Answer incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1589"/>
+ <source>Ignore incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1539"/>
+ <source>Answer</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1617"/>
+ <source>Ignore</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1280"/>
+ <source>Cancel outgoing call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1305"/>
+ <source>Cancel</source>
+ <translation>ਰੱਦ ਕਰੋ</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="332"/>
+ <source>Start video call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="343"/>
+ <source>Start audio call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="354"/>
+ <source>Clear conversation</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="361"/>
+ <source>Remove contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="373"/>
+ <source>Block contact</source>
+ <translation>ਸੰਪਰਕ ਬਲਾਕ ਕਰੋ</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="384"/>
+ <source>Copy number</source>
+ <translation>ਨੰਬਰ ਕਾਪੀ ਕਰੋ</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="561"/>
+ <source>Search your received invitations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>Contact me on Jami</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>My Id is : </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="847"/>
+ <source>%1</source>
+ <comment>%1 is the contact username</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="852"/>
+ <source>%1</source>
+ <comment>%1 is the contact unique identifier</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="675"/>
+ <source>Call incoming from %1</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>DeleteAccountDialog</name>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="35"/>
+ <source>Account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="58"/>
+ <source>Do you really want to delete the following account?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="153"/>
+ <source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="235"/>
+ <source>Permanently delete account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="241"/>
+ <source>Delete</source>
+ <translation>ਮਿਟਾਓ</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="278"/>
+ <source>Cancel account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="284"/>
+ <source>Cancel</source>
+ <translation>ਰੱਦ ਕਰੋ</translation>
+ </message>
+</context>
+<context>
+ <name>DeviceItemWidget</name>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="105"/>
+ <source>Device Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="143"/>
+ <source>this device</source>
+ <translation>ਇਹ ਡੀਵਾਈਸ</translation>
+ </message>
+</context>
+<context>
+ <name>InviteButtonsWidget</name>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="83"/>
+ <source>Accept</source>
+ <translation>ਸਵੀਕਾਰ ਕਰੋ</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="131"/>
+ <source>Refuse</source>
+ <translation>ਅਸਵੀਕਾਰ ਕਰੋ</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="179"/>
+ <source>Block</source>
+ <translation>ਬਲਾਕ ਕਰੋ</translation>
+ </message>
+</context>
+<context>
+ <name>LinkDeviceDialog</name>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="62"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="117"/>
+ <source>Password</source>
+ <translation>ਪਾਸਵਰਡ</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="184"/>
+ <source>Ok</source>
+ <translation>ਠੀਕ ਹੈ</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="218"/>
+ <source>Cancel</source>
+ <translation>ਰੱਦ ਕਰੋ</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="279"/>
+ <source>Exporting account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="402"/>
+ <source>Your PIN is</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="432"/>
+ <source>PIN</source>
+ <translation>ਪਿੰਨ</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="477"/>
+ <source>This pin and the account password should be entered in your device within 10 minutes.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="553"/>
+ <source>Close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="34"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="96"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="110"/>
+ <source>Something went wrong.
+Please try again later.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="83"/>
+ <source>Settings</source>
+ <translation>ਸੈਟਿੰਗ</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="94"/>
+ <source>Exit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="111"/>
+ <source>About</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="435"/>
+ <source>Jami</source>
+ <translation>Jami</translation>
+ </message>
+</context>
+<context>
+ <name>NameRegistrationDialog</name>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="35"/>
+ <source>Set Registered Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="163"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="244"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="250"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="256"/>
+ <source>Password</source>
+ <translation>ਪਾਸਵਰਡ</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="323"/>
+ <source>Register</source>
+ <translation>ਪੰਜੀਕਰਨ ਕਰੋ</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="357"/>
+ <source>Cancel</source>
+ <translation>ਰੱਦ ਕਰੋ</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="424"/>
+ <source>Registering Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="548"/>
+ <source>Something went wrong</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="618"/>
+ <source>Close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="82"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="85"/>
+ <source>Network error</source>
+ <translation>ਨੈੱਟਵਰਕ ਗੜਬੜ</translation>
+ </message>
+</context>
+<context>
+ <name>NewWizardWidget</name>
+ <message>
+ <location filename="../newwizardwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="141"/>
+ <source>Welcome Label</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="147"/>
+ <source> Welcome to</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="185"/>
+ <source>Welcome Logo</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="239"/>
+ <source>Create Jami account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="245"/>
+ <source>Push button for Jami account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="251"/>
+ <source>Create a Jami account</source>
+ <translation>Jami ਖਾਤਾ ਬਣਾਓ</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="282"/>
+ <source>Link device button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="288"/>
+ <source>Push button for device linkage start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="291"/>
+ <source>Link this device to an account</source>
+ <translation>ਇਹ ਡੀਵਾਈਸ ਕਿਸੇ ਖਾਤੇ ਨਾਲ ਲਿੰਕ ਕਰੋ</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="328"/>
+ <source>Create Jami SIP account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="334"/>
+ <source>Push button for Jami SIP account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="340"/>
+ <source>Create a SIP account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="405"/>
+ <source>Link this device to an existing account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="469"/>
+ <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">To link this device to another account, you first </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">need to obtain a PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> code. To generate the PIN code:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Account management setting</span><span style=" font-size:14px;"> of a previous device</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choose the </span><span style=" font-size:14px; font-weight:600;">Jami account</span><span style=" font-size:14px;"> you want to use</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Devices</span><span style=" font-size:14px;"> tab</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Select </span><span style=" font-size:14px; font-weight:600;">Add a device</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">You will get the necessary PIN to complete this form. The PIN is only valid for </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutes</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="531"/>
+ <source>Enter your pin:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="599"/>
+ <source>Or import a file:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="626"/>
+ <source>Link from exported account archive file</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="629"/>
+ <location filename="../newwizardwidget.cpp" line="83"/>
+ <location filename="../newwizardwidget.cpp" line="218"/>
+ <source>(None)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="705"/>
+ <source>Password:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="799"/>
+ <location filename="../newwizardwidget.ui" line="1586"/>
+ <source>Profile</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="953"/>
+ <location filename="../newwizardwidget.ui" line="1767"/>
+ <source>Profile name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1027"/>
+ <source>Account</source>
+ <translation>ਖਾਤਾ</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1136"/>
+ <source>Register your username.
+This will reserve the username so that only you can use it.
+Your friends will be able to call you with your usename
+instead of using your ID.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1142"/>
+ <source>Public username checkbox</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1145"/>
+ <source>Checkbox selecting if the user wants a public username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1148"/>
+ <source>Register public username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1367"/>
+ <source>Public username edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1373"/>
+ <source>Choose your username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1289"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1295"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1301"/>
+ <location filename="../newwizardwidget.ui" line="2213"/>
+ <source>Password</source>
+ <translation>ਪਾਸਵਰਡ</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1211"/>
+ <location filename="../newwizardwidget.ui" line="1217"/>
+ <source>Password confirmation text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1223"/>
+ <source>Confirm password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1814"/>
+ <source>SIP Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1973"/>
+ <source>SIP Server edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1979"/>
+ <source>Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2045"/>
+ <source>SIP proxy input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2051"/>
+ <source>SIP proxy text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2057"/>
+ <source>Proxy</source>
+ <translation>ਪ੍ਰੌਕਸੀ</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2123"/>
+ <source>SIP username input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2129"/>
+ <source>SIP Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2135"/>
+ <source>Username</source>
+ <translation>ਵਰਤੋਂਕਾਰ ਨਾਂ</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2201"/>
+ <location filename="../newwizardwidget.ui" line="2207"/>
+ <source>SIP Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message utf8="true">
+ <location filename="../newwizardwidget.ui" line="2282"/>
+ <source>Generating your Jami account…</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2356"/>
+ <source>Previous page button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2362"/>
+ <source>push button to access previous page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2365"/>
+ <source>Previous</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2396"/>
+ <source>Cancel account create/link</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2402"/>
+ <source>push button to cancel account creation or linking</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2405"/>
+ <source>Back</source>
+ <translation>ਪਿੱਛੇ</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2442"/>
+ <source>Next page Button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2448"/>
+ <source>Push button to access next page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2451"/>
+ <source>Next</source>
+ <translation>ਅੱਗੇ</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="75"/>
+ <source>Open File</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="77"/>
+ <source>Jami archive files (*.gz); All files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="123"/>
+ <source>Your account needs to be migrated. Enter your password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="419"/>
+ <source>Migrating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="412"/>
+ <source>Importing account archive...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="404"/>
+ <source>Generating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="422"/>
+ <source>Generating your SIP account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="533"/>
+ <source>Error creating account</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PasswordDialog</name>
+ <message>
+ <location filename="../passworddialog.ui" line="32"/>
+ <source>Change Account Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="97"/>
+ <source>Enter Current Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="169"/>
+ <source>Enter New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="190"/>
+ <source>Confirm New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="247"/>
+ <source>Confirm</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="290"/>
+ <source>Cancel</source>
+ <translation>ਰੱਦ ਕਰੋ</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="143"/>
+ <source>Current Password Incorrect</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PhotoBoothDialog</name>
+ <message>
+ <location filename="../photoboothdialog.ui" line="14"/>
+ <source>Photobooth</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PhotoboothWidget</name>
+ <message>
+ <location filename="../photoboothwidget.ui" line="20"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.ui" line="120"/>
+ <source>Photobooth display</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="92"/>
+ <source>Choose File</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="94"/>
+ <source>Image Files (*.jpg *.jpeg *.png)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PrivateBridging</name>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Choose File</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../utils.cpp" line="183"/>
+ <source>No default mail client found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="43"/>
+ <location filename="../deviceitemwidget.cpp" line="85"/>
+ <source>Edit Device Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="44"/>
+ <source>Unlink Device From Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="80"/>
+ <source>Save new device name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.cpp" line="39"/>
+ <source>Add as contact</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>RingButton</name>
+ <message>
+ <location filename="../ringbutton.ui" line="140"/>
+ <source>Select folder</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <location filename="../settingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="141"/>
+ <source>Settings</source>
+ <translation>ਸੈਟਿੰਗ</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="229"/>
+ <source>Account</source>
+ <translation>ਖਾਤਾ</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="267"/>
+ <location filename="../settingswidget.ui" line="503"/>
+ <source>General</source>
+ <translation>ਸਧਾਰਨ</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="305"/>
+ <location filename="../settingswidget.ui" line="3416"/>
+ <source>Audio / Video</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="542"/>
+ <source>System</source>
+ <translation>ਸਿਸਟਮ</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="610"/>
+ <source>Enable desktop notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="653"/>
+ <source>Keep minimized on close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="678"/>
+ <source>Download folder</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="811"/>
+ <source>Save in</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="904"/>
+ <source>Always Recording</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="943"/>
+ <source>Updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1008"/>
+ <source>Check for updates automatically every</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1032"/>
+ <source>Interval between update checks in days selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1038"/>
+ <source> days</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1081"/>
+ <source>Check for updates now button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1084"/>
+ <source>Check for updates now</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3027"/>
+ <source>Password</source>
+ <translation>ਪਾਸਵਰਡ</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1418"/>
+ <location filename="../settingswidget.ui" line="2729"/>
+ <source>Enable</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="607"/>
+ <source>toggle enable notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="650"/>
+ <source>Toggle keep minimized on close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="764"/>
+ <source>Call Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1005"/>
+ <source>Toggle automatic updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1231"/>
+ <source>Jami Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1453"/>
+ <location filename="../settingswidget.ui" line="2761"/>
+ <source>Profile</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1567"/>
+ <location filename="../settingswidget.ui" line="2875"/>
+ <source>Identity</source>
+ <translation>ਪਛਾਣ</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1614"/>
+ <source>Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1673"/>
+ <source>Registered name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1721"/>
+ <source>Type here to register a username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1755"/>
+ <source>Register</source>
+ <translation>ਪੰਜੀਕਰਨ ਕਰੋ</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1827"/>
+ <source>Change Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1868"/>
+ <source>Export Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1909"/>
+ <location filename="../settingswidget.ui" line="3089"/>
+ <source>Delete Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1973"/>
+ <source>Linked Devices</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2078"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2142"/>
+ <source>Banned Contacts</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3788"/>
+ <source>Format</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3831"/>
+ <source>Video device framerate selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3967"/>
+ <source>Preview unavailable</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2359"/>
+ <location filename="../settingswidget.ui" line="3187"/>
+ <source>Advanced Account Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2554"/>
+ <source>SIP Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2925"/>
+ <source>Username</source>
+ <translation>ਵਰਤੋਂਕਾਰ ਨਾਂ</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2958"/>
+ <source>Hostname</source>
+ <translation>ਹੋਸਟਨਾਮ</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2991"/>
+ <source>Proxy</source>
+ <translation>ਪ੍ਰੌਕਸੀ</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3461"/>
+ <source>Audio</source>
+ <translation>ਆਡੀਓ</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3511"/>
+ <source>Microphone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3551"/>
+ <source>Audio input device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3585"/>
+ <source>Output Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3625"/>
+ <source>Choose the output device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3682"/>
+ <source>Video</source>
+ <translation>ਵੀਡੀਓ</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3720"/>
+ <source>Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3766"/>
+ <source>Video device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="459"/>
+ <source>A registered name should not have any spaces and must be at least three letters long</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="466"/>
+ <source>This name is already taken</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="92"/>
+ <location filename="../settingswidget.cpp" line="110"/>
+ <source>Enter an alias</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="473"/>
+ <source>Register this name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="550"/>
+ <source>Remove Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="551"/>
+ <source>Enter this account's password to confirm the removal of this device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="558"/>
+ <source>Are you sure you wish to remove this device?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="589"/>
+ <source>Export Account Here</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="887"/>
+ <source>Select A Folder For Your Downloads</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="904"/>
+ <source>Select A Folder For Your Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>VideoOverlay</name>
+ <message>
+ <location filename="../videooverlay.ui" line="419"/>
+ <source>Call on Hold</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="89"/>
+ <source>Hold / Unhold</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="124"/>
+ <source>Chat</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="162"/>
+ <source>Mute Mic</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="244"/>
+ <source>Record call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="325"/>
+ <source>Name label</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="390"/>
+ <source>Time elapsed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="393"/>
+ <source>00:00</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="57"/>
+ <source>Hangup</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="203"/>
+ <source>Mute Video</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>VideoView</name>
+ <message>
+ <location filename="../videoview.cpp" line="271"/>
+ <source>Share entire screen</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="274"/>
+ <source>Share screen area</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="281"/>
+ <source>Share file</source>
+ <translation>ਫ਼ਾਈਲ ਸਾਂਝੀ ਕਰੋ</translation>
+ </message>
+</context>
+</TS>
\ No newline at end of file
diff --git a/translations/ring_client_windows_pl.ts b/translations/ring_client_windows_pl.ts
new file mode 100644
index 0000000..794aee8
--- /dev/null
+++ b/translations/ring_client_windows_pl.ts
@@ -0,0 +1,1604 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="pl" version="2.0">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../aboutdialog.ui" line="435"/>
+ <location filename="../aboutdialog.ui" line="465"/>
+ <source>About</source>
+ <translation>O programie</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="462"/>
+ <source>about button</source>
+ <translation>przycisk o programie</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="478"/>
+ <source>credits button</source>
+ <translation>przycisk zasługi</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="481"/>
+ <source>Credits</source>
+ <translation>Podziękowania</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="547"/>
+ <source>Free as in Freedom</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="563"/>
+ <source>The Microsoft Windows client for Jami.
+Jami is a secured and distributed communication software.</source>
+ <translation>Klient Jami dla Microsoft Windows.
+Jami jest wolnym oprogramowaniem do uniwersalnej komunikacji, respektującym wolność i prywatność swoich użytkowników.</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="32"/>
+ <source>version</source>
+ <translation>Wersja</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="39"/>
+ <source>Created by:</source>
+ <translation>Stworzone przez:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="73"/>
+ <source>Artwork by:</source>
+ <translation>Obrazki przez:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="77"/>
+ <source>Based on the SFLPhone project</source>
+ <translation>Na podstawie projektu SFLPhone</translation>
+ </message>
+</context>
+<context>
+ <name>AccountItemDelegate</name>
+ <message>
+ <location filename="../accountitemdelegate.cpp" line="91"/>
+ <source>Add Account</source>
+ <translation>Dodaj Konto</translation>
+ </message>
+</context>
+<context>
+ <name>AdvancedSIPSettingsWidget</name>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Forma</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="55"/>
+ <source>Call Settings</source>
+ <translation>Ustawienia Połączeń</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="102"/>
+ <source>Auto Answer Calls</source>
+ <translation>Automatycznie Odbieraj Połączenia</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="130"/>
+ <source>Enable Custom Ringtone</source>
+ <translation>Użyj Własnego Dzwonka</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="191"/>
+ <source>Connectivity</source>
+ <translation>Łączność</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="281"/>
+ <source>STUN Address</source>
+ <translation>Adres STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="293"/>
+ <source>Use STUN</source>
+ <translation>Użyj STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="317"/>
+ <source>Use UPnP</source>
+ <translation>Użyj UPnP</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="329"/>
+ <source>Use TURN</source>
+ <translation>Użyj TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="359"/>
+ <source>TURN Password</source>
+ <translation>Hasło TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="391"/>
+ <source>TURN Username</source>
+ <translation>Nazwa użytkownika TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="423"/>
+ <source>TURN Address</source>
+ <translation>Adres TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="464"/>
+ <source>Media</source>
+ <translation>Multimedia</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="515"/>
+ <source>Enable Video</source>
+ <translation>Włącz video</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="539"/>
+ <source>Video Codecs</source>
+ <translation>Kodeki Wideo</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="692"/>
+ <source>Audio Codecs</source>
+ <translation>Kodeki Audio</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="142"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation>Pliki Audio (*.wav *.ogg *.opus *.mp3 *aiff *wma)</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="151"/>
+ <source>Add a custom ringtone</source>
+ <translation>Dodaj własny dzwonek</translation>
+ </message>
+</context>
+<context>
+ <name>AdvancedSettingsWidget</name>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Forma</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="61"/>
+ <source>Call Settings</source>
+ <translation>Ustawienia Połączeń</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="108"/>
+ <source>Allow Calls From Untrusted Peers</source>
+ <translation>Zezwól Na Połączenia Od Niezaufanych Użytkowników</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="133"/>
+ <source>Auto Answer Calls</source>
+ <translation>Automatycznie Odbieraj Połączenia</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="161"/>
+ <source>Enable Custom Ringtone</source>
+ <translation>Użyj Własnego Dzwonka</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="188"/>
+ <source>Add a custom ringtone</source>
+ <translation>Dodaj własny dzwonek</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="225"/>
+ <source>Name Server</source>
+ <translation>Serwer Nazw</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="275"/>
+ <source>Address</source>
+ <translation>Adres</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="351"/>
+ <source>OpenDHT Configuration</source>
+ <translation>Konfiguracja OpenDHT</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="398"/>
+ <source>Enable Proxy</source>
+ <translation>Włącz proxy</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="454"/>
+ <source>Bootstrap</source>
+ <translation>Bootstrap</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="530"/>
+ <source>Security</source>
+ <translation>Zabezpieczenia</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="571"/>
+ <source>Private Key Password</source>
+ <translation>Hasło Klucza Prywatnego</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="583"/>
+ <source>User Certificate</source>
+ <translation>Certyfikat Użytkownika</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="622"/>
+ <source>Private Key</source>
+ <translation>Klucz Prywatny</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="634"/>
+ <source>CA Certificate</source>
+ <translation>Certyfikat CA</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="766"/>
+ <source>Connectivity</source>
+ <translation>Łączność</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="868"/>
+ <source>Use STUN</source>
+ <translation>Użyj STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="856"/>
+ <source>STUN Address</source>
+ <translation>Adres STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="892"/>
+ <source>Use UPnP</source>
+ <translation>Użyj UPnP</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="904"/>
+ <source>Use TURN</source>
+ <translation>Użyj TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="934"/>
+ <source>TURN Password</source>
+ <translation>Hasło TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="966"/>
+ <source>TURN Username</source>
+ <translation>Nazwa użytkownika TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="998"/>
+ <source>TURN Address</source>
+ <translation>Adres TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1039"/>
+ <source>Media</source>
+ <translation>Multimedia</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1090"/>
+ <source>Enable Video</source>
+ <translation>Włącz video</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1267"/>
+ <source>Audio Codecs</source>
+ <translation>Kodeki Audio</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1114"/>
+ <source>Video Codecs</source>
+ <translation>Kodeki Wideo</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="181"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation>Pliki Audio (*.wav *.ogg *.opus *.mp3 *aiff *wma)</translation>
+ </message>
+</context>
+<context>
+ <name>AnimatedOverlay</name>
+ <message>
+ <location filename="../animatedoverlay.ui" line="14"/>
+ <source>Form</source>
+ <translation>Forma</translation>
+ </message>
+</context>
+<context>
+ <name>BannedItemWidget</name>
+ <message>
+ <location filename="../banneditemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Forma</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="80"/>
+ <source>name</source>
+ <translation>nazwa</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="104"/>
+ <source>id</source>
+ <translation>ID</translation>
+ </message>
+</context>
+<context>
+ <name>CallWidget</name>
+ <message>
+ <location filename="../callwidget.ui" line="184"/>
+ <source>Show conversations</source>
+ <translation>Pokaż rozmowy</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="187"/>
+ <source>Conversations</source>
+ <translation>Rozmowy</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="368"/>
+ <source>Search contact text input</source>
+ <translation>Pole szukania kontaktów</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="653"/>
+ <source>Jami is free software for universal communication which respects the freedoms and privacy of its users.</source>
+ <translation>Jami jest wolnym oprogramowaniem do uniwersalnej komunikacji, respektującym wolności i prywatność swoich użytkowników.</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="693"/>
+ <source>
+ This is your ID.
+Copy and share it with your friends!
+ </source>
+ <translation>
+To jest twoje ID.
+Skopiuj i podziel się ze swoimi znajomymi!</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="806"/>
+ <source>Show ring ID QR code</source>
+ <translation>Pokaż kod QR Jami ID</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="857"/>
+ <source>Share ring ID button</source>
+ <translation>Guzik dzielenia się ID Jami</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="915"/>
+ <source>Double-click to copy</source>
+ <translation>Kliknij dwukrotnie, aby skopiować </translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="956"/>
+ <source>Error while generating QR Code</source>
+ <translation>Wystąpił błąd podczas generowania kodu QR.</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1184"/>
+ <location filename="../callwidget.ui" line="1434"/>
+ <source>best name</source>
+ <translation>najlepsza nazwa</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1208"/>
+ <source>best Id</source>
+ <translation>Najlepsze ID</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1734"/>
+ <source>Back to homepage button</source>
+ <translation>Guzik powrotu do strony głównej</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1943"/>
+ <source>Add to contacts</source>
+ <translation>Dodaj do kontaków</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="202"/>
+ <source>Show invites</source>
+ <translation>Pokaż zaproszenia</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="205"/>
+ <source>Invites</source>
+ <translation>Zaprasza</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="377"/>
+ <location filename="../callwidget.cpp" line="552"/>
+ <source>Find a new or existing contact</source>
+ <translation>Szukaj nowego lub istniejącego kontaktu</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1444"/>
+ <source>Wants to talk to you!</source>
+ <translation>Chce z tobą rozmawiać!</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1517"/>
+ <source>Answer incoming call button</source>
+ <translation>Guzik odbierania przychodzących rozmów</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1589"/>
+ <source>Ignore incoming call button</source>
+ <translation>Guzik ignorowania nadchodzących połączeń</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1539"/>
+ <source>Answer</source>
+ <translation>Odbierz</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1617"/>
+ <source>Ignore</source>
+ <translation>Zignoruj</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1280"/>
+ <source>Cancel outgoing call</source>
+ <translation>Anuluj połączenie wychodzące</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1305"/>
+ <source>Cancel</source>
+ <translation>Anuluj</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="332"/>
+ <source>Start video call</source>
+ <translation>Rozpocznij rozmowę wideo</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="343"/>
+ <source>Start audio call</source>
+ <translation>Rozpocznij połączenie głosowe</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="354"/>
+ <source>Clear conversation</source>
+ <translation>Wyczyść rozmowę</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="361"/>
+ <source>Remove contact</source>
+ <translation>Usuń kontakt</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="373"/>
+ <source>Block contact</source>
+ <translation>Blokuj kontakt</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="384"/>
+ <source>Copy number</source>
+ <translation>Skopiuj numer</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="561"/>
+ <source>Search your received invitations</source>
+ <translation>Szukaj odebranych zaproszeń</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>Contact me on Jami</source>
+ <translation>Skontaktuj się ze mną na Jami</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>My Id is : </source>
+ <translation>Mój identyfikator to:</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="847"/>
+ <source>%1</source>
+ <comment>%1 is the contact username</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="852"/>
+ <source>%1</source>
+ <comment>%1 is the contact unique identifier</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="675"/>
+ <source>Call incoming from %1</source>
+ <translation>Połączenie przychodzące od %1</translation>
+ </message>
+</context>
+<context>
+ <name>DeleteAccountDialog</name>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="35"/>
+ <source>Account deletion</source>
+ <translation>Kasowanie konta</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="58"/>
+ <source>Do you really want to delete the following account?</source>
+ <translation>Czy na pewno chcesz usunąć następujące konto?</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="153"/>
+ <source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
+ <translation>Jeżeli to konto nie zostało wyeksportowane, lub dodane do innego urządzenia, zostanie bezpowrotnie utracone.</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="235"/>
+ <source>Permanently delete account</source>
+ <translation>Usuń konto na zawsze</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="241"/>
+ <source>Delete</source>
+ <translation>Usuń</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="278"/>
+ <source>Cancel account deletion</source>
+ <translation>Anuluj usuwanie konta</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="284"/>
+ <source>Cancel</source>
+ <translation>Anuluj</translation>
+ </message>
+</context>
+<context>
+ <name>DeviceItemWidget</name>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Forma</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="105"/>
+ <source>Device Id</source>
+ <translation>ID Urządzenia</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="143"/>
+ <source>this device</source>
+ <translation>to urządzenie</translation>
+ </message>
+</context>
+<context>
+ <name>InviteButtonsWidget</name>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="83"/>
+ <source>Accept</source>
+ <translation>Akceptuj</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="131"/>
+ <source>Refuse</source>
+ <translation>Odmów</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="179"/>
+ <source>Block</source>
+ <translation>Blokuj</translation>
+ </message>
+</context>
+<context>
+ <name>LinkDeviceDialog</name>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation>Dialog</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="62"/>
+ <source>Enter your account password</source>
+ <translation>Wprowadź hasło do twojego konta</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="117"/>
+ <source>Password</source>
+ <translation>Hasło</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="184"/>
+ <source>Ok</source>
+ <translation>Ok</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="218"/>
+ <source>Cancel</source>
+ <translation>Anuluj</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="279"/>
+ <source>Exporting account</source>
+ <translation>Eksportuję konto</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="402"/>
+ <source>Your PIN is</source>
+ <translation>Twój PIN to</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="432"/>
+ <source>PIN</source>
+ <translation>PIN</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="477"/>
+ <source>This pin and the account password should be entered in your device within 10 minutes.</source>
+ <translation>Ten pin i hasło do konta powinny zostać wprowadzone na twoim urządzeniu w ciągu 10 minut.</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="553"/>
+ <source>Close</source>
+ <translation>Zamknij</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="34"/>
+ <source>Link Another Device</source>
+ <translation>Połącz Inne Urządzenie</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="96"/>
+ <source>Incorrect password</source>
+ <translation>Niepoprawne hasło</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="110"/>
+ <source>Something went wrong.
+Please try again later.</source>
+ <translation>Coś poszło nie tak.
+Proszę, spróbuj ponownie.</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="83"/>
+ <source>Settings</source>
+ <translation>Ustawienia</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="94"/>
+ <source>Exit</source>
+ <translation>Wyjdź</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="111"/>
+ <source>About</source>
+ <translation>O</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="435"/>
+ <source>Jami</source>
+ <translation>Jami</translation>
+ </message>
+</context>
+<context>
+ <name>NameRegistrationDialog</name>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="35"/>
+ <source>Set Registered Name</source>
+ <translation>Ustaw Zarejestrowaną Nazwę</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="163"/>
+ <source>Enter your account password</source>
+ <translation>Wprowadź hasło do twojego konta</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="244"/>
+ <source>Password text input</source>
+ <translation>Pole tekstowe hasła</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="250"/>
+ <source>Password text entry</source>
+ <translation>Wpis tekstu hasła</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="256"/>
+ <source>Password</source>
+ <translation>Hasło</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="323"/>
+ <source>Register</source>
+ <translation>Zarejestruj</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="357"/>
+ <source>Cancel</source>
+ <translation>Anuluj</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="424"/>
+ <source>Registering Name</source>
+ <translation>Rejestrowanie Nazwy</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="548"/>
+ <source>Something went wrong</source>
+ <translation>Coś poszło nie tak</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="618"/>
+ <source>Close</source>
+ <translation>Zamknij</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="82"/>
+ <source>Incorrect password</source>
+ <translation>Niepoprawne hasło</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="85"/>
+ <source>Network error</source>
+ <translation>Błąd sieci</translation>
+ </message>
+</context>
+<context>
+ <name>NewWizardWidget</name>
+ <message>
+ <location filename="../newwizardwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Forma</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="141"/>
+ <source>Welcome Label</source>
+ <translation>Naklejka "Witaj"</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="147"/>
+ <source> Welcome to</source>
+ <translation>Witaj!</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="185"/>
+ <source>Welcome Logo</source>
+ <translation>Logo Powitania</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="239"/>
+ <source>Create Jami account button</source>
+ <translation>Guzik tworzenia konta Jami</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="245"/>
+ <source>Push button for Jami account creation start trigger</source>
+ <translation>Guzik do rozpoczęcia tworzenia konta Jami</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="251"/>
+ <source>Create a Jami account</source>
+ <translation>Stwórz konto Jami</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="282"/>
+ <source>Link device button</source>
+ <translation>Guzik łączenia urządzenia</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="288"/>
+ <source>Push button for device linkage start trigger</source>
+ <translation>Guzik do rozpoczęcia połączenia urządzenia</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="291"/>
+ <source>Link this device to an account</source>
+ <translation>Połącz to urządzenie z kontem</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="328"/>
+ <source>Create Jami SIP account button</source>
+ <translation>Guzik tworzenia konta SIP Jami</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="334"/>
+ <source>Push button for Jami SIP account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="340"/>
+ <source>Create a SIP account</source>
+ <translation>Stwórz konto SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="405"/>
+ <source>Link this device to an existing account</source>
+ <translation>Połącz to urządzenie z istniejącym kontem</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="469"/>
+ <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">To link this device to another account, you first </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">need to obtain a PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> code. To generate the PIN code:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Account management setting</span><span style=" font-size:14px;"> of a previous device</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choose the </span><span style=" font-size:14px; font-weight:600;">Jami account</span><span style=" font-size:14px;"> you want to use</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Devices</span><span style=" font-size:14px;"> tab</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Select </span><span style=" font-size:14px; font-weight:600;">Add a device</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">You will get the necessary PIN to complete this form. The PIN is only valid for </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutes</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></source>
+ <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">Aby połączyć to urządzenie z innym kątem, najpierw</span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">musisz pozyskać kod PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> Aby wygenerować kod PIN:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Przejdź do </span><span style=" font-size:14px; font-weight:600;">Ustawień zarządzenia kontem</span><span style=" font-size:14px;"> na poprzednim urządzeniu</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Wybierz </span><span style=" font-size:14px; font-weight:600;">Konto Jami,</span><span style=" font-size:14px;"> z którego chcesz korzystać</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Przejdź do</span><span style=" font-size:14px; font-weight:600;">Karty urządzeń</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Zaznacz </span><span style=" font-size:14px; font-weight:600;">Dodaj urządzenie</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">Będziesz potrzebować kodu PIN, aby uzupełnić ten formularz. Kod PIN jest ważny przez</span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minut</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="531"/>
+ <source>Enter your pin:</source>
+ <translation>Wpisz swój PIN:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="599"/>
+ <source>Or import a file:</source>
+ <translation>Lub zaimportuj plik:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="626"/>
+ <source>Link from exported account archive file</source>
+ <translation>Połącz z wyeksportowanego pliku archiwum </translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="629"/>
+ <location filename="../newwizardwidget.cpp" line="83"/>
+ <location filename="../newwizardwidget.cpp" line="218"/>
+ <source>(None)</source>
+ <translation>(Brak)</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="705"/>
+ <source>Password:</source>
+ <translation>Hasło:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="799"/>
+ <location filename="../newwizardwidget.ui" line="1586"/>
+ <source>Profile</source>
+ <translation>Profil</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="953"/>
+ <location filename="../newwizardwidget.ui" line="1767"/>
+ <source>Profile name</source>
+ <translation>Nazwa profilu</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1027"/>
+ <source>Account</source>
+ <translation>Konto</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1136"/>
+ <source>Register your username.
+This will reserve the username so that only you can use it.
+Your friends will be able to call you with your usename
+instead of using your ID.</source>
+ <translation>Zarejestruj swoją nazwę użytkownika.
+Ta akcja zarezerwuje nazwę użytkownika, tak, że tylko ty będziesz w stanie z niej korzystać.
+Twoi znajomi będą w stanie kontaktować się za pomocą tej nazwy użytkownika zamiast używać twojego ID.</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1142"/>
+ <source>Public username checkbox</source>
+ <translation>Checkbox publicznej nazwy użytkownika</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1145"/>
+ <source>Checkbox selecting if the user wants a public username</source>
+ <translation>Checkbox zaznaczający, jeśli użytkownik chce mieć publiczną nazwę użytkownika</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1148"/>
+ <source>Register public username</source>
+ <translation>Zarejestruj publiczną nazwę użytkownika</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1367"/>
+ <source>Public username edit</source>
+ <translation>Edycja publicznej nazwy użytkownika</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1373"/>
+ <source>Choose your username</source>
+ <translation>Wybierz swoją nazwę użytkownika</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1289"/>
+ <source>Password text input</source>
+ <translation>Pole tekstowe hasła</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1295"/>
+ <source>Password text entry</source>
+ <translation>Wpis tekstu hasła</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1301"/>
+ <location filename="../newwizardwidget.ui" line="2213"/>
+ <source>Password</source>
+ <translation>Hasło</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1211"/>
+ <location filename="../newwizardwidget.ui" line="1217"/>
+ <source>Password confirmation text input</source>
+ <translation>Pole potwierdzenia hasła</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1223"/>
+ <source>Confirm password</source>
+ <translation>Potwierdź hasło</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1814"/>
+ <source>SIP Account</source>
+ <translation>Konto SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1973"/>
+ <source>SIP Server edit</source>
+ <translation>Edycja Serwera SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1979"/>
+ <source>Server</source>
+ <translation>Serwer</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2045"/>
+ <source>SIP proxy input</source>
+ <translation>Pole wprowadzenia proxy dla SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2051"/>
+ <source>SIP proxy text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2057"/>
+ <source>Proxy</source>
+ <translation>Pełnomocnik</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2123"/>
+ <source>SIP username input</source>
+ <translation>Wprowadź nazwę użytkownika SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2129"/>
+ <source>SIP Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2135"/>
+ <source>Username</source>
+ <translation>Nazwa użytkownika</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2201"/>
+ <location filename="../newwizardwidget.ui" line="2207"/>
+ <source>SIP Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message utf8="true">
+ <location filename="../newwizardwidget.ui" line="2282"/>
+ <source>Generating your Jami account…</source>
+ <translation>Tworzenie konta Jami...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2356"/>
+ <source>Previous page button</source>
+ <translation>Guzik poprzedniej strony</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2362"/>
+ <source>push button to access previous page of wizard</source>
+ <translation>guzik dostępu do poprzedniej strony instalatora</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2365"/>
+ <source>Previous</source>
+ <translation>Poprzednie</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2396"/>
+ <source>Cancel account create/link</source>
+ <translation>Anuluj konto stwórz/połącz</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2402"/>
+ <source>push button to cancel account creation or linking</source>
+ <translation>guzik do anulowania tworzenia lub łączenia konta</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2405"/>
+ <source>Back</source>
+ <translation>Wstecz</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2442"/>
+ <source>Next page Button</source>
+ <translation>Guzik następnej strony</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2448"/>
+ <source>Push button to access next page of wizard</source>
+ <translation>Guzik dostępu do następnej strony instalatora</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2451"/>
+ <source>Next</source>
+ <translation>Następne</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="75"/>
+ <source>Open File</source>
+ <translation>Otwórz plik</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="77"/>
+ <source>Jami archive files (*.gz); All files (*)</source>
+ <translation>Pliki archiwum Jami (*.gz); Wszystkie pliki (*)</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="123"/>
+ <source>Your account needs to be migrated. Enter your password.</source>
+ <translation>Twoje konto musi zostać zaktualizowane. Wprowadź swoje hasło.</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="419"/>
+ <source>Migrating your Jami account...</source>
+ <translation>Migrowanie twojego kąta Jami...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="412"/>
+ <source>Importing account archive...</source>
+ <translation>Importowanie archiwum konta...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="404"/>
+ <source>Generating your Jami account...</source>
+ <translation>Generowanie twojego konta Jami...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="422"/>
+ <source>Generating your SIP account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="533"/>
+ <source>Error creating account</source>
+ <translation>Błąd podczas tworzenia konta</translation>
+ </message>
+</context>
+<context>
+ <name>PasswordDialog</name>
+ <message>
+ <location filename="../passworddialog.ui" line="32"/>
+ <source>Change Account Password</source>
+ <translation>Zmień Hasło Konta</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="97"/>
+ <source>Enter Current Password</source>
+ <translation>Wprowadź Obecne Hasło</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="169"/>
+ <source>Enter New Password</source>
+ <translation>Wprowadź Nowe Hasło</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="190"/>
+ <source>Confirm New Password</source>
+ <translation>Potwierdź Nowe Hasło</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="247"/>
+ <source>Confirm</source>
+ <translation>Potwierdź</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="290"/>
+ <source>Cancel</source>
+ <translation>Anuluj</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="143"/>
+ <source>Current Password Incorrect</source>
+ <translation>Bieżące Hasło Jest Niepoprawne</translation>
+ </message>
+</context>
+<context>
+ <name>PhotoBoothDialog</name>
+ <message>
+ <location filename="../photoboothdialog.ui" line="14"/>
+ <source>Photobooth</source>
+ <translation>Budka fotograficzna</translation>
+ </message>
+</context>
+<context>
+ <name>PhotoboothWidget</name>
+ <message>
+ <location filename="../photoboothwidget.ui" line="20"/>
+ <source>Form</source>
+ <translation>Forma</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.ui" line="120"/>
+ <source>Photobooth display</source>
+ <translation>Widok z przodu</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="92"/>
+ <source>Choose File</source>
+ <translation>Wybierz Plik</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="94"/>
+ <source>Image Files (*.jpg *.jpeg *.png)</source>
+ <translation>Pliki Obrazków (*.jpg *.jpeg *.png)</translation>
+ </message>
+</context>
+<context>
+ <name>PrivateBridging</name>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Choose File</source>
+ <translation>Wybierz Plik</translation>
+ </message>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Files (*)</source>
+ <translation>Pliki (*)</translation>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../utils.cpp" line="183"/>
+ <source>No default mail client found</source>
+ <translation>Nie znaleziono domyślnego klienta poczty</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="43"/>
+ <location filename="../deviceitemwidget.cpp" line="85"/>
+ <source>Edit Device Name</source>
+ <translation>Edytuj Nazwę Urządzenia</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="44"/>
+ <source>Unlink Device From Account</source>
+ <translation>Odłącz Urządzenie Od Konta</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="80"/>
+ <source>Save new device name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.cpp" line="39"/>
+ <source>Add as contact</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>RingButton</name>
+ <message>
+ <location filename="../ringbutton.ui" line="140"/>
+ <source>Select folder</source>
+ <translation>Wybierz folder</translation>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <location filename="../settingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Forma</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="141"/>
+ <source>Settings</source>
+ <translation>Ustawienia</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="229"/>
+ <source>Account</source>
+ <translation>Konto</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="267"/>
+ <location filename="../settingswidget.ui" line="503"/>
+ <source>General</source>
+ <translation>Generalne</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="305"/>
+ <location filename="../settingswidget.ui" line="3416"/>
+ <source>Audio / Video</source>
+ <translation>Audio / Wideo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="542"/>
+ <source>System</source>
+ <translation>System</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="610"/>
+ <source>Enable desktop notifications</source>
+ <translation>Zezwól na powiadomienia na pulpicie</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="653"/>
+ <source>Keep minimized on close</source>
+ <translation>Przechowaj zminimalizowane przy zamknięciu</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="678"/>
+ <source>Download folder</source>
+ <translation>Folder pobrane</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="811"/>
+ <source>Save in</source>
+ <translation>Zapisz w</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="904"/>
+ <source>Always Recording</source>
+ <translation>Zawsze Nagrywaj</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="943"/>
+ <source>Updates</source>
+ <translation>Aktualizacje</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1008"/>
+ <source>Check for updates automatically every</source>
+ <translation>Sprawdzaj automatycznie aktualizacje co</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1032"/>
+ <source>Interval between update checks in days selector</source>
+ <translation>Pole wyboru interwału pomiędzy sprawdzaniem aktualizacji w dniach</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1038"/>
+ <source> days</source>
+ <translation>dni</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1081"/>
+ <source>Check for updates now button</source>
+ <translation>Guzik sprawdzenia aktualizacji teraz</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1084"/>
+ <source>Check for updates now</source>
+ <translation>Sprawdź aktualizacje teraz</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3027"/>
+ <source>Password</source>
+ <translation>Hasło</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1418"/>
+ <location filename="../settingswidget.ui" line="2729"/>
+ <source>Enable</source>
+ <translation>Włącz</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="607"/>
+ <source>toggle enable notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="650"/>
+ <source>Toggle keep minimized on close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="764"/>
+ <source>Call Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1005"/>
+ <source>Toggle automatic updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1231"/>
+ <source>Jami Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1453"/>
+ <location filename="../settingswidget.ui" line="2761"/>
+ <source>Profile</source>
+ <translation>Profil</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1567"/>
+ <location filename="../settingswidget.ui" line="2875"/>
+ <source>Identity</source>
+ <translation>Tożsamość</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1614"/>
+ <source>Id</source>
+ <translation>Id</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1673"/>
+ <source>Registered name</source>
+ <translation>Zarejestrowana nazwa</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1721"/>
+ <source>Type here to register a username</source>
+ <translation>Wpisz tutaj, by zarejestrować nazwę użytkownika</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1755"/>
+ <source>Register</source>
+ <translation>Zarejestruj</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1827"/>
+ <source>Change Password</source>
+ <translation>Zmień Hasło</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1868"/>
+ <source>Export Account</source>
+ <translation>Wyeksportuj konto</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1909"/>
+ <location filename="../settingswidget.ui" line="3089"/>
+ <source>Delete Account</source>
+ <translation>Usuń Konto</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1973"/>
+ <source>Linked Devices</source>
+ <translation>Połączone Urządzenia</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2078"/>
+ <source>Link Another Device</source>
+ <translation>Połącz Inne Urządzenie</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2142"/>
+ <source>Banned Contacts</source>
+ <translation>Zablokowane Kontakty</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3788"/>
+ <source>Format</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3831"/>
+ <source>Video device framerate selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3967"/>
+ <source>Preview unavailable</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2359"/>
+ <location filename="../settingswidget.ui" line="3187"/>
+ <source>Advanced Account Settings</source>
+ <translation>Zaawansowane Ustawienia Konta</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2554"/>
+ <source>SIP Account</source>
+ <translation>Konto SIP</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2925"/>
+ <source>Username</source>
+ <translation>Nazwa użytkownika</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2958"/>
+ <source>Hostname</source>
+ <translation>Nazwa hosta</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2991"/>
+ <source>Proxy</source>
+ <translation>Pełnomocnik</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3461"/>
+ <source>Audio</source>
+ <translation>Audio</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3511"/>
+ <source>Microphone</source>
+ <translation>Mikrofon</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3551"/>
+ <source>Audio input device selector</source>
+ <translation>Pole wyboru urządzenia wejściowego audio</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3585"/>
+ <source>Output Device</source>
+ <translation>Urządzenie Wyjściowe</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3625"/>
+ <source>Choose the output device</source>
+ <translation>Wybierz urządzenie wyjściowe</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3682"/>
+ <source>Video</source>
+ <translation>Wideo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3720"/>
+ <source>Device</source>
+ <translation>Urządzenie</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3766"/>
+ <source>Video device selector</source>
+ <translation>Pole wyboru urządzenia wideo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="459"/>
+ <source>A registered name should not have any spaces and must be at least three letters long</source>
+ <translation>Zarejestrowana nazwa powinna nie zawierać żadnych spacji i musi mieć przynajmniej 3 litery długości </translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="466"/>
+ <source>This name is already taken</source>
+ <translation>Ta nazwa jest już zajęta</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="92"/>
+ <location filename="../settingswidget.cpp" line="110"/>
+ <source>Enter an alias</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="473"/>
+ <source>Register this name</source>
+ <translation>Zarejestruj tą nazwę</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="550"/>
+ <source>Remove Device</source>
+ <translation>Usuń Urządzenie</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="551"/>
+ <source>Enter this account's password to confirm the removal of this device</source>
+ <translation>Wprowadź hasło do tego konta, aby potwierdzić usunięcie tego urządzenia</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="558"/>
+ <source>Are you sure you wish to remove this device?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="589"/>
+ <source>Export Account Here</source>
+ <translation>Wyeksportuj Konto Tutaj</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="887"/>
+ <source>Select A Folder For Your Downloads</source>
+ <translation>Wybierz Folder Dla Twoich Pobranych</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="904"/>
+ <source>Select A Folder For Your Recordings</source>
+ <translation>Wybierz Folder Dla Twoich Nagrań</translation>
+ </message>
+</context>
+<context>
+ <name>VideoOverlay</name>
+ <message>
+ <location filename="../videooverlay.ui" line="419"/>
+ <source>Call on Hold</source>
+ <translation>Rozmowa jest Zawieszona</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="89"/>
+ <source>Hold / Unhold</source>
+ <translation>Zawiesić / Wznowić</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="124"/>
+ <source>Chat</source>
+ <translation>Czat</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="162"/>
+ <source>Mute Mic</source>
+ <translation>Wyłącz mikrofon</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="244"/>
+ <source>Record call</source>
+ <translation>Nagraj Rozmowę</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="325"/>
+ <source>Name label</source>
+ <translation>Etykieta Nazwiska</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="390"/>
+ <source>Time elapsed</source>
+ <translation>Czas się skończył</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="393"/>
+ <source>00:00</source>
+ <translation>00:00</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="57"/>
+ <source>Hangup</source>
+ <translation>Odłożyć słuchawkę</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="203"/>
+ <source>Mute Video</source>
+ <translation>Wyłącz video</translation>
+ </message>
+</context>
+<context>
+ <name>VideoView</name>
+ <message>
+ <location filename="../videoview.cpp" line="271"/>
+ <source>Share entire screen</source>
+ <translation>Podziel się obszarem ekranu</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="274"/>
+ <source>Share screen area</source>
+ <translation>Podziel się obszar ekranu</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="281"/>
+ <source>Share file</source>
+ <translation>Podziel się plikiem</translation>
+ </message>
+</context>
+</TS>
\ No newline at end of file
diff --git a/translations/ring_client_windows_pl_PL.ts b/translations/ring_client_windows_pl_PL.ts
new file mode 100644
index 0000000..9bcf83e
--- /dev/null
+++ b/translations/ring_client_windows_pl_PL.ts
@@ -0,0 +1,1590 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="pl_PL" version="2.0">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../aboutdialog.ui" line="435"/>
+ <location filename="../aboutdialog.ui" line="465"/>
+ <source>About</source>
+ <translation>O programie</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="462"/>
+ <source>about button</source>
+ <translation>przycisk o programie</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="478"/>
+ <source>credits button</source>
+ <translation>przycisk zasługi</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="481"/>
+ <source>Credits</source>
+ <translation>Podziękowania</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="547"/>
+ <source>Free as in Freedom</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="563"/>
+ <source>The Microsoft Windows client for Jami.
+Jami is a secured and distributed communication software.</source>
+ <translation>Klient Jami dla Microsoft Windows.
+Jami jest wolnym oprogramowaniem do uniwersalnej komunikacji, respektującym wolność i prywatność swoich użytkowników.</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="32"/>
+ <source>version</source>
+ <translation>Wersja</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="39"/>
+ <source>Created by:</source>
+ <translation>Stworzone przez:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="73"/>
+ <source>Artwork by:</source>
+ <translation>Obrazki przez:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="77"/>
+ <source>Based on the SFLPhone project</source>
+ <translation>Na podstawie projektu SFLPhone</translation>
+ </message>
+</context>
+<context>
+ <name>AccountItemDelegate</name>
+ <message>
+ <location filename="../accountitemdelegate.cpp" line="91"/>
+ <source>Add Account</source>
+ <translation>Dodaj konto</translation>
+ </message>
+</context>
+<context>
+ <name>AdvancedSIPSettingsWidget</name>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Forma</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="55"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="102"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="130"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="191"/>
+ <source>Connectivity</source>
+ <translation>Łączność</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="281"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="293"/>
+ <source>Use STUN</source>
+ <translation>Użyj STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="317"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="329"/>
+ <source>Use TURN</source>
+ <translation>Użyj TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="359"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="391"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="423"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="464"/>
+ <source>Media</source>
+ <translation>Multimedia</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="515"/>
+ <source>Enable Video</source>
+ <translation>Włącz video</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="539"/>
+ <source>Video Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="692"/>
+ <source>Audio Codecs</source>
+ <translation>Kodeki audio</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="142"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="151"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSettingsWidget</name>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Forma</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="61"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="108"/>
+ <source>Allow Calls From Untrusted Peers</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="133"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="161"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="188"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="225"/>
+ <source>Name Server</source>
+ <translation>Serwer nazw</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="275"/>
+ <source>Address</source>
+ <translation>Adres</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="351"/>
+ <source>OpenDHT Configuration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="398"/>
+ <source>Enable Proxy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="454"/>
+ <source>Bootstrap</source>
+ <translation>Bootstrap</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="530"/>
+ <source>Security</source>
+ <translation>Zabezpieczenia</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="571"/>
+ <source>Private Key Password</source>
+ <translation>Hasło Klucza Prywatnego</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="583"/>
+ <source>User Certificate</source>
+ <translation>Certyfikat Użytkownika</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="622"/>
+ <source>Private Key</source>
+ <translation>Klucz Prywatny</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="634"/>
+ <source>CA Certificate</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="766"/>
+ <source>Connectivity</source>
+ <translation>Łączność</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="868"/>
+ <source>Use STUN</source>
+ <translation>Użyj STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="856"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="892"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="904"/>
+ <source>Use TURN</source>
+ <translation>Użyj TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="934"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="966"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="998"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1039"/>
+ <source>Media</source>
+ <translation>Multimedia</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1090"/>
+ <source>Enable Video</source>
+ <translation>Włącz video</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1267"/>
+ <source>Audio Codecs</source>
+ <translation>Kodeki audio</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1114"/>
+ <source>Video Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="181"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AnimatedOverlay</name>
+ <message>
+ <location filename="../animatedoverlay.ui" line="14"/>
+ <source>Form</source>
+ <translation>Forma</translation>
+ </message>
+</context>
+<context>
+ <name>BannedItemWidget</name>
+ <message>
+ <location filename="../banneditemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Forma</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="80"/>
+ <source>name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="104"/>
+ <source>id</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>CallWidget</name>
+ <message>
+ <location filename="../callwidget.ui" line="184"/>
+ <source>Show conversations</source>
+ <translation>Pokaż rozmowy</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="187"/>
+ <source>Conversations</source>
+ <translation>Rozmowy</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="368"/>
+ <source>Search contact text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="653"/>
+ <source>Jami is free software for universal communication which respects the freedoms and privacy of its users.</source>
+ <translation>Jami jest wolnym oprogramowaniem do uniwersalnej komunikacji, respektującym wolności i prywatność swoich użytkowników.</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="693"/>
+ <source>
+ This is your ID.
+Copy and share it with your friends!
+ </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="806"/>
+ <source>Show ring ID QR code</source>
+ <translation>Rozpocznij połączenie wideo</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="857"/>
+ <source>Share ring ID button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="915"/>
+ <source>Double-click to copy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="956"/>
+ <source>Error while generating QR Code</source>
+ <translation>Wystąpił błąd podczas generowania kodu QR.</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1184"/>
+ <location filename="../callwidget.ui" line="1434"/>
+ <source>best name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1208"/>
+ <source>best Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1734"/>
+ <source>Back to homepage button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1943"/>
+ <source>Add to contacts</source>
+ <translation>Dodaj do kontaków</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="202"/>
+ <source>Show invites</source>
+ <translation>Pokaż zaproszenia</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="205"/>
+ <source>Invites</source>
+ <translation>Zaproszenia</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="377"/>
+ <location filename="../callwidget.cpp" line="552"/>
+ <source>Find a new or existing contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1444"/>
+ <source>Wants to talk to you!</source>
+ <translation>Chce z tobą rozmawiać!</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1517"/>
+ <source>Answer incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1589"/>
+ <source>Ignore incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1539"/>
+ <source>Answer</source>
+ <translation>Odbierz</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1617"/>
+ <source>Ignore</source>
+ <translation>Zignoruj</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1280"/>
+ <source>Cancel outgoing call</source>
+ <translation>Anuluj wychodzące połączenie</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1305"/>
+ <source>Cancel</source>
+ <translation>Anuluj</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="332"/>
+ <source>Start video call</source>
+ <translation>Rozpocznij rozmowę wideo</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="343"/>
+ <source>Start audio call</source>
+ <translation>Rozpocznij połączenie głosowe</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="354"/>
+ <source>Clear conversation</source>
+ <translation>Wyczyść rozmowę</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="361"/>
+ <source>Remove contact</source>
+ <translation>Usuń kontakt</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="373"/>
+ <source>Block contact</source>
+ <translation>Blokuj kontakt</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="384"/>
+ <source>Copy number</source>
+ <translation>Skopiuj numer</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="561"/>
+ <source>Search your received invitations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>Contact me on Jami</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>My Id is : </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="847"/>
+ <source>%1</source>
+ <comment>%1 is the contact username</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="852"/>
+ <source>%1</source>
+ <comment>%1 is the contact unique identifier</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="675"/>
+ <source>Call incoming from %1</source>
+ <translation>Połączenie przychodzące od %1</translation>
+ </message>
+</context>
+<context>
+ <name>DeleteAccountDialog</name>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="35"/>
+ <source>Account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="58"/>
+ <source>Do you really want to delete the following account?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="153"/>
+ <source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="235"/>
+ <source>Permanently delete account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="241"/>
+ <source>Delete</source>
+ <translation>Usuń</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="278"/>
+ <source>Cancel account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="284"/>
+ <source>Cancel</source>
+ <translation>Anuluj</translation>
+ </message>
+</context>
+<context>
+ <name>DeviceItemWidget</name>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Forma</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="105"/>
+ <source>Device Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="143"/>
+ <source>this device</source>
+ <translation>to urządzenie</translation>
+ </message>
+</context>
+<context>
+ <name>InviteButtonsWidget</name>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="83"/>
+ <source>Accept</source>
+ <translation>Akceptuj</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="131"/>
+ <source>Refuse</source>
+ <translation>Odmów</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="179"/>
+ <source>Block</source>
+ <translation>Blokuj</translation>
+ </message>
+</context>
+<context>
+ <name>LinkDeviceDialog</name>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="62"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="117"/>
+ <source>Password</source>
+ <translation>Hasło</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="184"/>
+ <source>Ok</source>
+ <translation>Ok</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="218"/>
+ <source>Cancel</source>
+ <translation>Anuluj</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="279"/>
+ <source>Exporting account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="402"/>
+ <source>Your PIN is</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="432"/>
+ <source>PIN</source>
+ <translation>PIN</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="477"/>
+ <source>This pin and the account password should be entered in your device within 10 minutes.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="553"/>
+ <source>Close</source>
+ <translation>Zamknij</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="34"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="96"/>
+ <source>Incorrect password</source>
+ <translation>Nieprawidłowe hasło</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="110"/>
+ <source>Something went wrong.
+Please try again later.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="83"/>
+ <source>Settings</source>
+ <translation>Ustawienia</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="94"/>
+ <source>Exit</source>
+ <translation>Wyjdź</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="111"/>
+ <source>About</source>
+ <translation>O</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="435"/>
+ <source>Jami</source>
+ <translation>Jami</translation>
+ </message>
+</context>
+<context>
+ <name>NameRegistrationDialog</name>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="35"/>
+ <source>Set Registered Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="163"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="244"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="250"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="256"/>
+ <source>Password</source>
+ <translation>Hasło</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="323"/>
+ <source>Register</source>
+ <translation>Zarejestruj</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="357"/>
+ <source>Cancel</source>
+ <translation>Anuluj</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="424"/>
+ <source>Registering Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="548"/>
+ <source>Something went wrong</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="618"/>
+ <source>Close</source>
+ <translation>Zamknij</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="82"/>
+ <source>Incorrect password</source>
+ <translation>Nieprawidłowe hasło</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="85"/>
+ <source>Network error</source>
+ <translation>Błąd sieci</translation>
+ </message>
+</context>
+<context>
+ <name>NewWizardWidget</name>
+ <message>
+ <location filename="../newwizardwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Forma</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="141"/>
+ <source>Welcome Label</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="147"/>
+ <source> Welcome to</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="185"/>
+ <source>Welcome Logo</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="239"/>
+ <source>Create Jami account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="245"/>
+ <source>Push button for Jami account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="251"/>
+ <source>Create a Jami account</source>
+ <translation>Utwórz konto Jami</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="282"/>
+ <source>Link device button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="288"/>
+ <source>Push button for device linkage start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="291"/>
+ <source>Link this device to an account</source>
+ <translation>Połącz to urządzenie z kontem</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="328"/>
+ <source>Create Jami SIP account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="334"/>
+ <source>Push button for Jami SIP account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="340"/>
+ <source>Create a SIP account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="405"/>
+ <source>Link this device to an existing account</source>
+ <translation>Połącz to urządzenie z istniejącym kontem</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="469"/>
+ <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">To link this device to another account, you first </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">need to obtain a PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> code. To generate the PIN code:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Account management setting</span><span style=" font-size:14px;"> of a previous device</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choose the </span><span style=" font-size:14px; font-weight:600;">Jami account</span><span style=" font-size:14px;"> you want to use</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Devices</span><span style=" font-size:14px;"> tab</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Select </span><span style=" font-size:14px; font-weight:600;">Add a device</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">You will get the necessary PIN to complete this form. The PIN is only valid for </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutes</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="531"/>
+ <source>Enter your pin:</source>
+ <translation>Wpisz swój PIN:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="599"/>
+ <source>Or import a file:</source>
+ <translation>Lub zaimportuj plik:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="626"/>
+ <source>Link from exported account archive file</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="629"/>
+ <location filename="../newwizardwidget.cpp" line="83"/>
+ <location filename="../newwizardwidget.cpp" line="218"/>
+ <source>(None)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="705"/>
+ <source>Password:</source>
+ <translation>Hasło:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="799"/>
+ <location filename="../newwizardwidget.ui" line="1586"/>
+ <source>Profile</source>
+ <translation>Profil</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="953"/>
+ <location filename="../newwizardwidget.ui" line="1767"/>
+ <source>Profile name</source>
+ <translation>Nazwa profilu</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1027"/>
+ <source>Account</source>
+ <translation>Konto</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1136"/>
+ <source>Register your username.
+This will reserve the username so that only you can use it.
+Your friends will be able to call you with your usename
+instead of using your ID.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1142"/>
+ <source>Public username checkbox</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1145"/>
+ <source>Checkbox selecting if the user wants a public username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1148"/>
+ <source>Register public username</source>
+ <translation>Zarejestruj publiczną nazwę użytkownika</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1367"/>
+ <source>Public username edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1373"/>
+ <source>Choose your username</source>
+ <translation>Wybierz swoją nazwę użytkownika</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1289"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1295"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1301"/>
+ <location filename="../newwizardwidget.ui" line="2213"/>
+ <source>Password</source>
+ <translation>Hasło</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1211"/>
+ <location filename="../newwizardwidget.ui" line="1217"/>
+ <source>Password confirmation text input</source>
+ <translation>Pole potwierdzenia hasła</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1223"/>
+ <source>Confirm password</source>
+ <translation>Potwierdź hasło</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1814"/>
+ <source>SIP Account</source>
+ <translation>Konto SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1973"/>
+ <source>SIP Server edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1979"/>
+ <source>Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2045"/>
+ <source>SIP proxy input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2051"/>
+ <source>SIP proxy text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2057"/>
+ <source>Proxy</source>
+ <translation>Pełnomocnik</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2123"/>
+ <source>SIP username input</source>
+ <translation>Wprowadź nazwę użytkownika SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2129"/>
+ <source>SIP Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2135"/>
+ <source>Username</source>
+ <translation>Nazwa użytkownika</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2201"/>
+ <location filename="../newwizardwidget.ui" line="2207"/>
+ <source>SIP Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message utf8="true">
+ <location filename="../newwizardwidget.ui" line="2282"/>
+ <source>Generating your Jami account…</source>
+ <translation>Tworzenie konta Jami...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2356"/>
+ <source>Previous page button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2362"/>
+ <source>push button to access previous page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2365"/>
+ <source>Previous</source>
+ <translation>Poprzednie</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2396"/>
+ <source>Cancel account create/link</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2402"/>
+ <source>push button to cancel account creation or linking</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2405"/>
+ <source>Back</source>
+ <translation>Wstecz</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2442"/>
+ <source>Next page Button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2448"/>
+ <source>Push button to access next page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2451"/>
+ <source>Next</source>
+ <translation>Następne</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="75"/>
+ <source>Open File</source>
+ <translation>Otwórz plik</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="77"/>
+ <source>Jami archive files (*.gz); All files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="123"/>
+ <source>Your account needs to be migrated. Enter your password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="419"/>
+ <source>Migrating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="412"/>
+ <source>Importing account archive...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="404"/>
+ <source>Generating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="422"/>
+ <source>Generating your SIP account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="533"/>
+ <source>Error creating account</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PasswordDialog</name>
+ <message>
+ <location filename="../passworddialog.ui" line="32"/>
+ <source>Change Account Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="97"/>
+ <source>Enter Current Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="169"/>
+ <source>Enter New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="190"/>
+ <source>Confirm New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="247"/>
+ <source>Confirm</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="290"/>
+ <source>Cancel</source>
+ <translation>Anuluj</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="143"/>
+ <source>Current Password Incorrect</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PhotoBoothDialog</name>
+ <message>
+ <location filename="../photoboothdialog.ui" line="14"/>
+ <source>Photobooth</source>
+ <translation>Budka fotograficzna</translation>
+ </message>
+</context>
+<context>
+ <name>PhotoboothWidget</name>
+ <message>
+ <location filename="../photoboothwidget.ui" line="20"/>
+ <source>Form</source>
+ <translation>Forma</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.ui" line="120"/>
+ <source>Photobooth display</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="92"/>
+ <source>Choose File</source>
+ <translation>Wybierz Plik</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="94"/>
+ <source>Image Files (*.jpg *.jpeg *.png)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PrivateBridging</name>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Choose File</source>
+ <translation>Wybierz Plik</translation>
+ </message>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Files (*)</source>
+ <translation>Pliki (*)</translation>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../utils.cpp" line="183"/>
+ <source>No default mail client found</source>
+ <translation>Nie znaleziono domyślnego klienta poczty</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="43"/>
+ <location filename="../deviceitemwidget.cpp" line="85"/>
+ <source>Edit Device Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="44"/>
+ <source>Unlink Device From Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="80"/>
+ <source>Save new device name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.cpp" line="39"/>
+ <source>Add as contact</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>RingButton</name>
+ <message>
+ <location filename="../ringbutton.ui" line="140"/>
+ <source>Select folder</source>
+ <translation>Wybierz folder</translation>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <location filename="../settingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Forma</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="141"/>
+ <source>Settings</source>
+ <translation>Ustawienia</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="229"/>
+ <source>Account</source>
+ <translation>Konto</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="267"/>
+ <location filename="../settingswidget.ui" line="503"/>
+ <source>General</source>
+ <translation>Generalne</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="305"/>
+ <location filename="../settingswidget.ui" line="3416"/>
+ <source>Audio / Video</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="542"/>
+ <source>System</source>
+ <translation>System</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="610"/>
+ <source>Enable desktop notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="653"/>
+ <source>Keep minimized on close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="678"/>
+ <source>Download folder</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="811"/>
+ <source>Save in</source>
+ <translation>Zapisz w</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="904"/>
+ <source>Always Recording</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="943"/>
+ <source>Updates</source>
+ <translation>Aktualizacje</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1008"/>
+ <source>Check for updates automatically every</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1032"/>
+ <source>Interval between update checks in days selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1038"/>
+ <source> days</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1081"/>
+ <source>Check for updates now button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1084"/>
+ <source>Check for updates now</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3027"/>
+ <source>Password</source>
+ <translation>Hasło</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1418"/>
+ <location filename="../settingswidget.ui" line="2729"/>
+ <source>Enable</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="607"/>
+ <source>toggle enable notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="650"/>
+ <source>Toggle keep minimized on close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="764"/>
+ <source>Call Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1005"/>
+ <source>Toggle automatic updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1231"/>
+ <source>Jami Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1453"/>
+ <location filename="../settingswidget.ui" line="2761"/>
+ <source>Profile</source>
+ <translation>Profil</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1567"/>
+ <location filename="../settingswidget.ui" line="2875"/>
+ <source>Identity</source>
+ <translation>Tożsamość</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1614"/>
+ <source>Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1673"/>
+ <source>Registered name</source>
+ <translation>Zarejestrowana nazwa</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1721"/>
+ <source>Type here to register a username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1755"/>
+ <source>Register</source>
+ <translation>Zarejestruj</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1827"/>
+ <source>Change Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1868"/>
+ <source>Export Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1909"/>
+ <location filename="../settingswidget.ui" line="3089"/>
+ <source>Delete Account</source>
+ <translation>Usuń konto</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1973"/>
+ <source>Linked Devices</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2078"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2142"/>
+ <source>Banned Contacts</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3788"/>
+ <source>Format</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3831"/>
+ <source>Video device framerate selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3967"/>
+ <source>Preview unavailable</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2359"/>
+ <location filename="../settingswidget.ui" line="3187"/>
+ <source>Advanced Account Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2554"/>
+ <source>SIP Account</source>
+ <translation>Konto SIP</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2925"/>
+ <source>Username</source>
+ <translation>Nazwa użytkownika</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2958"/>
+ <source>Hostname</source>
+ <translation>Nazwa hosta</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2991"/>
+ <source>Proxy</source>
+ <translation>Pełnomocnik</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3461"/>
+ <source>Audio</source>
+ <translation>Audio</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3511"/>
+ <source>Microphone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3551"/>
+ <source>Audio input device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3585"/>
+ <source>Output Device</source>
+ <translation>Urządzenie wyjściowe</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3625"/>
+ <source>Choose the output device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3682"/>
+ <source>Video</source>
+ <translation>Wideo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3720"/>
+ <source>Device</source>
+ <translation>Urządzenie</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3766"/>
+ <source>Video device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="459"/>
+ <source>A registered name should not have any spaces and must be at least three letters long</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="466"/>
+ <source>This name is already taken</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="92"/>
+ <location filename="../settingswidget.cpp" line="110"/>
+ <source>Enter an alias</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="473"/>
+ <source>Register this name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="550"/>
+ <source>Remove Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="551"/>
+ <source>Enter this account's password to confirm the removal of this device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="558"/>
+ <source>Are you sure you wish to remove this device?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="589"/>
+ <source>Export Account Here</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="887"/>
+ <source>Select A Folder For Your Downloads</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="904"/>
+ <source>Select A Folder For Your Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>VideoOverlay</name>
+ <message>
+ <location filename="../videooverlay.ui" line="419"/>
+ <source>Call on Hold</source>
+ <translation>Rozmowa jest Zawieszona</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="89"/>
+ <source>Hold / Unhold</source>
+ <translation>Zawiesić / Wznowić</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="124"/>
+ <source>Chat</source>
+ <translation>Czat</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="162"/>
+ <source>Mute Mic</source>
+ <translation>Wyłącz mikrofon</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="244"/>
+ <source>Record call</source>
+ <translation>Nagraj rozmowę</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="325"/>
+ <source>Name label</source>
+ <translation>Etykieta Nazwiska</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="390"/>
+ <source>Time elapsed</source>
+ <translation>Czas się skończył</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="393"/>
+ <source>00:00</source>
+ <translation>00:00</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="57"/>
+ <source>Hangup</source>
+ <translation>Odłożyć słuchawkę</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="203"/>
+ <source>Mute Video</source>
+ <translation>Wyłącz video</translation>
+ </message>
+</context>
+<context>
+ <name>VideoView</name>
+ <message>
+ <location filename="../videoview.cpp" line="271"/>
+ <source>Share entire screen</source>
+ <translation>Podziel się obszarem ekranu</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="274"/>
+ <source>Share screen area</source>
+ <translation>Podziel się obszar ekranu</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="281"/>
+ <source>Share file</source>
+ <translation>Podziel się plikiem</translation>
+ </message>
+</context>
+</TS>
\ No newline at end of file
diff --git a/translations/ring_client_windows_pt.ts b/translations/ring_client_windows_pt.ts
new file mode 100644
index 0000000..bd851d1
--- /dev/null
+++ b/translations/ring_client_windows_pt.ts
@@ -0,0 +1,1606 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="pt" version="2.0">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../aboutdialog.ui" line="435"/>
+ <location filename="../aboutdialog.ui" line="465"/>
+ <source>About</source>
+ <translation>Sobre</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="462"/>
+ <source>about button</source>
+ <translation>botão sobre</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="478"/>
+ <source>credits button</source>
+ <translation>botão créditos</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="481"/>
+ <source>Credits</source>
+ <translation>Créditos</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="547"/>
+ <source>Free as in Freedom</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="563"/>
+ <source>The Microsoft Windows client for Jami.
+Jami is a secured and distributed communication software.</source>
+ <translation>O cliente Microsoft Windows para o Jami
+O Jami é um programa de comunicação distribuído e seguro.</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="32"/>
+ <source>version</source>
+ <translation>versão</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="39"/>
+ <source>Created by:</source>
+ <translation>Criado por:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="73"/>
+ <source>Artwork by:</source>
+ <translation>Arte por:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="77"/>
+ <source>Based on the SFLPhone project</source>
+ <translation>Baseado no projeto SFLPhone</translation>
+ </message>
+</context>
+<context>
+ <name>AccountItemDelegate</name>
+ <message>
+ <location filename="../accountitemdelegate.cpp" line="91"/>
+ <source>Add Account</source>
+ <translation>Adicionar Conta</translation>
+ </message>
+</context>
+<context>
+ <name>AdvancedSIPSettingsWidget</name>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulário</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="55"/>
+ <source>Call Settings</source>
+ <translation>Configurações de chamadas</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="102"/>
+ <source>Auto Answer Calls</source>
+ <translation>Atender chamadas automaticamente</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="130"/>
+ <source>Enable Custom Ringtone</source>
+ <translation>Ativar toque de chamada personalizado</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="191"/>
+ <source>Connectivity</source>
+ <translation>Conectividade</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="281"/>
+ <source>STUN Address</source>
+ <translation>Endereço STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="293"/>
+ <source>Use STUN</source>
+ <translation>Usar STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="317"/>
+ <source>Use UPnP</source>
+ <translation>Usar UPnP</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="329"/>
+ <source>Use TURN</source>
+ <translation>Usar TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="359"/>
+ <source>TURN Password</source>
+ <translation>Palavra-chave TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="391"/>
+ <source>TURN Username</source>
+ <translation>Nome de utilizador TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="423"/>
+ <source>TURN Address</source>
+ <translation>Endereço TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="464"/>
+ <source>Media</source>
+ <translation>Média</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="515"/>
+ <source>Enable Video</source>
+ <translation>Ativar Vídeo</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="539"/>
+ <source>Video Codecs</source>
+ <translation>Codecs de vídeo</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="692"/>
+ <source>Audio Codecs</source>
+ <translation>Codecs de áudio</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="142"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation>Ficheiros de áudio (*.wav *.ogg *.opus *.mp3 *aiff *wma)</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="151"/>
+ <source>Add a custom ringtone</source>
+ <translation>Adicionar um toque de chamada personalizado</translation>
+ </message>
+</context>
+<context>
+ <name>AdvancedSettingsWidget</name>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulário</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="61"/>
+ <source>Call Settings</source>
+ <translation>Configurações de chamadas</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="108"/>
+ <source>Allow Calls From Untrusted Peers</source>
+ <translation>Permitir chamadas de utilizadores desconhecidos</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="133"/>
+ <source>Auto Answer Calls</source>
+ <translation>Atender chamadas automaticamente</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="161"/>
+ <source>Enable Custom Ringtone</source>
+ <translation>Ativar toque de chamada personalizado</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="188"/>
+ <source>Add a custom ringtone</source>
+ <translation>Adicionar um toque de chamada personalizado</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="225"/>
+ <source>Name Server</source>
+ <translation>Nome do servidor</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="275"/>
+ <source>Address</source>
+ <translation>Endereço</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="351"/>
+ <source>OpenDHT Configuration</source>
+ <translation>Configuração OpenDHT</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="398"/>
+ <source>Enable Proxy</source>
+ <translation>Ativar Proxy</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="454"/>
+ <source>Bootstrap</source>
+ <translation>Inicialização</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="530"/>
+ <source>Security</source>
+ <translation>Segurança</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="571"/>
+ <source>Private Key Password</source>
+ <translation>Palavra-chave da Chave Privada</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="583"/>
+ <source>User Certificate</source>
+ <translation>Certificado do Utilizador</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="622"/>
+ <source>Private Key</source>
+ <translation>Chave privada</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="634"/>
+ <source>CA Certificate</source>
+ <translation>Certificado CA</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="766"/>
+ <source>Connectivity</source>
+ <translation>Conectividade</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="868"/>
+ <source>Use STUN</source>
+ <translation>Usar STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="856"/>
+ <source>STUN Address</source>
+ <translation>Endereço STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="892"/>
+ <source>Use UPnP</source>
+ <translation>Usar UPnP</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="904"/>
+ <source>Use TURN</source>
+ <translation>Usar TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="934"/>
+ <source>TURN Password</source>
+ <translation>Palavra-chave TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="966"/>
+ <source>TURN Username</source>
+ <translation>Nome de utilizador TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="998"/>
+ <source>TURN Address</source>
+ <translation>Endereço TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1039"/>
+ <source>Media</source>
+ <translation>Média</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1090"/>
+ <source>Enable Video</source>
+ <translation>Ativar Vídeo</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1267"/>
+ <source>Audio Codecs</source>
+ <translation>Codecs de áudio</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1114"/>
+ <source>Video Codecs</source>
+ <translation>Codecs de vídeo</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="181"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation>Ficheiros de áudio (*.wav *.ogg *.opus *.mp3 *aiff *wma)</translation>
+ </message>
+</context>
+<context>
+ <name>AnimatedOverlay</name>
+ <message>
+ <location filename="../animatedoverlay.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulário</translation>
+ </message>
+</context>
+<context>
+ <name>BannedItemWidget</name>
+ <message>
+ <location filename="../banneditemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulário</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="80"/>
+ <source>name</source>
+ <translation>nome</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="104"/>
+ <source>id</source>
+ <translation>id</translation>
+ </message>
+</context>
+<context>
+ <name>CallWidget</name>
+ <message>
+ <location filename="../callwidget.ui" line="184"/>
+ <source>Show conversations</source>
+ <translation>Ver conversações</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="187"/>
+ <source>Conversations</source>
+ <translation>Conversas</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="368"/>
+ <source>Search contact text input</source>
+ <translation>Entrada de texto para pesquisa de contacto</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="653"/>
+ <source>Jami is free software for universal communication which respects the freedoms and privacy of its users.</source>
+ <translation>O Jami é um programa livre para comunicação universal que respeita as liberdades e privacidade dos seus utilizadores.</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="693"/>
+ <source>
+ This is your ID.
+Copy and share it with your friends!
+ </source>
+ <translation>
+ Este é o seu ID.
+Copie-o e partilhe-o com os seus amigos!
+ </translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="806"/>
+ <source>Show ring ID QR code</source>
+ <translation>Mostrar código QR do seu ID do Ring</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="857"/>
+ <source>Share ring ID button</source>
+ <translation>Botão para partilhar o seu ID do Ring</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="915"/>
+ <source>Double-click to copy</source>
+ <translation>Duplo-clique para copiar</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="956"/>
+ <source>Error while generating QR Code</source>
+ <translation>Erro ao gerar o Código QR</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1184"/>
+ <location filename="../callwidget.ui" line="1434"/>
+ <source>best name</source>
+ <translation>melhor nome</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1208"/>
+ <source>best Id</source>
+ <translation>melhor Id</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1734"/>
+ <source>Back to homepage button</source>
+ <translation>Botão para voltar à página inicial</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1943"/>
+ <source>Add to contacts</source>
+ <translation>Adicionar aos contactos</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="202"/>
+ <source>Show invites</source>
+ <translation>Mostrar convites</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="205"/>
+ <source>Invites</source>
+ <translation>Convites</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="377"/>
+ <location filename="../callwidget.cpp" line="552"/>
+ <source>Find a new or existing contact</source>
+ <translation>Procurar um contacto novo ou existente</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1444"/>
+ <source>Wants to talk to you!</source>
+ <translation>Quer conversar consigo!</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1517"/>
+ <source>Answer incoming call button</source>
+ <translation>Botão para atender chamada</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1589"/>
+ <source>Ignore incoming call button</source>
+ <translation>Botão para ignorar chamada</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1539"/>
+ <source>Answer</source>
+ <translation>Resposta</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1617"/>
+ <source>Ignore</source>
+ <translation>Ignorar</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1280"/>
+ <source>Cancel outgoing call</source>
+ <translation>Cancelar chamada efetuada</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1305"/>
+ <source>Cancel</source>
+ <translation>Cancelar</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="332"/>
+ <source>Start video call</source>
+ <translation>Começar chamada de vídeo</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="343"/>
+ <source>Start audio call</source>
+ <translation>Começar chamada de áudio</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="354"/>
+ <source>Clear conversation</source>
+ <translation>Limpar conversação</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="361"/>
+ <source>Remove contact</source>
+ <translation>Remover contacto</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="373"/>
+ <source>Block contact</source>
+ <translation>Bloquear contacto</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="384"/>
+ <source>Copy number</source>
+ <translation>Copiar número</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="561"/>
+ <source>Search your received invitations</source>
+ <translation>Pesquisar os seus convites recebidos</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>Contact me on Jami</source>
+ <translation>Contacte-me no Jami</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>My Id is : </source>
+ <translation>O meu ID é:</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="847"/>
+ <source>%1</source>
+ <comment>%1 is the contact username</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="852"/>
+ <source>%1</source>
+ <comment>%1 is the contact unique identifier</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="675"/>
+ <source>Call incoming from %1</source>
+ <translation>A receber chamada de %1</translation>
+ </message>
+</context>
+<context>
+ <name>DeleteAccountDialog</name>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="35"/>
+ <source>Account deletion</source>
+ <translation>Eliminação de conta</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="58"/>
+ <source>Do you really want to delete the following account?</source>
+ <translation>Tem certeza que quer eliminar a seguinte conta?</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="153"/>
+ <source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
+ <translation>Se esta conta não foi exportada ou adicionada a outro dispositivo, ela será perdida.</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="235"/>
+ <source>Permanently delete account</source>
+ <translation>Eliminar conta permanentemente</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="241"/>
+ <source>Delete</source>
+ <translation>Eliminar</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="278"/>
+ <source>Cancel account deletion</source>
+ <translation>Cancelar eliminação da conta</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="284"/>
+ <source>Cancel</source>
+ <translation>Cancelar</translation>
+ </message>
+</context>
+<context>
+ <name>DeviceItemWidget</name>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulário</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="105"/>
+ <source>Device Id</source>
+ <translation>ID do dispositivo</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="143"/>
+ <source>this device</source>
+ <translation>este dispositivo</translation>
+ </message>
+</context>
+<context>
+ <name>InviteButtonsWidget</name>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="83"/>
+ <source>Accept</source>
+ <translation>Aceitar</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="131"/>
+ <source>Refuse</source>
+ <translation>Recusar</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="179"/>
+ <source>Block</source>
+ <translation>Bloquear</translation>
+ </message>
+</context>
+<context>
+ <name>LinkDeviceDialog</name>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation>Diálogo</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="62"/>
+ <source>Enter your account password</source>
+ <translation>Introduza a palavra-chave da sua conta</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="117"/>
+ <source>Password</source>
+ <translation>Palavra-chave</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="184"/>
+ <source>Ok</source>
+ <translation>OK</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="218"/>
+ <source>Cancel</source>
+ <translation>Cancelar</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="279"/>
+ <source>Exporting account</source>
+ <translation>Exportar a conta</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="402"/>
+ <source>Your PIN is</source>
+ <translation>O seu PIN é</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="432"/>
+ <source>PIN</source>
+ <translation>PIN</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="477"/>
+ <source>This pin and the account password should be entered in your device within 10 minutes.</source>
+ <translation>Este PIN e a palavra-chave devem ser inseridos no seu novo dispositivo nos próximos 10 minutos.</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="553"/>
+ <source>Close</source>
+ <translation>Fechar</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="34"/>
+ <source>Link Another Device</source>
+ <translation>Associar outro dispositivo</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="96"/>
+ <source>Incorrect password</source>
+ <translation>Palavra-chave incorreta</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="110"/>
+ <source>Something went wrong.
+Please try again later.</source>
+ <translation>Algo correu mal.
+Por favor tente de novo mais tarde.</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="83"/>
+ <source>Settings</source>
+ <translation>Configurações</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="94"/>
+ <source>Exit</source>
+ <translation>Sair</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="111"/>
+ <source>About</source>
+ <translation>Sobre</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="435"/>
+ <source>Jami</source>
+ <translation>Jami</translation>
+ </message>
+</context>
+<context>
+ <name>NameRegistrationDialog</name>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="35"/>
+ <source>Set Registered Name</source>
+ <translation>Definir o nome registado</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="163"/>
+ <source>Enter your account password</source>
+ <translation>Introduza a palavra-chave da sua conta</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="244"/>
+ <source>Password text input</source>
+ <translation>Entrada de texto da palavra-chave</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="250"/>
+ <source>Password text entry</source>
+ <translation>Campo de texto da palavra-chave</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="256"/>
+ <source>Password</source>
+ <translation>Palavra-chave</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="323"/>
+ <source>Register</source>
+ <translation>Registar</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="357"/>
+ <source>Cancel</source>
+ <translation>Cancelar</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="424"/>
+ <source>Registering Name</source>
+ <translation>Registar o nome</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="548"/>
+ <source>Something went wrong</source>
+ <translation>Algo correu mal</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="618"/>
+ <source>Close</source>
+ <translation>Fechar</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="82"/>
+ <source>Incorrect password</source>
+ <translation>Palavra-chave incorreta</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="85"/>
+ <source>Network error</source>
+ <translation>Erro de rede</translation>
+ </message>
+</context>
+<context>
+ <name>NewWizardWidget</name>
+ <message>
+ <location filename="../newwizardwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulário</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="141"/>
+ <source>Welcome Label</source>
+ <translation>Rótulo de Boas-Vindas</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="147"/>
+ <source> Welcome to</source>
+ <translation>Bem-vindo(a) ao</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="185"/>
+ <source>Welcome Logo</source>
+ <translation>Logótipo de Boas-Vindas</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="239"/>
+ <source>Create Jami account button</source>
+ <translation>Botão para criar conta Jami</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="245"/>
+ <source>Push button for Jami account creation start trigger</source>
+ <translation>Botão para acionar a criação da conta do Jami</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="251"/>
+ <source>Create a Jami account</source>
+ <translation>Criar uma conta Jami</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="282"/>
+ <source>Link device button</source>
+ <translation>Botão para associar dispositivo</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="288"/>
+ <source>Push button for device linkage start trigger</source>
+ <translation>Botão para acionar a associação de dispositivo</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="291"/>
+ <source>Link this device to an account</source>
+ <translation>Associar este dispositivo a uma conta</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="328"/>
+ <source>Create Jami SIP account button</source>
+ <translation>Botão para criar a conta SIP Jami</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="334"/>
+ <source>Push button for Jami SIP account creation start trigger</source>
+ <translation>Botão para acionar a criação da conta SIP Jami</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="340"/>
+ <source>Create a SIP account</source>
+ <translation>Criar uma conta SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="405"/>
+ <source>Link this device to an existing account</source>
+ <translation>Associar este dispositivo a uma conta existente</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="469"/>
+ <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">To link this device to another account, you first </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">need to obtain a PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> code. To generate the PIN code:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Account management setting</span><span style=" font-size:14px;"> of a previous device</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choose the </span><span style=" font-size:14px; font-weight:600;">Jami account</span><span style=" font-size:14px;"> you want to use</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Devices</span><span style=" font-size:14px;"> tab</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Select </span><span style=" font-size:14px; font-weight:600;">Add a device</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">You will get the necessary PIN to complete this form. The PIN is only valid for </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutes</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></source>
+ <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">Para associar este dispositivo a outra conta, primeiro </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">tem de obter um código PIN.</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">Para gerar o código PIN:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Aceda à </span><span style=" font-size:14px; font-weight:600;">configuração de gestão de conta</span><span style=" font-size:14px;"> de um dispositivo anterior</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Escolha a </span><span style=" font-size:14px; font-weight:600;">conta Jami</span><span style=" font-size:14px;"> quer quer usar</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Aceda à aba </span><span style=" font-size:14px; font-weight:600;">Dispositivos</span><span style=" font-size:14px;"> </span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Selecione </span><span style=" font-size:14px; font-weight:600;">Adicionar dispositivo</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">Irá obter o PIN necessário para completar este formulário. O código PIN é válido apenas durante </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutos</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="531"/>
+ <source>Enter your pin:</source>
+ <translation>Introduza o seu PIN:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="599"/>
+ <source>Or import a file:</source>
+ <translation>Ou importe de um ficheiro:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="626"/>
+ <source>Link from exported account archive file</source>
+ <translation>Link do ficheiro da conta exportada</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="629"/>
+ <location filename="../newwizardwidget.cpp" line="83"/>
+ <location filename="../newwizardwidget.cpp" line="218"/>
+ <source>(None)</source>
+ <translation>(nenhum)</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="705"/>
+ <source>Password:</source>
+ <translation>Palavra-chave:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="799"/>
+ <location filename="../newwizardwidget.ui" line="1586"/>
+ <source>Profile</source>
+ <translation>Perfil</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="953"/>
+ <location filename="../newwizardwidget.ui" line="1767"/>
+ <source>Profile name</source>
+ <translation>Nome do perfil</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1027"/>
+ <source>Account</source>
+ <translation>Conta</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1136"/>
+ <source>Register your username.
+This will reserve the username so that only you can use it.
+Your friends will be able to call you with your usename
+instead of using your ID.</source>
+ <translation>Registe o seu nome de utilizador.
+Isto irá reservar o nome de utilizador para que apenas você o possa utilizar.
+Os seus amigos serão capazes de contactá-lo com seu nome de
+utilizador em vez do seu ID.</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1142"/>
+ <source>Public username checkbox</source>
+ <translation>Caixa de visto para o nome público de utilizador</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1145"/>
+ <source>Checkbox selecting if the user wants a public username</source>
+ <translation>Caixa de visto para indicar se o utilizador quer um nome público de utilizador</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1148"/>
+ <source>Register public username</source>
+ <translation>Registar nome de utilizador público</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1367"/>
+ <source>Public username edit</source>
+ <translation>Editar nome público de utilizador</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1373"/>
+ <source>Choose your username</source>
+ <translation>Escolha o seu nome de utilizador</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1289"/>
+ <source>Password text input</source>
+ <translation>Entrada de texto da palavra-chave</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1295"/>
+ <source>Password text entry</source>
+ <translation>Campo de texto da palavra-chave</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1301"/>
+ <location filename="../newwizardwidget.ui" line="2213"/>
+ <source>Password</source>
+ <translation>Palavra-chave</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1211"/>
+ <location filename="../newwizardwidget.ui" line="1217"/>
+ <source>Password confirmation text input</source>
+ <translation>Campo de texto para confirmação da palavra-chave</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1223"/>
+ <source>Confirm password</source>
+ <translation>Confirmar palavra-chave</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1814"/>
+ <source>SIP Account</source>
+ <translation>Conta SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1973"/>
+ <source>SIP Server edit</source>
+ <translation>Editar servidor SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1979"/>
+ <source>Server</source>
+ <translation>Servidor</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2045"/>
+ <source>SIP proxy input</source>
+ <translation>Entrada do proxy SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2051"/>
+ <source>SIP proxy text entry</source>
+ <translation>Campo de texto do proxy SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2057"/>
+ <source>Proxy</source>
+ <translation>Proxy</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2123"/>
+ <source>SIP username input</source>
+ <translation>Entrada de nome de utilizador SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2129"/>
+ <source>SIP Password text entry</source>
+ <translation>Campo de texto da palavra-chave SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2135"/>
+ <source>Username</source>
+ <translation>Nome de utilizador</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2201"/>
+ <location filename="../newwizardwidget.ui" line="2207"/>
+ <source>SIP Password text input</source>
+ <translation>Entrada de texto da palavra-chave SIP</translation>
+ </message>
+ <message utf8="true">
+ <location filename="../newwizardwidget.ui" line="2282"/>
+ <source>Generating your Jami account…</source>
+ <translation>A gerar a sua conta Jami...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2356"/>
+ <source>Previous page button</source>
+ <translation>Botão de página anterior</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2362"/>
+ <source>push button to access previous page of wizard</source>
+ <translation>Botão de pressionar para aceder à página anterior do assistente</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2365"/>
+ <source>Previous</source>
+ <translation>Anterior</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2396"/>
+ <source>Cancel account create/link</source>
+ <translation>Cancelar a criação de conta / associação</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2402"/>
+ <source>push button to cancel account creation or linking</source>
+ <translation>botão para cancelar criação de conta ou associação</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2405"/>
+ <source>Back</source>
+ <translation>Voltar</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2442"/>
+ <source>Next page Button</source>
+ <translation>Botão de página seguinte</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2448"/>
+ <source>Push button to access next page of wizard</source>
+ <translation>Botão de pressionar para aceder à página seguinte do assistente</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2451"/>
+ <source>Next</source>
+ <translation>Próximo</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="75"/>
+ <source>Open File</source>
+ <translation>Abrir Ficheiro</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="77"/>
+ <source>Jami archive files (*.gz); All files (*)</source>
+ <translation>Ficheiros de arquivo Jami (*.gz); Todos os ficheiros (*)</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="123"/>
+ <source>Your account needs to be migrated. Enter your password.</source>
+ <translation>A sua conta tem de ser migrada. Introduza a sua palavra-chave.</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="419"/>
+ <source>Migrating your Jami account...</source>
+ <translation>A migrar a sua conta Jami...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="412"/>
+ <source>Importing account archive...</source>
+ <translation>A importar ficheiro da conta...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="404"/>
+ <source>Generating your Jami account...</source>
+ <translation>A gerar a sua conta Jami...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="422"/>
+ <source>Generating your SIP account...</source>
+ <translation>A gerar a sua conta SIP...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="533"/>
+ <source>Error creating account</source>
+ <translation>Erro ao criar a conta</translation>
+ </message>
+</context>
+<context>
+ <name>PasswordDialog</name>
+ <message>
+ <location filename="../passworddialog.ui" line="32"/>
+ <source>Change Account Password</source>
+ <translation>Alterar a palavra-chave da conta</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="97"/>
+ <source>Enter Current Password</source>
+ <translation>Introduzir a palavra-chave atual</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="169"/>
+ <source>Enter New Password</source>
+ <translation>Introduzir a palavra-chave nova</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="190"/>
+ <source>Confirm New Password</source>
+ <translation>Confirmar a palavra-chave nova</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="247"/>
+ <source>Confirm</source>
+ <translation>Confirmar</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="290"/>
+ <source>Cancel</source>
+ <translation>Cancelar</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="143"/>
+ <source>Current Password Incorrect</source>
+ <translation>A palavra-chave atual está incorreta</translation>
+ </message>
+</context>
+<context>
+ <name>PhotoBoothDialog</name>
+ <message>
+ <location filename="../photoboothdialog.ui" line="14"/>
+ <source>Photobooth</source>
+ <translation>Foto instantânea</translation>
+ </message>
+</context>
+<context>
+ <name>PhotoboothWidget</name>
+ <message>
+ <location filename="../photoboothwidget.ui" line="20"/>
+ <source>Form</source>
+ <translation>Formulário</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.ui" line="120"/>
+ <source>Photobooth display</source>
+ <translation>Mostrar foto instantânea</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="92"/>
+ <source>Choose File</source>
+ <translation>Escolher Ficheiro</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="94"/>
+ <source>Image Files (*.jpg *.jpeg *.png)</source>
+ <translation>Ficheiros de imagem (*.jpg *.jpeg *.png)</translation>
+ </message>
+</context>
+<context>
+ <name>PrivateBridging</name>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Choose File</source>
+ <translation>Escolher Ficheiro</translation>
+ </message>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Files (*)</source>
+ <translation>Ficheiros (*)</translation>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../utils.cpp" line="183"/>
+ <source>No default mail client found</source>
+ <translation>Cliente de e-mail padrão não encontrado</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="43"/>
+ <location filename="../deviceitemwidget.cpp" line="85"/>
+ <source>Edit Device Name</source>
+ <translation>Editar Nome do Dispositivo</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="44"/>
+ <source>Unlink Device From Account</source>
+ <translation>Desassociar Dispositivo da Conta</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="80"/>
+ <source>Save new device name</source>
+ <translation>Guardar o novo nome do dispositivo</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.cpp" line="39"/>
+ <source>Add as contact</source>
+ <translation>Adicionar como contacto</translation>
+ </message>
+</context>
+<context>
+ <name>RingButton</name>
+ <message>
+ <location filename="../ringbutton.ui" line="140"/>
+ <source>Select folder</source>
+ <translation>Select folder</translation>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <location filename="../settingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulário</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="141"/>
+ <source>Settings</source>
+ <translation>Configurações</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="229"/>
+ <source>Account</source>
+ <translation>Conta</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="267"/>
+ <location filename="../settingswidget.ui" line="503"/>
+ <source>General</source>
+ <translation>Geral</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="305"/>
+ <location filename="../settingswidget.ui" line="3416"/>
+ <source>Audio / Video</source>
+ <translation>Áudio / vídeo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="542"/>
+ <source>System</source>
+ <translation>Sistema</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="610"/>
+ <source>Enable desktop notifications</source>
+ <translation>Ativar notificações no ambiente de trabalho</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="653"/>
+ <source>Keep minimized on close</source>
+ <translation>Manter minimizado ao fechar</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="678"/>
+ <source>Download folder</source>
+ <translation>Pasta de descarregamentos</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="811"/>
+ <source>Save in</source>
+ <translation>Gravar em</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="904"/>
+ <source>Always Recording</source>
+ <translation>Gravar sempre</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="943"/>
+ <source>Updates</source>
+ <translation>Atualizações</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1008"/>
+ <source>Check for updates automatically every</source>
+ <translation>Verificar se existem atualizações a cada</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1032"/>
+ <source>Interval between update checks in days selector</source>
+ <translation>Seletor do intervalo em dias entre verificação de atualizações</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1038"/>
+ <source> days</source>
+ <translation>dias</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1081"/>
+ <source>Check for updates now button</source>
+ <translation>Botão para verificar atualizações agora</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1084"/>
+ <source>Check for updates now</source>
+ <translation>Verificar se existem atualizações</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3027"/>
+ <source>Password</source>
+ <translation>Palavra-chave</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1418"/>
+ <location filename="../settingswidget.ui" line="2729"/>
+ <source>Enable</source>
+ <translation>Ativar</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="607"/>
+ <source>toggle enable notifications</source>
+ <translation>alternar ativar notificações</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="650"/>
+ <source>Toggle keep minimized on close</source>
+ <translation>Alternar manter minimizado ao fechar</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="764"/>
+ <source>Call Recordings</source>
+ <translation>Gravações de chamadas</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1005"/>
+ <source>Toggle automatic updates</source>
+ <translation>Alternar atualizações automáticas</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1231"/>
+ <source>Jami Account</source>
+ <translation>Conta Jami</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1453"/>
+ <location filename="../settingswidget.ui" line="2761"/>
+ <source>Profile</source>
+ <translation>Perfil</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1567"/>
+ <location filename="../settingswidget.ui" line="2875"/>
+ <source>Identity</source>
+ <translation>Identificação</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1614"/>
+ <source>Id</source>
+ <translation>ID</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1673"/>
+ <source>Registered name</source>
+ <translation>Utilizador registado</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1721"/>
+ <source>Type here to register a username</source>
+ <translation>Escreva aqui para registar um nome</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1755"/>
+ <source>Register</source>
+ <translation>Registar</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1827"/>
+ <source>Change Password</source>
+ <translation>Alterar palavra-chave</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1868"/>
+ <source>Export Account</source>
+ <translation>Exportar conta</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1909"/>
+ <location filename="../settingswidget.ui" line="3089"/>
+ <source>Delete Account</source>
+ <translation>Eliminar conta</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1973"/>
+ <source>Linked Devices</source>
+ <translation>Dispositivos associados</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2078"/>
+ <source>Link Another Device</source>
+ <translation>Associar outro dispositivo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2142"/>
+ <source>Banned Contacts</source>
+ <translation>Contactos Banidos</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3788"/>
+ <source>Format</source>
+ <translation>Formato</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3831"/>
+ <source>Video device framerate selector</source>
+ <translation>Seletor de taxa de fotogramas do vídeo do dispositivo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3967"/>
+ <source>Preview unavailable</source>
+ <translation>Pré-visualização não disponível</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2359"/>
+ <location filename="../settingswidget.ui" line="3187"/>
+ <source>Advanced Account Settings</source>
+ <translation>Configurações avançadas de conta </translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2554"/>
+ <source>SIP Account</source>
+ <translation>Conta SIP</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2925"/>
+ <source>Username</source>
+ <translation>Nome de utilizador</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2958"/>
+ <source>Hostname</source>
+ <translation>Servidor</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2991"/>
+ <source>Proxy</source>
+ <translation>Proxy</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3461"/>
+ <source>Audio</source>
+ <translation>Áudio</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3511"/>
+ <source>Microphone</source>
+ <translation>Microfone</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3551"/>
+ <source>Audio input device selector</source>
+ <translation>Seletor de dispositivo de entrada de áudio</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3585"/>
+ <source>Output Device</source>
+ <translation>Dispositivo de Saída</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3625"/>
+ <source>Choose the output device</source>
+ <translation>Escolha o dispositivo de saída</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3682"/>
+ <source>Video</source>
+ <translation>Vídeo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3720"/>
+ <source>Device</source>
+ <translation>Dispositivo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3766"/>
+ <source>Video device selector</source>
+ <translation>Seletor de dispositivo de vídeo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="459"/>
+ <source>A registered name should not have any spaces and must be at least three letters long</source>
+ <translation>Um nome registado não deve ter espaços e deve ter no mínimo 3 caracteres</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="466"/>
+ <source>This name is already taken</source>
+ <translation>Este nome já foi escolhido por outra pessoa</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="92"/>
+ <location filename="../settingswidget.cpp" line="110"/>
+ <source>Enter an alias</source>
+ <translation>Introduza um apelido</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="473"/>
+ <source>Register this name</source>
+ <translation>Registar este nome</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="550"/>
+ <source>Remove Device</source>
+ <translation>Remover dispositivo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="551"/>
+ <source>Enter this account's password to confirm the removal of this device</source>
+ <translation>Introduza a palavra-chave desta conta para confirmar a remoção deste dispositivo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="558"/>
+ <source>Are you sure you wish to remove this device?</source>
+ <translation>Tem a certeza que quer remover este dispositivo?</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="589"/>
+ <source>Export Account Here</source>
+ <translation>Exportar conta aqui</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="887"/>
+ <source>Select A Folder For Your Downloads</source>
+ <translation>Selecionar uma pasta para os seus descarregamentos</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="904"/>
+ <source>Select A Folder For Your Recordings</source>
+ <translation>Selecionar uma pasta para as suas gravações</translation>
+ </message>
+</context>
+<context>
+ <name>VideoOverlay</name>
+ <message>
+ <location filename="../videooverlay.ui" line="419"/>
+ <source>Call on Hold</source>
+ <translation>Chamada em Espera</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="89"/>
+ <source>Hold / Unhold</source>
+ <translation>Esperar / Retomar</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="124"/>
+ <source>Chat</source>
+ <translation>Conversa</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="162"/>
+ <source>Mute Mic</source>
+ <translation>Desativar Microfone</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="244"/>
+ <source>Record call</source>
+ <translation>Gravar chamada</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="325"/>
+ <source>Name label</source>
+ <translation>Rótulo do nome</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="390"/>
+ <source>Time elapsed</source>
+ <translation>Tempo decorrido</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="393"/>
+ <source>00:00</source>
+ <translation>00:00</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="57"/>
+ <source>Hangup</source>
+ <translation>Desligar</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="203"/>
+ <source>Mute Video</source>
+ <translation>Tirar Som ao Vídeo</translation>
+ </message>
+</context>
+<context>
+ <name>VideoView</name>
+ <message>
+ <location filename="../videoview.cpp" line="271"/>
+ <source>Share entire screen</source>
+ <translation>Partilhar ecrã inteiro</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="274"/>
+ <source>Share screen area</source>
+ <translation>Partilhar área do ecrã</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="281"/>
+ <source>Share file</source>
+ <translation>Partilhar ficheiro</translation>
+ </message>
+</context>
+</TS>
\ No newline at end of file
diff --git a/translations/ring_client_windows_pt_BR.ts b/translations/ring_client_windows_pt_BR.ts
new file mode 100644
index 0000000..4020c5b
--- /dev/null
+++ b/translations/ring_client_windows_pt_BR.ts
@@ -0,0 +1,1592 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="pt_BR" version="2.0">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../aboutdialog.ui" line="435"/>
+ <location filename="../aboutdialog.ui" line="465"/>
+ <source>About</source>
+ <translation>Sobre</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="462"/>
+ <source>about button</source>
+ <translation>botão sobre</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="478"/>
+ <source>credits button</source>
+ <translation>botão créditos</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="481"/>
+ <source>Credits</source>
+ <translation>Créditos</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="547"/>
+ <source>Free as in Freedom</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="563"/>
+ <source>The Microsoft Windows client for Jami.
+Jami is a secured and distributed communication software.</source>
+ <translation>O cliente para Microsoft Windows do Jami.
+Jami é um programa de comunicação seguro e distribuído.</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="32"/>
+ <source>version</source>
+ <translation>versão</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="39"/>
+ <source>Created by:</source>
+ <translation>Criado por:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="73"/>
+ <source>Artwork by:</source>
+ <translation>Artwork por:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="77"/>
+ <source>Based on the SFLPhone project</source>
+ <translation>Baseado no projeto SFLPhone</translation>
+ </message>
+</context>
+<context>
+ <name>AccountItemDelegate</name>
+ <message>
+ <location filename="../accountitemdelegate.cpp" line="91"/>
+ <source>Add Account</source>
+ <translation>Adicionar Conta</translation>
+ </message>
+</context>
+<context>
+ <name>AdvancedSIPSettingsWidget</name>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulário</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="55"/>
+ <source>Call Settings</source>
+ <translation>Configurações de Chamada</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="102"/>
+ <source>Auto Answer Calls</source>
+ <translation>Atender Chamadas Automaticamente</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="130"/>
+ <source>Enable Custom Ringtone</source>
+ <translation>Ativar Toque Personalizado</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="191"/>
+ <source>Connectivity</source>
+ <translation>Conectividade</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="281"/>
+ <source>STUN Address</source>
+ <translation>Endereço STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="293"/>
+ <source>Use STUN</source>
+ <translation>Usar STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="317"/>
+ <source>Use UPnP</source>
+ <translation>Usar UPnP</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="329"/>
+ <source>Use TURN</source>
+ <translation>Usar TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="359"/>
+ <source>TURN Password</source>
+ <translation>Senha TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="391"/>
+ <source>TURN Username</source>
+ <translation>Usuário TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="423"/>
+ <source>TURN Address</source>
+ <translation>Endereço TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="464"/>
+ <source>Media</source>
+ <translation>Mídia</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="515"/>
+ <source>Enable Video</source>
+ <translation>Habilitar Vídeo</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="539"/>
+ <source>Video Codecs</source>
+ <translation>Codecs de Vídeo</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="692"/>
+ <source>Audio Codecs</source>
+ <translation>Codecs de Áudio</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="142"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation>Arquivos de áudio (*.wav *.ogg *.opus *.mp3 *aiff *wma)</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="151"/>
+ <source>Add a custom ringtone</source>
+ <translation>Adicionar um toque personalizado</translation>
+ </message>
+</context>
+<context>
+ <name>AdvancedSettingsWidget</name>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulário</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="61"/>
+ <source>Call Settings</source>
+ <translation>Configurações de Chamada</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="108"/>
+ <source>Allow Calls From Untrusted Peers</source>
+ <translation>Permitir Chamadas de Usuários Desconhecidos</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="133"/>
+ <source>Auto Answer Calls</source>
+ <translation>Atender Chamadas Automaticamente</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="161"/>
+ <source>Enable Custom Ringtone</source>
+ <translation>Ativar Toque Personalizado</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="188"/>
+ <source>Add a custom ringtone</source>
+ <translation>Adicionar um toque personalizado</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="225"/>
+ <source>Name Server</source>
+ <translation>Servidor de Nome</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="275"/>
+ <source>Address</source>
+ <translation>Endereço</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="351"/>
+ <source>OpenDHT Configuration</source>
+ <translation>Configuração OpenDHT</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="398"/>
+ <source>Enable Proxy</source>
+ <translation>Habilitar Proxy</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="454"/>
+ <source>Bootstrap</source>
+ <translation>Inicialização</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="530"/>
+ <source>Security</source>
+ <translation>Segurança</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="571"/>
+ <source>Private Key Password</source>
+ <translation>Senha chave privada</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="583"/>
+ <source>User Certificate</source>
+ <translation>Certificado do Usuário</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="622"/>
+ <source>Private Key</source>
+ <translation>Chave Privada</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="634"/>
+ <source>CA Certificate</source>
+ <translation>Certificado de CA</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="766"/>
+ <source>Connectivity</source>
+ <translation>Conectividade</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="868"/>
+ <source>Use STUN</source>
+ <translation>Usar STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="856"/>
+ <source>STUN Address</source>
+ <translation>Endereço STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="892"/>
+ <source>Use UPnP</source>
+ <translation>Usar UPnP</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="904"/>
+ <source>Use TURN</source>
+ <translation>Usar TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="934"/>
+ <source>TURN Password</source>
+ <translation>Senha TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="966"/>
+ <source>TURN Username</source>
+ <translation>Usuário TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="998"/>
+ <source>TURN Address</source>
+ <translation>Endereço TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1039"/>
+ <source>Media</source>
+ <translation>Mídia</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1090"/>
+ <source>Enable Video</source>
+ <translation>Habilitar Vídeo</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1267"/>
+ <source>Audio Codecs</source>
+ <translation>Codecs de Áudio</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1114"/>
+ <source>Video Codecs</source>
+ <translation>Codecs de Vídeo</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="181"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation>Arquivos de áudio (*.wav *.ogg *.opus *.mp3 *aiff *wma)</translation>
+ </message>
+</context>
+<context>
+ <name>AnimatedOverlay</name>
+ <message>
+ <location filename="../animatedoverlay.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulário</translation>
+ </message>
+</context>
+<context>
+ <name>BannedItemWidget</name>
+ <message>
+ <location filename="../banneditemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulário</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="80"/>
+ <source>name</source>
+ <translation>nome</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="104"/>
+ <source>id</source>
+ <translation>id</translation>
+ </message>
+</context>
+<context>
+ <name>CallWidget</name>
+ <message>
+ <location filename="../callwidget.ui" line="184"/>
+ <source>Show conversations</source>
+ <translation>Mostrar conversas</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="187"/>
+ <source>Conversations</source>
+ <translation>Conversas</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="368"/>
+ <source>Search contact text input</source>
+ <translation>Entrada de texto para busca de contato </translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="653"/>
+ <source>Jami is free software for universal communication which respects the freedoms and privacy of its users.</source>
+ <translation>Jami é um software livre para comunicação universal que respeita as liberdades e privacidade de seus usuários.</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="693"/>
+ <source>
+ This is your ID.
+Copy and share it with your friends!
+ </source>
+ <translation>
+ Esse é seu ID
+Copiei e compartilhe com seus amigos!</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="806"/>
+ <source>Show ring ID QR code</source>
+ <translation>Mostrar código QR do seu ID do Ring</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="857"/>
+ <source>Share ring ID button</source>
+ <translation>Botão para compartilhar o seu Id do Ring</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="915"/>
+ <source>Double-click to copy</source>
+ <translation>Duplo-clique para copiar</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="956"/>
+ <source>Error while generating QR Code</source>
+ <translation>Erro ao gerar o Código QR</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1184"/>
+ <location filename="../callwidget.ui" line="1434"/>
+ <source>best name</source>
+ <translation>melhor nome</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1208"/>
+ <source>best Id</source>
+ <translation>melhor Id</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1734"/>
+ <source>Back to homepage button</source>
+ <translation>Botão para voltar à página inicial</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1943"/>
+ <source>Add to contacts</source>
+ <translation>Adicionar aos contatos</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="202"/>
+ <source>Show invites</source>
+ <translation>Mostrar convites</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="205"/>
+ <source>Invites</source>
+ <translation>Convida</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="377"/>
+ <location filename="../callwidget.cpp" line="552"/>
+ <source>Find a new or existing contact</source>
+ <translation>Encontrar um contato novo ou preexistente</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1444"/>
+ <source>Wants to talk to you!</source>
+ <translation>Quer conversar com você!</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1517"/>
+ <source>Answer incoming call button</source>
+ <translation>Botão para atender chamada</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1589"/>
+ <source>Ignore incoming call button</source>
+ <translation>Botão para ignorar chamada</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1539"/>
+ <source>Answer</source>
+ <translation>Resposta</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1617"/>
+ <source>Ignore</source>
+ <translation>Ignorar</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1280"/>
+ <source>Cancel outgoing call</source>
+ <translation>Cancelar chamada efetuada</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1305"/>
+ <source>Cancel</source>
+ <translation>Cancelar</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="332"/>
+ <source>Start video call</source>
+ <translation>Iniciar videochamada</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="343"/>
+ <source>Start audio call</source>
+ <translation>Iniciar chamada de áudio</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="354"/>
+ <source>Clear conversation</source>
+ <translation>Eliminar a conversa</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="361"/>
+ <source>Remove contact</source>
+ <translation>Remover contato</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="373"/>
+ <source>Block contact</source>
+ <translation>Bloquear contato</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="384"/>
+ <source>Copy number</source>
+ <translation>Copiar número</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="561"/>
+ <source>Search your received invitations</source>
+ <translation>Pesquisar seus convites recebidos</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>Contact me on Jami</source>
+ <translation>Encontre-me no Jami !</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>My Id is : </source>
+ <translation>Meu Id é : </translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="847"/>
+ <source>%1</source>
+ <comment>%1 is the contact username</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="852"/>
+ <source>%1</source>
+ <comment>%1 is the contact unique identifier</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="675"/>
+ <source>Call incoming from %1</source>
+ <translation>Recebendo chamada de %1</translation>
+ </message>
+</context>
+<context>
+ <name>DeleteAccountDialog</name>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="35"/>
+ <source>Account deletion</source>
+ <translation>Remoção de conta</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="58"/>
+ <source>Do you really want to delete the following account?</source>
+ <translation>Tem certeza que deseja deletar a seguinte conta?</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="153"/>
+ <source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
+ <translation>Se esta conta não foi exportada, ou adicionada a outro dispositivo, ela será completamente perdida.</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="235"/>
+ <source>Permanently delete account</source>
+ <translation>Deletar conta permanentemente</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="241"/>
+ <source>Delete</source>
+ <translation>Deletar</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="278"/>
+ <source>Cancel account deletion</source>
+ <translation>Cancelar deleção da conta</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="284"/>
+ <source>Cancel</source>
+ <translation>Cancelar</translation>
+ </message>
+</context>
+<context>
+ <name>DeviceItemWidget</name>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulário</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="105"/>
+ <source>Device Id</source>
+ <translation>Id do Dispositivo</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="143"/>
+ <source>this device</source>
+ <translation>este dispositivo</translation>
+ </message>
+</context>
+<context>
+ <name>InviteButtonsWidget</name>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="83"/>
+ <source>Accept</source>
+ <translation>Aceitar</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="131"/>
+ <source>Refuse</source>
+ <translation>Recusar</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="179"/>
+ <source>Block</source>
+ <translation>Bloquear</translation>
+ </message>
+</context>
+<context>
+ <name>LinkDeviceDialog</name>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation>Diálogo</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="62"/>
+ <source>Enter your account password</source>
+ <translation>Entre com a senha de sua conta</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="117"/>
+ <source>Password</source>
+ <translation>Senha</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="184"/>
+ <source>Ok</source>
+ <translation>Ok</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="218"/>
+ <source>Cancel</source>
+ <translation>Cancelar</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="279"/>
+ <source>Exporting account</source>
+ <translation>Exportando conta</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="402"/>
+ <source>Your PIN is</source>
+ <translation>Seu PIN é</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="432"/>
+ <source>PIN</source>
+ <translation>PIN</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="477"/>
+ <source>This pin and the account password should be entered in your device within 10 minutes.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="553"/>
+ <source>Close</source>
+ <translation>Fechar</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="34"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="96"/>
+ <source>Incorrect password</source>
+ <translation>Senha incorreta</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="110"/>
+ <source>Something went wrong.
+Please try again later.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="83"/>
+ <source>Settings</source>
+ <translation>Configurações</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="94"/>
+ <source>Exit</source>
+ <translation>Sair</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="111"/>
+ <source>About</source>
+ <translation>Sobre</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="435"/>
+ <source>Jami</source>
+ <translation>Jami</translation>
+ </message>
+</context>
+<context>
+ <name>NameRegistrationDialog</name>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="35"/>
+ <source>Set Registered Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="163"/>
+ <source>Enter your account password</source>
+ <translation>Entre com a senha de sua conta</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="244"/>
+ <source>Password text input</source>
+ <translation>Entrada de texto de senha</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="250"/>
+ <source>Password text entry</source>
+ <translation>Campo de texto da Senha</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="256"/>
+ <source>Password</source>
+ <translation>Senha</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="323"/>
+ <source>Register</source>
+ <translation>Registrar</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="357"/>
+ <source>Cancel</source>
+ <translation>Cancelar</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="424"/>
+ <source>Registering Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="548"/>
+ <source>Something went wrong</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="618"/>
+ <source>Close</source>
+ <translation>Fechar</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="82"/>
+ <source>Incorrect password</source>
+ <translation>Senha incorreta</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="85"/>
+ <source>Network error</source>
+ <translation>Erro de rede</translation>
+ </message>
+</context>
+<context>
+ <name>NewWizardWidget</name>
+ <message>
+ <location filename="../newwizardwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulário</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="141"/>
+ <source>Welcome Label</source>
+ <translation>Legenda de boas-vindas</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="147"/>
+ <source> Welcome to</source>
+ <translation>Bem-vindo ao</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="185"/>
+ <source>Welcome Logo</source>
+ <translation>Logotipo de boas-vindas</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="239"/>
+ <source>Create Jami account button</source>
+ <translation>Botão para criar conta do Jami</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="245"/>
+ <source>Push button for Jami account creation start trigger</source>
+ <translation>Botão para acionar a criação da conta do Jami</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="251"/>
+ <source>Create a Jami account</source>
+ <translation>Criar uma conta no Jami</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="282"/>
+ <source>Link device button</source>
+ <translation>Botão para associar dispositivo</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="288"/>
+ <source>Push button for device linkage start trigger</source>
+ <translation>Botão para acionar a associação de dispositivo</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="291"/>
+ <source>Link this device to an account</source>
+ <translation>Associar este dispositivo a uma conta</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="328"/>
+ <source>Create Jami SIP account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="334"/>
+ <source>Push button for Jami SIP account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="340"/>
+ <source>Create a SIP account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="405"/>
+ <source>Link this device to an existing account</source>
+ <translation>Associar este dispositivo à uma conta existente</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="469"/>
+ <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">To link this device to another account, you first </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">need to obtain a PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> code. To generate the PIN code:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Account management setting</span><span style=" font-size:14px;"> of a previous device</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choose the </span><span style=" font-size:14px; font-weight:600;">Jami account</span><span style=" font-size:14px;"> you want to use</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Devices</span><span style=" font-size:14px;"> tab</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Select </span><span style=" font-size:14px; font-weight:600;">Add a device</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">You will get the necessary PIN to complete this form. The PIN is only valid for </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutes</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="531"/>
+ <source>Enter your pin:</source>
+ <translation>Entre o seu PIN:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="599"/>
+ <source>Or import a file:</source>
+ <translation>Ou importe de arquivo:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="626"/>
+ <source>Link from exported account archive file</source>
+ <translation>Link do arquivo da conta exportada</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="629"/>
+ <location filename="../newwizardwidget.cpp" line="83"/>
+ <location filename="../newwizardwidget.cpp" line="218"/>
+ <source>(None)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="705"/>
+ <source>Password:</source>
+ <translation>Senha:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="799"/>
+ <location filename="../newwizardwidget.ui" line="1586"/>
+ <source>Profile</source>
+ <translation>Perfil</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="953"/>
+ <location filename="../newwizardwidget.ui" line="1767"/>
+ <source>Profile name</source>
+ <translation>Nome do perfil</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1027"/>
+ <source>Account</source>
+ <translation>Conta</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1136"/>
+ <source>Register your username.
+This will reserve the username so that only you can use it.
+Your friends will be able to call you with your usename
+instead of using your ID.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1142"/>
+ <source>Public username checkbox</source>
+ <translation>Caixa de seleção para nome de usuário público</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1145"/>
+ <source>Checkbox selecting if the user wants a public username</source>
+ <translation>Caixa de seleção para indicar se o usuário deseja um nome de usuário público</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1148"/>
+ <source>Register public username</source>
+ <translation>Registrar nome de usuário público</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1367"/>
+ <source>Public username edit</source>
+ <translation>Editar nome de usuário público</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1373"/>
+ <source>Choose your username</source>
+ <translation>Escolha seu nome de usuário</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1289"/>
+ <source>Password text input</source>
+ <translation>Entrada de texto de senha</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1295"/>
+ <source>Password text entry</source>
+ <translation>Campo de texto da Senha</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1301"/>
+ <location filename="../newwizardwidget.ui" line="2213"/>
+ <source>Password</source>
+ <translation>Senha</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1211"/>
+ <location filename="../newwizardwidget.ui" line="1217"/>
+ <source>Password confirmation text input</source>
+ <translation>Campo de texto para confirmação da Senha</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1223"/>
+ <source>Confirm password</source>
+ <translation>Confirmar senha</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1814"/>
+ <source>SIP Account</source>
+ <translation>Conta SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1973"/>
+ <source>SIP Server edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1979"/>
+ <source>Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2045"/>
+ <source>SIP proxy input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2051"/>
+ <source>SIP proxy text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2057"/>
+ <source>Proxy</source>
+ <translation>Proxy</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2123"/>
+ <source>SIP username input</source>
+ <translation>Entrada de usuário SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2129"/>
+ <source>SIP Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2135"/>
+ <source>Username</source>
+ <translation>Nome de usuário</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2201"/>
+ <location filename="../newwizardwidget.ui" line="2207"/>
+ <source>SIP Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message utf8="true">
+ <location filename="../newwizardwidget.ui" line="2282"/>
+ <source>Generating your Jami account…</source>
+ <translation>Gerando sua conta do Jami...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2356"/>
+ <source>Previous page button</source>
+ <translation>Botão da página anterior</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2362"/>
+ <source>push button to access previous page of wizard</source>
+ <translation>Pressione botão para acessar a página anterior do assistente</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2365"/>
+ <source>Previous</source>
+ <translation>Anterior</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2396"/>
+ <source>Cancel account create/link</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2402"/>
+ <source>push button to cancel account creation or linking</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2405"/>
+ <source>Back</source>
+ <translation>Voltar</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2442"/>
+ <source>Next page Button</source>
+ <translation>Botão da próxima página</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2448"/>
+ <source>Push button to access next page of wizard</source>
+ <translation>Pressione botão para acessar próxima página do assistente</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2451"/>
+ <source>Next</source>
+ <translation>Próximo</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="75"/>
+ <source>Open File</source>
+ <translation>Abrir arquivo</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="77"/>
+ <source>Jami archive files (*.gz); All files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="123"/>
+ <source>Your account needs to be migrated. Enter your password.</source>
+ <translation>Sua conta precisa ser migrada. Entre com sua senha.</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="419"/>
+ <source>Migrating your Jami account...</source>
+ <translation>Migrando sua conta do Jami...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="412"/>
+ <source>Importing account archive...</source>
+ <translation>Importando arquivo da conta...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="404"/>
+ <source>Generating your Jami account...</source>
+ <translation>Gerando sua conta do Jami...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="422"/>
+ <source>Generating your SIP account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="533"/>
+ <source>Error creating account</source>
+ <translation>Erro ao criar conta</translation>
+ </message>
+</context>
+<context>
+ <name>PasswordDialog</name>
+ <message>
+ <location filename="../passworddialog.ui" line="32"/>
+ <source>Change Account Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="97"/>
+ <source>Enter Current Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="169"/>
+ <source>Enter New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="190"/>
+ <source>Confirm New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="247"/>
+ <source>Confirm</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="290"/>
+ <source>Cancel</source>
+ <translation>Cancelar</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="143"/>
+ <source>Current Password Incorrect</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PhotoBoothDialog</name>
+ <message>
+ <location filename="../photoboothdialog.ui" line="14"/>
+ <source>Photobooth</source>
+ <translation>Foto instantânea</translation>
+ </message>
+</context>
+<context>
+ <name>PhotoboothWidget</name>
+ <message>
+ <location filename="../photoboothwidget.ui" line="20"/>
+ <source>Form</source>
+ <translation>Formulário</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.ui" line="120"/>
+ <source>Photobooth display</source>
+ <translation>Exibir foto instantânea</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="92"/>
+ <source>Choose File</source>
+ <translation>Escolher Arquivo</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="94"/>
+ <source>Image Files (*.jpg *.jpeg *.png)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PrivateBridging</name>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Choose File</source>
+ <translation>Escolher Arquivo</translation>
+ </message>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Files (*)</source>
+ <translation>Arquivos (*)</translation>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../utils.cpp" line="183"/>
+ <source>No default mail client found</source>
+ <translation>Cliente de e-mail não encontrado</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="43"/>
+ <location filename="../deviceitemwidget.cpp" line="85"/>
+ <source>Edit Device Name</source>
+ <translation>Editar Nome do Dispositivo</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="44"/>
+ <source>Unlink Device From Account</source>
+ <translation>Desassociar Este Dispositivo Da Conta</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="80"/>
+ <source>Save new device name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.cpp" line="39"/>
+ <source>Add as contact</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>RingButton</name>
+ <message>
+ <location filename="../ringbutton.ui" line="140"/>
+ <source>Select folder</source>
+ <translation>Selecionar pasta</translation>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <location filename="../settingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulário</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="141"/>
+ <source>Settings</source>
+ <translation>Configurações</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="229"/>
+ <source>Account</source>
+ <translation>Conta</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="267"/>
+ <location filename="../settingswidget.ui" line="503"/>
+ <source>General</source>
+ <translation>Geral</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="305"/>
+ <location filename="../settingswidget.ui" line="3416"/>
+ <source>Audio / Video</source>
+ <translation>Áudio / vídeo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="542"/>
+ <source>System</source>
+ <translation>Sistema</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="610"/>
+ <source>Enable desktop notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="653"/>
+ <source>Keep minimized on close</source>
+ <translation>Manter minimizado ao fechar</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="678"/>
+ <source>Download folder</source>
+ <translation>Pasta de downloads</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="811"/>
+ <source>Save in</source>
+ <translation>Salvar em</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="904"/>
+ <source>Always Recording</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="943"/>
+ <source>Updates</source>
+ <translation>Atualizações</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1008"/>
+ <source>Check for updates automatically every</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1032"/>
+ <source>Interval between update checks in days selector</source>
+ <translation>Seletor do intervalo da verificação de atualizaçôes em dias</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1038"/>
+ <source> days</source>
+ <translation>dias</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1081"/>
+ <source>Check for updates now button</source>
+ <translation>Botão para verificar atualizações agora</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1084"/>
+ <source>Check for updates now</source>
+ <translation>Checar por atualizações agora</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3027"/>
+ <source>Password</source>
+ <translation>Senha</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1418"/>
+ <location filename="../settingswidget.ui" line="2729"/>
+ <source>Enable</source>
+ <translation>Habilitar</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="607"/>
+ <source>toggle enable notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="650"/>
+ <source>Toggle keep minimized on close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="764"/>
+ <source>Call Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1005"/>
+ <source>Toggle automatic updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1231"/>
+ <source>Jami Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1453"/>
+ <location filename="../settingswidget.ui" line="2761"/>
+ <source>Profile</source>
+ <translation>Perfil</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1567"/>
+ <location filename="../settingswidget.ui" line="2875"/>
+ <source>Identity</source>
+ <translation>Identificação</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1614"/>
+ <source>Id</source>
+ <translation>ID</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1673"/>
+ <source>Registered name</source>
+ <translation>Usuário registrado</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1721"/>
+ <source>Type here to register a username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1755"/>
+ <source>Register</source>
+ <translation>Registrar</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1827"/>
+ <source>Change Password</source>
+ <translation>Alterar senha</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1868"/>
+ <source>Export Account</source>
+ <translation>Exportar Conta</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1909"/>
+ <location filename="../settingswidget.ui" line="3089"/>
+ <source>Delete Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1973"/>
+ <source>Linked Devices</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2078"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2142"/>
+ <source>Banned Contacts</source>
+ <translation>Contatos Banidos</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3788"/>
+ <source>Format</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3831"/>
+ <source>Video device framerate selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3967"/>
+ <source>Preview unavailable</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2359"/>
+ <location filename="../settingswidget.ui" line="3187"/>
+ <source>Advanced Account Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2554"/>
+ <source>SIP Account</source>
+ <translation>Conta SIP</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2925"/>
+ <source>Username</source>
+ <translation>Nome de usuário</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2958"/>
+ <source>Hostname</source>
+ <translation>Servidor</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2991"/>
+ <source>Proxy</source>
+ <translation>Proxy</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3461"/>
+ <source>Audio</source>
+ <translation>Áudio</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3511"/>
+ <source>Microphone</source>
+ <translation>Microfone</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3551"/>
+ <source>Audio input device selector</source>
+ <translation>Seletor de dispositivo de entrada de áudio</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3585"/>
+ <source>Output Device</source>
+ <translation>Dispositivo de saída</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3625"/>
+ <source>Choose the output device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3682"/>
+ <source>Video</source>
+ <translation>Vídeo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3720"/>
+ <source>Device</source>
+ <translation>Dispositivo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3766"/>
+ <source>Video device selector</source>
+ <translation>Seletor de dispositivo de vídeo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="459"/>
+ <source>A registered name should not have any spaces and must be at least three letters long</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="466"/>
+ <source>This name is already taken</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="92"/>
+ <location filename="../settingswidget.cpp" line="110"/>
+ <source>Enter an alias</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="473"/>
+ <source>Register this name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="550"/>
+ <source>Remove Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="551"/>
+ <source>Enter this account's password to confirm the removal of this device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="558"/>
+ <source>Are you sure you wish to remove this device?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="589"/>
+ <source>Export Account Here</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="887"/>
+ <source>Select A Folder For Your Downloads</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="904"/>
+ <source>Select A Folder For Your Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>VideoOverlay</name>
+ <message>
+ <location filename="../videooverlay.ui" line="419"/>
+ <source>Call on Hold</source>
+ <translation>Chamada em espera</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="89"/>
+ <source>Hold / Unhold</source>
+ <translation>Esperar / Retomar</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="124"/>
+ <source>Chat</source>
+ <translation>Conversa</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="162"/>
+ <source>Mute Mic</source>
+ <translation>Desativar microfone</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="244"/>
+ <source>Record call</source>
+ <translation>Gravar chamada</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="325"/>
+ <source>Name label</source>
+ <translation>Nome do rótulo</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="390"/>
+ <source>Time elapsed</source>
+ <translation>Tempo decorrido</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="393"/>
+ <source>00:00</source>
+ <translation>00:00</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="57"/>
+ <source>Hangup</source>
+ <translation>Desligar</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="203"/>
+ <source>Mute Video</source>
+ <translation>Desativar vídeo</translation>
+ </message>
+</context>
+<context>
+ <name>VideoView</name>
+ <message>
+ <location filename="../videoview.cpp" line="271"/>
+ <source>Share entire screen</source>
+ <translation>Compartilhar tela inteira</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="274"/>
+ <source>Share screen area</source>
+ <translation>Compartilhar área da tela</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="281"/>
+ <source>Share file</source>
+ <translation>Compartilhar arquivo</translation>
+ </message>
+</context>
+</TS>
\ No newline at end of file
diff --git a/translations/ring_client_windows_pt_PT.ts b/translations/ring_client_windows_pt_PT.ts
new file mode 100644
index 0000000..dd4f0f5
--- /dev/null
+++ b/translations/ring_client_windows_pt_PT.ts
@@ -0,0 +1,1606 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="pt_PT" version="2.0">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../aboutdialog.ui" line="435"/>
+ <location filename="../aboutdialog.ui" line="465"/>
+ <source>About</source>
+ <translation>Sobre</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="462"/>
+ <source>about button</source>
+ <translation>botão sobre</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="478"/>
+ <source>credits button</source>
+ <translation>botão créditos</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="481"/>
+ <source>Credits</source>
+ <translation>Créditos</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="547"/>
+ <source>Free as in Freedom</source>
+ <translation>Livre como em Liberdade</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="563"/>
+ <source>The Microsoft Windows client for Jami.
+Jami is a secured and distributed communication software.</source>
+ <translation>O cliente Microsoft Windows para o Jami
+O Jami é um programa de comunicação distribuído e seguro.</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="32"/>
+ <source>version</source>
+ <translation>versão</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="39"/>
+ <source>Created by:</source>
+ <translation>Criado por:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="73"/>
+ <source>Artwork by:</source>
+ <translation>Arte por:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="77"/>
+ <source>Based on the SFLPhone project</source>
+ <translation>Baseado no projeto SFLPhone</translation>
+ </message>
+</context>
+<context>
+ <name>AccountItemDelegate</name>
+ <message>
+ <location filename="../accountitemdelegate.cpp" line="91"/>
+ <source>Add Account</source>
+ <translation>Adicionar Conta</translation>
+ </message>
+</context>
+<context>
+ <name>AdvancedSIPSettingsWidget</name>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulário</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="55"/>
+ <source>Call Settings</source>
+ <translation>Configurações de chamadas</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="102"/>
+ <source>Auto Answer Calls</source>
+ <translation>Atender chamadas automaticamente</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="130"/>
+ <source>Enable Custom Ringtone</source>
+ <translation>Ativar toque de chamada personalizado</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="191"/>
+ <source>Connectivity</source>
+ <translation>Conectividade</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="281"/>
+ <source>STUN Address</source>
+ <translation>Endereço STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="293"/>
+ <source>Use STUN</source>
+ <translation>Usar STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="317"/>
+ <source>Use UPnP</source>
+ <translation>Usar UPnP</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="329"/>
+ <source>Use TURN</source>
+ <translation>Usar TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="359"/>
+ <source>TURN Password</source>
+ <translation>Palavra-chave TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="391"/>
+ <source>TURN Username</source>
+ <translation>Nome de utilizador TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="423"/>
+ <source>TURN Address</source>
+ <translation>Endereço TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="464"/>
+ <source>Media</source>
+ <translation>Média</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="515"/>
+ <source>Enable Video</source>
+ <translation>Ativar Vídeo</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="539"/>
+ <source>Video Codecs</source>
+ <translation>Codecs de vídeo</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="692"/>
+ <source>Audio Codecs</source>
+ <translation>Codecs de áudio</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="142"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation>Ficheiros de áudio (*.wav *.ogg *.opus *.mp3 *aiff *wma)</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="151"/>
+ <source>Add a custom ringtone</source>
+ <translation>Adicionar um toque de chamada personalizado</translation>
+ </message>
+</context>
+<context>
+ <name>AdvancedSettingsWidget</name>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulário</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="61"/>
+ <source>Call Settings</source>
+ <translation>Configurações de chamadas</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="108"/>
+ <source>Allow Calls From Untrusted Peers</source>
+ <translation>Permitir chamadas de utilizadores desconhecidos</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="133"/>
+ <source>Auto Answer Calls</source>
+ <translation>Atender chamadas automaticamente</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="161"/>
+ <source>Enable Custom Ringtone</source>
+ <translation>Ativar toque de chamada personalizado</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="188"/>
+ <source>Add a custom ringtone</source>
+ <translation>Adicionar um toque de chamada personalizado</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="225"/>
+ <source>Name Server</source>
+ <translation>Nome do servidor</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="275"/>
+ <source>Address</source>
+ <translation>Endereço</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="351"/>
+ <source>OpenDHT Configuration</source>
+ <translation>Configuração OpenDHT</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="398"/>
+ <source>Enable Proxy</source>
+ <translation>Ativar Proxy</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="454"/>
+ <source>Bootstrap</source>
+ <translation>Inicialização</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="530"/>
+ <source>Security</source>
+ <translation>Segurança</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="571"/>
+ <source>Private Key Password</source>
+ <translation>Palavra-chave da Chave Privada</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="583"/>
+ <source>User Certificate</source>
+ <translation>Certificado do Utilizador</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="622"/>
+ <source>Private Key</source>
+ <translation>Chave privada</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="634"/>
+ <source>CA Certificate</source>
+ <translation>Certificado CA</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="766"/>
+ <source>Connectivity</source>
+ <translation>Conectividade</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="868"/>
+ <source>Use STUN</source>
+ <translation>Usar STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="856"/>
+ <source>STUN Address</source>
+ <translation>Endereço STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="892"/>
+ <source>Use UPnP</source>
+ <translation>Usar UPnP</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="904"/>
+ <source>Use TURN</source>
+ <translation>Usar TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="934"/>
+ <source>TURN Password</source>
+ <translation>Palavra-chave TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="966"/>
+ <source>TURN Username</source>
+ <translation>Nome de utilizador TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="998"/>
+ <source>TURN Address</source>
+ <translation>Endereço TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1039"/>
+ <source>Media</source>
+ <translation>Média</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1090"/>
+ <source>Enable Video</source>
+ <translation>Ativar Vídeo</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1267"/>
+ <source>Audio Codecs</source>
+ <translation>Codecs de áudio</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1114"/>
+ <source>Video Codecs</source>
+ <translation>Codecs de vídeo</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="181"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation>Ficheiros de áudio (*.wav *.ogg *.opus *.mp3 *aiff *wma)</translation>
+ </message>
+</context>
+<context>
+ <name>AnimatedOverlay</name>
+ <message>
+ <location filename="../animatedoverlay.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulário</translation>
+ </message>
+</context>
+<context>
+ <name>BannedItemWidget</name>
+ <message>
+ <location filename="../banneditemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulário</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="80"/>
+ <source>name</source>
+ <translation>nome</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="104"/>
+ <source>id</source>
+ <translation>id</translation>
+ </message>
+</context>
+<context>
+ <name>CallWidget</name>
+ <message>
+ <location filename="../callwidget.ui" line="184"/>
+ <source>Show conversations</source>
+ <translation>Ver conversações</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="187"/>
+ <source>Conversations</source>
+ <translation>Conversas</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="368"/>
+ <source>Search contact text input</source>
+ <translation>Entrada de texto para pesquisa de contacto</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="653"/>
+ <source>Jami is free software for universal communication which respects the freedoms and privacy of its users.</source>
+ <translation>O Jami é um programa livre para comunicação universal que respeita as liberdades e privacidade dos seus utilizadores.</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="693"/>
+ <source>
+ This is your ID.
+Copy and share it with your friends!
+ </source>
+ <translation>
+ Este é o seu ID.
+Copie-o e partilhe-o com os seus amigos!
+ </translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="806"/>
+ <source>Show ring ID QR code</source>
+ <translation>Mostrar código QR do seu ID do Ring</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="857"/>
+ <source>Share ring ID button</source>
+ <translation>Botão para partilhar o seu ID do Ring</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="915"/>
+ <source>Double-click to copy</source>
+ <translation>Duplo-clique para copiar</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="956"/>
+ <source>Error while generating QR Code</source>
+ <translation>Erro ao gerar o Código QR</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1184"/>
+ <location filename="../callwidget.ui" line="1434"/>
+ <source>best name</source>
+ <translation>melhor nome</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1208"/>
+ <source>best Id</source>
+ <translation>melhor Id</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1734"/>
+ <source>Back to homepage button</source>
+ <translation>Botão para voltar à página inicial</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1943"/>
+ <source>Add to contacts</source>
+ <translation>Adicionar aos contactos</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="202"/>
+ <source>Show invites</source>
+ <translation>Mostrar convites</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="205"/>
+ <source>Invites</source>
+ <translation>Convites</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="377"/>
+ <location filename="../callwidget.cpp" line="552"/>
+ <source>Find a new or existing contact</source>
+ <translation>Procurar um contacto novo ou existente</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1444"/>
+ <source>Wants to talk to you!</source>
+ <translation>Quer conversar consigo!</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1517"/>
+ <source>Answer incoming call button</source>
+ <translation>Botão para atender chamada</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1589"/>
+ <source>Ignore incoming call button</source>
+ <translation>Botão para ignorar chamada</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1539"/>
+ <source>Answer</source>
+ <translation>Resposta</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1617"/>
+ <source>Ignore</source>
+ <translation>Ignorar</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1280"/>
+ <source>Cancel outgoing call</source>
+ <translation>Cancelar chamada efetuada</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1305"/>
+ <source>Cancel</source>
+ <translation>Cancelar</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="332"/>
+ <source>Start video call</source>
+ <translation>Começar chamada de vídeo</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="343"/>
+ <source>Start audio call</source>
+ <translation>Começar chamada de áudio</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="354"/>
+ <source>Clear conversation</source>
+ <translation>Limpar conversação</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="361"/>
+ <source>Remove contact</source>
+ <translation>Remover contacto</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="373"/>
+ <source>Block contact</source>
+ <translation>Bloquear contacto</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="384"/>
+ <source>Copy number</source>
+ <translation>Copiar número</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="561"/>
+ <source>Search your received invitations</source>
+ <translation>Pesquisar os seus convites recebidos</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>Contact me on Jami</source>
+ <translation>Contacte-me no Jami</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>My Id is : </source>
+ <translation>O meu ID é:</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="847"/>
+ <source>%1</source>
+ <comment>%1 is the contact username</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="852"/>
+ <source>%1</source>
+ <comment>%1 is the contact unique identifier</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="675"/>
+ <source>Call incoming from %1</source>
+ <translation>A receber chamada de %1</translation>
+ </message>
+</context>
+<context>
+ <name>DeleteAccountDialog</name>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="35"/>
+ <source>Account deletion</source>
+ <translation>Eliminação de conta</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="58"/>
+ <source>Do you really want to delete the following account?</source>
+ <translation>Tem certeza que quer eliminar a seguinte conta?</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="153"/>
+ <source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
+ <translation>Se esta conta não foi exportada ou adicionada a outro dispositivo, ela será perdida.</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="235"/>
+ <source>Permanently delete account</source>
+ <translation>Eliminar conta permanentemente</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="241"/>
+ <source>Delete</source>
+ <translation>Eliminar</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="278"/>
+ <source>Cancel account deletion</source>
+ <translation>Cancelar eliminação da conta</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="284"/>
+ <source>Cancel</source>
+ <translation>Cancelar</translation>
+ </message>
+</context>
+<context>
+ <name>DeviceItemWidget</name>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulário</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="105"/>
+ <source>Device Id</source>
+ <translation>ID do dispositivo</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="143"/>
+ <source>this device</source>
+ <translation>este dispositivo</translation>
+ </message>
+</context>
+<context>
+ <name>InviteButtonsWidget</name>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="83"/>
+ <source>Accept</source>
+ <translation>Aceitar</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="131"/>
+ <source>Refuse</source>
+ <translation>Recusar</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="179"/>
+ <source>Block</source>
+ <translation>Bloquear</translation>
+ </message>
+</context>
+<context>
+ <name>LinkDeviceDialog</name>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation>Diálogo</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="62"/>
+ <source>Enter your account password</source>
+ <translation>Introduza a palavra-chave da sua conta</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="117"/>
+ <source>Password</source>
+ <translation>Palavra-chave</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="184"/>
+ <source>Ok</source>
+ <translation>OK</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="218"/>
+ <source>Cancel</source>
+ <translation>Cancelar</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="279"/>
+ <source>Exporting account</source>
+ <translation>Exportar a conta</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="402"/>
+ <source>Your PIN is</source>
+ <translation>O seu PIN é</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="432"/>
+ <source>PIN</source>
+ <translation>PIN</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="477"/>
+ <source>This pin and the account password should be entered in your device within 10 minutes.</source>
+ <translation>Este PIN e a palavra-chave devem ser inseridos no seu novo dispositivo nos próximos 10 minutos.</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="553"/>
+ <source>Close</source>
+ <translation>Fechar</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="34"/>
+ <source>Link Another Device</source>
+ <translation>Associar outro dispositivo</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="96"/>
+ <source>Incorrect password</source>
+ <translation>Palavra-chave incorreta</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="110"/>
+ <source>Something went wrong.
+Please try again later.</source>
+ <translation>Algo correu mal.
+Por favor tente de novo mais tarde.</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="83"/>
+ <source>Settings</source>
+ <translation>Configurações</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="94"/>
+ <source>Exit</source>
+ <translation>Sair</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="111"/>
+ <source>About</source>
+ <translation>Sobre</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="435"/>
+ <source>Jami</source>
+ <translation>Jami</translation>
+ </message>
+</context>
+<context>
+ <name>NameRegistrationDialog</name>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="35"/>
+ <source>Set Registered Name</source>
+ <translation>Definir o nome registado</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="163"/>
+ <source>Enter your account password</source>
+ <translation>Introduza a palavra-chave da sua conta</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="244"/>
+ <source>Password text input</source>
+ <translation>Entrada de texto da palavra-chave</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="250"/>
+ <source>Password text entry</source>
+ <translation>Campo de texto da palavra-chave</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="256"/>
+ <source>Password</source>
+ <translation>Palavra-chave</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="323"/>
+ <source>Register</source>
+ <translation>Registar</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="357"/>
+ <source>Cancel</source>
+ <translation>Cancelar</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="424"/>
+ <source>Registering Name</source>
+ <translation>Registar o nome</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="548"/>
+ <source>Something went wrong</source>
+ <translation>Algo correu mal</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="618"/>
+ <source>Close</source>
+ <translation>Fechar</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="82"/>
+ <source>Incorrect password</source>
+ <translation>Palavra-chave incorreta</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="85"/>
+ <source>Network error</source>
+ <translation>Erro de rede</translation>
+ </message>
+</context>
+<context>
+ <name>NewWizardWidget</name>
+ <message>
+ <location filename="../newwizardwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulário</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="141"/>
+ <source>Welcome Label</source>
+ <translation>Rótulo de Boas-Vindas</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="147"/>
+ <source> Welcome to</source>
+ <translation>Bem-vindo(a) ao</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="185"/>
+ <source>Welcome Logo</source>
+ <translation>Logótipo de Boas-Vindas</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="239"/>
+ <source>Create Jami account button</source>
+ <translation>Botão para criar conta Jami</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="245"/>
+ <source>Push button for Jami account creation start trigger</source>
+ <translation>Botão para acionar a criação da conta do Jami</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="251"/>
+ <source>Create a Jami account</source>
+ <translation>Criar uma conta Jami</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="282"/>
+ <source>Link device button</source>
+ <translation>Botão para associar dispositivo</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="288"/>
+ <source>Push button for device linkage start trigger</source>
+ <translation>Botão para acionar a associação de dispositivo</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="291"/>
+ <source>Link this device to an account</source>
+ <translation>Associar este dispositivo a uma conta</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="328"/>
+ <source>Create Jami SIP account button</source>
+ <translation>Botão para criar a conta SIP Jami</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="334"/>
+ <source>Push button for Jami SIP account creation start trigger</source>
+ <translation>Botão para acionar a criação da conta SIP Jami</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="340"/>
+ <source>Create a SIP account</source>
+ <translation>Criar uma conta SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="405"/>
+ <source>Link this device to an existing account</source>
+ <translation>Associar este dispositivo a uma conta existente</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="469"/>
+ <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">To link this device to another account, you first </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">need to obtain a PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> code. To generate the PIN code:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Account management setting</span><span style=" font-size:14px;"> of a previous device</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choose the </span><span style=" font-size:14px; font-weight:600;">Jami account</span><span style=" font-size:14px;"> you want to use</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Devices</span><span style=" font-size:14px;"> tab</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Select </span><span style=" font-size:14px; font-weight:600;">Add a device</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">You will get the necessary PIN to complete this form. The PIN is only valid for </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutes</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></source>
+ <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">Para associar este dispositivo a outra conta, primeiro </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">tem de obter um código PIN.</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">Para gerar o código PIN:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Aceda à </span><span style=" font-size:14px; font-weight:600;">configuração de gestão de conta</span><span style=" font-size:14px;"> de um dispositivo anterior</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Escolha a </span><span style=" font-size:14px; font-weight:600;">conta Jami</span><span style=" font-size:14px;"> quer quer usar</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Aceda à aba </span><span style=" font-size:14px; font-weight:600;">Dispositivos</span><span style=" font-size:14px;"> </span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Selecione </span><span style=" font-size:14px; font-weight:600;">Adicionar dispositivo</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">Irá obter o PIN necessário para completar este formulário. O código PIN é válido apenas durante </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutos</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="531"/>
+ <source>Enter your pin:</source>
+ <translation>Introduza o seu PIN:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="599"/>
+ <source>Or import a file:</source>
+ <translation>Ou importe de um ficheiro:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="626"/>
+ <source>Link from exported account archive file</source>
+ <translation>Link do ficheiro da conta exportada</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="629"/>
+ <location filename="../newwizardwidget.cpp" line="83"/>
+ <location filename="../newwizardwidget.cpp" line="218"/>
+ <source>(None)</source>
+ <translation>(nenhum)</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="705"/>
+ <source>Password:</source>
+ <translation>Palavra-chave:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="799"/>
+ <location filename="../newwizardwidget.ui" line="1586"/>
+ <source>Profile</source>
+ <translation>Perfil</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="953"/>
+ <location filename="../newwizardwidget.ui" line="1767"/>
+ <source>Profile name</source>
+ <translation>Nome do perfil</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1027"/>
+ <source>Account</source>
+ <translation>Conta</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1136"/>
+ <source>Register your username.
+This will reserve the username so that only you can use it.
+Your friends will be able to call you with your usename
+instead of using your ID.</source>
+ <translation>Registe o seu nome de utilizador.
+Isto irá reservar o nome de utilizador para que apenas você o possa utilizar.
+Os seus amigos serão capazes de contactá-lo com seu nome de
+utilizador em vez do seu ID.</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1142"/>
+ <source>Public username checkbox</source>
+ <translation>Caixa de visto para o nome público de utilizador</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1145"/>
+ <source>Checkbox selecting if the user wants a public username</source>
+ <translation>Caixa de visto para indicar se o utilizador quer um nome público de utilizador</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1148"/>
+ <source>Register public username</source>
+ <translation>Registar nome de utilizador público</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1367"/>
+ <source>Public username edit</source>
+ <translation>Editar nome público de utilizador</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1373"/>
+ <source>Choose your username</source>
+ <translation>Escolha o seu nome de utilizador</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1289"/>
+ <source>Password text input</source>
+ <translation>Entrada de texto da palavra-chave</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1295"/>
+ <source>Password text entry</source>
+ <translation>Campo de texto da palavra-chave</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1301"/>
+ <location filename="../newwizardwidget.ui" line="2213"/>
+ <source>Password</source>
+ <translation>Palavra-chave</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1211"/>
+ <location filename="../newwizardwidget.ui" line="1217"/>
+ <source>Password confirmation text input</source>
+ <translation>Campo de texto para confirmação da palavra-chave</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1223"/>
+ <source>Confirm password</source>
+ <translation>Confirmar palavra-chave</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1814"/>
+ <source>SIP Account</source>
+ <translation>Conta SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1973"/>
+ <source>SIP Server edit</source>
+ <translation>Editar servidor SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1979"/>
+ <source>Server</source>
+ <translation>Servidor</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2045"/>
+ <source>SIP proxy input</source>
+ <translation>Entrada do proxy SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2051"/>
+ <source>SIP proxy text entry</source>
+ <translation>Campo de texto do proxy SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2057"/>
+ <source>Proxy</source>
+ <translation>Proxy</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2123"/>
+ <source>SIP username input</source>
+ <translation>Entrada de nome de utilizador SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2129"/>
+ <source>SIP Password text entry</source>
+ <translation>Campo de texto da palavra-chave SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2135"/>
+ <source>Username</source>
+ <translation>Nome de utilizador</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2201"/>
+ <location filename="../newwizardwidget.ui" line="2207"/>
+ <source>SIP Password text input</source>
+ <translation>Entrada de texto da palavra-chave SIP</translation>
+ </message>
+ <message utf8="true">
+ <location filename="../newwizardwidget.ui" line="2282"/>
+ <source>Generating your Jami account…</source>
+ <translation>A gerar a sua conta Jami...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2356"/>
+ <source>Previous page button</source>
+ <translation>Botão de página anterior</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2362"/>
+ <source>push button to access previous page of wizard</source>
+ <translation>Botão de pressionar para aceder à página anterior do assistente</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2365"/>
+ <source>Previous</source>
+ <translation>Anterior</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2396"/>
+ <source>Cancel account create/link</source>
+ <translation>Cancelar a criação de conta / associação</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2402"/>
+ <source>push button to cancel account creation or linking</source>
+ <translation>botão para cancelar criação de conta ou associação</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2405"/>
+ <source>Back</source>
+ <translation>Voltar</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2442"/>
+ <source>Next page Button</source>
+ <translation>Botão de página seguinte</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2448"/>
+ <source>Push button to access next page of wizard</source>
+ <translation>Botão de pressionar para aceder à página seguinte do assistente</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2451"/>
+ <source>Next</source>
+ <translation>Próximo</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="75"/>
+ <source>Open File</source>
+ <translation>Abrir Ficheiro</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="77"/>
+ <source>Jami archive files (*.gz); All files (*)</source>
+ <translation>Ficheiros de arquivo Jami (*.gz); Todos os ficheiros (*)</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="123"/>
+ <source>Your account needs to be migrated. Enter your password.</source>
+ <translation>A sua conta tem de ser migrada. Introduza a sua palavra-chave.</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="419"/>
+ <source>Migrating your Jami account...</source>
+ <translation>A migrar a sua conta Jami...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="412"/>
+ <source>Importing account archive...</source>
+ <translation>A importar ficheiro da conta...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="404"/>
+ <source>Generating your Jami account...</source>
+ <translation>A gerar a sua conta Jami...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="422"/>
+ <source>Generating your SIP account...</source>
+ <translation>A gerar a sua conta SIP...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="533"/>
+ <source>Error creating account</source>
+ <translation>Erro ao criar a conta</translation>
+ </message>
+</context>
+<context>
+ <name>PasswordDialog</name>
+ <message>
+ <location filename="../passworddialog.ui" line="32"/>
+ <source>Change Account Password</source>
+ <translation>Alterar a palavra-chave da conta</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="97"/>
+ <source>Enter Current Password</source>
+ <translation>Introduzir a palavra-chave atual</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="169"/>
+ <source>Enter New Password</source>
+ <translation>Introduzir a palavra-chave nova</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="190"/>
+ <source>Confirm New Password</source>
+ <translation>Confirmar a palavra-chave nova</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="247"/>
+ <source>Confirm</source>
+ <translation>Confirmar</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="290"/>
+ <source>Cancel</source>
+ <translation>Cancelar</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="143"/>
+ <source>Current Password Incorrect</source>
+ <translation>A palavra-chave atual está incorreta</translation>
+ </message>
+</context>
+<context>
+ <name>PhotoBoothDialog</name>
+ <message>
+ <location filename="../photoboothdialog.ui" line="14"/>
+ <source>Photobooth</source>
+ <translation>Foto instantânea</translation>
+ </message>
+</context>
+<context>
+ <name>PhotoboothWidget</name>
+ <message>
+ <location filename="../photoboothwidget.ui" line="20"/>
+ <source>Form</source>
+ <translation>Formulário</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.ui" line="120"/>
+ <source>Photobooth display</source>
+ <translation>Mostrar foto instantânea</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="92"/>
+ <source>Choose File</source>
+ <translation>Escolher Ficheiro</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="94"/>
+ <source>Image Files (*.jpg *.jpeg *.png)</source>
+ <translation>Ficheiros de imagem (*.jpg *.jpeg *.png)</translation>
+ </message>
+</context>
+<context>
+ <name>PrivateBridging</name>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Choose File</source>
+ <translation>Escolher Ficheiro</translation>
+ </message>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Files (*)</source>
+ <translation>Ficheiros (*)</translation>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../utils.cpp" line="183"/>
+ <source>No default mail client found</source>
+ <translation>Cliente de e-mail padrão não encontrado</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="43"/>
+ <location filename="../deviceitemwidget.cpp" line="85"/>
+ <source>Edit Device Name</source>
+ <translation>Editar Nome do Dispositivo</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="44"/>
+ <source>Unlink Device From Account</source>
+ <translation>Desassociar Dispositivo da Conta</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="80"/>
+ <source>Save new device name</source>
+ <translation>Guardar o novo nome do dispositivo</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.cpp" line="39"/>
+ <source>Add as contact</source>
+ <translation>Adicionar como contacto</translation>
+ </message>
+</context>
+<context>
+ <name>RingButton</name>
+ <message>
+ <location filename="../ringbutton.ui" line="140"/>
+ <source>Select folder</source>
+ <translation>Select folder</translation>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <location filename="../settingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulário</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="141"/>
+ <source>Settings</source>
+ <translation>Configurações</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="229"/>
+ <source>Account</source>
+ <translation>Conta</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="267"/>
+ <location filename="../settingswidget.ui" line="503"/>
+ <source>General</source>
+ <translation>Geral</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="305"/>
+ <location filename="../settingswidget.ui" line="3416"/>
+ <source>Audio / Video</source>
+ <translation>Áudio / vídeo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="542"/>
+ <source>System</source>
+ <translation>Sistema</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="610"/>
+ <source>Enable desktop notifications</source>
+ <translation>Ativar notificações no ambiente de trabalho</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="653"/>
+ <source>Keep minimized on close</source>
+ <translation>Manter minimizado ao fechar</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="678"/>
+ <source>Download folder</source>
+ <translation>Pasta de descarregamentos</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="811"/>
+ <source>Save in</source>
+ <translation>Gravar em</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="904"/>
+ <source>Always Recording</source>
+ <translation>Gravar sempre</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="943"/>
+ <source>Updates</source>
+ <translation>Atualizações</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1008"/>
+ <source>Check for updates automatically every</source>
+ <translation>Verificar se existem atualizações a cada</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1032"/>
+ <source>Interval between update checks in days selector</source>
+ <translation>Seletor do intervalo em dias entre verificação de atualizações</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1038"/>
+ <source> days</source>
+ <translation>dias</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1081"/>
+ <source>Check for updates now button</source>
+ <translation>Botão para verificar atualizações agora</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1084"/>
+ <source>Check for updates now</source>
+ <translation>Verificar se existem atualizações</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3027"/>
+ <source>Password</source>
+ <translation>Palavra-chave</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1418"/>
+ <location filename="../settingswidget.ui" line="2729"/>
+ <source>Enable</source>
+ <translation>Ativar</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="607"/>
+ <source>toggle enable notifications</source>
+ <translation>alternar ativar notificações</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="650"/>
+ <source>Toggle keep minimized on close</source>
+ <translation>Alternar manter minimizado ao fechar</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="764"/>
+ <source>Call Recordings</source>
+ <translation>Gravações de chamadas</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1005"/>
+ <source>Toggle automatic updates</source>
+ <translation>Alternar atualizações automáticas</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1231"/>
+ <source>Jami Account</source>
+ <translation>Conta Jami</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1453"/>
+ <location filename="../settingswidget.ui" line="2761"/>
+ <source>Profile</source>
+ <translation>Perfil</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1567"/>
+ <location filename="../settingswidget.ui" line="2875"/>
+ <source>Identity</source>
+ <translation>Identificação</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1614"/>
+ <source>Id</source>
+ <translation>ID</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1673"/>
+ <source>Registered name</source>
+ <translation>Utilizador registado</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1721"/>
+ <source>Type here to register a username</source>
+ <translation>Escreva aqui para registar um nome</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1755"/>
+ <source>Register</source>
+ <translation>Registar</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1827"/>
+ <source>Change Password</source>
+ <translation>Alterar palavra-chave</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1868"/>
+ <source>Export Account</source>
+ <translation>Exportar conta</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1909"/>
+ <location filename="../settingswidget.ui" line="3089"/>
+ <source>Delete Account</source>
+ <translation>Eliminar conta</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1973"/>
+ <source>Linked Devices</source>
+ <translation>Dispositivos associados</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2078"/>
+ <source>Link Another Device</source>
+ <translation>Associar outro dispositivo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2142"/>
+ <source>Banned Contacts</source>
+ <translation>Contactos Banidos</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3788"/>
+ <source>Format</source>
+ <translation>Formato</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3831"/>
+ <source>Video device framerate selector</source>
+ <translation>Seletor de taxa de fotogramas do vídeo do dispositivo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3967"/>
+ <source>Preview unavailable</source>
+ <translation>Pré-visualização não disponível</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2359"/>
+ <location filename="../settingswidget.ui" line="3187"/>
+ <source>Advanced Account Settings</source>
+ <translation>Configurações avançadas de conta </translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2554"/>
+ <source>SIP Account</source>
+ <translation>Conta SIP</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2925"/>
+ <source>Username</source>
+ <translation>Nome de utilizador</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2958"/>
+ <source>Hostname</source>
+ <translation>Servidor</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2991"/>
+ <source>Proxy</source>
+ <translation>Proxy</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3461"/>
+ <source>Audio</source>
+ <translation>Áudio</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3511"/>
+ <source>Microphone</source>
+ <translation>Microfone</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3551"/>
+ <source>Audio input device selector</source>
+ <translation>Seletor de dispositivo de entrada de áudio</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3585"/>
+ <source>Output Device</source>
+ <translation>Dispositivo de Saída</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3625"/>
+ <source>Choose the output device</source>
+ <translation>Escolha o dispositivo de saída</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3682"/>
+ <source>Video</source>
+ <translation>Vídeo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3720"/>
+ <source>Device</source>
+ <translation>Dispositivo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3766"/>
+ <source>Video device selector</source>
+ <translation>Seletor de dispositivo de vídeo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="459"/>
+ <source>A registered name should not have any spaces and must be at least three letters long</source>
+ <translation>Um nome registado não deve ter espaços e deve ter no mínimo 3 caracteres</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="466"/>
+ <source>This name is already taken</source>
+ <translation>Este nome já foi escolhido por outra pessoa</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="92"/>
+ <location filename="../settingswidget.cpp" line="110"/>
+ <source>Enter an alias</source>
+ <translation>Introduza um apelido</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="473"/>
+ <source>Register this name</source>
+ <translation>Registar este nome</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="550"/>
+ <source>Remove Device</source>
+ <translation>Remover dispositivo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="551"/>
+ <source>Enter this account's password to confirm the removal of this device</source>
+ <translation>Introduza a palavra-chave desta conta para confirmar a remoção deste dispositivo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="558"/>
+ <source>Are you sure you wish to remove this device?</source>
+ <translation>Tem a certeza que quer remover este dispositivo?</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="589"/>
+ <source>Export Account Here</source>
+ <translation>Exportar conta aqui</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="887"/>
+ <source>Select A Folder For Your Downloads</source>
+ <translation>Selecionar uma pasta para os seus descarregamentos</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="904"/>
+ <source>Select A Folder For Your Recordings</source>
+ <translation>Selecionar uma pasta para as suas gravações</translation>
+ </message>
+</context>
+<context>
+ <name>VideoOverlay</name>
+ <message>
+ <location filename="../videooverlay.ui" line="419"/>
+ <source>Call on Hold</source>
+ <translation>Chamada em Espera</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="89"/>
+ <source>Hold / Unhold</source>
+ <translation>Esperar / Retomar</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="124"/>
+ <source>Chat</source>
+ <translation>Conversa</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="162"/>
+ <source>Mute Mic</source>
+ <translation>Desativar Microfone</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="244"/>
+ <source>Record call</source>
+ <translation>Gravar chamada</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="325"/>
+ <source>Name label</source>
+ <translation>Rótulo do nome</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="390"/>
+ <source>Time elapsed</source>
+ <translation>Tempo decorrido</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="393"/>
+ <source>00:00</source>
+ <translation>00:00</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="57"/>
+ <source>Hangup</source>
+ <translation>Desligar</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="203"/>
+ <source>Mute Video</source>
+ <translation>Tirar Som ao Vídeo</translation>
+ </message>
+</context>
+<context>
+ <name>VideoView</name>
+ <message>
+ <location filename="../videoview.cpp" line="271"/>
+ <source>Share entire screen</source>
+ <translation>Partilhar ecrã inteiro</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="274"/>
+ <source>Share screen area</source>
+ <translation>Partilhar área do ecrã</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="281"/>
+ <source>Share file</source>
+ <translation>Partilhar ficheiro</translation>
+ </message>
+</context>
+</TS>
\ No newline at end of file
diff --git a/translations/ring_client_windows_ro.ts b/translations/ring_client_windows_ro.ts
new file mode 100644
index 0000000..5271bdf
--- /dev/null
+++ b/translations/ring_client_windows_ro.ts
@@ -0,0 +1,1589 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="ro" version="2.0">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../aboutdialog.ui" line="435"/>
+ <location filename="../aboutdialog.ui" line="465"/>
+ <source>About</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="462"/>
+ <source>about button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="478"/>
+ <source>credits button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="481"/>
+ <source>Credits</source>
+ <translation>Credite</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="547"/>
+ <source>Free as in Freedom</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="563"/>
+ <source>The Microsoft Windows client for Jami.
+Jami is a secured and distributed communication software.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="32"/>
+ <source>version</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="39"/>
+ <source>Created by:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="73"/>
+ <source>Artwork by:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="77"/>
+ <source>Based on the SFLPhone project</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AccountItemDelegate</name>
+ <message>
+ <location filename="../accountitemdelegate.cpp" line="91"/>
+ <source>Add Account</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSIPSettingsWidget</name>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="55"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="102"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="130"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="191"/>
+ <source>Connectivity</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="281"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="293"/>
+ <source>Use STUN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="317"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="329"/>
+ <source>Use TURN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="359"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="391"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="423"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="464"/>
+ <source>Media</source>
+ <translation>Media</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="515"/>
+ <source>Enable Video</source>
+ <translation>Activează video</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="539"/>
+ <source>Video Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="692"/>
+ <source>Audio Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="142"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="151"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSettingsWidget</name>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="61"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="108"/>
+ <source>Allow Calls From Untrusted Peers</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="133"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="161"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="188"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="225"/>
+ <source>Name Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="275"/>
+ <source>Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="351"/>
+ <source>OpenDHT Configuration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="398"/>
+ <source>Enable Proxy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="454"/>
+ <source>Bootstrap</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="530"/>
+ <source>Security</source>
+ <translation>Seuritate</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="571"/>
+ <source>Private Key Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="583"/>
+ <source>User Certificate</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="622"/>
+ <source>Private Key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="634"/>
+ <source>CA Certificate</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="766"/>
+ <source>Connectivity</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="868"/>
+ <source>Use STUN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="856"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="892"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="904"/>
+ <source>Use TURN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="934"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="966"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="998"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1039"/>
+ <source>Media</source>
+ <translation>Media</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1090"/>
+ <source>Enable Video</source>
+ <translation>Activează video</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1267"/>
+ <source>Audio Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1114"/>
+ <source>Video Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="181"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AnimatedOverlay</name>
+ <message>
+ <location filename="../animatedoverlay.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>BannedItemWidget</name>
+ <message>
+ <location filename="../banneditemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="80"/>
+ <source>name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="104"/>
+ <source>id</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>CallWidget</name>
+ <message>
+ <location filename="../callwidget.ui" line="184"/>
+ <source>Show conversations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="187"/>
+ <source>Conversations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="368"/>
+ <source>Search contact text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="653"/>
+ <source>Jami is free software for universal communication which respects the freedoms and privacy of its users.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="693"/>
+ <source>
+ This is your ID.
+Copy and share it with your friends!
+ </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="806"/>
+ <source>Show ring ID QR code</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="857"/>
+ <source>Share ring ID button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="915"/>
+ <source>Double-click to copy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="956"/>
+ <source>Error while generating QR Code</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1184"/>
+ <location filename="../callwidget.ui" line="1434"/>
+ <source>best name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1208"/>
+ <source>best Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1734"/>
+ <source>Back to homepage button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1943"/>
+ <source>Add to contacts</source>
+ <translation>Adaugă la contacte</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="202"/>
+ <source>Show invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="205"/>
+ <source>Invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="377"/>
+ <location filename="../callwidget.cpp" line="552"/>
+ <source>Find a new or existing contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1444"/>
+ <source>Wants to talk to you!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1517"/>
+ <source>Answer incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1589"/>
+ <source>Ignore incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1539"/>
+ <source>Answer</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1617"/>
+ <source>Ignore</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1280"/>
+ <source>Cancel outgoing call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1305"/>
+ <source>Cancel</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="332"/>
+ <source>Start video call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="343"/>
+ <source>Start audio call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="354"/>
+ <source>Clear conversation</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="361"/>
+ <source>Remove contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="373"/>
+ <source>Block contact</source>
+ <translation>Blocați contactul</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="384"/>
+ <source>Copy number</source>
+ <translation>Copiați numărul</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="561"/>
+ <source>Search your received invitations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>Contact me on Jami</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>My Id is : </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="847"/>
+ <source>%1</source>
+ <comment>%1 is the contact username</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="852"/>
+ <source>%1</source>
+ <comment>%1 is the contact unique identifier</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="675"/>
+ <source>Call incoming from %1</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>DeleteAccountDialog</name>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="35"/>
+ <source>Account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="58"/>
+ <source>Do you really want to delete the following account?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="153"/>
+ <source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="235"/>
+ <source>Permanently delete account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="241"/>
+ <source>Delete</source>
+ <translation>Șterge</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="278"/>
+ <source>Cancel account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="284"/>
+ <source>Cancel</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>DeviceItemWidget</name>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="105"/>
+ <source>Device Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="143"/>
+ <source>this device</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>InviteButtonsWidget</name>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="83"/>
+ <source>Accept</source>
+ <translation>Acceptă</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="131"/>
+ <source>Refuse</source>
+ <translation>Refuzați</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="179"/>
+ <source>Block</source>
+ <translation>Blochează</translation>
+ </message>
+</context>
+<context>
+ <name>LinkDeviceDialog</name>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="62"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="117"/>
+ <source>Password</source>
+ <translation>Parola</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="184"/>
+ <source>Ok</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="218"/>
+ <source>Cancel</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="279"/>
+ <source>Exporting account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="402"/>
+ <source>Your PIN is</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="432"/>
+ <source>PIN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="477"/>
+ <source>This pin and the account password should be entered in your device within 10 minutes.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="553"/>
+ <source>Close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="34"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="96"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="110"/>
+ <source>Something went wrong.
+Please try again later.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="83"/>
+ <source>Settings</source>
+ <translation>Setari</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="94"/>
+ <source>Exit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="111"/>
+ <source>About</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="435"/>
+ <source>Jami</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>NameRegistrationDialog</name>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="35"/>
+ <source>Set Registered Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="163"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="244"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="250"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="256"/>
+ <source>Password</source>
+ <translation>Parola</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="323"/>
+ <source>Register</source>
+ <translation>Registrare</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="357"/>
+ <source>Cancel</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="424"/>
+ <source>Registering Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="548"/>
+ <source>Something went wrong</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="618"/>
+ <source>Close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="82"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="85"/>
+ <source>Network error</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>NewWizardWidget</name>
+ <message>
+ <location filename="../newwizardwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="141"/>
+ <source>Welcome Label</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="147"/>
+ <source> Welcome to</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="185"/>
+ <source>Welcome Logo</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="239"/>
+ <source>Create Jami account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="245"/>
+ <source>Push button for Jami account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="251"/>
+ <source>Create a Jami account</source>
+ <translation>Creați un cont Jami</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="282"/>
+ <source>Link device button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="288"/>
+ <source>Push button for device linkage start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="291"/>
+ <source>Link this device to an account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="328"/>
+ <source>Create Jami SIP account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="334"/>
+ <source>Push button for Jami SIP account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="340"/>
+ <source>Create a SIP account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="405"/>
+ <source>Link this device to an existing account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="469"/>
+ <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">To link this device to another account, you first </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">need to obtain a PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> code. To generate the PIN code:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Account management setting</span><span style=" font-size:14px;"> of a previous device</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choose the </span><span style=" font-size:14px; font-weight:600;">Jami account</span><span style=" font-size:14px;"> you want to use</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Devices</span><span style=" font-size:14px;"> tab</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Select </span><span style=" font-size:14px; font-weight:600;">Add a device</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">You will get the necessary PIN to complete this form. The PIN is only valid for </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutes</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="531"/>
+ <source>Enter your pin:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="599"/>
+ <source>Or import a file:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="626"/>
+ <source>Link from exported account archive file</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="629"/>
+ <location filename="../newwizardwidget.cpp" line="83"/>
+ <location filename="../newwizardwidget.cpp" line="218"/>
+ <source>(None)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="705"/>
+ <source>Password:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="799"/>
+ <location filename="../newwizardwidget.ui" line="1586"/>
+ <source>Profile</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="953"/>
+ <location filename="../newwizardwidget.ui" line="1767"/>
+ <source>Profile name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1027"/>
+ <source>Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1136"/>
+ <source>Register your username.
+This will reserve the username so that only you can use it.
+Your friends will be able to call you with your usename
+instead of using your ID.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1142"/>
+ <source>Public username checkbox</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1145"/>
+ <source>Checkbox selecting if the user wants a public username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1148"/>
+ <source>Register public username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1367"/>
+ <source>Public username edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1373"/>
+ <source>Choose your username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1289"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1295"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1301"/>
+ <location filename="../newwizardwidget.ui" line="2213"/>
+ <source>Password</source>
+ <translation>Parola</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1211"/>
+ <location filename="../newwizardwidget.ui" line="1217"/>
+ <source>Password confirmation text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1223"/>
+ <source>Confirm password</source>
+ <translation>Confirmă parola</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1814"/>
+ <source>SIP Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1973"/>
+ <source>SIP Server edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1979"/>
+ <source>Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2045"/>
+ <source>SIP proxy input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2051"/>
+ <source>SIP proxy text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2057"/>
+ <source>Proxy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2123"/>
+ <source>SIP username input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2129"/>
+ <source>SIP Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2135"/>
+ <source>Username</source>
+ <translation>Nume de utilizator</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2201"/>
+ <location filename="../newwizardwidget.ui" line="2207"/>
+ <source>SIP Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message utf8="true">
+ <location filename="../newwizardwidget.ui" line="2282"/>
+ <source>Generating your Jami account…</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2356"/>
+ <source>Previous page button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2362"/>
+ <source>push button to access previous page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2365"/>
+ <source>Previous</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2396"/>
+ <source>Cancel account create/link</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2402"/>
+ <source>push button to cancel account creation or linking</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2405"/>
+ <source>Back</source>
+ <translation>Înapoi</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2442"/>
+ <source>Next page Button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2448"/>
+ <source>Push button to access next page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2451"/>
+ <source>Next</source>
+ <translation>Înainte</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="75"/>
+ <source>Open File</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="77"/>
+ <source>Jami archive files (*.gz); All files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="123"/>
+ <source>Your account needs to be migrated. Enter your password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="419"/>
+ <source>Migrating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="412"/>
+ <source>Importing account archive...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="404"/>
+ <source>Generating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="422"/>
+ <source>Generating your SIP account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="533"/>
+ <source>Error creating account</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PasswordDialog</name>
+ <message>
+ <location filename="../passworddialog.ui" line="32"/>
+ <source>Change Account Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="97"/>
+ <source>Enter Current Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="169"/>
+ <source>Enter New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="190"/>
+ <source>Confirm New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="247"/>
+ <source>Confirm</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="290"/>
+ <source>Cancel</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="143"/>
+ <source>Current Password Incorrect</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PhotoBoothDialog</name>
+ <message>
+ <location filename="../photoboothdialog.ui" line="14"/>
+ <source>Photobooth</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PhotoboothWidget</name>
+ <message>
+ <location filename="../photoboothwidget.ui" line="20"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.ui" line="120"/>
+ <source>Photobooth display</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="92"/>
+ <source>Choose File</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="94"/>
+ <source>Image Files (*.jpg *.jpeg *.png)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PrivateBridging</name>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Choose File</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../utils.cpp" line="183"/>
+ <source>No default mail client found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="43"/>
+ <location filename="../deviceitemwidget.cpp" line="85"/>
+ <source>Edit Device Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="44"/>
+ <source>Unlink Device From Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="80"/>
+ <source>Save new device name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.cpp" line="39"/>
+ <source>Add as contact</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>RingButton</name>
+ <message>
+ <location filename="../ringbutton.ui" line="140"/>
+ <source>Select folder</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <location filename="../settingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="141"/>
+ <source>Settings</source>
+ <translation>Setari</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="229"/>
+ <source>Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="267"/>
+ <location filename="../settingswidget.ui" line="503"/>
+ <source>General</source>
+ <translation>General</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="305"/>
+ <location filename="../settingswidget.ui" line="3416"/>
+ <source>Audio / Video</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="542"/>
+ <source>System</source>
+ <translation>Sistem</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="610"/>
+ <source>Enable desktop notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="653"/>
+ <source>Keep minimized on close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="678"/>
+ <source>Download folder</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="811"/>
+ <source>Save in</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="904"/>
+ <source>Always Recording</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="943"/>
+ <source>Updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1008"/>
+ <source>Check for updates automatically every</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1032"/>
+ <source>Interval between update checks in days selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1038"/>
+ <source> days</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1081"/>
+ <source>Check for updates now button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1084"/>
+ <source>Check for updates now</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3027"/>
+ <source>Password</source>
+ <translation>Parola</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1418"/>
+ <location filename="../settingswidget.ui" line="2729"/>
+ <source>Enable</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="607"/>
+ <source>toggle enable notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="650"/>
+ <source>Toggle keep minimized on close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="764"/>
+ <source>Call Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1005"/>
+ <source>Toggle automatic updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1231"/>
+ <source>Jami Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1453"/>
+ <location filename="../settingswidget.ui" line="2761"/>
+ <source>Profile</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1567"/>
+ <location filename="../settingswidget.ui" line="2875"/>
+ <source>Identity</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1614"/>
+ <source>Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1673"/>
+ <source>Registered name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1721"/>
+ <source>Type here to register a username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1755"/>
+ <source>Register</source>
+ <translation>Registrare</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1827"/>
+ <source>Change Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1868"/>
+ <source>Export Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1909"/>
+ <location filename="../settingswidget.ui" line="3089"/>
+ <source>Delete Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1973"/>
+ <source>Linked Devices</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2078"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2142"/>
+ <source>Banned Contacts</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3788"/>
+ <source>Format</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3831"/>
+ <source>Video device framerate selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3967"/>
+ <source>Preview unavailable</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2359"/>
+ <location filename="../settingswidget.ui" line="3187"/>
+ <source>Advanced Account Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2554"/>
+ <source>SIP Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2925"/>
+ <source>Username</source>
+ <translation>Nume de utilizator</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2958"/>
+ <source>Hostname</source>
+ <translation>Hostname</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2991"/>
+ <source>Proxy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3461"/>
+ <source>Audio</source>
+ <translation>Audio</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3511"/>
+ <source>Microphone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3551"/>
+ <source>Audio input device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3585"/>
+ <source>Output Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3625"/>
+ <source>Choose the output device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3682"/>
+ <source>Video</source>
+ <translation>Video</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3720"/>
+ <source>Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3766"/>
+ <source>Video device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="459"/>
+ <source>A registered name should not have any spaces and must be at least three letters long</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="466"/>
+ <source>This name is already taken</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="92"/>
+ <location filename="../settingswidget.cpp" line="110"/>
+ <source>Enter an alias</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="473"/>
+ <source>Register this name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="550"/>
+ <source>Remove Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="551"/>
+ <source>Enter this account's password to confirm the removal of this device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="558"/>
+ <source>Are you sure you wish to remove this device?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="589"/>
+ <source>Export Account Here</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="887"/>
+ <source>Select A Folder For Your Downloads</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="904"/>
+ <source>Select A Folder For Your Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>VideoOverlay</name>
+ <message>
+ <location filename="../videooverlay.ui" line="419"/>
+ <source>Call on Hold</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="89"/>
+ <source>Hold / Unhold</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="124"/>
+ <source>Chat</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="162"/>
+ <source>Mute Mic</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="244"/>
+ <source>Record call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="325"/>
+ <source>Name label</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="390"/>
+ <source>Time elapsed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="393"/>
+ <source>00:00</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="57"/>
+ <source>Hangup</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="203"/>
+ <source>Mute Video</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>VideoView</name>
+ <message>
+ <location filename="../videoview.cpp" line="271"/>
+ <source>Share entire screen</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="274"/>
+ <source>Share screen area</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="281"/>
+ <source>Share file</source>
+ <translation>Distribuie fișierul</translation>
+ </message>
+</context>
+</TS>
\ No newline at end of file
diff --git a/translations/ring_client_windows_ro_RO.ts b/translations/ring_client_windows_ro_RO.ts
new file mode 100644
index 0000000..6a83867
--- /dev/null
+++ b/translations/ring_client_windows_ro_RO.ts
@@ -0,0 +1,1598 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="ro_RO" version="2.0">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../aboutdialog.ui" line="435"/>
+ <location filename="../aboutdialog.ui" line="465"/>
+ <source>About</source>
+ <translation>Despre</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="462"/>
+ <source>about button</source>
+ <translation>butonul Informații</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="478"/>
+ <source>credits button</source>
+ <translation>butonul Merite</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="481"/>
+ <source>Credits</source>
+ <translation>Merite</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="547"/>
+ <source>Free as in Freedom</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="563"/>
+ <source>The Microsoft Windows client for Jami.
+Jami is a secured and distributed communication software.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="32"/>
+ <source>version</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="39"/>
+ <source>Created by:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="73"/>
+ <source>Artwork by:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="77"/>
+ <source>Based on the SFLPhone project</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AccountItemDelegate</name>
+ <message>
+ <location filename="../accountitemdelegate.cpp" line="91"/>
+ <source>Add Account</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSIPSettingsWidget</name>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="55"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="102"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="130"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="191"/>
+ <source>Connectivity</source>
+ <translation>Conectare</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="281"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="293"/>
+ <source>Use STUN</source>
+ <translation>Folosește STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="317"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="329"/>
+ <source>Use TURN</source>
+ <translation>Folosește TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="359"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="391"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="423"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="464"/>
+ <source>Media</source>
+ <translation>Media</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="515"/>
+ <source>Enable Video</source>
+ <translation>Activează Video</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="539"/>
+ <source>Video Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="692"/>
+ <source>Audio Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="142"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation>Fișiere Audio (*.wav *.ogg *.opus *.mp3 *aiff *wma)</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="151"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSettingsWidget</name>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="61"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="108"/>
+ <source>Allow Calls From Untrusted Peers</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="133"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="161"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="188"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="225"/>
+ <source>Name Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="275"/>
+ <source>Address</source>
+ <translation>Adresă</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="351"/>
+ <source>OpenDHT Configuration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="398"/>
+ <source>Enable Proxy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="454"/>
+ <source>Bootstrap</source>
+ <translation>Pornire</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="530"/>
+ <source>Security</source>
+ <translation>Protecție</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="571"/>
+ <source>Private Key Password</source>
+ <translation>Parola cheii private</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="583"/>
+ <source>User Certificate</source>
+ <translation>Certificat de utilizator</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="622"/>
+ <source>Private Key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="634"/>
+ <source>CA Certificate</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="766"/>
+ <source>Connectivity</source>
+ <translation>Conectare</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="868"/>
+ <source>Use STUN</source>
+ <translation>Folosește STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="856"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="892"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="904"/>
+ <source>Use TURN</source>
+ <translation>Folosește TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="934"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="966"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="998"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1039"/>
+ <source>Media</source>
+ <translation>Media</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1090"/>
+ <source>Enable Video</source>
+ <translation>Activează Video</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1267"/>
+ <source>Audio Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1114"/>
+ <source>Video Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="181"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation>Fișiere Audio (*.wav *.ogg *.opus *.mp3 *aiff *wma)</translation>
+ </message>
+</context>
+<context>
+ <name>AnimatedOverlay</name>
+ <message>
+ <location filename="../animatedoverlay.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>BannedItemWidget</name>
+ <message>
+ <location filename="../banneditemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="80"/>
+ <source>name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="104"/>
+ <source>id</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>CallWidget</name>
+ <message>
+ <location filename="../callwidget.ui" line="184"/>
+ <source>Show conversations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="187"/>
+ <source>Conversations</source>
+ <translation>Conversații</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="368"/>
+ <source>Search contact text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="653"/>
+ <source>Jami is free software for universal communication which respects the freedoms and privacy of its users.</source>
+ <translation>Jami este un program liber pentru comunicare universală care respectă libertățile și intimitatea utilizatorilor săi.</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="693"/>
+ <source>
+ This is your ID.
+Copy and share it with your friends!
+ </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="806"/>
+ <source>Show ring ID QR code</source>
+ <translation>Arată Jami ID și codul QR</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="857"/>
+ <source>Share ring ID button</source>
+ <translation>butonul Distribuie Jami ID</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="915"/>
+ <source>Double-click to copy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="956"/>
+ <source>Error while generating QR Code</source>
+ <translation>Eroare la generarea codului QR</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1184"/>
+ <location filename="../callwidget.ui" line="1434"/>
+ <source>best name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1208"/>
+ <source>best Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1734"/>
+ <source>Back to homepage button</source>
+ <translation>butonul Înapoi la pagina Acasă</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1943"/>
+ <source>Add to contacts</source>
+ <translation>Adaugă la contacte</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="202"/>
+ <source>Show invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="205"/>
+ <source>Invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="377"/>
+ <location filename="../callwidget.cpp" line="552"/>
+ <source>Find a new or existing contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1444"/>
+ <source>Wants to talk to you!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1517"/>
+ <source>Answer incoming call button</source>
+ <translation>butonul Răspunde la apel</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1589"/>
+ <source>Ignore incoming call button</source>
+ <translation>butonul Ignoră apelul</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1539"/>
+ <source>Answer</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1617"/>
+ <source>Ignore</source>
+ <translation>Ignoră</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1280"/>
+ <source>Cancel outgoing call</source>
+ <translation>Anulează apelul efectuat</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1305"/>
+ <source>Cancel</source>
+ <translation>Renunță</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="332"/>
+ <source>Start video call</source>
+ <translation>Începe un apel video</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="343"/>
+ <source>Start audio call</source>
+ <translation>Începe un apel audio</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="354"/>
+ <source>Clear conversation</source>
+ <translation>Șterge conversația</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="361"/>
+ <source>Remove contact</source>
+ <translation>Șterge contactul</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="373"/>
+ <source>Block contact</source>
+ <translation>Blochează contactul</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="384"/>
+ <source>Copy number</source>
+ <translation>Copiază numărul</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="561"/>
+ <source>Search your received invitations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>Contact me on Jami</source>
+ <translation>Contactează-mă pe Jami</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>My Id is : </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="847"/>
+ <source>%1</source>
+ <comment>%1 is the contact username</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="852"/>
+ <source>%1</source>
+ <comment>%1 is the contact unique identifier</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="675"/>
+ <source>Call incoming from %1</source>
+ <translation>Apel primit de la %1</translation>
+ </message>
+</context>
+<context>
+ <name>DeleteAccountDialog</name>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="35"/>
+ <source>Account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="58"/>
+ <source>Do you really want to delete the following account?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="153"/>
+ <source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="235"/>
+ <source>Permanently delete account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="241"/>
+ <source>Delete</source>
+ <translation>Șterge</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="278"/>
+ <source>Cancel account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="284"/>
+ <source>Cancel</source>
+ <translation>Renunță</translation>
+ </message>
+</context>
+<context>
+ <name>DeviceItemWidget</name>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="105"/>
+ <source>Device Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="143"/>
+ <source>this device</source>
+ <translation>acest dispozitiv</translation>
+ </message>
+</context>
+<context>
+ <name>InviteButtonsWidget</name>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="83"/>
+ <source>Accept</source>
+ <translation>Acceptă</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="131"/>
+ <source>Refuse</source>
+ <translation>Refuză</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="179"/>
+ <source>Block</source>
+ <translation>Blochează</translation>
+ </message>
+</context>
+<context>
+ <name>LinkDeviceDialog</name>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="62"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="117"/>
+ <source>Password</source>
+ <translation>Parolă</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="184"/>
+ <source>Ok</source>
+ <translation>Ok</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="218"/>
+ <source>Cancel</source>
+ <translation>Renunță</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="279"/>
+ <source>Exporting account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="402"/>
+ <source>Your PIN is</source>
+ <translation>Codul tău PIN e</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="432"/>
+ <source>PIN</source>
+ <translation>PIN</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="477"/>
+ <source>This pin and the account password should be entered in your device within 10 minutes.</source>
+ <translation>Acest cod PIN și parola contului trebuie introduse în dispozitiv în 10 minute.</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="553"/>
+ <source>Close</source>
+ <translation>Închide</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="34"/>
+ <source>Link Another Device</source>
+ <translation>Asociază alt dispozitiv</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="96"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="110"/>
+ <source>Something went wrong.
+Please try again later.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="83"/>
+ <source>Settings</source>
+ <translation>Reglări</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="94"/>
+ <source>Exit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="111"/>
+ <source>About</source>
+ <translation>Despre</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="435"/>
+ <source>Jami</source>
+ <translation>Jami</translation>
+ </message>
+</context>
+<context>
+ <name>NameRegistrationDialog</name>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="35"/>
+ <source>Set Registered Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="163"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="244"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="250"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="256"/>
+ <source>Password</source>
+ <translation>Parolă</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="323"/>
+ <source>Register</source>
+ <translation>Înscrie-te</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="357"/>
+ <source>Cancel</source>
+ <translation>Renunță</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="424"/>
+ <source>Registering Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="548"/>
+ <source>Something went wrong</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="618"/>
+ <source>Close</source>
+ <translation>Închide</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="82"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="85"/>
+ <source>Network error</source>
+ <translation>Eroare de rețea</translation>
+ </message>
+</context>
+<context>
+ <name>NewWizardWidget</name>
+ <message>
+ <location filename="../newwizardwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="141"/>
+ <source>Welcome Label</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="147"/>
+ <source> Welcome to</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="185"/>
+ <source>Welcome Logo</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="239"/>
+ <source>Create Jami account button</source>
+ <translation>butonul Creează un cont Jami</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="245"/>
+ <source>Push button for Jami account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="251"/>
+ <source>Create a Jami account</source>
+ <translation>Creează un cont Jami</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="282"/>
+ <source>Link device button</source>
+ <translation>butonul Asociază dispozitivul</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="288"/>
+ <source>Push button for device linkage start trigger</source>
+ <translation>Apasă butonul pentru a începe asocierea dispozitivului</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="291"/>
+ <source>Link this device to an account</source>
+ <translation>Asociază acest dispozitiv unui cont</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="328"/>
+ <source>Create Jami SIP account button</source>
+ <translation>butonul Creează un cont Jami SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="334"/>
+ <source>Push button for Jami SIP account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="340"/>
+ <source>Create a SIP account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="405"/>
+ <source>Link this device to an existing account</source>
+ <translation>Asociază acest dispozitiv unui cont existent</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="469"/>
+ <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">To link this device to another account, you first </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">need to obtain a PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> code. To generate the PIN code:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Account management setting</span><span style=" font-size:14px;"> of a previous device</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choose the </span><span style=" font-size:14px; font-weight:600;">Jami account</span><span style=" font-size:14px;"> you want to use</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Devices</span><span style=" font-size:14px;"> tab</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Select </span><span style=" font-size:14px; font-weight:600;">Add a device</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">You will get the necessary PIN to complete this form. The PIN is only valid for </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutes</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></source>
+ <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">Pentru a asocia acest dispozitiv unui alt cont, mai întîi </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">trebuie să obții un cod</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> PIN. Pentru a genera codul PIN:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Du-te la </span><span style=" font-size:14px; font-weight:600;">reglările contului</span><span style=" font-size:14px;"> în dispozitivul care conține contul</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Alege </span><span style=" font-size:14px; font-weight:600;">contul Jami</span><span style=" font-size:14px;"> pe care vrei să-l folosești</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Du-te la </span><span style=" font-size:14px; font-weight:600;">pagina</span><span style=" font-size:14px;"> Dispozitive</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Alege </span><span style=" font-size:14px; font-weight:600;">Adaugă un dispozitiv</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">Vei obține codul PIN necesar. Acest PIN e valabil doar </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minute</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="531"/>
+ <source>Enter your pin:</source>
+ <translation>Introdu codul PIN:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="599"/>
+ <source>Or import a file:</source>
+ <translation>Sau importă un fișier:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="626"/>
+ <source>Link from exported account archive file</source>
+ <translation>Asociază din fișierul arhivei contului exportat</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="629"/>
+ <location filename="../newwizardwidget.cpp" line="83"/>
+ <location filename="../newwizardwidget.cpp" line="218"/>
+ <source>(None)</source>
+ <translation>(Niciunul)</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="705"/>
+ <source>Password:</source>
+ <translation>Parolă:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="799"/>
+ <location filename="../newwizardwidget.ui" line="1586"/>
+ <source>Profile</source>
+ <translation>Profil</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="953"/>
+ <location filename="../newwizardwidget.ui" line="1767"/>
+ <source>Profile name</source>
+ <translation>Numele profilului</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1027"/>
+ <source>Account</source>
+ <translation>Cont</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1136"/>
+ <source>Register your username.
+This will reserve the username so that only you can use it.
+Your friends will be able to call you with your usename
+instead of using your ID.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1142"/>
+ <source>Public username checkbox</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1145"/>
+ <source>Checkbox selecting if the user wants a public username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1148"/>
+ <source>Register public username</source>
+ <translation>Înregistrează numele de utilizator public</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1367"/>
+ <source>Public username edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1373"/>
+ <source>Choose your username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1289"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1295"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1301"/>
+ <location filename="../newwizardwidget.ui" line="2213"/>
+ <source>Password</source>
+ <translation>Parolă</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1211"/>
+ <location filename="../newwizardwidget.ui" line="1217"/>
+ <source>Password confirmation text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1223"/>
+ <source>Confirm password</source>
+ <translation>Confirmă parola</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1814"/>
+ <source>SIP Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1973"/>
+ <source>SIP Server edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1979"/>
+ <source>Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2045"/>
+ <source>SIP proxy input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2051"/>
+ <source>SIP proxy text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2057"/>
+ <source>Proxy</source>
+ <translation>Proxy</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2123"/>
+ <source>SIP username input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2129"/>
+ <source>SIP Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2135"/>
+ <source>Username</source>
+ <translation>Nume de Utilizator</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2201"/>
+ <location filename="../newwizardwidget.ui" line="2207"/>
+ <source>SIP Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message utf8="true">
+ <location filename="../newwizardwidget.ui" line="2282"/>
+ <source>Generating your Jami account…</source>
+ <translation>Se creează contul tău Jami...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2356"/>
+ <source>Previous page button</source>
+ <translation>butonul Pagina precedentă</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2362"/>
+ <source>push button to access previous page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2365"/>
+ <source>Previous</source>
+ <translation>Înapoi</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2396"/>
+ <source>Cancel account create/link</source>
+ <translation>Renunță la crearea/asocierea contului</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2402"/>
+ <source>push button to cancel account creation or linking</source>
+ <translation>apasă butonul pentru a renunța la crearea sau asocierea contului</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2405"/>
+ <source>Back</source>
+ <translation>Înapoi</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2442"/>
+ <source>Next page Button</source>
+ <translation>butonul Pagina următoare</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2448"/>
+ <source>Push button to access next page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2451"/>
+ <source>Next</source>
+ <translation>Următorul</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="75"/>
+ <source>Open File</source>
+ <translation>Deschide fișierul</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="77"/>
+ <source>Jami archive files (*.gz); All files (*)</source>
+ <translation>Fișierul arhivei Jami (*.gz); Toate fișierele (*)</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="123"/>
+ <source>Your account needs to be migrated. Enter your password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="419"/>
+ <source>Migrating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="412"/>
+ <source>Importing account archive...</source>
+ <translation>Se importă arhiva contului...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="404"/>
+ <source>Generating your Jami account...</source>
+ <translation>Se creează contul tău Jami...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="422"/>
+ <source>Generating your SIP account...</source>
+ <translation>Se creează contul tău SIP...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="533"/>
+ <source>Error creating account</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PasswordDialog</name>
+ <message>
+ <location filename="../passworddialog.ui" line="32"/>
+ <source>Change Account Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="97"/>
+ <source>Enter Current Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="169"/>
+ <source>Enter New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="190"/>
+ <source>Confirm New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="247"/>
+ <source>Confirm</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="290"/>
+ <source>Cancel</source>
+ <translation>Renunță</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="143"/>
+ <source>Current Password Incorrect</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PhotoBoothDialog</name>
+ <message>
+ <location filename="../photoboothdialog.ui" line="14"/>
+ <source>Photobooth</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PhotoboothWidget</name>
+ <message>
+ <location filename="../photoboothwidget.ui" line="20"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.ui" line="120"/>
+ <source>Photobooth display</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="92"/>
+ <source>Choose File</source>
+ <translation>Alege fișierul</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="94"/>
+ <source>Image Files (*.jpg *.jpeg *.png)</source>
+ <translation>Fișiere Imagine (*.jpg *.jpeg *.png)</translation>
+ </message>
+</context>
+<context>
+ <name>PrivateBridging</name>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Choose File</source>
+ <translation>Alege fișierul</translation>
+ </message>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Files (*)</source>
+ <translation>Fișiere (*)</translation>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../utils.cpp" line="183"/>
+ <source>No default mail client found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="43"/>
+ <location filename="../deviceitemwidget.cpp" line="85"/>
+ <source>Edit Device Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="44"/>
+ <source>Unlink Device From Account</source>
+ <translation>Disociază dispozitivul de cont</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="80"/>
+ <source>Save new device name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.cpp" line="39"/>
+ <source>Add as contact</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>RingButton</name>
+ <message>
+ <location filename="../ringbutton.ui" line="140"/>
+ <source>Select folder</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <location filename="../settingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="141"/>
+ <source>Settings</source>
+ <translation>Reglări</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="229"/>
+ <source>Account</source>
+ <translation>Cont</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="267"/>
+ <location filename="../settingswidget.ui" line="503"/>
+ <source>General</source>
+ <translation>General</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="305"/>
+ <location filename="../settingswidget.ui" line="3416"/>
+ <source>Audio / Video</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="542"/>
+ <source>System</source>
+ <translation>Sistem</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="610"/>
+ <source>Enable desktop notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="653"/>
+ <source>Keep minimized on close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="678"/>
+ <source>Download folder</source>
+ <translation>Dosarul descărcării</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="811"/>
+ <source>Save in</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="904"/>
+ <source>Always Recording</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="943"/>
+ <source>Updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1008"/>
+ <source>Check for updates automatically every</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1032"/>
+ <source>Interval between update checks in days selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1038"/>
+ <source> days</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1081"/>
+ <source>Check for updates now button</source>
+ <translation>butonul Caută actualizări acum</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1084"/>
+ <source>Check for updates now</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3027"/>
+ <source>Password</source>
+ <translation>Parolă</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1418"/>
+ <location filename="../settingswidget.ui" line="2729"/>
+ <source>Enable</source>
+ <translation>Activează</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="607"/>
+ <source>toggle enable notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="650"/>
+ <source>Toggle keep minimized on close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="764"/>
+ <source>Call Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1005"/>
+ <source>Toggle automatic updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1231"/>
+ <source>Jami Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1453"/>
+ <location filename="../settingswidget.ui" line="2761"/>
+ <source>Profile</source>
+ <translation>Profil</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1567"/>
+ <location filename="../settingswidget.ui" line="2875"/>
+ <source>Identity</source>
+ <translation>Identitate</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1614"/>
+ <source>Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1673"/>
+ <source>Registered name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1721"/>
+ <source>Type here to register a username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1755"/>
+ <source>Register</source>
+ <translation>Înscrie-te</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1827"/>
+ <source>Change Password</source>
+ <translation>Schimbă Parola</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1868"/>
+ <source>Export Account</source>
+ <translation>Exportă Contul</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1909"/>
+ <location filename="../settingswidget.ui" line="3089"/>
+ <source>Delete Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1973"/>
+ <source>Linked Devices</source>
+ <translation>Dispozitive asociate</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2078"/>
+ <source>Link Another Device</source>
+ <translation>Asociază alt dispozitiv</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2142"/>
+ <source>Banned Contacts</source>
+ <translation>Contacte Blocate</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3788"/>
+ <source>Format</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3831"/>
+ <source>Video device framerate selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3967"/>
+ <source>Preview unavailable</source>
+ <translation>Previzualizare indisponibilă</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2359"/>
+ <location filename="../settingswidget.ui" line="3187"/>
+ <source>Advanced Account Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2554"/>
+ <source>SIP Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2925"/>
+ <source>Username</source>
+ <translation>Nume de Utilizator</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2958"/>
+ <source>Hostname</source>
+ <translation>Numele serverului</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2991"/>
+ <source>Proxy</source>
+ <translation>Proxy</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3461"/>
+ <source>Audio</source>
+ <translation>Audio</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3511"/>
+ <source>Microphone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3551"/>
+ <source>Audio input device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3585"/>
+ <source>Output Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3625"/>
+ <source>Choose the output device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3682"/>
+ <source>Video</source>
+ <translation>Video</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3720"/>
+ <source>Device</source>
+ <translation>Dispozitiv</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3766"/>
+ <source>Video device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="459"/>
+ <source>A registered name should not have any spaces and must be at least three letters long</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="466"/>
+ <source>This name is already taken</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="92"/>
+ <location filename="../settingswidget.cpp" line="110"/>
+ <source>Enter an alias</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="473"/>
+ <source>Register this name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="550"/>
+ <source>Remove Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="551"/>
+ <source>Enter this account's password to confirm the removal of this device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="558"/>
+ <source>Are you sure you wish to remove this device?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="589"/>
+ <source>Export Account Here</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="887"/>
+ <source>Select A Folder For Your Downloads</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="904"/>
+ <source>Select A Folder For Your Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>VideoOverlay</name>
+ <message>
+ <location filename="../videooverlay.ui" line="419"/>
+ <source>Call on Hold</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="89"/>
+ <source>Hold / Unhold</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="124"/>
+ <source>Chat</source>
+ <translation>Discuție</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="162"/>
+ <source>Mute Mic</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="244"/>
+ <source>Record call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="325"/>
+ <source>Name label</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="390"/>
+ <source>Time elapsed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="393"/>
+ <source>00:00</source>
+ <translation>00:00</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="57"/>
+ <source>Hangup</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="203"/>
+ <source>Mute Video</source>
+ <translation>Video fără sonor</translation>
+ </message>
+</context>
+<context>
+ <name>VideoView</name>
+ <message>
+ <location filename="../videoview.cpp" line="271"/>
+ <source>Share entire screen</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="274"/>
+ <source>Share screen area</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="281"/>
+ <source>Share file</source>
+ <translation>Distribuie fișierul</translation>
+ </message>
+</context>
+</TS>
\ No newline at end of file
diff --git a/translations/ring_client_windows_ru.ts b/translations/ring_client_windows_ru.ts
new file mode 100644
index 0000000..1c18290
--- /dev/null
+++ b/translations/ring_client_windows_ru.ts
@@ -0,0 +1,1602 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="ru" version="2.0">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../aboutdialog.ui" line="435"/>
+ <location filename="../aboutdialog.ui" line="465"/>
+ <source>About</source>
+ <translation>О программе</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="462"/>
+ <source>about button</source>
+ <translation>о кнопке </translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="478"/>
+ <source>credits button</source>
+ <translation>кнопка кредитов</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="481"/>
+ <source>Credits</source>
+ <translation>Благодарности</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="547"/>
+ <source>Free as in Freedom</source>
+ <translation>Свобода</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="563"/>
+ <source>The Microsoft Windows client for Jami.
+Jami is a secured and distributed communication software.</source>
+ <translation>Клиент Jami для Microsoft Windows.
+Jami – это приложение с распределённой архитектурой для безопасного общения.</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="32"/>
+ <source>version</source>
+ <translation>версия</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="39"/>
+ <source>Created by:</source>
+ <translation>Авторы проекта:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="73"/>
+ <source>Artwork by:</source>
+ <translation>Дизайн:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="77"/>
+ <source>Based on the SFLPhone project</source>
+ <translation>Основано на проекте SFLPhone</translation>
+ </message>
+</context>
+<context>
+ <name>AccountItemDelegate</name>
+ <message>
+ <location filename="../accountitemdelegate.cpp" line="91"/>
+ <source>Add Account</source>
+ <translation>Добавить аккаунт</translation>
+ </message>
+</context>
+<context>
+ <name>AdvancedSIPSettingsWidget</name>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Форма</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="55"/>
+ <source>Call Settings</source>
+ <translation>Настройки вызовов</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="102"/>
+ <source>Auto Answer Calls</source>
+ <translation>Автоматически принимать входящие вызовы</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="130"/>
+ <source>Enable Custom Ringtone</source>
+ <translation>Использовать свою мелодию звонка</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="191"/>
+ <source>Connectivity</source>
+ <translation>Связь</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="281"/>
+ <source>STUN Address</source>
+ <translation>Адрес STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="293"/>
+ <source>Use STUN</source>
+ <translation>Использовать STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="317"/>
+ <source>Use UPnP</source>
+ <translation>Использовать UPnP</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="329"/>
+ <source>Use TURN</source>
+ <translation>Использовать TURN </translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="359"/>
+ <source>TURN Password</source>
+ <translation>Пароль TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="391"/>
+ <source>TURN Username</source>
+ <translation>Имя пользователя TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="423"/>
+ <source>TURN Address</source>
+ <translation>Адрес TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="464"/>
+ <source>Media</source>
+ <translation>Медиа</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="515"/>
+ <source>Enable Video</source>
+ <translation>Включить видео</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="539"/>
+ <source>Video Codecs</source>
+ <translation>Видео кодеки</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="692"/>
+ <source>Audio Codecs</source>
+ <translation>Аудио кодеки</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="142"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation>Аудиофайлы (*.wav *.ogg *.opus *.mp3 *aiff *wma)</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="151"/>
+ <source>Add a custom ringtone</source>
+ <translation>Добавить свою мелодию звонка</translation>
+ </message>
+</context>
+<context>
+ <name>AdvancedSettingsWidget</name>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Форма</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="61"/>
+ <source>Call Settings</source>
+ <translation>Настройки вызовов</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="108"/>
+ <source>Allow Calls From Untrusted Peers</source>
+ <translation>Разрешить вызовы от недоверенных участников</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="133"/>
+ <source>Auto Answer Calls</source>
+ <translation>Автоматически принимать входящие вызовы</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="161"/>
+ <source>Enable Custom Ringtone</source>
+ <translation>Использовать свою мелодию звонка</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="188"/>
+ <source>Add a custom ringtone</source>
+ <translation>Добавить свою мелодию звонка</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="225"/>
+ <source>Name Server</source>
+ <translation>Сервер имён</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="275"/>
+ <source>Address</source>
+ <translation>Адрес</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="351"/>
+ <source>OpenDHT Configuration</source>
+ <translation>Конфигурация OpenDHT</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="398"/>
+ <source>Enable Proxy</source>
+ <translation>Включить прокси</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="454"/>
+ <source>Bootstrap</source>
+ <translation>Инициализация</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="530"/>
+ <source>Security</source>
+ <translation>Безопасность</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="571"/>
+ <source>Private Key Password</source>
+ <translation>Пароль закрытого ключа</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="583"/>
+ <source>User Certificate</source>
+ <translation>Пользовательский Cертификат</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="622"/>
+ <source>Private Key</source>
+ <translation>Закрытый ключ</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="634"/>
+ <source>CA Certificate</source>
+ <translation>Сертификат удостоверяющего центра</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="766"/>
+ <source>Connectivity</source>
+ <translation>Связь</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="868"/>
+ <source>Use STUN</source>
+ <translation>Использовать STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="856"/>
+ <source>STUN Address</source>
+ <translation>Адрес STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="892"/>
+ <source>Use UPnP</source>
+ <translation>Использовать UPnP</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="904"/>
+ <source>Use TURN</source>
+ <translation>Использовать TURN </translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="934"/>
+ <source>TURN Password</source>
+ <translation>Пароль TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="966"/>
+ <source>TURN Username</source>
+ <translation>Имя пользователя TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="998"/>
+ <source>TURN Address</source>
+ <translation>Адрес TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1039"/>
+ <source>Media</source>
+ <translation>Медиа</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1090"/>
+ <source>Enable Video</source>
+ <translation>Включить видео</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1267"/>
+ <source>Audio Codecs</source>
+ <translation>Аудио кодеки</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1114"/>
+ <source>Video Codecs</source>
+ <translation>Видео кодеки</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="181"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation>Аудиофайлы (*.wav *.ogg *.opus *.mp3 *aiff *wma)</translation>
+ </message>
+</context>
+<context>
+ <name>AnimatedOverlay</name>
+ <message>
+ <location filename="../animatedoverlay.ui" line="14"/>
+ <source>Form</source>
+ <translation>Форма</translation>
+ </message>
+</context>
+<context>
+ <name>BannedItemWidget</name>
+ <message>
+ <location filename="../banneditemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Форма</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="80"/>
+ <source>name</source>
+ <translation>имя</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="104"/>
+ <source>id</source>
+ <translation>id</translation>
+ </message>
+</context>
+<context>
+ <name>CallWidget</name>
+ <message>
+ <location filename="../callwidget.ui" line="184"/>
+ <source>Show conversations</source>
+ <translation>Показать беседы</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="187"/>
+ <source>Conversations</source>
+ <translation>Разговоры</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="368"/>
+ <source>Search contact text input</source>
+ <translation>Найдите контакты текстовый ввод</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="653"/>
+ <source>Jami is free software for universal communication which respects the freedoms and privacy of its users.</source>
+ <translation>Jami — свободная программа для связи, уважающая свободу и конфиденциальность пользователей.</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="693"/>
+ <source>
+ This is your ID.
+Copy and share it with your friends!
+ </source>
+ <translation>
+Это ваш ID.
+Скопируйте и поделитесь им с друзьями!
+</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="806"/>
+ <source>Show ring ID QR code</source>
+ <translation>Показать Ring ID QR код</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="857"/>
+ <source>Share ring ID button</source>
+ <translation>кнопка Поделиться ID</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="915"/>
+ <source>Double-click to copy</source>
+ <translation>Двойной клик для копирования</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="956"/>
+ <source>Error while generating QR Code</source>
+ <translation>Ошибка при создании QR кода</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1184"/>
+ <location filename="../callwidget.ui" line="1434"/>
+ <source>best name</source>
+ <translation>наилучшее имя</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1208"/>
+ <source>best Id</source>
+ <translation>наилучший ID</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1734"/>
+ <source>Back to homepage button</source>
+ <translation>Кнопка возврата на главную страницу</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1943"/>
+ <source>Add to contacts</source>
+ <translation>Добавить в контакты</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="202"/>
+ <source>Show invites</source>
+ <translation>Показать приглашения</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="205"/>
+ <source>Invites</source>
+ <translation>Приглашения</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="377"/>
+ <location filename="../callwidget.cpp" line="552"/>
+ <source>Find a new or existing contact</source>
+ <translation>Поиск нового или существующего контакта</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1444"/>
+ <source>Wants to talk to you!</source>
+ <translation>Хочет поговорить с вами!</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1517"/>
+ <source>Answer incoming call button</source>
+ <translation>Кнопка ответа на входящий вызов </translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1589"/>
+ <source>Ignore incoming call button</source>
+ <translation>Кнопка игнорирования входящего вызова</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1539"/>
+ <source>Answer</source>
+ <translation>Ответить</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1617"/>
+ <source>Ignore</source>
+ <translation>Игнорировать</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1280"/>
+ <source>Cancel outgoing call</source>
+ <translation>Отменить исходящий вызов</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1305"/>
+ <source>Cancel</source>
+ <translation>Отмена</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="332"/>
+ <source>Start video call</source>
+ <translation>Начать видеовызов</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="343"/>
+ <source>Start audio call</source>
+ <translation>Начать голосовой вызов</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="354"/>
+ <source>Clear conversation</source>
+ <translation>Очистить разговор</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="361"/>
+ <source>Remove contact</source>
+ <translation>Удалить контакт</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="373"/>
+ <source>Block contact</source>
+ <translation>Заблокировать контакт</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="384"/>
+ <source>Copy number</source>
+ <translation>Копировать номер</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="561"/>
+ <source>Search your received invitations</source>
+ <translation>Поиск по полученным приглашениям</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>Contact me on Jami</source>
+ <translation>Свяжитесь со мной в Jami</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>My Id is : </source>
+ <translation>Мой ID:</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="847"/>
+ <source>%1</source>
+ <comment>%1 is the contact username</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="852"/>
+ <source>%1</source>
+ <comment>%1 is the contact unique identifier</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="675"/>
+ <source>Call incoming from %1</source>
+ <translation>Звонок от %1</translation>
+ </message>
+</context>
+<context>
+ <name>DeleteAccountDialog</name>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="35"/>
+ <source>Account deletion</source>
+ <translation>Удаление аккаунта</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="58"/>
+ <source>Do you really want to delete the following account?</source>
+ <translation>Вы действительно хотите удалить указанный аккаунт?</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="153"/>
+ <source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
+ <translation>Если этот аккаунт не был экспортирован или привязан к другому устройству, он будет безвозвратно потерян</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="235"/>
+ <source>Permanently delete account</source>
+ <translation>Удалить аккаунт безвозвратно</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="241"/>
+ <source>Delete</source>
+ <translation>Удалить</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="278"/>
+ <source>Cancel account deletion</source>
+ <translation>Отменить удаление аккаунта</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="284"/>
+ <source>Cancel</source>
+ <translation>Отмена</translation>
+ </message>
+</context>
+<context>
+ <name>DeviceItemWidget</name>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Форма</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="105"/>
+ <source>Device Id</source>
+ <translation>Устройство ID</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="143"/>
+ <source>this device</source>
+ <translation>это устройство</translation>
+ </message>
+</context>
+<context>
+ <name>InviteButtonsWidget</name>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="83"/>
+ <source>Accept</source>
+ <translation>Принять</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="131"/>
+ <source>Refuse</source>
+ <translation>Отказать</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="179"/>
+ <source>Block</source>
+ <translation>Заблокировать</translation>
+ </message>
+</context>
+<context>
+ <name>LinkDeviceDialog</name>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation>Диалог</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="62"/>
+ <source>Enter your account password</source>
+ <translation>Введите пароль вашего аккаунта</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="117"/>
+ <source>Password</source>
+ <translation>Пароль</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="184"/>
+ <source>Ok</source>
+ <translation>OK</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="218"/>
+ <source>Cancel</source>
+ <translation>Отмена</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="279"/>
+ <source>Exporting account</source>
+ <translation>Экспортировать аккаунт</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="402"/>
+ <source>Your PIN is</source>
+ <translation>Ваш PIN:</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="432"/>
+ <source>PIN</source>
+ <translation>PIN</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="477"/>
+ <source>This pin and the account password should be entered in your device within 10 minutes.</source>
+ <translation>Этот пин-код и пароль учетной записи должны быть введены на вашем устройстве в течение 10 минут.</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="553"/>
+ <source>Close</source>
+ <translation>Закрыть</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="34"/>
+ <source>Link Another Device</source>
+ <translation>Привязать другое устройство</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="96"/>
+ <source>Incorrect password</source>
+ <translation>Неверный пароль</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="110"/>
+ <source>Something went wrong.
+Please try again later.</source>
+ <translation>Что-то пошло не так, повторите попытку позднее.</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="83"/>
+ <source>Settings</source>
+ <translation>Настройки</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="94"/>
+ <source>Exit</source>
+ <translation>Выход</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="111"/>
+ <source>About</source>
+ <translation>О программе</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="435"/>
+ <source>Jami</source>
+ <translation>Jami</translation>
+ </message>
+</context>
+<context>
+ <name>NameRegistrationDialog</name>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="35"/>
+ <source>Set Registered Name</source>
+ <translation>Установить зарегистрированное имя</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="163"/>
+ <source>Enter your account password</source>
+ <translation>Введите пароль вашего аккаунта</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="244"/>
+ <source>Password text input</source>
+ <translation>Ввод текста пароля</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="250"/>
+ <source>Password text entry</source>
+ <translation>Ввод текста пароля</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="256"/>
+ <source>Password</source>
+ <translation>Пароль</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="323"/>
+ <source>Register</source>
+ <translation>Зарегистрировать</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="357"/>
+ <source>Cancel</source>
+ <translation>Отмена</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="424"/>
+ <source>Registering Name</source>
+ <translation>Зарегистрированное Имя</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="548"/>
+ <source>Something went wrong</source>
+ <translation>Что-то пошло не так.</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="618"/>
+ <source>Close</source>
+ <translation>Закрыть</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="82"/>
+ <source>Incorrect password</source>
+ <translation>Неверный пароль</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="85"/>
+ <source>Network error</source>
+ <translation>Ошибка сети</translation>
+ </message>
+</context>
+<context>
+ <name>NewWizardWidget</name>
+ <message>
+ <location filename="../newwizardwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Форма</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="141"/>
+ <source>Welcome Label</source>
+ <translation>Ярлык добро пожаловать</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="147"/>
+ <source> Welcome to</source>
+ <translation>Добро пожаловать в</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="185"/>
+ <source>Welcome Logo</source>
+ <translation>Логотип добро пожаловать</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="239"/>
+ <source>Create Jami account button</source>
+ <translation>Кнопка создать учётную запись Jami</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="245"/>
+ <source>Push button for Jami account creation start trigger</source>
+ <translation>Нажмите кнопку для запуска создания учетной записи Jami</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="251"/>
+ <source>Create a Jami account</source>
+ <translation>Создать учётную запись Jami</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="282"/>
+ <source>Link device button</source>
+ <translation>Кнопка привязки устройства</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="288"/>
+ <source>Push button for device linkage start trigger</source>
+ <translation>Нажмите кнопку для запуска устройства связи</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="291"/>
+ <source>Link this device to an account</source>
+ <translation>Привязать это устройство к аккаунту</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="328"/>
+ <source>Create Jami SIP account button</source>
+ <translation>Кнопка создания учётной запись Jami SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="334"/>
+ <source>Push button for Jami SIP account creation start trigger</source>
+ <translation>Кнопка для создания начала Jami SIP триггера</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="340"/>
+ <source>Create a SIP account</source>
+ <translation>Создать SIP Аккаунт</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="405"/>
+ <source>Link this device to an existing account</source>
+ <translation>Привязать это устройство к существующему аккаунту</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="469"/>
+ <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">To link this device to another account, you first </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">need to obtain a PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> code. To generate the PIN code:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Account management setting</span><span style=" font-size:14px;"> of a previous device</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choose the </span><span style=" font-size:14px; font-weight:600;">Jami account</span><span style=" font-size:14px;"> you want to use</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Devices</span><span style=" font-size:14px;"> tab</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Select </span><span style=" font-size:14px; font-weight:600;">Add a device</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">You will get the necessary PIN to complete this form. The PIN is only valid for </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutes</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></source>
+ <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">Чтобы соединить это устройство с другой учетной записью, сначала</span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">нужно получить ПИН-код</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> Чтобы сгенерировать ПИН-код:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Перейдите к </span><span style=" font-size:14px; font-weight:600;">настройкам управления аккаунтом</span><span style=" font-size:14px;"> предыдущего устройства </span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Выберите </span><span style=" font-size:14px; font-weight:600;">акаунт Jami </span><span style=" font-size:14px;"> который хотите использовать</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Перейдите на</span><span style=" font-size:14px; font-weight:600;">вкладку устройства</span><span style=" font-size:14px;"> </span></li>выберите</span><span style=" font-size:14px; font-weight:600;">Добавить устройство</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">Вы получите необходимый ПИН-код для заполнения этой формы. ПИН действителен только </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 минут</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="531"/>
+ <source>Enter your pin:</source>
+ <translation>Введите ваш PIN:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="599"/>
+ <source>Or import a file:</source>
+ <translation>Или импортируйте из файла:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="626"/>
+ <source>Link from exported account archive file</source>
+ <translation>Привязать из архивного файла аккаунта</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="629"/>
+ <location filename="../newwizardwidget.cpp" line="83"/>
+ <location filename="../newwizardwidget.cpp" line="218"/>
+ <source>(None)</source>
+ <translation>(нет)</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="705"/>
+ <source>Password:</source>
+ <translation>Пароль:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="799"/>
+ <location filename="../newwizardwidget.ui" line="1586"/>
+ <source>Profile</source>
+ <translation>Профиль</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="953"/>
+ <location filename="../newwizardwidget.ui" line="1767"/>
+ <source>Profile name</source>
+ <translation>Имя профиля</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1027"/>
+ <source>Account</source>
+ <translation>Аккаунт</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1136"/>
+ <source>Register your username.
+This will reserve the username so that only you can use it.
+Your friends will be able to call you with your usename
+instead of using your ID.</source>
+ <translation>Зарегистрируйте свое имя пользователя.
+После регистрации только вы сможете его использовать. Ваши друзья смогут связаться с вами по вашему имени вместо ID.</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1142"/>
+ <source>Public username checkbox</source>
+ <translation>Флажок публичного имени пользователя</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1145"/>
+ <source>Checkbox selecting if the user wants a public username</source>
+ <translation>Флажок, если пользователь хочет публичное имя пользователя</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1148"/>
+ <source>Register public username</source>
+ <translation>Зарегистрировать публичное имя</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1367"/>
+ <source>Public username edit</source>
+ <translation>Изменить публичное имя пользователя</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1373"/>
+ <source>Choose your username</source>
+ <translation>Выберите ваше имя пользователя</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1289"/>
+ <source>Password text input</source>
+ <translation>Ввод текста пароля</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1295"/>
+ <source>Password text entry</source>
+ <translation>Ввод текста пароля</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1301"/>
+ <location filename="../newwizardwidget.ui" line="2213"/>
+ <source>Password</source>
+ <translation>Пароль</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1211"/>
+ <location filename="../newwizardwidget.ui" line="1217"/>
+ <source>Password confirmation text input</source>
+ <translation>Ввод текста подтверждения пароля</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1223"/>
+ <source>Confirm password</source>
+ <translation>Подтверждение пароля</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1814"/>
+ <source>SIP Account</source>
+ <translation>Аккаунт SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1973"/>
+ <source>SIP Server edit</source>
+ <translation>Изменить сервер SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1979"/>
+ <source>Server</source>
+ <translation>Сервер</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2045"/>
+ <source>SIP proxy input</source>
+ <translation>Ввод SIP Прокси </translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2051"/>
+ <source>SIP proxy text entry</source>
+ <translation>SIP прокси текстовый ввод</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2057"/>
+ <source>Proxy</source>
+ <translation>Прокси</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2123"/>
+ <source>SIP username input</source>
+ <translation>SIP ввод имени пользователя</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2129"/>
+ <source>SIP Password text entry</source>
+ <translation>Ввод SIP пароля</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2135"/>
+ <source>Username</source>
+ <translation>Имя пользователя</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2201"/>
+ <location filename="../newwizardwidget.ui" line="2207"/>
+ <source>SIP Password text input</source>
+ <translation>текстовое поле SIP</translation>
+ </message>
+ <message utf8="true">
+ <location filename="../newwizardwidget.ui" line="2282"/>
+ <source>Generating your Jami account…</source>
+ <translation>Идёт создание вашего аккаунта Jami…</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2356"/>
+ <source>Previous page button</source>
+ <translation>кнопка Предыдущая страница</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2362"/>
+ <source>push button to access previous page of wizard</source>
+ <translation>нажмите кнопку для перехода к предыдущей странице Мастера</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2365"/>
+ <source>Previous</source>
+ <translation>Назад</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2396"/>
+ <source>Cancel account create/link</source>
+ <translation>Отмена создание/ссылки аккаунта</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2402"/>
+ <source>push button to cancel account creation or linking</source>
+ <translation>нажмите кнопку, чтобы отменить аккаунта или привязки </translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2405"/>
+ <source>Back</source>
+ <translation>Назад</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2442"/>
+ <source>Next page Button</source>
+ <translation>Кнопка Следующая страница</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2448"/>
+ <source>Push button to access next page of wizard</source>
+ <translation>Нажмите кнопку для перехода к следующей странице Мастера</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2451"/>
+ <source>Next</source>
+ <translation>Далее</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="75"/>
+ <source>Open File</source>
+ <translation>Открыть файл</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="77"/>
+ <source>Jami archive files (*.gz); All files (*)</source>
+ <translation>Архивы Jami (*.gz); Все файлы (*)</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="123"/>
+ <source>Your account needs to be migrated. Enter your password.</source>
+ <translation>Ваша учетная запись должна быть перенесена. Введите ваш пароль.</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="419"/>
+ <source>Migrating your Jami account...</source>
+ <translation>Переносим ваш аккаунт Jami…</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="412"/>
+ <source>Importing account archive...</source>
+ <translation>Импорт архива с аккаунтом…</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="404"/>
+ <source>Generating your Jami account...</source>
+ <translation>Идёт создание вашего аккаунта Jami…</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="422"/>
+ <source>Generating your SIP account...</source>
+ <translation>Сгенерировать свой SIP аккаунт...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="533"/>
+ <source>Error creating account</source>
+ <translation>Ошибка при создании аккаунта</translation>
+ </message>
+</context>
+<context>
+ <name>PasswordDialog</name>
+ <message>
+ <location filename="../passworddialog.ui" line="32"/>
+ <source>Change Account Password</source>
+ <translation>Изменить пароль аккаунта</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="97"/>
+ <source>Enter Current Password</source>
+ <translation>Введите текущий пароль</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="169"/>
+ <source>Enter New Password</source>
+ <translation>Введите новый пароль</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="190"/>
+ <source>Confirm New Password</source>
+ <translation>Подтвердите новый пароль</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="247"/>
+ <source>Confirm</source>
+ <translation>Подтвердить</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="290"/>
+ <source>Cancel</source>
+ <translation>Отмена</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="143"/>
+ <source>Current Password Incorrect</source>
+ <translation>Текущий пароль неправилен</translation>
+ </message>
+</context>
+<context>
+ <name>PhotoBoothDialog</name>
+ <message>
+ <location filename="../photoboothdialog.ui" line="14"/>
+ <source>Photobooth</source>
+ <translation>Фотобудка</translation>
+ </message>
+</context>
+<context>
+ <name>PhotoboothWidget</name>
+ <message>
+ <location filename="../photoboothwidget.ui" line="20"/>
+ <source>Form</source>
+ <translation>Форма</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.ui" line="120"/>
+ <source>Photobooth display</source>
+ <translation>Дисплей фото</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="92"/>
+ <source>Choose File</source>
+ <translation>Выберите файл</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="94"/>
+ <source>Image Files (*.jpg *.jpeg *.png)</source>
+ <translation>Файлы изображений (*.jpg *.jpeg *.png)</translation>
+ </message>
+</context>
+<context>
+ <name>PrivateBridging</name>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Choose File</source>
+ <translation>Выберите файл</translation>
+ </message>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Files (*)</source>
+ <translation>Файлы (*)</translation>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../utils.cpp" line="183"/>
+ <source>No default mail client found</source>
+ <translation>Не найден почтовый клиент по умолчанию</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="43"/>
+ <location filename="../deviceitemwidget.cpp" line="85"/>
+ <source>Edit Device Name</source>
+ <translation>Изменить имя устройства</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="44"/>
+ <source>Unlink Device From Account</source>
+ <translation>Отвязать устройство от аккаунта</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="80"/>
+ <source>Save new device name</source>
+ <translation>Сохранить новое имя устройства</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.cpp" line="39"/>
+ <source>Add as contact</source>
+ <translation>Добавить как контакт</translation>
+ </message>
+</context>
+<context>
+ <name>RingButton</name>
+ <message>
+ <location filename="../ringbutton.ui" line="140"/>
+ <source>Select folder</source>
+ <translation>Выбрать папку</translation>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <location filename="../settingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Форма</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="141"/>
+ <source>Settings</source>
+ <translation>Настройки</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="229"/>
+ <source>Account</source>
+ <translation>Аккаунт</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="267"/>
+ <location filename="../settingswidget.ui" line="503"/>
+ <source>General</source>
+ <translation>Общие</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="305"/>
+ <location filename="../settingswidget.ui" line="3416"/>
+ <source>Audio / Video</source>
+ <translation>Аудио/Видео</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="542"/>
+ <source>System</source>
+ <translation>Система</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="610"/>
+ <source>Enable desktop notifications</source>
+ <translation>Включить уведомления</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="653"/>
+ <source>Keep minimized on close</source>
+ <translation>Сворачивать вместо закрытия</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="678"/>
+ <source>Download folder</source>
+ <translation>Папка для загрузок</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="811"/>
+ <source>Save in</source>
+ <translation>Сохранить в</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="904"/>
+ <source>Always Recording</source>
+ <translation>Всегда записывать</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="943"/>
+ <source>Updates</source>
+ <translation>Обновления</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1008"/>
+ <source>Check for updates automatically every</source>
+ <translation>Проверять обновления автоматически каждые</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1032"/>
+ <source>Interval between update checks in days selector</source>
+ <translation>Интервал проверки обновлений (дней)</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1038"/>
+ <source> days</source>
+ <translation>дней</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1081"/>
+ <source>Check for updates now button</source>
+ <translation>Кнопка Проверить обновления</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1084"/>
+ <source>Check for updates now</source>
+ <translation>Проверить обновления</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3027"/>
+ <source>Password</source>
+ <translation>Пароль</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1418"/>
+ <location filename="../settingswidget.ui" line="2729"/>
+ <source>Enable</source>
+ <translation>Задействовать</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="607"/>
+ <source>toggle enable notifications</source>
+ <translation>переключатель активации уведомлений</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="650"/>
+ <source>Toggle keep minimized on close</source>
+ <translation>Пеоекючатель Сворачивать при закрытии</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="764"/>
+ <source>Call Recordings</source>
+ <translation>Записи звонков</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1005"/>
+ <source>Toggle automatic updates</source>
+ <translation>Переключение автоматических обновлений</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1231"/>
+ <source>Jami Account</source>
+ <translation>Аккаунт Jami</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1453"/>
+ <location filename="../settingswidget.ui" line="2761"/>
+ <source>Profile</source>
+ <translation>Профиль</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1567"/>
+ <location filename="../settingswidget.ui" line="2875"/>
+ <source>Identity</source>
+ <translation>Идентификатор</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1614"/>
+ <source>Id</source>
+ <translation>ID</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1673"/>
+ <source>Registered name</source>
+ <translation>Зарегистрированное имя</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1721"/>
+ <source>Type here to register a username</source>
+ <translation>Введите имя пользователя для регистрации</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1755"/>
+ <source>Register</source>
+ <translation>Зарегистрировать</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1827"/>
+ <source>Change Password</source>
+ <translation>Изменить пароль</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1868"/>
+ <source>Export Account</source>
+ <translation>Экспортировать учетную запись</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1909"/>
+ <location filename="../settingswidget.ui" line="3089"/>
+ <source>Delete Account</source>
+ <translation>Удалить аккаунт</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1973"/>
+ <source>Linked Devices</source>
+ <translation>Привязанные устройства</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2078"/>
+ <source>Link Another Device</source>
+ <translation>Привязать другое устройство</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2142"/>
+ <source>Banned Contacts</source>
+ <translation>Заблокированные контакты</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3788"/>
+ <source>Format</source>
+ <translation>Формат</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3831"/>
+ <source>Video device framerate selector</source>
+ <translation>Селектор частоты кадров видео</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3967"/>
+ <source>Preview unavailable</source>
+ <translation>Предпросмотр недоступен</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2359"/>
+ <location filename="../settingswidget.ui" line="3187"/>
+ <source>Advanced Account Settings</source>
+ <translation>Дополнительные настройки аккаунта</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2554"/>
+ <source>SIP Account</source>
+ <translation>Аккаунт SIP</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2925"/>
+ <source>Username</source>
+ <translation>Имя пользователя</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2958"/>
+ <source>Hostname</source>
+ <translation>Имя узла</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2991"/>
+ <source>Proxy</source>
+ <translation>Прокси</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3461"/>
+ <source>Audio</source>
+ <translation>Звук</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3511"/>
+ <source>Microphone</source>
+ <translation>Микрофон</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3551"/>
+ <source>Audio input device selector</source>
+ <translation>Выбор входного аудиоустройства</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3585"/>
+ <source>Output Device</source>
+ <translation>Устройство вывода</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3625"/>
+ <source>Choose the output device</source>
+ <translation>Выберите устройство вывода</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3682"/>
+ <source>Video</source>
+ <translation>Видео</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3720"/>
+ <source>Device</source>
+ <translation>Устройство</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3766"/>
+ <source>Video device selector</source>
+ <translation>Селектор видеоустройств</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="459"/>
+ <source>A registered name should not have any spaces and must be at least three letters long</source>
+ <translation>Зарегистрированное имя пользователя не должно содержать пробелов и быть как минимум три символа длиной</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="466"/>
+ <source>This name is already taken</source>
+ <translation>Это имя пользователя уже занято</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="92"/>
+ <location filename="../settingswidget.cpp" line="110"/>
+ <source>Enter an alias</source>
+ <translation>Введите псевдоним</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="473"/>
+ <source>Register this name</source>
+ <translation>Зарегистрировать новое имя</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="550"/>
+ <source>Remove Device</source>
+ <translation>Удалить устройство</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="551"/>
+ <source>Enter this account's password to confirm the removal of this device</source>
+ <translation>Введите пароль аккаунта для удаления этого устройства</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="558"/>
+ <source>Are you sure you wish to remove this device?</source>
+ <translation>Вы действительно хотите удалить это устройство?</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="589"/>
+ <source>Export Account Here</source>
+ <translation>Экспортировать аккаунт сюда</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="887"/>
+ <source>Select A Folder For Your Downloads</source>
+ <translation>Выберите папку для ваших загрузок</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="904"/>
+ <source>Select A Folder For Your Recordings</source>
+ <translation>Выберите папку для ваших записей</translation>
+ </message>
+</context>
+<context>
+ <name>VideoOverlay</name>
+ <message>
+ <location filename="../videooverlay.ui" line="419"/>
+ <source>Call on Hold</source>
+ <translation>Звонок приостановлен</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="89"/>
+ <source>Hold / Unhold</source>
+ <translation>Приостановить / Возобновить</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="124"/>
+ <source>Chat</source>
+ <translation>Чат</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="162"/>
+ <source>Mute Mic</source>
+ <translation>Выключить микрофон</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="244"/>
+ <source>Record call</source>
+ <translation>Записать разговор</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="325"/>
+ <source>Name label</source>
+ <translation>Название метки</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="390"/>
+ <source>Time elapsed</source>
+ <translation>Прошло времени</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="393"/>
+ <source>00:00</source>
+ <translation>00:00</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="57"/>
+ <source>Hangup</source>
+ <translation>Повесить трубку</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="203"/>
+ <source>Mute Video</source>
+ <translation>Выключить видео</translation>
+ </message>
+</context>
+<context>
+ <name>VideoView</name>
+ <message>
+ <location filename="../videoview.cpp" line="271"/>
+ <source>Share entire screen</source>
+ <translation>Транслировать весь экран</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="274"/>
+ <source>Share screen area</source>
+ <translation>Транслировать область экрана</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="281"/>
+ <source>Share file</source>
+ <translation>Поделиться файлом</translation>
+ </message>
+</context>
+</TS>
\ No newline at end of file
diff --git a/translations/ring_client_windows_ru_RU.ts b/translations/ring_client_windows_ru_RU.ts
new file mode 100644
index 0000000..a67fb57
--- /dev/null
+++ b/translations/ring_client_windows_ru_RU.ts
@@ -0,0 +1,1606 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="ru_RU" version="2.0">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../aboutdialog.ui" line="435"/>
+ <location filename="../aboutdialog.ui" line="465"/>
+ <source>About</source>
+ <translation>О программе</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="462"/>
+ <source>about button</source>
+ <translation>кнопка "О нас"</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="478"/>
+ <source>credits button</source>
+ <translation>Кнопка "создатели"</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="481"/>
+ <source>Credits</source>
+ <translation>Благодарности</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="547"/>
+ <source>Free as in Freedom</source>
+ <translation>Свобода</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="563"/>
+ <source>The Microsoft Windows client for Jami.
+Jami is a secured and distributed communication software.</source>
+ <translation>Клиент Jami для Microsoft Windows.
+Jami это защищённое и распределённое ПО для коммуникации. </translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="32"/>
+ <source>version</source>
+ <translation>Версия</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="39"/>
+ <source>Created by:</source>
+ <translation>Создано: </translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="73"/>
+ <source>Artwork by:</source>
+ <translation>Художник: </translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="77"/>
+ <source>Based on the SFLPhone project</source>
+ <translation>Основано на SFLPhone проекте</translation>
+ </message>
+</context>
+<context>
+ <name>AccountItemDelegate</name>
+ <message>
+ <location filename="../accountitemdelegate.cpp" line="91"/>
+ <source>Add Account</source>
+ <translation>Добавить аккаунт</translation>
+ </message>
+</context>
+<context>
+ <name>AdvancedSIPSettingsWidget</name>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Форма</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="55"/>
+ <source>Call Settings</source>
+ <translation>Настройки вызова</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="102"/>
+ <source>Auto Answer Calls</source>
+ <translation>Автоматический ответ на вызов</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="130"/>
+ <source>Enable Custom Ringtone</source>
+ <translation>Включить свой рингтон</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="191"/>
+ <source>Connectivity</source>
+ <translation>Связь</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="281"/>
+ <source>STUN Address</source>
+ <translation>STUN Адрес</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="293"/>
+ <source>Use STUN</source>
+ <translation>Использовать STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="317"/>
+ <source>Use UPnP</source>
+ <translation>Использовать UPnP</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="329"/>
+ <source>Use TURN</source>
+ <translation>Использовать TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="359"/>
+ <source>TURN Password</source>
+ <translation>TURN Пароль</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="391"/>
+ <source>TURN Username</source>
+ <translation>TURN Имя пользователя</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="423"/>
+ <source>TURN Address</source>
+ <translation>TURN Адрес </translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="464"/>
+ <source>Media</source>
+ <translation>Медиа</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="515"/>
+ <source>Enable Video</source>
+ <translation>Включить видео</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="539"/>
+ <source>Video Codecs</source>
+ <translation>Видеокодеки</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="692"/>
+ <source>Audio Codecs</source>
+ <translation>Аудиокодеки</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="142"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation>Аудиофайлы (*.wav *.ogg *.opus *.mp3 *aiff *wma)</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="151"/>
+ <source>Add a custom ringtone</source>
+ <translation>Добавить свой рингтон</translation>
+ </message>
+</context>
+<context>
+ <name>AdvancedSettingsWidget</name>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Форма</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="61"/>
+ <source>Call Settings</source>
+ <translation>Настройки вызова</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="108"/>
+ <source>Allow Calls From Untrusted Peers</source>
+ <translation>Разрешить звонки из ненадёжных пиров</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="133"/>
+ <source>Auto Answer Calls</source>
+ <translation>Автоматический ответ на вызов</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="161"/>
+ <source>Enable Custom Ringtone</source>
+ <translation>Включить свой рингтон</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="188"/>
+ <source>Add a custom ringtone</source>
+ <translation>Добавить свой рингтон</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="225"/>
+ <source>Name Server</source>
+ <translation>Имя Сервера</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="275"/>
+ <source>Address</source>
+ <translation>Адрес</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="351"/>
+ <source>OpenDHT Configuration</source>
+ <translation>Конфигурация OpenDHT</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="398"/>
+ <source>Enable Proxy</source>
+ <translation>Включить Прокси</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="454"/>
+ <source>Bootstrap</source>
+ <translation>Начальная загрузка</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="530"/>
+ <source>Security</source>
+ <translation>Безопасность</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="571"/>
+ <source>Private Key Password</source>
+ <translation>Пароль закрытого ключа</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="583"/>
+ <source>User Certificate</source>
+ <translation>Сертификат пользователя</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="622"/>
+ <source>Private Key</source>
+ <translation>Приватный Ключ</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="634"/>
+ <source>CA Certificate</source>
+ <translation>Сертификат удостоверяющего центра</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="766"/>
+ <source>Connectivity</source>
+ <translation>Связь</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="868"/>
+ <source>Use STUN</source>
+ <translation>Использовать STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="856"/>
+ <source>STUN Address</source>
+ <translation>STUN Адрес</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="892"/>
+ <source>Use UPnP</source>
+ <translation>Использовать UPnP</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="904"/>
+ <source>Use TURN</source>
+ <translation>Использовать TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="934"/>
+ <source>TURN Password</source>
+ <translation>TURN Пароль</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="966"/>
+ <source>TURN Username</source>
+ <translation>TURN Имя пользователя</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="998"/>
+ <source>TURN Address</source>
+ <translation>TURN адрес </translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1039"/>
+ <source>Media</source>
+ <translation>Медиа</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1090"/>
+ <source>Enable Video</source>
+ <translation>Включить видео</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1267"/>
+ <source>Audio Codecs</source>
+ <translation>Аудиокодеки</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1114"/>
+ <source>Video Codecs</source>
+ <translation>Видеокодеки</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="181"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation>Аудиофайлы (*.wav *.ogg *.opus *.mp3 *aiff *wma)</translation>
+ </message>
+</context>
+<context>
+ <name>AnimatedOverlay</name>
+ <message>
+ <location filename="../animatedoverlay.ui" line="14"/>
+ <source>Form</source>
+ <translation>Форма</translation>
+ </message>
+</context>
+<context>
+ <name>BannedItemWidget</name>
+ <message>
+ <location filename="../banneditemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Форма</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="80"/>
+ <source>name</source>
+ <translation>имя</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="104"/>
+ <source>id</source>
+ <translation>идентификатор</translation>
+ </message>
+</context>
+<context>
+ <name>CallWidget</name>
+ <message>
+ <location filename="../callwidget.ui" line="184"/>
+ <source>Show conversations</source>
+ <translation>Показать переписку</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="187"/>
+ <source>Conversations</source>
+ <translation>Беседы</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="368"/>
+ <source>Search contact text input</source>
+ <translation>Поле ввода для поиска контактов</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="653"/>
+ <source>Jami is free software for universal communication which respects the freedoms and privacy of its users.</source>
+ <translation>Jami — свободная программа для связи, уважающая свободу и конфиденциальность пользователей.</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="693"/>
+ <source>
+ This is your ID.
+Copy and share it with your friends!
+ </source>
+ <translation>
+Это ваш ID.
+Скопируйте и поделитесь им со своими друзьями!
+</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="806"/>
+ <source>Show ring ID QR code</source>
+ <translation>Показать ring ID QR код</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="857"/>
+ <source>Share ring ID button</source>
+ <translation>Кнопка Поделиться ring ID</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="915"/>
+ <source>Double-click to copy</source>
+ <translation>Double-click to copy</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="956"/>
+ <source>Error while generating QR Code</source>
+ <translation>Ошибка при генерации QR кода</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1184"/>
+ <location filename="../callwidget.ui" line="1434"/>
+ <source>best name</source>
+ <translation>лучшее имя</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1208"/>
+ <source>best Id</source>
+ <translation>лучший Id </translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1734"/>
+ <source>Back to homepage button</source>
+ <translation>Кнопка вернуться на главную</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1943"/>
+ <source>Add to contacts</source>
+ <translation>Добавить контакт</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="202"/>
+ <source>Show invites</source>
+ <translation>Показать приглашения</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="205"/>
+ <source>Invites</source>
+ <translation>Приглашения</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="377"/>
+ <location filename="../callwidget.cpp" line="552"/>
+ <source>Find a new or existing contact</source>
+ <translation>Найти новый или уже существующий контакт</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1444"/>
+ <source>Wants to talk to you!</source>
+ <translation>Хочет поговорить с вами!</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1517"/>
+ <source>Answer incoming call button</source>
+ <translation>Кнопка ответа на звонок</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1589"/>
+ <source>Ignore incoming call button</source>
+ <translation>Кнопка сброса входящего вызова</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1539"/>
+ <source>Answer</source>
+ <translation>Ответ</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1617"/>
+ <source>Ignore</source>
+ <translation>Игнорировать</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1280"/>
+ <source>Cancel outgoing call</source>
+ <translation>Отменить исходящий вызов</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1305"/>
+ <source>Cancel</source>
+ <translation>Отмена</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="332"/>
+ <source>Start video call</source>
+ <translation>Начать видеозвонок </translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="343"/>
+ <source>Start audio call</source>
+ <translation>Начать аудиозвонок</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="354"/>
+ <source>Clear conversation</source>
+ <translation>Очистить переписку</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="361"/>
+ <source>Remove contact</source>
+ <translation>Удалить контакт</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="373"/>
+ <source>Block contact</source>
+ <translation>Заблокировать контакт</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="384"/>
+ <source>Copy number</source>
+ <translation>Скопировать номер</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="561"/>
+ <source>Search your received invitations</source>
+ <translation>Поиск полученных приглашений</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>Contact me on Jami</source>
+ <translation>Свяжитесь со мной через Jami</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>My Id is : </source>
+ <translation>Мой Id :</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="847"/>
+ <source>%1</source>
+ <comment>%1 is the contact username</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="852"/>
+ <source>%1</source>
+ <comment>%1 is the contact unique identifier</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="675"/>
+ <source>Call incoming from %1</source>
+ <translation>Входящий вызов от %1</translation>
+ </message>
+</context>
+<context>
+ <name>DeleteAccountDialog</name>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="35"/>
+ <source>Account deletion</source>
+ <translation>Удаление аккаунта</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="58"/>
+ <source>Do you really want to delete the following account?</source>
+ <translation>Вы действительно хотите удалить привязанный аккаунт? </translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="153"/>
+ <source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
+ <translation>Если этот аккаунт не был экспортирован или добавлен на другом устройстве, он будет безвозвратно потерян.</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="235"/>
+ <source>Permanently delete account</source>
+ <translation>Удалить аккаунт навсегда</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="241"/>
+ <source>Delete</source>
+ <translation>Удалить</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="278"/>
+ <source>Cancel account deletion</source>
+ <translation>Отменить удаление аккаунта</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="284"/>
+ <source>Cancel</source>
+ <translation>Отмена</translation>
+ </message>
+</context>
+<context>
+ <name>DeviceItemWidget</name>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Форма</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="105"/>
+ <source>Device Id</source>
+ <translation>Id Устройства</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="143"/>
+ <source>this device</source>
+ <translation>это устройство</translation>
+ </message>
+</context>
+<context>
+ <name>InviteButtonsWidget</name>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="83"/>
+ <source>Accept</source>
+ <translation>Принять</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="131"/>
+ <source>Refuse</source>
+ <translation>Отказать</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="179"/>
+ <source>Block</source>
+ <translation>Заблокировать</translation>
+ </message>
+</context>
+<context>
+ <name>LinkDeviceDialog</name>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation>Диалог</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="62"/>
+ <source>Enter your account password</source>
+ <translation>Введите пароль вашего аккаунта</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="117"/>
+ <source>Password</source>
+ <translation>Пароль</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="184"/>
+ <source>Ok</source>
+ <translation>Да</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="218"/>
+ <source>Cancel</source>
+ <translation>Отмена</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="279"/>
+ <source>Exporting account</source>
+ <translation>Экспорт аккаунта</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="402"/>
+ <source>Your PIN is</source>
+ <translation>Ваш PIN </translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="432"/>
+ <source>PIN</source>
+ <translation>PIN</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="477"/>
+ <source>This pin and the account password should be entered in your device within 10 minutes.</source>
+ <translation>Этот pin-код и пароль вашего аккаунта должны быть введены в течении 10 минут.</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="553"/>
+ <source>Close</source>
+ <translation>Закрыть</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="34"/>
+ <source>Link Another Device</source>
+ <translation>Привязать Другое Устройство</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="96"/>
+ <source>Incorrect password</source>
+ <translation>Неверный пароль</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="110"/>
+ <source>Something went wrong.
+Please try again later.</source>
+ <translation>Что-то пошло не так.
+Пожалуйста, попробуйте позже.</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="83"/>
+ <source>Settings</source>
+ <translation>Настройки</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="94"/>
+ <source>Exit</source>
+ <translation>Выход</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="111"/>
+ <source>About</source>
+ <translation>О продукте</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="435"/>
+ <source>Jami</source>
+ <translation>Jami</translation>
+ </message>
+</context>
+<context>
+ <name>NameRegistrationDialog</name>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="35"/>
+ <source>Set Registered Name</source>
+ <translation>Задать Зарегистрированное Имя</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="163"/>
+ <source>Enter your account password</source>
+ <translation>Введите пароль вашего аккаунта</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="244"/>
+ <source>Password text input</source>
+ <translation>Поле ввода пароля</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="250"/>
+ <source>Password text entry</source>
+ <translation>Поле ввода пароля</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="256"/>
+ <source>Password</source>
+ <translation>Пароль</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="323"/>
+ <source>Register</source>
+ <translation>Зарегистрировать</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="357"/>
+ <source>Cancel</source>
+ <translation>Отмена</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="424"/>
+ <source>Registering Name</source>
+ <translation>Зарегистрировать Имя</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="548"/>
+ <source>Something went wrong</source>
+ <translation>Что-то пошло не так</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="618"/>
+ <source>Close</source>
+ <translation>Закрыть</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="82"/>
+ <source>Incorrect password</source>
+ <translation>Неверный пароль</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="85"/>
+ <source>Network error</source>
+ <translation>Ошибка сети</translation>
+ </message>
+</context>
+<context>
+ <name>NewWizardWidget</name>
+ <message>
+ <location filename="../newwizardwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Форма</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="141"/>
+ <source>Welcome Label</source>
+ <translation>Заголовок приветствия</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="147"/>
+ <source> Welcome to</source>
+ <translation>Добро пожаловать в</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="185"/>
+ <source>Welcome Logo</source>
+ <translation>Приветствующий логотип</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="239"/>
+ <source>Create Jami account button</source>
+ <translation>Создать Jami аккаунт кнопка</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="245"/>
+ <source>Push button for Jami account creation start trigger</source>
+ <translation>Кнопка для начала создания аккаунта Jami</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="251"/>
+ <source>Create a Jami account</source>
+ <translation>Создать учётную запись Jami</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="282"/>
+ <source>Link device button</source>
+ <translation>Кнопка привязки устройства</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="288"/>
+ <source>Push button for device linkage start trigger</source>
+ <translation>Кнопка для запуска триггера привязки устройства</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="291"/>
+ <source>Link this device to an account</source>
+ <translation>Привязать это устройство к аккаунту</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="328"/>
+ <source>Create Jami SIP account button</source>
+ <translation>Кнопка Создать Jami SIP аккаунт</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="334"/>
+ <source>Push button for Jami SIP account creation start trigger</source>
+ <translation>Кнопка для запуска запуска создания аккаунта JAMI SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="340"/>
+ <source>Create a SIP account</source>
+ <translation>Создать SIP аккаунт</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="405"/>
+ <source>Link this device to an existing account</source>
+ <translation>Привязать это устройство к существующему аккаунту</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="469"/>
+ <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">To link this device to another account, you first </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">need to obtain a PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> code. To generate the PIN code:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Account management setting</span><span style=" font-size:14px;"> of a previous device</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choose the </span><span style=" font-size:14px; font-weight:600;">Jami account</span><span style=" font-size:14px;"> you want to use</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Devices</span><span style=" font-size:14px;"> tab</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Select </span><span style=" font-size:14px; font-weight:600;">Add a device</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">You will get the necessary PIN to complete this form. The PIN is only valid for </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutes</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></source>
+ <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">Чтобы привязать это устройство к другому аккаунту, вам нужно</span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">получить PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">код. Чтобы сгенерировать PIN код нужно:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Перейдите </span><span style=" font-size:14px; font-weight:600;">Управление аккаунтом</span><span style=" font-size:14px;"> предыдущего устройства</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Выберите </span><span style=" font-size:14px; font-weight:600;">Jami аккаунт</span><span style=" font-size:14px;"> который вы хотите использовать</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Перейдите во </span><span style=" font-size:14px; font-weight:600;">вкладку</span><span style=" font-size:14px;">Устройства </span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Выберите </span><span style=" font-size:14px; font-weight:600;">Добавить устройство</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">Вы получите необходимый PIN-код для заполнения этой формы. PIN-код действителен </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 минут</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="531"/>
+ <source>Enter your pin:</source>
+ <translation>Введите ваш PIN:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="599"/>
+ <source>Or import a file:</source>
+ <translation>Или импортируйте из файла:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="626"/>
+ <source>Link from exported account archive file</source>
+ <translation>Ссылка из экспортированного файла архива аккаунта</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="629"/>
+ <location filename="../newwizardwidget.cpp" line="83"/>
+ <location filename="../newwizardwidget.cpp" line="218"/>
+ <source>(None)</source>
+ <translation>(Никто)</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="705"/>
+ <source>Password:</source>
+ <translation>Пароль:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="799"/>
+ <location filename="../newwizardwidget.ui" line="1586"/>
+ <source>Profile</source>
+ <translation>Профиль</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="953"/>
+ <location filename="../newwizardwidget.ui" line="1767"/>
+ <source>Profile name</source>
+ <translation>Имя профиля</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1027"/>
+ <source>Account</source>
+ <translation>Учётная запись</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1136"/>
+ <source>Register your username.
+This will reserve the username so that only you can use it.
+Your friends will be able to call you with your usename
+instead of using your ID.</source>
+ <translation>Зарегистрируйте свое имя пользователя.
+Это позволит зарезервировать имя пользователя чтобы в дальнейшем его могли использовать только вы
+Ваши друзьям станет доступна возможность совершать звонки по имени пользователя
+вместо использования вашего ID.</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1142"/>
+ <source>Public username checkbox</source>
+ <translation>Чекбокс Публичного Имя пользователя</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1145"/>
+ <source>Checkbox selecting if the user wants a public username</source>
+ <translation>Установите флажок, если пользователь хочет использовать общедоступное имя пользователя</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1148"/>
+ <source>Register public username</source>
+ <translation>Зарегистрировать общедоступное имя пользователя</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1367"/>
+ <source>Public username edit</source>
+ <translation>Редактирование общедоступного имени пользователя</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1373"/>
+ <source>Choose your username</source>
+ <translation>Выберите ваше имя пользователя</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1289"/>
+ <source>Password text input</source>
+ <translation>Поле ввода пароля</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1295"/>
+ <source>Password text entry</source>
+ <translation>Поле ввода пароля</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1301"/>
+ <location filename="../newwizardwidget.ui" line="2213"/>
+ <source>Password</source>
+ <translation>Пароль</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1211"/>
+ <location filename="../newwizardwidget.ui" line="1217"/>
+ <source>Password confirmation text input</source>
+ <translation>Поле ввода подтверждения пароля</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1223"/>
+ <source>Confirm password</source>
+ <translation>Подтверждение пароля</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1814"/>
+ <source>SIP Account</source>
+ <translation>Учетная запись SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1973"/>
+ <source>SIP Server edit</source>
+ <translation>Изменение SIP Сервер</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1979"/>
+ <source>Server</source>
+ <translation>Сервер</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2045"/>
+ <source>SIP proxy input</source>
+ <translation>SIP прокси ввод</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2051"/>
+ <source>SIP proxy text entry</source>
+ <translation>SIP ввод текста прокси-сервера</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2057"/>
+ <source>Proxy</source>
+ <translation>Прокси</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2123"/>
+ <source>SIP username input</source>
+ <translation>SIP ввод имя пользователя</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2129"/>
+ <source>SIP Password text entry</source>
+ <translation>SIP ввод пароля</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2135"/>
+ <source>Username</source>
+ <translation>Имя пользователя</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2201"/>
+ <location filename="../newwizardwidget.ui" line="2207"/>
+ <source>SIP Password text input</source>
+ <translation>SIP поле ввода пароля</translation>
+ </message>
+ <message utf8="true">
+ <location filename="../newwizardwidget.ui" line="2282"/>
+ <source>Generating your Jami account…</source>
+ <translation>Идёт создание вашего аккаунта Jami…</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2356"/>
+ <source>Previous page button</source>
+ <translation>Кнопка предыдущая страница</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2362"/>
+ <source>push button to access previous page of wizard</source>
+ <translation>нажмите кнопку, чтобы вернуться к предыдущей страницы мастера</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2365"/>
+ <source>Previous</source>
+ <translation>Назад</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2396"/>
+ <source>Cancel account create/link</source>
+ <translation>Отменить создание/ссылки аккаунта</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2402"/>
+ <source>push button to cancel account creation or linking</source>
+ <translation>нажмите кнопку, чтобы отменить создание аккаунта или привязки</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2405"/>
+ <source>Back</source>
+ <translation>Назад</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2442"/>
+ <source>Next page Button</source>
+ <translation>Кнопка следующая страница</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2448"/>
+ <source>Push button to access next page of wizard</source>
+ <translation>Нажмите кнопку, чтобы перейти к следующей страницы мастера</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2451"/>
+ <source>Next</source>
+ <translation>Далее</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="75"/>
+ <source>Open File</source>
+ <translation>Открыть файл</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="77"/>
+ <source>Jami archive files (*.gz); All files (*)</source>
+ <translation>Архивные файлы Jami (*.gz); Все файлы (*)</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="123"/>
+ <source>Your account needs to be migrated. Enter your password.</source>
+ <translation>Ваша учетная запись должна быть перенесена. Введите ваш пароль.</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="419"/>
+ <source>Migrating your Jami account...</source>
+ <translation>Миграция вашего Jami аккаунта...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="412"/>
+ <source>Importing account archive...</source>
+ <translation>Импорт архива аккаунта...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="404"/>
+ <source>Generating your Jami account...</source>
+ <translation>Генерация вашего Jami аккаунта...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="422"/>
+ <source>Generating your SIP account...</source>
+ <translation>Генерация вашего SIP аккаунта...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="533"/>
+ <source>Error creating account</source>
+ <translation>Ошибка создания аккаунта</translation>
+ </message>
+</context>
+<context>
+ <name>PasswordDialog</name>
+ <message>
+ <location filename="../passworddialog.ui" line="32"/>
+ <source>Change Account Password</source>
+ <translation>Поменять Пароль Аккаунта</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="97"/>
+ <source>Enter Current Password</source>
+ <translation>Введите Текущий Пароль</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="169"/>
+ <source>Enter New Password</source>
+ <translation>Введите Новый Пароль</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="190"/>
+ <source>Confirm New Password</source>
+ <translation>Подтвердите Новый Пароль</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="247"/>
+ <source>Confirm</source>
+ <translation>Подтвердить</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="290"/>
+ <source>Cancel</source>
+ <translation>Отмена</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="143"/>
+ <source>Current Password Incorrect</source>
+ <translation>Текущий Пароль Неверный</translation>
+ </message>
+</context>
+<context>
+ <name>PhotoBoothDialog</name>
+ <message>
+ <location filename="../photoboothdialog.ui" line="14"/>
+ <source>Photobooth</source>
+ <translation>Фото</translation>
+ </message>
+</context>
+<context>
+ <name>PhotoboothWidget</name>
+ <message>
+ <location filename="../photoboothwidget.ui" line="20"/>
+ <source>Form</source>
+ <translation>Форма</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.ui" line="120"/>
+ <source>Photobooth display</source>
+ <translation>Фото дисплей</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="92"/>
+ <source>Choose File</source>
+ <translation>Выбрать файл</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="94"/>
+ <source>Image Files (*.jpg *.jpeg *.png)</source>
+ <translation>Изображения (*.jpg *.jpeg *.png)</translation>
+ </message>
+</context>
+<context>
+ <name>PrivateBridging</name>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Choose File</source>
+ <translation>Выбрать файл</translation>
+ </message>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Files (*)</source>
+ <translation>Файлы (*)</translation>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../utils.cpp" line="183"/>
+ <source>No default mail client found</source>
+ <translation>Не найден почтовый клиент используемый по умолчанию</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="43"/>
+ <location filename="../deviceitemwidget.cpp" line="85"/>
+ <source>Edit Device Name</source>
+ <translation>Изменить Имя Устройства</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="44"/>
+ <source>Unlink Device From Account</source>
+ <translation>Отвязать Устройство От Аккаунта</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="80"/>
+ <source>Save new device name</source>
+ <translation>Сохранить новое имя устройства</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.cpp" line="39"/>
+ <source>Add as contact</source>
+ <translation>Добавить как контакт</translation>
+ </message>
+</context>
+<context>
+ <name>RingButton</name>
+ <message>
+ <location filename="../ringbutton.ui" line="140"/>
+ <source>Select folder</source>
+ <translation>Выбрать папку</translation>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <location filename="../settingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Форма</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="141"/>
+ <source>Settings</source>
+ <translation>Настройки</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="229"/>
+ <source>Account</source>
+ <translation>Учётная запись</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="267"/>
+ <location filename="../settingswidget.ui" line="503"/>
+ <source>General</source>
+ <translation>Основные</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="305"/>
+ <location filename="../settingswidget.ui" line="3416"/>
+ <source>Audio / Video</source>
+ <translation>Аудио / Видео</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="542"/>
+ <source>System</source>
+ <translation>Система</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="610"/>
+ <source>Enable desktop notifications</source>
+ <translation>Включить уведомления на рабочем столе</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="653"/>
+ <source>Keep minimized on close</source>
+ <translation>Оставлять свернутым при закрытии</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="678"/>
+ <source>Download folder</source>
+ <translation>Папка для загрузок</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="811"/>
+ <source>Save in</source>
+ <translation>Сохранить в</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="904"/>
+ <source>Always Recording</source>
+ <translation>Всегда записывать</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="943"/>
+ <source>Updates</source>
+ <translation>Обновления</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1008"/>
+ <source>Check for updates automatically every</source>
+ <translation>Проверять обновления каждые </translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1032"/>
+ <source>Interval between update checks in days selector</source>
+ <translation>Селектор Интервал между проверками обновлений в днях</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1038"/>
+ <source> days</source>
+ <translation>дней</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1081"/>
+ <source>Check for updates now button</source>
+ <translation>Кнопка для проверки обновлений</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1084"/>
+ <source>Check for updates now</source>
+ <translation>Проверить наличие обновлений</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3027"/>
+ <source>Password</source>
+ <translation>Пароль</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1418"/>
+ <location filename="../settingswidget.ui" line="2729"/>
+ <source>Enable</source>
+ <translation>Включить</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="607"/>
+ <source>toggle enable notifications</source>
+ <translation>Переключатель включить уведомлений</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="650"/>
+ <source>Toggle keep minimized on close</source>
+ <translation>Переключатель свернуть или закрыть</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="764"/>
+ <source>Call Recordings</source>
+ <translation>Записи вызовов </translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1005"/>
+ <source>Toggle automatic updates</source>
+ <translation>Переключение автоматического обновления</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1231"/>
+ <source>Jami Account</source>
+ <translation>Jami Аккаунт</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1453"/>
+ <location filename="../settingswidget.ui" line="2761"/>
+ <source>Profile</source>
+ <translation>Профиль</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1567"/>
+ <location filename="../settingswidget.ui" line="2875"/>
+ <source>Identity</source>
+ <translation>Идентичность</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1614"/>
+ <source>Id</source>
+ <translation>Идентификатор</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1673"/>
+ <source>Registered name</source>
+ <translation>Зарегистрированное имя</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1721"/>
+ <source>Type here to register a username</source>
+ <translation>Напишите здесь чтобы зарегистрировать имя пользователя</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1755"/>
+ <source>Register</source>
+ <translation>Зарегистрировать</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1827"/>
+ <source>Change Password</source>
+ <translation>Изменить Пароль</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1868"/>
+ <source>Export Account</source>
+ <translation>Экспортировать Аккаунт</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1909"/>
+ <location filename="../settingswidget.ui" line="3089"/>
+ <source>Delete Account</source>
+ <translation>Удалить Аккаунт</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1973"/>
+ <source>Linked Devices</source>
+ <translation>Привязанные Устройства</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2078"/>
+ <source>Link Another Device</source>
+ <translation>Привязать Другое Устройство</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2142"/>
+ <source>Banned Contacts</source>
+ <translation>Заблокированные Контакты</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3788"/>
+ <source>Format</source>
+ <translation>Формат</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3831"/>
+ <source>Video device framerate selector</source>
+ <translation>Селектор частоты кадров видеоустройства</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3967"/>
+ <source>Preview unavailable</source>
+ <translation>Предварительный просмотр недоступен</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2359"/>
+ <location filename="../settingswidget.ui" line="3187"/>
+ <source>Advanced Account Settings</source>
+ <translation>Дополнительные Настройки Аккаунта</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2554"/>
+ <source>SIP Account</source>
+ <translation>Учетная запись SIP</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2925"/>
+ <source>Username</source>
+ <translation>Имя пользователя</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2958"/>
+ <source>Hostname</source>
+ <translation>Имя компьютера</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2991"/>
+ <source>Proxy</source>
+ <translation>Прокси</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3461"/>
+ <source>Audio</source>
+ <translation>Звук</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3511"/>
+ <source>Microphone</source>
+ <translation>Микрофон</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3551"/>
+ <source>Audio input device selector</source>
+ <translation>Селектор устройства аудиовхода</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3585"/>
+ <source>Output Device</source>
+ <translation>Устройства Вывода</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3625"/>
+ <source>Choose the output device</source>
+ <translation>Выбрать устройство вывода</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3682"/>
+ <source>Video</source>
+ <translation>Видео</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3720"/>
+ <source>Device</source>
+ <translation>Устройство</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3766"/>
+ <source>Video device selector</source>
+ <translation>Селектор видеоустройств</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="459"/>
+ <source>A registered name should not have any spaces and must be at least three letters long</source>
+ <translation>Зарегистрированное имя не должно содержать пробелов и должно иметь не менее трех букв</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="466"/>
+ <source>This name is already taken</source>
+ <translation>Это имя уже занято</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="92"/>
+ <location filename="../settingswidget.cpp" line="110"/>
+ <source>Enter an alias</source>
+ <translation>Введите псевдоним</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="473"/>
+ <source>Register this name</source>
+ <translation>Зарегистрировать это имя</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="550"/>
+ <source>Remove Device</source>
+ <translation>Удалить устройство</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="551"/>
+ <source>Enter this account's password to confirm the removal of this device</source>
+ <translation>Введите пароль вашего аккаунта чтобы подтвердить его удаление из устройства.</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="558"/>
+ <source>Are you sure you wish to remove this device?</source>
+ <translation>Вы уверены, что хотите удалить это устройство?</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="589"/>
+ <source>Export Account Here</source>
+ <translation>Экспортировать Аккаунт</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="887"/>
+ <source>Select A Folder For Your Downloads</source>
+ <translation>Выберите папку для загрузок</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="904"/>
+ <source>Select A Folder For Your Recordings</source>
+ <translation>Выберите Папку Для Ваших Записей</translation>
+ </message>
+</context>
+<context>
+ <name>VideoOverlay</name>
+ <message>
+ <location filename="../videooverlay.ui" line="419"/>
+ <source>Call on Hold</source>
+ <translation>Вызов на удержании</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="89"/>
+ <source>Hold / Unhold</source>
+ <translation>Удерживание / Возврат</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="124"/>
+ <source>Chat</source>
+ <translation>Чат</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="162"/>
+ <source>Mute Mic</source>
+ <translation>Отключить микрофон</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="244"/>
+ <source>Record call</source>
+ <translation>Записывать звонок</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="325"/>
+ <source>Name label</source>
+ <translation>Имя метки</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="390"/>
+ <source>Time elapsed</source>
+ <translation>Прошедшее время</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="393"/>
+ <source>00:00</source>
+ <translation>00:00</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="57"/>
+ <source>Hangup</source>
+ <translation>Разъединить</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="203"/>
+ <source>Mute Video</source>
+ <translation>Громкость видео</translation>
+ </message>
+</context>
+<context>
+ <name>VideoView</name>
+ <message>
+ <location filename="../videoview.cpp" line="271"/>
+ <source>Share entire screen</source>
+ <translation>Транслировать весь экран</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="274"/>
+ <source>Share screen area</source>
+ <translation>Общий доступ к экрану</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="281"/>
+ <source>Share file</source>
+ <translation>Поделится файлом</translation>
+ </message>
+</context>
+</TS>
\ No newline at end of file
diff --git a/translations/ring_client_windows_sk_SK.ts b/translations/ring_client_windows_sk_SK.ts
new file mode 100644
index 0000000..c7f2a9b
--- /dev/null
+++ b/translations/ring_client_windows_sk_SK.ts
@@ -0,0 +1,1606 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="sk_SK" version="2.0">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../aboutdialog.ui" line="435"/>
+ <location filename="../aboutdialog.ui" line="465"/>
+ <source>About</source>
+ <translation>O programe</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="462"/>
+ <source>about button</source>
+ <translation>tlačidlo o programe</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="478"/>
+ <source>credits button</source>
+ <translation>tlačidlo autori</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="481"/>
+ <source>Credits</source>
+ <translation>Autori</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="547"/>
+ <source>Free as in Freedom</source>
+ <translation>Free as in Freedom</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="563"/>
+ <source>The Microsoft Windows client for Jami.
+Jami is a secured and distributed communication software.</source>
+ <translation>Microsoft Windows klient pre Jami.
+Jami je zabezpečený a distribuovaný komunikačný softvér.</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="32"/>
+ <source>version</source>
+ <translation>verzia</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="39"/>
+ <source>Created by:</source>
+ <translation>Vytvorili:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="73"/>
+ <source>Artwork by:</source>
+ <translation>Dizajn od:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="77"/>
+ <source>Based on the SFLPhone project</source>
+ <translation>Založené na projekte SFLPhone</translation>
+ </message>
+</context>
+<context>
+ <name>AccountItemDelegate</name>
+ <message>
+ <location filename="../accountitemdelegate.cpp" line="91"/>
+ <source>Add Account</source>
+ <translation>Pridať účet</translation>
+ </message>
+</context>
+<context>
+ <name>AdvancedSIPSettingsWidget</name>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Form</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="55"/>
+ <source>Call Settings</source>
+ <translation>Nastavenia hovoru</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="102"/>
+ <source>Auto Answer Calls</source>
+ <translation>Automaticky zdvihnúť hovory</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="130"/>
+ <source>Enable Custom Ringtone</source>
+ <translation>Povoliť vlastné vyzváňacie tóny</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="191"/>
+ <source>Connectivity</source>
+ <translation>Pripojenia</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="281"/>
+ <source>STUN Address</source>
+ <translation>STUN adresa</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="293"/>
+ <source>Use STUN</source>
+ <translation>Použiť STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="317"/>
+ <source>Use UPnP</source>
+ <translation>Používať UPnP</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="329"/>
+ <source>Use TURN</source>
+ <translation>Použiť TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="359"/>
+ <source>TURN Password</source>
+ <translation>TURN heslo</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="391"/>
+ <source>TURN Username</source>
+ <translation>TURN používateľské meno</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="423"/>
+ <source>TURN Address</source>
+ <translation>TURN adresa</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="464"/>
+ <source>Media</source>
+ <translation>Médiá</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="515"/>
+ <source>Enable Video</source>
+ <translation>Povoliť video</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="539"/>
+ <source>Video Codecs</source>
+ <translation>Video kodeky</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="692"/>
+ <source>Audio Codecs</source>
+ <translation>Zvukové kodeky</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="142"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation>Audio súbory (*.wav *.ogg *.opus *.mp3 *aiff *wma)</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="151"/>
+ <source>Add a custom ringtone</source>
+ <translation>Pridať vlastný vyzváňací tón</translation>
+ </message>
+</context>
+<context>
+ <name>AdvancedSettingsWidget</name>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulár</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="61"/>
+ <source>Call Settings</source>
+ <translation>Nastavenia hovoru</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="108"/>
+ <source>Allow Calls From Untrusted Peers</source>
+ <translation>Povoliť hovory od nedôveryhodných peerov</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="133"/>
+ <source>Auto Answer Calls</source>
+ <translation>Automaticky zdvihnúť hovory</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="161"/>
+ <source>Enable Custom Ringtone</source>
+ <translation>Povoliť vlastné vyzváňacie tóny</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="188"/>
+ <source>Add a custom ringtone</source>
+ <translation>Pridať vlastný vyzváňací tón</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="225"/>
+ <source>Name Server</source>
+ <translation>Name server</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="275"/>
+ <source>Address</source>
+ <translation>Adresa</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="351"/>
+ <source>OpenDHT Configuration</source>
+ <translation>Konfigurácia OpenDHT</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="398"/>
+ <source>Enable Proxy</source>
+ <translation>Povoliť proxy</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="454"/>
+ <source>Bootstrap</source>
+ <translation>Bootstrap</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="530"/>
+ <source>Security</source>
+ <translation>Bezpečnosť</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="571"/>
+ <source>Private Key Password</source>
+ <translation>Heslo privátneho kľúča</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="583"/>
+ <source>User Certificate</source>
+ <translation>Používateľský certifikát</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="622"/>
+ <source>Private Key</source>
+ <translation>Privátny kľúč</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="634"/>
+ <source>CA Certificate</source>
+ <translation>CA certifikát</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="766"/>
+ <source>Connectivity</source>
+ <translation>Pripojenie</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="868"/>
+ <source>Use STUN</source>
+ <translation>Použiť STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="856"/>
+ <source>STUN Address</source>
+ <translation>STUN adresa</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="892"/>
+ <source>Use UPnP</source>
+ <translation>Používať UPnP</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="904"/>
+ <source>Use TURN</source>
+ <translation>Použiť TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="934"/>
+ <source>TURN Password</source>
+ <translation>TURN heslo</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="966"/>
+ <source>TURN Username</source>
+ <translation>TURN používateľské meno</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="998"/>
+ <source>TURN Address</source>
+ <translation>TURN adresa</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1039"/>
+ <source>Media</source>
+ <translation>Médiá</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1090"/>
+ <source>Enable Video</source>
+ <translation>Zapnúť video</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1267"/>
+ <source>Audio Codecs</source>
+ <translation>Zvukové kodeky</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1114"/>
+ <source>Video Codecs</source>
+ <translation>Video kodeky</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="181"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation>Audio súbory (*.wav *.ogg *.opus *.mp3 *aiff *wma)</translation>
+ </message>
+</context>
+<context>
+ <name>AnimatedOverlay</name>
+ <message>
+ <location filename="../animatedoverlay.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulár</translation>
+ </message>
+</context>
+<context>
+ <name>BannedItemWidget</name>
+ <message>
+ <location filename="../banneditemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Form</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="80"/>
+ <source>name</source>
+ <translation>meno</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="104"/>
+ <source>id</source>
+ <translation>id</translation>
+ </message>
+</context>
+<context>
+ <name>CallWidget</name>
+ <message>
+ <location filename="../callwidget.ui" line="184"/>
+ <source>Show conversations</source>
+ <translation>Zobraziť konverzácie</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="187"/>
+ <source>Conversations</source>
+ <translation>Konverzácie</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="368"/>
+ <source>Search contact text input</source>
+ <translation>Vstupné pole Hľadať v kontaktoch</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="653"/>
+ <source>Jami is free software for universal communication which respects the freedoms and privacy of its users.</source>
+ <translation>Jami je slobodný softvér na univerzálnu komunikáciu, ktorý rešpektuje slobodu a súkromie používateľov.</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="693"/>
+ <source>
+ This is your ID.
+Copy and share it with your friends!
+ </source>
+ <translation>
+ Toto je vaše ID.
+Skopírujte a zdieľajte ho s vašimi priateľmi!
+ </translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="806"/>
+ <source>Show ring ID QR code</source>
+ <translation>Zobraziť RingID QR kód</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="857"/>
+ <source>Share ring ID button</source>
+ <translation>zdieľať RingID tlačidlo</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="915"/>
+ <source>Double-click to copy</source>
+ <translation>Dvojklik na kopírovanie</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="956"/>
+ <source>Error while generating QR Code</source>
+ <translation>Chyba pri generovaní QR kódu</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1184"/>
+ <location filename="../callwidget.ui" line="1434"/>
+ <source>best name</source>
+ <translation>najlepšie meno</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1208"/>
+ <source>best Id</source>
+ <translation>najlepšie id</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1734"/>
+ <source>Back to homepage button</source>
+ <translation>Tlačidlo Späť domov</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1943"/>
+ <source>Add to contacts</source>
+ <translation>Pridať do kontaktov</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="202"/>
+ <source>Show invites</source>
+ <translation>Zobraziť pozvánky</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="205"/>
+ <source>Invites</source>
+ <translation>Pozvánky</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="377"/>
+ <location filename="../callwidget.cpp" line="552"/>
+ <source>Find a new or existing contact</source>
+ <translation>Vyhľadať nový alebo existujúci kontakt</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1444"/>
+ <source>Wants to talk to you!</source>
+ <translation>Chce s vami hovoriť!</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1517"/>
+ <source>Answer incoming call button</source>
+ <translation>Tlačidlo Zdvihnúť prichádzajúci hovor</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1589"/>
+ <source>Ignore incoming call button</source>
+ <translation>Tlačidlo Ignorovať prichádzajúci hovor</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1539"/>
+ <source>Answer</source>
+ <translation>Zdvihnúť</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1617"/>
+ <source>Ignore</source>
+ <translation>Ignorovať</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1280"/>
+ <source>Cancel outgoing call</source>
+ <translation>Zrušiť odchádzajúci hovor</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1305"/>
+ <source>Cancel</source>
+ <translation>Zrušiť</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="332"/>
+ <source>Start video call</source>
+ <translation>Začať video hovor</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="343"/>
+ <source>Start audio call</source>
+ <translation>Začať audio hovor</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="354"/>
+ <source>Clear conversation</source>
+ <translation>Vymazať konverzáciu</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="361"/>
+ <source>Remove contact</source>
+ <translation>Odstrániť kontakt</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="373"/>
+ <source>Block contact</source>
+ <translation>Zablokovať kontakt</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="384"/>
+ <source>Copy number</source>
+ <translation>Skopírovať číslo</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="561"/>
+ <source>Search your received invitations</source>
+ <translation>Prehľadávať prijaté pozvánky</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>Contact me on Jami</source>
+ <translation>Kontaktujte ma na Jami</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>My Id is : </source>
+ <translation>Moje ID je:</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="847"/>
+ <source>%1</source>
+ <comment>%1 is the contact username</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="852"/>
+ <source>%1</source>
+ <comment>%1 is the contact unique identifier</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="675"/>
+ <source>Call incoming from %1</source>
+ <translation>Prichádzajúci hovor od %1</translation>
+ </message>
+</context>
+<context>
+ <name>DeleteAccountDialog</name>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="35"/>
+ <source>Account deletion</source>
+ <translation>Odstraňovanie účtu</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="58"/>
+ <source>Do you really want to delete the following account?</source>
+ <translation>Určite chcete odstrániť nasledujúci účet?</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="153"/>
+ <source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
+ <translation>Ak tento účet nebol exportovaný alebo pridaný k inému zariadeniu, bude nenávratne stratený.</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="235"/>
+ <source>Permanently delete account</source>
+ <translation>Permanentne odstrániť účet</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="241"/>
+ <source>Delete</source>
+ <translation>Vymazať</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="278"/>
+ <source>Cancel account deletion</source>
+ <translation>Zrušiť odstraňovanie účtu</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="284"/>
+ <source>Cancel</source>
+ <translation>Zrušiť</translation>
+ </message>
+</context>
+<context>
+ <name>DeviceItemWidget</name>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Form</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="105"/>
+ <source>Device Id</source>
+ <translation>Id zariadenia</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="143"/>
+ <source>this device</source>
+ <translation>toto zariadenie</translation>
+ </message>
+</context>
+<context>
+ <name>InviteButtonsWidget</name>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="83"/>
+ <source>Accept</source>
+ <translation>Prijať</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="131"/>
+ <source>Refuse</source>
+ <translation>Odmietnuť</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="179"/>
+ <source>Block</source>
+ <translation>Blokovať</translation>
+ </message>
+</context>
+<context>
+ <name>LinkDeviceDialog</name>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation>Dialog</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="62"/>
+ <source>Enter your account password</source>
+ <translation>Zadajte heslo k účtu</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="117"/>
+ <source>Password</source>
+ <translation>Heslo</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="184"/>
+ <source>Ok</source>
+ <translation>OK</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="218"/>
+ <source>Cancel</source>
+ <translation>Zrušiť</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="279"/>
+ <source>Exporting account</source>
+ <translation>Exportovanie účtu</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="402"/>
+ <source>Your PIN is</source>
+ <translation>Váš PIN je</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="432"/>
+ <source>PIN</source>
+ <translation>PIN</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="477"/>
+ <source>This pin and the account password should be entered in your device within 10 minutes.</source>
+ <translation>Tento PIN a heslo k účtu musia byť zadané na vašom zariadení v priebehu 10 minút.</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="553"/>
+ <source>Close</source>
+ <translation>Zavrieť</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="34"/>
+ <source>Link Another Device</source>
+ <translation>Prepojiť ďalšie zariadenie</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="96"/>
+ <source>Incorrect password</source>
+ <translation>Nesprávne heslo</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="110"/>
+ <source>Something went wrong.
+Please try again later.</source>
+ <translation>Došlo k chybe.
+Skúste prosím neskôr.</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="83"/>
+ <source>Settings</source>
+ <translation>Nastavenia</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="94"/>
+ <source>Exit</source>
+ <translation>Odísť</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="111"/>
+ <source>About</source>
+ <translation>O programe</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="435"/>
+ <source>Jami</source>
+ <translation>Jami</translation>
+ </message>
+</context>
+<context>
+ <name>NameRegistrationDialog</name>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="35"/>
+ <source>Set Registered Name</source>
+ <translation>Nastaviť registrované meno</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="163"/>
+ <source>Enter your account password</source>
+ <translation>Zadajte heslo k účtu</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="244"/>
+ <source>Password text input</source>
+ <translation>Textové pole na zadanie hesla</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="250"/>
+ <source>Password text entry</source>
+ <translation>Heslo</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="256"/>
+ <source>Password</source>
+ <translation>Heslo</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="323"/>
+ <source>Register</source>
+ <translation>Registrovať</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="357"/>
+ <source>Cancel</source>
+ <translation>Zrušiť</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="424"/>
+ <source>Registering Name</source>
+ <translation>Meno sa registruje</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="548"/>
+ <source>Something went wrong</source>
+ <translation>Došlo k chybe</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="618"/>
+ <source>Close</source>
+ <translation>Zavrieť</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="82"/>
+ <source>Incorrect password</source>
+ <translation>Nesprávne heslo</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="85"/>
+ <source>Network error</source>
+ <translation>Chyba siete</translation>
+ </message>
+</context>
+<context>
+ <name>NewWizardWidget</name>
+ <message>
+ <location filename="../newwizardwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulár</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="141"/>
+ <source>Welcome Label</source>
+ <translation>Popis Vitajte</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="147"/>
+ <source> Welcome to</source>
+ <translation>Vitajte v</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="185"/>
+ <source>Welcome Logo</source>
+ <translation>Vitajte Logo</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="239"/>
+ <source>Create Jami account button</source>
+ <translation>Tlačidlo Vytvoriť Jami účet</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="245"/>
+ <source>Push button for Jami account creation start trigger</source>
+ <translation>Push button for Jami account creation start trigger</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="251"/>
+ <source>Create a Jami account</source>
+ <translation>Vytvoriť Jami účet</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="282"/>
+ <source>Link device button</source>
+ <translation>Tlačidlo Prepojiť zariadenie</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="288"/>
+ <source>Push button for device linkage start trigger</source>
+ <translation>Push button for device linkage start trigger</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="291"/>
+ <source>Link this device to an account</source>
+ <translation>Prepojiť toto zariadenie s účtom</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="328"/>
+ <source>Create Jami SIP account button</source>
+ <translation>Tlačidlo Vytvoriť Jami SIP účet</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="334"/>
+ <source>Push button for Jami SIP account creation start trigger</source>
+ <translation>Stlačte tlačidlo na spustenie vytvorenia Jami SIP účtu</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="340"/>
+ <source>Create a SIP account</source>
+ <translation>Vytvoriť SIP účet</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="405"/>
+ <source>Link this device to an existing account</source>
+ <translation>Prepojiť toto zariadenie s existujúcim účtom</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="469"/>
+ <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">To link this device to another account, you first </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">need to obtain a PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> code. To generate the PIN code:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Account management setting</span><span style=" font-size:14px;"> of a previous device</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choose the </span><span style=" font-size:14px; font-weight:600;">Jami account</span><span style=" font-size:14px;"> you want to use</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Devices</span><span style=" font-size:14px;"> tab</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Select </span><span style=" font-size:14px; font-weight:600;">Add a device</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">You will get the necessary PIN to complete this form. The PIN is only valid for </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutes</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></source>
+ <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">Na prepojenie zariadenia s účtom musíte najprv </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">získať PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> kód. Na jeho vygenerovanie:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choďte do </span><span style=" font-size:14px; font-weight:600;">Nastavení účtu</span><span style=" font-size:14px;"> na predchádzajúcom zariadení</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Zvoľte </span><span style=" font-size:14px; font-weight:600;">Jami účet,</span><span style=" font-size:14px;"> ktorý chcete použiť</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choďte do </span><span style=" font-size:14px; font-weight:600;">Zariadenia</span><span style=" font-size:14px;"> záložky</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Zvoľte </span><span style=" font-size:14px; font-weight:600;">Pridať zariadenie</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">Tak získate PIN kód na dokončenie vyplnenie formuláru. Bude platný </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minút</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="531"/>
+ <source>Enter your pin:</source>
+ <translation>Zadajte váš PIN:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="599"/>
+ <source>Or import a file:</source>
+ <translation>Alebo importujte súbor:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="626"/>
+ <source>Link from exported account archive file</source>
+ <translation>Prepojiť pomocou exportovaného archívu účtu</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="629"/>
+ <location filename="../newwizardwidget.cpp" line="83"/>
+ <location filename="../newwizardwidget.cpp" line="218"/>
+ <source>(None)</source>
+ <translation>(Žiadny)</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="705"/>
+ <source>Password:</source>
+ <translation>Heslo:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="799"/>
+ <location filename="../newwizardwidget.ui" line="1586"/>
+ <source>Profile</source>
+ <translation>Profil</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="953"/>
+ <location filename="../newwizardwidget.ui" line="1767"/>
+ <source>Profile name</source>
+ <translation>Profilové meno</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1027"/>
+ <source>Account</source>
+ <translation>Účet</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1136"/>
+ <source>Register your username.
+This will reserve the username so that only you can use it.
+Your friends will be able to call you with your usename
+instead of using your ID.</source>
+ <translation>Zaregistrujte si svoje používateľské meno.
+Tým bude toto meno rezervované a iba vy ho budete môcť používať.
+Vaši priatelia ho budú môcť použiť namiesto vášho ID,
+keď vám budú chcieť zavolať.</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1142"/>
+ <source>Public username checkbox</source>
+ <translation>Zaškrtávacie políčko pre verejné používateľské meno</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1145"/>
+ <source>Checkbox selecting if the user wants a public username</source>
+ <translation>Zaškrtávacie políčko na výber toho, či používateľ chce verejné používateľské meno</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1148"/>
+ <source>Register public username</source>
+ <translation>Registrovať verejné používateľské meno</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1367"/>
+ <source>Public username edit</source>
+ <translation>Upravenie verejného používateľského mena</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1373"/>
+ <source>Choose your username</source>
+ <translation>Zvoľte si používateľské meno</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1289"/>
+ <source>Password text input</source>
+ <translation>Textové pole na zadanie hesla</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1295"/>
+ <source>Password text entry</source>
+ <translation>Heslo</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1301"/>
+ <location filename="../newwizardwidget.ui" line="2213"/>
+ <source>Password</source>
+ <translation>Heslo</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1211"/>
+ <location filename="../newwizardwidget.ui" line="1217"/>
+ <source>Password confirmation text input</source>
+ <translation>Textové pole na potvrdenie hesla</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1223"/>
+ <source>Confirm password</source>
+ <translation>Potvrďte heslo</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1814"/>
+ <source>SIP Account</source>
+ <translation>SIP Účet</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1973"/>
+ <source>SIP Server edit</source>
+ <translation>SIP server úprava</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1979"/>
+ <source>Server</source>
+ <translation>Server</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2045"/>
+ <source>SIP proxy input</source>
+ <translation>Textové pole SIP proxy</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2051"/>
+ <source>SIP proxy text entry</source>
+ <translation>SIP proxy</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2057"/>
+ <source>Proxy</source>
+ <translation>Proxy</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2123"/>
+ <source>SIP username input</source>
+ <translation>Vstup pre SIP používateľské meno</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2129"/>
+ <source>SIP Password text entry</source>
+ <translation>SIP heslo</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2135"/>
+ <source>Username</source>
+ <translation>Používateľské meno</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2201"/>
+ <location filename="../newwizardwidget.ui" line="2207"/>
+ <source>SIP Password text input</source>
+ <translation>Textové pole na zadanie SIP hesla</translation>
+ </message>
+ <message utf8="true">
+ <location filename="../newwizardwidget.ui" line="2282"/>
+ <source>Generating your Jami account…</source>
+ <translation>Generovanie vášho Jami účtu...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2356"/>
+ <source>Previous page button</source>
+ <translation>Tlačidlo Predchádzajúca strana</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2362"/>
+ <source>push button to access previous page of wizard</source>
+ <translation>stlačiť tlačidlo na návrat na predchádzajúcu stranu </translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2365"/>
+ <source>Previous</source>
+ <translation>Predchádzajúci</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2396"/>
+ <source>Cancel account create/link</source>
+ <translation>Zrušiť vytváranie/prepájanie účtu</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2402"/>
+ <source>push button to cancel account creation or linking</source>
+ <translation>push button to cancel account creation or linking</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2405"/>
+ <source>Back</source>
+ <translation>Späť</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2442"/>
+ <source>Next page Button</source>
+ <translation>Tlačidlo Ďalšia strana</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2448"/>
+ <source>Push button to access next page of wizard</source>
+ <translation>Stlačte tlačidlo na prechod na ďalšiu stranu nastavenia</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2451"/>
+ <source>Next</source>
+ <translation>Ďalej</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="75"/>
+ <source>Open File</source>
+ <translation>Otvoriť súbor</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="77"/>
+ <source>Jami archive files (*.gz); All files (*)</source>
+ <translation>Súbory s Jami archívmi (*.gz); Všetky súbory (*)</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="123"/>
+ <source>Your account needs to be migrated. Enter your password.</source>
+ <translation>Váš účet musí byť migrovaný. Zadajte vaše heslo.</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="419"/>
+ <source>Migrating your Jami account...</source>
+ <translation>Migrovanie vášho Jami účtu...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="412"/>
+ <source>Importing account archive...</source>
+ <translation>Importuje sa archív s účtom</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="404"/>
+ <source>Generating your Jami account...</source>
+ <translation>Generovanie vášho Jami účtu...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="422"/>
+ <source>Generating your SIP account...</source>
+ <translation>Váš SIP účet sa generuje...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="533"/>
+ <source>Error creating account</source>
+ <translation>Chyba pri vytváraní účtu</translation>
+ </message>
+</context>
+<context>
+ <name>PasswordDialog</name>
+ <message>
+ <location filename="../passworddialog.ui" line="32"/>
+ <source>Change Account Password</source>
+ <translation>Zmeniť heslo účtu</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="97"/>
+ <source>Enter Current Password</source>
+ <translation>Zadajte súčasné heslo</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="169"/>
+ <source>Enter New Password</source>
+ <translation>Zadajte nové heslo</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="190"/>
+ <source>Confirm New Password</source>
+ <translation>Potvrďte nové heslo</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="247"/>
+ <source>Confirm</source>
+ <translation>Potvrdiť</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="290"/>
+ <source>Cancel</source>
+ <translation>Zrušiť</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="143"/>
+ <source>Current Password Incorrect</source>
+ <translation>Nesprávne súčasné heslo</translation>
+ </message>
+</context>
+<context>
+ <name>PhotoBoothDialog</name>
+ <message>
+ <location filename="../photoboothdialog.ui" line="14"/>
+ <source>Photobooth</source>
+ <translation>Fotobúdka</translation>
+ </message>
+</context>
+<context>
+ <name>PhotoboothWidget</name>
+ <message>
+ <location filename="../photoboothwidget.ui" line="20"/>
+ <source>Form</source>
+ <translation>Form</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.ui" line="120"/>
+ <source>Photobooth display</source>
+ <translation>Displej fotobúdky</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="92"/>
+ <source>Choose File</source>
+ <translation>Vyberte súbor</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="94"/>
+ <source>Image Files (*.jpg *.jpeg *.png)</source>
+ <translation>Obrazové súbory (*.jpg *.jpeg *.png)</translation>
+ </message>
+</context>
+<context>
+ <name>PrivateBridging</name>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Choose File</source>
+ <translation>Vyberte súbor</translation>
+ </message>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Files (*)</source>
+ <translation>Súbory (*)</translation>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../utils.cpp" line="183"/>
+ <source>No default mail client found</source>
+ <translation>Nebol nájdený predvolený emailový klient</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="43"/>
+ <location filename="../deviceitemwidget.cpp" line="85"/>
+ <source>Edit Device Name</source>
+ <translation>Upraviť názov zariadenia</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="44"/>
+ <source>Unlink Device From Account</source>
+ <translation>Zrušiť prepojenie zariadenia s účtom</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="80"/>
+ <source>Save new device name</source>
+ <translation>Uložiť nový názov zariadenia</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.cpp" line="39"/>
+ <source>Add as contact</source>
+ <translation>Pridať ako kontakt</translation>
+ </message>
+</context>
+<context>
+ <name>RingButton</name>
+ <message>
+ <location filename="../ringbutton.ui" line="140"/>
+ <source>Select folder</source>
+ <translation>Vybrať priečinok</translation>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <location filename="../settingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulár</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="141"/>
+ <source>Settings</source>
+ <translation>Nastavenia</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="229"/>
+ <source>Account</source>
+ <translation>Účet</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="267"/>
+ <location filename="../settingswidget.ui" line="503"/>
+ <source>General</source>
+ <translation>Všeobecné</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="305"/>
+ <location filename="../settingswidget.ui" line="3416"/>
+ <source>Audio / Video</source>
+ <translation>Audio / Video</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="542"/>
+ <source>System</source>
+ <translation>Systém</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="610"/>
+ <source>Enable desktop notifications</source>
+ <translation>Povoliť desktopové notifikácie</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="653"/>
+ <source>Keep minimized on close</source>
+ <translation>Ponechať minimalizované namiesto vypnutia</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="678"/>
+ <source>Download folder</source>
+ <translation>Priečinok na stiahnutie</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="811"/>
+ <source>Save in</source>
+ <translation>Uložiť v</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="904"/>
+ <source>Always Recording</source>
+ <translation>Neustále zaznamenávanie</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="943"/>
+ <source>Updates</source>
+ <translation>Aktualizácie</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1008"/>
+ <source>Check for updates automatically every</source>
+ <translation>Skontrolovať aktualizácie automaticky s frekvenciou</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1032"/>
+ <source>Interval between update checks in days selector</source>
+ <translation>Prepínač pre Interval na kontrolu aktualizácií v dňoch</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1038"/>
+ <source> days</source>
+ <translation>dni</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1081"/>
+ <source>Check for updates now button</source>
+ <translation>Tlačidlo Skontrolovať aktualizácie</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1084"/>
+ <source>Check for updates now</source>
+ <translation>Skontrolovať aktualizácie</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3027"/>
+ <source>Password</source>
+ <translation>Heslo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1418"/>
+ <location filename="../settingswidget.ui" line="2729"/>
+ <source>Enable</source>
+ <translation>Povoliť</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="607"/>
+ <source>toggle enable notifications</source>
+ <translation>prepnúť povolenie upozornení</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="650"/>
+ <source>Toggle keep minimized on close</source>
+ <translation>Prepnúť ponechanie minimalizovania pri zatvorení</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="764"/>
+ <source>Call Recordings</source>
+ <translation>Nahrávky hovorov</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1005"/>
+ <source>Toggle automatic updates</source>
+ <translation>Prepnúť automatické aktualizácie</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1231"/>
+ <source>Jami Account</source>
+ <translation>Jami účet</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1453"/>
+ <location filename="../settingswidget.ui" line="2761"/>
+ <source>Profile</source>
+ <translation>Profil</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1567"/>
+ <location filename="../settingswidget.ui" line="2875"/>
+ <source>Identity</source>
+ <translation>Identita</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1614"/>
+ <source>Id</source>
+ <translation>Id</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1673"/>
+ <source>Registered name</source>
+ <translation>Registrované meno</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1721"/>
+ <source>Type here to register a username</source>
+ <translation>Pre zaregistrovanie používateľského mena píšte</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1755"/>
+ <source>Register</source>
+ <translation>Registrovať</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1827"/>
+ <source>Change Password</source>
+ <translation>Zmeniť heslo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1868"/>
+ <source>Export Account</source>
+ <translation>Exportovať účet</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1909"/>
+ <location filename="../settingswidget.ui" line="3089"/>
+ <source>Delete Account</source>
+ <translation>Odstrániť účet</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1973"/>
+ <source>Linked Devices</source>
+ <translation>Prepojené zariadenia</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2078"/>
+ <source>Link Another Device</source>
+ <translation>Prepojiť ďalšie zariadenie</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2142"/>
+ <source>Banned Contacts</source>
+ <translation>Blokované kontakty</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3788"/>
+ <source>Format</source>
+ <translation>Formát</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3831"/>
+ <source>Video device framerate selector</source>
+ <translation>Výber frameratu video zariadenia</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3967"/>
+ <source>Preview unavailable</source>
+ <translation>Náhľad nedostupný</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2359"/>
+ <location filename="../settingswidget.ui" line="3187"/>
+ <source>Advanced Account Settings</source>
+ <translation>Pokročilé nastavenia účtu</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2554"/>
+ <source>SIP Account</source>
+ <translation>SIP Účet</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2925"/>
+ <source>Username</source>
+ <translation>Používateľské meno</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2958"/>
+ <source>Hostname</source>
+ <translation>Názov hostiteľa</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2991"/>
+ <source>Proxy</source>
+ <translation>Proxy</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3461"/>
+ <source>Audio</source>
+ <translation>Zvuk</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3511"/>
+ <source>Microphone</source>
+ <translation>Mikrofón</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3551"/>
+ <source>Audio input device selector</source>
+ <translation>Volič Zvukového vstupného zariadenia</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3585"/>
+ <source>Output Device</source>
+ <translation>Výstupné zariadenie</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3625"/>
+ <source>Choose the output device</source>
+ <translation>Zvoliť výstupné zariadenie</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3682"/>
+ <source>Video</source>
+ <translation>Video</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3720"/>
+ <source>Device</source>
+ <translation>Zariadenie</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3766"/>
+ <source>Video device selector</source>
+ <translation>Prepínač video zariadenia</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="459"/>
+ <source>A registered name should not have any spaces and must be at least three letters long</source>
+ <translation>Registrované meno by nemalo obsahovať medzery a malo by byť aspoň tri znaky dlhé</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="466"/>
+ <source>This name is already taken</source>
+ <translation>Toto meno už je použité</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="92"/>
+ <location filename="../settingswidget.cpp" line="110"/>
+ <source>Enter an alias</source>
+ <translation>Zadajte alias</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="473"/>
+ <source>Register this name</source>
+ <translation>Registrovať toto meno</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="550"/>
+ <source>Remove Device</source>
+ <translation>Odstrániť zariadenie</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="551"/>
+ <source>Enter this account's password to confirm the removal of this device</source>
+ <translation>Potvrďte odobranie tohto zariadenia zadaním hesla zariadenia</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="558"/>
+ <source>Are you sure you wish to remove this device?</source>
+ <translation>Naozaj chcete odstrániť toto zariadenie?</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="589"/>
+ <source>Export Account Here</source>
+ <translation>Exportovať účet sem</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="887"/>
+ <source>Select A Folder For Your Downloads</source>
+ <translation>Zvoľte priečinok pre sťahovanie súborov</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="904"/>
+ <source>Select A Folder For Your Recordings</source>
+ <translation>Zvoľte priečinok pre vaše nahrávky</translation>
+ </message>
+</context>
+<context>
+ <name>VideoOverlay</name>
+ <message>
+ <location filename="../videooverlay.ui" line="419"/>
+ <source>Call on Hold</source>
+ <translation>Volať počas podržania</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="89"/>
+ <source>Hold / Unhold</source>
+ <translation>Podržať / Zrušiť podržanie</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="124"/>
+ <source>Chat</source>
+ <translation>Chat</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="162"/>
+ <source>Mute Mic</source>
+ <translation>Stlmiť mikrofón</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="244"/>
+ <source>Record call</source>
+ <translation>Zaznamenať hovor</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="325"/>
+ <source>Name label</source>
+ <translation>Menovka</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="390"/>
+ <source>Time elapsed</source>
+ <translation>Uplynutý čas</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="393"/>
+ <source>00:00</source>
+ <translation>00:00</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="57"/>
+ <source>Hangup</source>
+ <translation>Zložiť</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="203"/>
+ <source>Mute Video</source>
+ <translation>Stlmiť video</translation>
+ </message>
+</context>
+<context>
+ <name>VideoView</name>
+ <message>
+ <location filename="../videoview.cpp" line="271"/>
+ <source>Share entire screen</source>
+ <translation>Zdieľať celú obrazovku</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="274"/>
+ <source>Share screen area</source>
+ <translation>Zdieľať oblasť obrazovky</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="281"/>
+ <source>Share file</source>
+ <translation>Zdieľať súbor</translation>
+ </message>
+</context>
+</TS>
\ No newline at end of file
diff --git a/translations/ring_client_windows_sl.ts b/translations/ring_client_windows_sl.ts
new file mode 100644
index 0000000..06f61c2
--- /dev/null
+++ b/translations/ring_client_windows_sl.ts
@@ -0,0 +1,1589 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="sl" version="2.0">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../aboutdialog.ui" line="435"/>
+ <location filename="../aboutdialog.ui" line="465"/>
+ <source>About</source>
+ <translation>O Ring</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="462"/>
+ <source>about button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="478"/>
+ <source>credits button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="481"/>
+ <source>Credits</source>
+ <translation>Zasluge</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="547"/>
+ <source>Free as in Freedom</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="563"/>
+ <source>The Microsoft Windows client for Jami.
+Jami is a secured and distributed communication software.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="32"/>
+ <source>version</source>
+ <translation>različica</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="39"/>
+ <source>Created by:</source>
+ <translation>Ustvarjalci:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="73"/>
+ <source>Artwork by:</source>
+ <translation>Grafična podoba:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="77"/>
+ <source>Based on the SFLPhone project</source>
+ <translation>Osnovano na projeku SFLPhone</translation>
+ </message>
+</context>
+<context>
+ <name>AccountItemDelegate</name>
+ <message>
+ <location filename="../accountitemdelegate.cpp" line="91"/>
+ <source>Add Account</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSIPSettingsWidget</name>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Obrazec</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="55"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="102"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="130"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="191"/>
+ <source>Connectivity</source>
+ <translation>Povezljivost</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="281"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="293"/>
+ <source>Use STUN</source>
+ <translation>Uporabi STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="317"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="329"/>
+ <source>Use TURN</source>
+ <translation>Uporabi TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="359"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="391"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="423"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="464"/>
+ <source>Media</source>
+ <translation>Vsebine</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="515"/>
+ <source>Enable Video</source>
+ <translation>Omogoči video</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="539"/>
+ <source>Video Codecs</source>
+ <translation>Video kodeki</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="692"/>
+ <source>Audio Codecs</source>
+ <translation>Avdio kodeki</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="142"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="151"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSettingsWidget</name>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Obrazec</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="61"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="108"/>
+ <source>Allow Calls From Untrusted Peers</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="133"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="161"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="188"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="225"/>
+ <source>Name Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="275"/>
+ <source>Address</source>
+ <translation>Naslov</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="351"/>
+ <source>OpenDHT Configuration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="398"/>
+ <source>Enable Proxy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="454"/>
+ <source>Bootstrap</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="530"/>
+ <source>Security</source>
+ <translation>Varnost</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="571"/>
+ <source>Private Key Password</source>
+ <translation>Geslo osebnega ključa</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="583"/>
+ <source>User Certificate</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="622"/>
+ <source>Private Key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="634"/>
+ <source>CA Certificate</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="766"/>
+ <source>Connectivity</source>
+ <translation>Povezljivost</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="868"/>
+ <source>Use STUN</source>
+ <translation>Uporabi STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="856"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="892"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="904"/>
+ <source>Use TURN</source>
+ <translation>Uporabi TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="934"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="966"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="998"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1039"/>
+ <source>Media</source>
+ <translation>Vsebine</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1090"/>
+ <source>Enable Video</source>
+ <translation>Omogoči video</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1267"/>
+ <source>Audio Codecs</source>
+ <translation>Avdio kodeki</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1114"/>
+ <source>Video Codecs</source>
+ <translation>Video kodeki</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="181"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AnimatedOverlay</name>
+ <message>
+ <location filename="../animatedoverlay.ui" line="14"/>
+ <source>Form</source>
+ <translation>Obrazec</translation>
+ </message>
+</context>
+<context>
+ <name>BannedItemWidget</name>
+ <message>
+ <location filename="../banneditemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Obrazec</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="80"/>
+ <source>name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="104"/>
+ <source>id</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>CallWidget</name>
+ <message>
+ <location filename="../callwidget.ui" line="184"/>
+ <source>Show conversations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="187"/>
+ <source>Conversations</source>
+ <translation>Pogovori</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="368"/>
+ <source>Search contact text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="653"/>
+ <source>Jami is free software for universal communication which respects the freedoms and privacy of its users.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="693"/>
+ <source>
+ This is your ID.
+Copy and share it with your friends!
+ </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="806"/>
+ <source>Show ring ID QR code</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="857"/>
+ <source>Share ring ID button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="915"/>
+ <source>Double-click to copy</source>
+ <translation>Kopiraj z dvojnim klikom</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="956"/>
+ <source>Error while generating QR Code</source>
+ <translation>Napaka med pripravo QR kode</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1184"/>
+ <location filename="../callwidget.ui" line="1434"/>
+ <source>best name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1208"/>
+ <source>best Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1734"/>
+ <source>Back to homepage button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1943"/>
+ <source>Add to contacts</source>
+ <translation>Dodaj v stike</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="202"/>
+ <source>Show invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="205"/>
+ <source>Invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="377"/>
+ <location filename="../callwidget.cpp" line="552"/>
+ <source>Find a new or existing contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1444"/>
+ <source>Wants to talk to you!</source>
+ <translation>Želi govoriti s tabo!</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1517"/>
+ <source>Answer incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1589"/>
+ <source>Ignore incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1539"/>
+ <source>Answer</source>
+ <translation>Odgovori</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1617"/>
+ <source>Ignore</source>
+ <translation>Ignoriraj</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1280"/>
+ <source>Cancel outgoing call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1305"/>
+ <source>Cancel</source>
+ <translation>Prekliči</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="332"/>
+ <source>Start video call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="343"/>
+ <source>Start audio call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="354"/>
+ <source>Clear conversation</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="361"/>
+ <source>Remove contact</source>
+ <translation>Odstrani stik</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="373"/>
+ <source>Block contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="384"/>
+ <source>Copy number</source>
+ <translation>Kopiraj številko</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="561"/>
+ <source>Search your received invitations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>Contact me on Jami</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>My Id is : </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="847"/>
+ <source>%1</source>
+ <comment>%1 is the contact username</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="852"/>
+ <source>%1</source>
+ <comment>%1 is the contact unique identifier</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="675"/>
+ <source>Call incoming from %1</source>
+ <translation>Dohodni klic od %1</translation>
+ </message>
+</context>
+<context>
+ <name>DeleteAccountDialog</name>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="35"/>
+ <source>Account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="58"/>
+ <source>Do you really want to delete the following account?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="153"/>
+ <source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="235"/>
+ <source>Permanently delete account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="241"/>
+ <source>Delete</source>
+ <translation>Pobriši</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="278"/>
+ <source>Cancel account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="284"/>
+ <source>Cancel</source>
+ <translation>Prekliči</translation>
+ </message>
+</context>
+<context>
+ <name>DeviceItemWidget</name>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Obrazec</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="105"/>
+ <source>Device Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="143"/>
+ <source>this device</source>
+ <translation>ta naprava</translation>
+ </message>
+</context>
+<context>
+ <name>InviteButtonsWidget</name>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="83"/>
+ <source>Accept</source>
+ <translation>Sprejmi</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="131"/>
+ <source>Refuse</source>
+ <translation>Zavrni</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="179"/>
+ <source>Block</source>
+ <translation>Blokiraj</translation>
+ </message>
+</context>
+<context>
+ <name>LinkDeviceDialog</name>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="62"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="117"/>
+ <source>Password</source>
+ <translation>Geslo</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="184"/>
+ <source>Ok</source>
+ <translation>V redu</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="218"/>
+ <source>Cancel</source>
+ <translation>Prekliči</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="279"/>
+ <source>Exporting account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="402"/>
+ <source>Your PIN is</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="432"/>
+ <source>PIN</source>
+ <translation>PIN</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="477"/>
+ <source>This pin and the account password should be entered in your device within 10 minutes.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="553"/>
+ <source>Close</source>
+ <translation>Zapri</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="34"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="96"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="110"/>
+ <source>Something went wrong.
+Please try again later.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="83"/>
+ <source>Settings</source>
+ <translation>Nastavitve</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="94"/>
+ <source>Exit</source>
+ <translation>Izhod</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="111"/>
+ <source>About</source>
+ <translation>O Ring</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="435"/>
+ <source>Jami</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>NameRegistrationDialog</name>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="35"/>
+ <source>Set Registered Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="163"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="244"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="250"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="256"/>
+ <source>Password</source>
+ <translation>Geslo</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="323"/>
+ <source>Register</source>
+ <translation>Prijavi se</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="357"/>
+ <source>Cancel</source>
+ <translation>Prekliči</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="424"/>
+ <source>Registering Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="548"/>
+ <source>Something went wrong</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="618"/>
+ <source>Close</source>
+ <translation>Zapri</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="82"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="85"/>
+ <source>Network error</source>
+ <translation>Napaka mreže</translation>
+ </message>
+</context>
+<context>
+ <name>NewWizardWidget</name>
+ <message>
+ <location filename="../newwizardwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Obrazec</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="141"/>
+ <source>Welcome Label</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="147"/>
+ <source> Welcome to</source>
+ <translation>Dobrodošli v</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="185"/>
+ <source>Welcome Logo</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="239"/>
+ <source>Create Jami account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="245"/>
+ <source>Push button for Jami account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="251"/>
+ <source>Create a Jami account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="282"/>
+ <source>Link device button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="288"/>
+ <source>Push button for device linkage start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="291"/>
+ <source>Link this device to an account</source>
+ <translation>Poveži to napravo k računu</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="328"/>
+ <source>Create Jami SIP account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="334"/>
+ <source>Push button for Jami SIP account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="340"/>
+ <source>Create a SIP account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="405"/>
+ <source>Link this device to an existing account</source>
+ <translation>Poveži to napravo k obstoječemu računu</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="469"/>
+ <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">To link this device to another account, you first </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">need to obtain a PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> code. To generate the PIN code:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Account management setting</span><span style=" font-size:14px;"> of a previous device</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choose the </span><span style=" font-size:14px; font-weight:600;">Jami account</span><span style=" font-size:14px;"> you want to use</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Devices</span><span style=" font-size:14px;"> tab</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Select </span><span style=" font-size:14px; font-weight:600;">Add a device</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">You will get the necessary PIN to complete this form. The PIN is only valid for </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutes</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="531"/>
+ <source>Enter your pin:</source>
+ <translation>Vnesi svoj PIN:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="599"/>
+ <source>Or import a file:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="626"/>
+ <source>Link from exported account archive file</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="629"/>
+ <location filename="../newwizardwidget.cpp" line="83"/>
+ <location filename="../newwizardwidget.cpp" line="218"/>
+ <source>(None)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="705"/>
+ <source>Password:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="799"/>
+ <location filename="../newwizardwidget.ui" line="1586"/>
+ <source>Profile</source>
+ <translation>Profil</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="953"/>
+ <location filename="../newwizardwidget.ui" line="1767"/>
+ <source>Profile name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1027"/>
+ <source>Account</source>
+ <translation>Račun</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1136"/>
+ <source>Register your username.
+This will reserve the username so that only you can use it.
+Your friends will be able to call you with your usename
+instead of using your ID.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1142"/>
+ <source>Public username checkbox</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1145"/>
+ <source>Checkbox selecting if the user wants a public username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1148"/>
+ <source>Register public username</source>
+ <translation>Prijavi javno ime</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1367"/>
+ <source>Public username edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1373"/>
+ <source>Choose your username</source>
+ <translation>Izberi svoje uporabniško ime:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1289"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1295"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1301"/>
+ <location filename="../newwizardwidget.ui" line="2213"/>
+ <source>Password</source>
+ <translation>Geslo</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1211"/>
+ <location filename="../newwizardwidget.ui" line="1217"/>
+ <source>Password confirmation text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1223"/>
+ <source>Confirm password</source>
+ <translation>Potrdi geslo</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1814"/>
+ <source>SIP Account</source>
+ <translation>SIP račun</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1973"/>
+ <source>SIP Server edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1979"/>
+ <source>Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2045"/>
+ <source>SIP proxy input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2051"/>
+ <source>SIP proxy text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2057"/>
+ <source>Proxy</source>
+ <translation>Proxy</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2123"/>
+ <source>SIP username input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2129"/>
+ <source>SIP Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2135"/>
+ <source>Username</source>
+ <translation>Uporabnik</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2201"/>
+ <location filename="../newwizardwidget.ui" line="2207"/>
+ <source>SIP Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message utf8="true">
+ <location filename="../newwizardwidget.ui" line="2282"/>
+ <source>Generating your Jami account…</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2356"/>
+ <source>Previous page button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2362"/>
+ <source>push button to access previous page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2365"/>
+ <source>Previous</source>
+ <translation>Prejšni</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2396"/>
+ <source>Cancel account create/link</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2402"/>
+ <source>push button to cancel account creation or linking</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2405"/>
+ <source>Back</source>
+ <translation>Nazaj</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2442"/>
+ <source>Next page Button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2448"/>
+ <source>Push button to access next page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2451"/>
+ <source>Next</source>
+ <translation>Naprej</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="75"/>
+ <source>Open File</source>
+ <translation>Odpri datoteko</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="77"/>
+ <source>Jami archive files (*.gz); All files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="123"/>
+ <source>Your account needs to be migrated. Enter your password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="419"/>
+ <source>Migrating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="412"/>
+ <source>Importing account archive...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="404"/>
+ <source>Generating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="422"/>
+ <source>Generating your SIP account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="533"/>
+ <source>Error creating account</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PasswordDialog</name>
+ <message>
+ <location filename="../passworddialog.ui" line="32"/>
+ <source>Change Account Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="97"/>
+ <source>Enter Current Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="169"/>
+ <source>Enter New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="190"/>
+ <source>Confirm New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="247"/>
+ <source>Confirm</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="290"/>
+ <source>Cancel</source>
+ <translation>Prekliči</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="143"/>
+ <source>Current Password Incorrect</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PhotoBoothDialog</name>
+ <message>
+ <location filename="../photoboothdialog.ui" line="14"/>
+ <source>Photobooth</source>
+ <translation>Foto stojnica</translation>
+ </message>
+</context>
+<context>
+ <name>PhotoboothWidget</name>
+ <message>
+ <location filename="../photoboothwidget.ui" line="20"/>
+ <source>Form</source>
+ <translation>Obrazec</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.ui" line="120"/>
+ <source>Photobooth display</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="92"/>
+ <source>Choose File</source>
+ <translation>Izberi datoteko</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="94"/>
+ <source>Image Files (*.jpg *.jpeg *.png)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PrivateBridging</name>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Choose File</source>
+ <translation>Izberi datoteko</translation>
+ </message>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Files (*)</source>
+ <translation>Datoteke (*)</translation>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../utils.cpp" line="183"/>
+ <source>No default mail client found</source>
+ <translation>Ne najdem privzetega programa za e-pošto</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="43"/>
+ <location filename="../deviceitemwidget.cpp" line="85"/>
+ <source>Edit Device Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="44"/>
+ <source>Unlink Device From Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="80"/>
+ <source>Save new device name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.cpp" line="39"/>
+ <source>Add as contact</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>RingButton</name>
+ <message>
+ <location filename="../ringbutton.ui" line="140"/>
+ <source>Select folder</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <location filename="../settingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Obrazec</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="141"/>
+ <source>Settings</source>
+ <translation>Nastavitve</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="229"/>
+ <source>Account</source>
+ <translation>Račun</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="267"/>
+ <location filename="../settingswidget.ui" line="503"/>
+ <source>General</source>
+ <translation>Splošno</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="305"/>
+ <location filename="../settingswidget.ui" line="3416"/>
+ <source>Audio / Video</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="542"/>
+ <source>System</source>
+ <translation>Sistem</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="610"/>
+ <source>Enable desktop notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="653"/>
+ <source>Keep minimized on close</source>
+ <translation>Minimiziraj ob zaprtju</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="678"/>
+ <source>Download folder</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="811"/>
+ <source>Save in</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="904"/>
+ <source>Always Recording</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="943"/>
+ <source>Updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1008"/>
+ <source>Check for updates automatically every</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1032"/>
+ <source>Interval between update checks in days selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1038"/>
+ <source> days</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1081"/>
+ <source>Check for updates now button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1084"/>
+ <source>Check for updates now</source>
+ <translation>Preveri posodobitve zdaj</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3027"/>
+ <source>Password</source>
+ <translation>Geslo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1418"/>
+ <location filename="../settingswidget.ui" line="2729"/>
+ <source>Enable</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="607"/>
+ <source>toggle enable notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="650"/>
+ <source>Toggle keep minimized on close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="764"/>
+ <source>Call Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1005"/>
+ <source>Toggle automatic updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1231"/>
+ <source>Jami Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1453"/>
+ <location filename="../settingswidget.ui" line="2761"/>
+ <source>Profile</source>
+ <translation>Profil</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1567"/>
+ <location filename="../settingswidget.ui" line="2875"/>
+ <source>Identity</source>
+ <translation>Identiteta</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1614"/>
+ <source>Id</source>
+ <translation>ID</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1673"/>
+ <source>Registered name</source>
+ <translation>Prijavljeno ime</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1721"/>
+ <source>Type here to register a username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1755"/>
+ <source>Register</source>
+ <translation>Prijavi se</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1827"/>
+ <source>Change Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1868"/>
+ <source>Export Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1909"/>
+ <location filename="../settingswidget.ui" line="3089"/>
+ <source>Delete Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1973"/>
+ <source>Linked Devices</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2078"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2142"/>
+ <source>Banned Contacts</source>
+ <translation>Zavrnjeni stiki</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3788"/>
+ <source>Format</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3831"/>
+ <source>Video device framerate selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3967"/>
+ <source>Preview unavailable</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2359"/>
+ <location filename="../settingswidget.ui" line="3187"/>
+ <source>Advanced Account Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2554"/>
+ <source>SIP Account</source>
+ <translation>SIP račun</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2925"/>
+ <source>Username</source>
+ <translation>Uporabnik</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2958"/>
+ <source>Hostname</source>
+ <translation>Strežnik</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2991"/>
+ <source>Proxy</source>
+ <translation>Proxy</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3461"/>
+ <source>Audio</source>
+ <translation>Avdio</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3511"/>
+ <source>Microphone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3551"/>
+ <source>Audio input device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3585"/>
+ <source>Output Device</source>
+ <translation>Izhodna naprava</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3625"/>
+ <source>Choose the output device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3682"/>
+ <source>Video</source>
+ <translation>Video</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3720"/>
+ <source>Device</source>
+ <translation>Naprava</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3766"/>
+ <source>Video device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="459"/>
+ <source>A registered name should not have any spaces and must be at least three letters long</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="466"/>
+ <source>This name is already taken</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="92"/>
+ <location filename="../settingswidget.cpp" line="110"/>
+ <source>Enter an alias</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="473"/>
+ <source>Register this name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="550"/>
+ <source>Remove Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="551"/>
+ <source>Enter this account's password to confirm the removal of this device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="558"/>
+ <source>Are you sure you wish to remove this device?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="589"/>
+ <source>Export Account Here</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="887"/>
+ <source>Select A Folder For Your Downloads</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="904"/>
+ <source>Select A Folder For Your Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>VideoOverlay</name>
+ <message>
+ <location filename="../videooverlay.ui" line="419"/>
+ <source>Call on Hold</source>
+ <translation>Klic na čakanju</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="89"/>
+ <source>Hold / Unhold</source>
+ <translation>Čakanje / Nadaljevanje</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="124"/>
+ <source>Chat</source>
+ <translation>Pogovor</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="162"/>
+ <source>Mute Mic</source>
+ <translation>Izključi mikrofon</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="244"/>
+ <source>Record call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="325"/>
+ <source>Name label</source>
+ <translation>Oznaka imena</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="390"/>
+ <source>Time elapsed</source>
+ <translation>Pretečeni čas</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="393"/>
+ <source>00:00</source>
+ <translation>00:00</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="57"/>
+ <source>Hangup</source>
+ <translation>Prekini</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="203"/>
+ <source>Mute Video</source>
+ <translation>Izključi video</translation>
+ </message>
+</context>
+<context>
+ <name>VideoView</name>
+ <message>
+ <location filename="../videoview.cpp" line="271"/>
+ <source>Share entire screen</source>
+ <translation>Deli celoten zaslon</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="274"/>
+ <source>Share screen area</source>
+ <translation>Deli območje zaslona</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="281"/>
+ <source>Share file</source>
+ <translation>Deli datoteko</translation>
+ </message>
+</context>
+</TS>
\ No newline at end of file
diff --git a/translations/ring_client_windows_sq_AL.ts b/translations/ring_client_windows_sq_AL.ts
new file mode 100644
index 0000000..3a02cfd
--- /dev/null
+++ b/translations/ring_client_windows_sq_AL.ts
@@ -0,0 +1,1605 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="sq_AL" version="2.0">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../aboutdialog.ui" line="435"/>
+ <location filename="../aboutdialog.ui" line="465"/>
+ <source>About</source>
+ <translation>Mbi</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="462"/>
+ <source>about button</source>
+ <translation>buton Mbi</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="478"/>
+ <source>credits button</source>
+ <translation>buton Kreditesh</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="481"/>
+ <source>Credits</source>
+ <translation>Kredite</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="547"/>
+ <source>Free as in Freedom</source>
+ <translation>I lirë si në Liri </translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="563"/>
+ <source>The Microsoft Windows client for Jami.
+Jami is a secured and distributed communication software.</source>
+ <translation>Klienti Jami për Microsoft Windows.
+Jami është një software komunikimi të siguruar dhe të shpërndarë.</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="32"/>
+ <source>version</source>
+ <translation>version</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="39"/>
+ <source>Created by:</source>
+ <translation>Krijuar nga:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="73"/>
+ <source>Artwork by:</source>
+ <translation>Përkujdesja grafike:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="77"/>
+ <source>Based on the SFLPhone project</source>
+ <translation>Bazuar në projektin SFLPhone</translation>
+ </message>
+</context>
+<context>
+ <name>AccountItemDelegate</name>
+ <message>
+ <location filename="../accountitemdelegate.cpp" line="91"/>
+ <source>Add Account</source>
+ <translation>Shtoni Llogari</translation>
+ </message>
+</context>
+<context>
+ <name>AdvancedSIPSettingsWidget</name>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formular</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="55"/>
+ <source>Call Settings</source>
+ <translation>Rregullime për Thirrjet</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="102"/>
+ <source>Auto Answer Calls</source>
+ <translation>Vetëpërgjigjiu Thirrjeve</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="130"/>
+ <source>Enable Custom Ringtone</source>
+ <translation>Aktivizo Zile Vetjake</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="191"/>
+ <source>Connectivity</source>
+ <translation>Aftësi lidhjeje</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="281"/>
+ <source>STUN Address</source>
+ <translation>Adresë STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="293"/>
+ <source>Use STUN</source>
+ <translation>Përdor STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="317"/>
+ <source>Use UPnP</source>
+ <translation>Përdor UPnP</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="329"/>
+ <source>Use TURN</source>
+ <translation>Përdor TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="359"/>
+ <source>TURN Password</source>
+ <translation>Fjalëkalim TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="391"/>
+ <source>TURN Username</source>
+ <translation>Emër përdoruesi TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="423"/>
+ <source>TURN Address</source>
+ <translation>Adresë TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="464"/>
+ <source>Media</source>
+ <translation>Media</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="515"/>
+ <source>Enable Video</source>
+ <translation>Aktivizo Video</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="539"/>
+ <source>Video Codecs</source>
+ <translation>Kodekë Video</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="692"/>
+ <source>Audio Codecs</source>
+ <translation>Kodekë Audio</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="142"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation>Kartela Audio (*.wav *.ogg *.opus *.mp3 *aiff *wma)</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="151"/>
+ <source>Add a custom ringtone</source>
+ <translation>Shtoni një zile vetjake</translation>
+ </message>
+</context>
+<context>
+ <name>AdvancedSettingsWidget</name>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formular</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="61"/>
+ <source>Call Settings</source>
+ <translation>Rregullime për Thirrjet</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="108"/>
+ <source>Allow Calls From Untrusted Peers</source>
+ <translation>Lejo Thirrje Prej Ortakësh Jo të Besuar</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="133"/>
+ <source>Auto Answer Calls</source>
+ <translation>Vetëpërgjigjiu Thirrjeve</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="161"/>
+ <source>Enable Custom Ringtone</source>
+ <translation>Aktivizo Zile Vetjake</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="188"/>
+ <source>Add a custom ringtone</source>
+ <translation>Shtoni një zile vetjake</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="225"/>
+ <source>Name Server</source>
+ <translation>Shërbyes Emrash</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="275"/>
+ <source>Address</source>
+ <translation>Adresë</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="351"/>
+ <source>OpenDHT Configuration</source>
+ <translation>Formësim OpenDHT-je</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="398"/>
+ <source>Enable Proxy</source>
+ <translation>Aktivizo Ndërmjetës</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="454"/>
+ <source>Bootstrap</source>
+ <translation>Bootstrap</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="530"/>
+ <source>Security</source>
+ <translation>Siguri</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="571"/>
+ <source>Private Key Password</source>
+ <translation>Fjalëkalim Kyçi Privat</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="583"/>
+ <source>User Certificate</source>
+ <translation>Dëshmi Përdoruesi</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="622"/>
+ <source>Private Key</source>
+ <translation>Kyç Privat</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="634"/>
+ <source>CA Certificate</source>
+ <translation>Dëshmi AD</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="766"/>
+ <source>Connectivity</source>
+ <translation>Aftësi lidhjeje</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="868"/>
+ <source>Use STUN</source>
+ <translation>Përdor STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="856"/>
+ <source>STUN Address</source>
+ <translation>Adresë STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="892"/>
+ <source>Use UPnP</source>
+ <translation>Përdor UPnP</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="904"/>
+ <source>Use TURN</source>
+ <translation>Përdor TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="934"/>
+ <source>TURN Password</source>
+ <translation>Fjalëkalim TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="966"/>
+ <source>TURN Username</source>
+ <translation>Emër përdoruesi TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="998"/>
+ <source>TURN Address</source>
+ <translation>Adresë TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1039"/>
+ <source>Media</source>
+ <translation>Media</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1090"/>
+ <source>Enable Video</source>
+ <translation>Aktivizo Video</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1267"/>
+ <source>Audio Codecs</source>
+ <translation>Kodekë Audio</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1114"/>
+ <source>Video Codecs</source>
+ <translation>Kodekë Video</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="181"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation>Kartela Audio (*.wav *.ogg *.opus *.mp3 *aiff *wma)</translation>
+ </message>
+</context>
+<context>
+ <name>AnimatedOverlay</name>
+ <message>
+ <location filename="../animatedoverlay.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formular</translation>
+ </message>
+</context>
+<context>
+ <name>BannedItemWidget</name>
+ <message>
+ <location filename="../banneditemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formular</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="80"/>
+ <source>name</source>
+ <translation>emër</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="104"/>
+ <source>id</source>
+ <translation>id</translation>
+ </message>
+</context>
+<context>
+ <name>CallWidget</name>
+ <message>
+ <location filename="../callwidget.ui" line="184"/>
+ <source>Show conversations</source>
+ <translation>Shfaq biseda</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="187"/>
+ <source>Conversations</source>
+ <translation>Biseda</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="368"/>
+ <source>Search contact text input</source>
+ <translation>Dhënie teksti kërkimi kontakti</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="653"/>
+ <source>Jami is free software for universal communication which respects the freedoms and privacy of its users.</source>
+ <translation>Jami është software i lirë për komunikim universal që respekton privatësinë e përdoruesve të tij.</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="693"/>
+ <source>
+ This is your ID.
+Copy and share it with your friends!
+ </source>
+ <translation>
+Kjo është ID-ja juaj.
+Kopjojeni dhe jepuani shokëve!</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="806"/>
+ <source>Show ring ID QR code</source>
+ <translation>Shfaq kod QR ID-je Ring-u</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="857"/>
+ <source>Share ring ID button</source>
+ <translation>Buton Ndani ID Ringu Me të Tjerët</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="915"/>
+ <source>Double-click to copy</source>
+ <translation>Dyklikojeni që të kopjohet</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="956"/>
+ <source>Error while generating QR Code</source>
+ <translation>Gabim teksa prodhohej kodi QR</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1184"/>
+ <location filename="../callwidget.ui" line="1434"/>
+ <source>best name</source>
+ <translation>Përzgjedhës shpejtësie kuadrosh për pajisje video</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1208"/>
+ <source>best Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1734"/>
+ <source>Back to homepage button</source>
+ <translation>Buton Mbrapsht te faqja hyrëse</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1943"/>
+ <source>Add to contacts</source>
+ <translation>Shtoje te kontaktet</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="202"/>
+ <source>Show invites</source>
+ <translation>Shfaq ftesa</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="205"/>
+ <source>Invites</source>
+ <translation>Ftesa</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="377"/>
+ <location filename="../callwidget.cpp" line="552"/>
+ <source>Find a new or existing contact</source>
+ <translation>Gjeni një kontakt të ri ose ekzistues</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1444"/>
+ <source>Wants to talk to you!</source>
+ <translation>Dëshiron të bisedojë me ju!</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1517"/>
+ <source>Answer incoming call button</source>
+ <translation>Buton Përgjigjuni thirrjes ardhëse</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1589"/>
+ <source>Ignore incoming call button</source>
+ <translation>Buton Shpërfille thirrjen ardhëse</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1539"/>
+ <source>Answer</source>
+ <translation>Përgjigjuni</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1617"/>
+ <source>Ignore</source>
+ <translation>Shpërfille</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1280"/>
+ <source>Cancel outgoing call</source>
+ <translation>Anuloje dërgimin e thirrjes</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1305"/>
+ <source>Cancel</source>
+ <translation>Anuloje</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="332"/>
+ <source>Start video call</source>
+ <translation>Filloni thirrje video</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="343"/>
+ <source>Start audio call</source>
+ <translation>Filloni thirrje audio</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="354"/>
+ <source>Clear conversation</source>
+ <translation>Spastroje bisedën</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="361"/>
+ <source>Remove contact</source>
+ <translation>Hiqe kontaktin</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="373"/>
+ <source>Block contact</source>
+ <translation>Bllokojeni kontaktin</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="384"/>
+ <source>Copy number</source>
+ <translation>Kopjoje numrin</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="561"/>
+ <source>Search your received invitations</source>
+ <translation>Kërkoni te ftesat tuaja të marra</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>Contact me on Jami</source>
+ <translation>Lidhuni me mua në Jami</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>My Id is : </source>
+ <translation>ID-ja ime është:</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="847"/>
+ <source>%1</source>
+ <comment>%1 is the contact username</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="852"/>
+ <source>%1</source>
+ <comment>%1 is the contact unique identifier</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="675"/>
+ <source>Call incoming from %1</source>
+ <translation>Thirrje ardhur nga %1</translation>
+ </message>
+</context>
+<context>
+ <name>DeleteAccountDialog</name>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="35"/>
+ <source>Account deletion</source>
+ <translation>Fshirje llogarie</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="58"/>
+ <source>Do you really want to delete the following account?</source>
+ <translation>Doni vërtet të fshihet llogaria vijuese?</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="153"/>
+ <source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
+ <translation>Nëse kjo llogari s’është eksportuar, ose shtuar te një tjetër pajisje, do të humbë në mënyrë të pakthyeshme.</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="235"/>
+ <source>Permanently delete account</source>
+ <translation>Fshije llogarinë përgjithmonë</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="241"/>
+ <source>Delete</source>
+ <translation>Fshije</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="278"/>
+ <source>Cancel account deletion</source>
+ <translation>Anulo fshirje llogarie</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="284"/>
+ <source>Cancel</source>
+ <translation>Anuloje</translation>
+ </message>
+</context>
+<context>
+ <name>DeviceItemWidget</name>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formular</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="105"/>
+ <source>Device Id</source>
+ <translation>ID pajisjeje</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="143"/>
+ <source>this device</source>
+ <translation>këtë pajisje</translation>
+ </message>
+</context>
+<context>
+ <name>InviteButtonsWidget</name>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="83"/>
+ <source>Accept</source>
+ <translation>Pranoje</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="131"/>
+ <source>Refuse</source>
+ <translation>Hidhe tej</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="179"/>
+ <source>Block</source>
+ <translation>Bllokoje</translation>
+ </message>
+</context>
+<context>
+ <name>LinkDeviceDialog</name>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation>Dialog</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="62"/>
+ <source>Enter your account password</source>
+ <translation>Jepni fjalëkalimin e llogarisë tuaj</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="117"/>
+ <source>Password</source>
+ <translation>Fjalëkalim</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="184"/>
+ <source>Ok</source>
+ <translation>OK</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="218"/>
+ <source>Cancel</source>
+ <translation>Anuloje</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="279"/>
+ <source>Exporting account</source>
+ <translation>Po eksportohet llogari</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="402"/>
+ <source>Your PIN is</source>
+ <translation>PIN-i juaj është</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="432"/>
+ <source>PIN</source>
+ <translation>PIN</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="477"/>
+ <source>This pin and the account password should be entered in your device within 10 minutes.</source>
+ <translation>Ky PIN dhe fjalëkalimi i llogarisë duhen dhënë te pajisja juaj brenda 10 minutash</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="553"/>
+ <source>Close</source>
+ <translation>Mbylle</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="34"/>
+ <source>Link Another Device</source>
+ <translation>Lidhni Një Pajisje Tjetër</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="96"/>
+ <source>Incorrect password</source>
+ <translation>Fjalëkalim i pasaktë</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="110"/>
+ <source>Something went wrong.
+Please try again later.</source>
+ <translation>Diç shkoi ters.
+Ju lutemi, riprovoni më vonë.</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="83"/>
+ <source>Settings</source>
+ <translation>Rregullime</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="94"/>
+ <source>Exit</source>
+ <translation>Dalje</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="111"/>
+ <source>About</source>
+ <translation>Mbi</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="435"/>
+ <source>Jami</source>
+ <translation>Jami</translation>
+ </message>
+</context>
+<context>
+ <name>NameRegistrationDialog</name>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="35"/>
+ <source>Set Registered Name</source>
+ <translation>Caktoni Emër të Regjistruar</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="163"/>
+ <source>Enter your account password</source>
+ <translation>Jepni fjalëkalimin e llogarisë tuaj</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="244"/>
+ <source>Password text input</source>
+ <translation>Dhënie teksti fjalëkalimi</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="250"/>
+ <source>Password text entry</source>
+ <translation>Dhënie teksti fjalëkalimi</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="256"/>
+ <source>Password</source>
+ <translation>Fjalëkalim</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="323"/>
+ <source>Register</source>
+ <translation>Regjistrohuni</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="357"/>
+ <source>Cancel</source>
+ <translation>Anuloje</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="424"/>
+ <source>Registering Name</source>
+ <translation>Po Regjistrohet Emër</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="548"/>
+ <source>Something went wrong</source>
+ <translation>Diç shkoi ters</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="618"/>
+ <source>Close</source>
+ <translation>Mbylle</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="82"/>
+ <source>Incorrect password</source>
+ <translation>Fjalëkalim i pasaktë</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="85"/>
+ <source>Network error</source>
+ <translation>Gabim rrjeti</translation>
+ </message>
+</context>
+<context>
+ <name>NewWizardWidget</name>
+ <message>
+ <location filename="../newwizardwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formular</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="141"/>
+ <source>Welcome Label</source>
+ <translation>Etiketë Mirëseardhjeje</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="147"/>
+ <source> Welcome to</source>
+ <translation>Mirë se vini te</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="185"/>
+ <source>Welcome Logo</source>
+ <translation>Logo Mirëseardhjeje</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="239"/>
+ <source>Create Jami account button</source>
+ <translation>Buton Krijoni llogari Jami</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="245"/>
+ <source>Push button for Jami account creation start trigger</source>
+ <translation>Buton për të shkaktuar fillimin e krijimit të llogarisë Jami</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="251"/>
+ <source>Create a Jami account</source>
+ <translation>Krijoni një llogari Jami</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="282"/>
+ <source>Link device button</source>
+ <translation>Buton Lidhni pajisje</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="288"/>
+ <source>Push button for device linkage start trigger</source>
+ <translation>Buton për të shkaktuar fillimin e lidhjes së një llogarie</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="291"/>
+ <source>Link this device to an account</source>
+ <translation>Lidheni këtë pajisje me një llogari</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="328"/>
+ <source>Create Jami SIP account button</source>
+ <translation>Krijoni buton llogarie SIP Jami</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="334"/>
+ <source>Push button for Jami SIP account creation start trigger</source>
+ <translation>Buton për të shkaktuar fillimin e krijimit të llogarisë SIP Jami</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="340"/>
+ <source>Create a SIP account</source>
+ <translation>Krijoni llogari SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="405"/>
+ <source>Link this device to an existing account</source>
+ <translation>Lidheni këtë pajisje me një llogari ekzistuese</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="469"/>
+ <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">To link this device to another account, you first </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">need to obtain a PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> code. To generate the PIN code:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Account management setting</span><span style=" font-size:14px;"> of a previous device</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choose the </span><span style=" font-size:14px; font-weight:600;">Jami account</span><span style=" font-size:14px;"> you want to use</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Devices</span><span style=" font-size:14px;"> tab</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Select </span><span style=" font-size:14px; font-weight:600;">Add a device</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">You will get the necessary PIN to complete this form. The PIN is only valid for </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutes</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></source>
+ <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">Që të lidhni këtë pajisje me një tjetër llogari, së pari </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">lypset të merrni një kod PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">. Që të prodhoni kodin PIN:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Shkoni te </span><span style=" font-size:14px; font-weight:600;">rregullimi Administrim llogarie</span><span style=" font-size:14px;"> i një pajisje të mëparshme</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Zgjidhni </span><span style=" font-size:14px; font-weight:600;">llogarinë Jami</span><span style=" font-size:14px;"> që doni të përdoret</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Shkoni te skeda </span><span style=" font-size:14px; font-weight:600;">Pajisje</span><span style=" font-size:14px;"></span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">përzgjidhni </span><span style=" font-size:14px; font-weight:600;">Shtoni një pajisje</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">Do të merrni PIN-in e nevojshëm për plotësimin e këtij formulari. PIN-i është i vlefshëm vetëm për </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minuta</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="531"/>
+ <source>Enter your pin:</source>
+ <translation>Jepni PIN-in tuaj:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="599"/>
+ <source>Or import a file:</source>
+ <translation>Ose importoni një kartelë:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="626"/>
+ <source>Link from exported account archive file</source>
+ <translation>Lidheni prej kartele arkivi të eksportuar llogarie</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="629"/>
+ <location filename="../newwizardwidget.cpp" line="83"/>
+ <location filename="../newwizardwidget.cpp" line="218"/>
+ <source>(None)</source>
+ <translation>(Asnjë)</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="705"/>
+ <source>Password:</source>
+ <translation>Fjalëkalim:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="799"/>
+ <location filename="../newwizardwidget.ui" line="1586"/>
+ <source>Profile</source>
+ <translation>Profil</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="953"/>
+ <location filename="../newwizardwidget.ui" line="1767"/>
+ <source>Profile name</source>
+ <translation>Emër profili</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1027"/>
+ <source>Account</source>
+ <translation>Llogari</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1136"/>
+ <source>Register your username.
+This will reserve the username so that only you can use it.
+Your friends will be able to call you with your usename
+instead of using your ID.</source>
+ <translation>Regjistroni emrin tuaj të përdoruesit.
+Kjo do të bëjë rezervimin e emrit të përdoruesit, që kështu vetëm ju mund ta përdorni.
+Shokët tuaj do të jenë në gjendje t’ju bëjnë thirrje me emrin tuaj të përdoruesit
+në vend se të përdorin ID-në tuaj.</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1142"/>
+ <source>Public username checkbox</source>
+ <translation>Kutizë emri publik përdoruesi</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1145"/>
+ <source>Checkbox selecting if the user wants a public username</source>
+ <translation>Kutizë përzgjedhjeje nëse përdoruesi dëshiron një emër publik përdoruesi</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1148"/>
+ <source>Register public username</source>
+ <translation>Regjistroni emër publik përdoruesi</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1367"/>
+ <source>Public username edit</source>
+ <translation>Përpunim emri publik përdoruesi</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1373"/>
+ <source>Choose your username</source>
+ <translation>Zgjidhni mrin tuaj të përdoruesit</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1289"/>
+ <source>Password text input</source>
+ <translation>Dhënie teksti fjalëkalimi</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1295"/>
+ <source>Password text entry</source>
+ <translation>Dhënie teksti fjalëkalimi</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1301"/>
+ <location filename="../newwizardwidget.ui" line="2213"/>
+ <source>Password</source>
+ <translation>Fjalëkalim</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1211"/>
+ <location filename="../newwizardwidget.ui" line="1217"/>
+ <source>Password confirmation text input</source>
+ <translation>Dhënie teksti ripohimi fjalëkalimi</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1223"/>
+ <source>Confirm password</source>
+ <translation>Ripohoni fjalëkalimin</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1814"/>
+ <source>SIP Account</source>
+ <translation>Llogari SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1973"/>
+ <source>SIP Server edit</source>
+ <translation>Përpunim Shërbyesi SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1979"/>
+ <source>Server</source>
+ <translation>Shërbyes</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2045"/>
+ <source>SIP proxy input</source>
+ <translation>Dhënie ndërmjetësi SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2051"/>
+ <source>SIP proxy text entry</source>
+ <translation>Zë teksti ndërmjetësi SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2057"/>
+ <source>Proxy</source>
+ <translation>Ndërmjetës</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2123"/>
+ <source>SIP username input</source>
+ <translation>Dhënie emri përdoruesi SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2129"/>
+ <source>SIP Password text entry</source>
+ <translation>Zë teksti Fjalëkalimi SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2135"/>
+ <source>Username</source>
+ <translation>Emër përdoruesi</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2201"/>
+ <location filename="../newwizardwidget.ui" line="2207"/>
+ <source>SIP Password text input</source>
+ <translation>Dhënie teksti fjalëkalimi SIP</translation>
+ </message>
+ <message utf8="true">
+ <location filename="../newwizardwidget.ui" line="2282"/>
+ <source>Generating your Jami account…</source>
+ <translation>Po prodhohet llogaria juaj Jami…</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2356"/>
+ <source>Previous page button</source>
+ <translation>Buton Faqja e mëparshme</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2362"/>
+ <source>push button to access previous page of wizard</source>
+ <translation>buton për të kaluar te faqja e mëparshme e ndihmësit</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2365"/>
+ <source>Previous</source>
+ <translation>I mëparshmi</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2396"/>
+ <source>Cancel account create/link</source>
+ <translation>Anuloni krijim/lidhje llogarie</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2402"/>
+ <source>push button to cancel account creation or linking</source>
+ <translation>shtypni butoni që të anulohet krijimi ose lidhja e llogarisë</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2405"/>
+ <source>Back</source>
+ <translation>Mbrapsht</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2442"/>
+ <source>Next page Button</source>
+ <translation>Buton Faqja pasuese</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2448"/>
+ <source>Push button to access next page of wizard</source>
+ <translation>buton për të kaluar te faqja pasuese e ndihmësit</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2451"/>
+ <source>Next</source>
+ <translation>Pasuesi</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="75"/>
+ <source>Open File</source>
+ <translation>Hapni Kartelë</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="77"/>
+ <source>Jami archive files (*.gz); All files (*)</source>
+ <translation>Kartela arkivi Jami (*.gz); Krejt kartelat (*)</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="123"/>
+ <source>Your account needs to be migrated. Enter your password.</source>
+ <translation>Lypset të migrohet llogaria juaj. Jepni fjalëkalimin tuaj.</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="419"/>
+ <source>Migrating your Jami account...</source>
+ <translation>Po migrohet llogaria juaj Jami…</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="412"/>
+ <source>Importing account archive...</source>
+ <translation>Po importohet arkiv llogarie…</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="404"/>
+ <source>Generating your Jami account...</source>
+ <translation>Po prodhohet llogaria juaj Jami…</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="422"/>
+ <source>Generating your SIP account...</source>
+ <translation>Po prodhohet llogaria juaj SIP…</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="533"/>
+ <source>Error creating account</source>
+ <translation>Gabim në krijimin e llogarisë</translation>
+ </message>
+</context>
+<context>
+ <name>PasswordDialog</name>
+ <message>
+ <location filename="../passworddialog.ui" line="32"/>
+ <source>Change Account Password</source>
+ <translation>Ndryshoni Fjalëkalim Llogarie</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="97"/>
+ <source>Enter Current Password</source>
+ <translation>Jepni Fjalëkalimin e Tanishëm</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="169"/>
+ <source>Enter New Password</source>
+ <translation>Jepni Fjalëkalimin e Ri</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="190"/>
+ <source>Confirm New Password</source>
+ <translation>Ripohoni Fjalëkalim të Ri</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="247"/>
+ <source>Confirm</source>
+ <translation>Ripohoje</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="290"/>
+ <source>Cancel</source>
+ <translation>Anuloje</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="143"/>
+ <source>Current Password Incorrect</source>
+ <translation>Fjalëkalim i Tanishëm i Pasaktë</translation>
+ </message>
+</context>
+<context>
+ <name>PhotoBoothDialog</name>
+ <message>
+ <location filename="../photoboothdialog.ui" line="14"/>
+ <source>Photobooth</source>
+ <translation>Kioskë fotosh</translation>
+ </message>
+</context>
+<context>
+ <name>PhotoboothWidget</name>
+ <message>
+ <location filename="../photoboothwidget.ui" line="20"/>
+ <source>Form</source>
+ <translation>Formular</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.ui" line="120"/>
+ <source>Photobooth display</source>
+ <translation>Shfaqje kioske fotosh</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="92"/>
+ <source>Choose File</source>
+ <translation>Zgjidhni Kartelë</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="94"/>
+ <source>Image Files (*.jpg *.jpeg *.png)</source>
+ <translation>Kartela Figurash (*.jpg *.jpeg *.png)</translation>
+ </message>
+</context>
+<context>
+ <name>PrivateBridging</name>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Choose File</source>
+ <translation>Zgjidhni Kartelë</translation>
+ </message>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Files (*)</source>
+ <translation>Kartela (*)</translation>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../utils.cpp" line="183"/>
+ <source>No default mail client found</source>
+ <translation>S’u gjet klient parazgjedhje poste</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="43"/>
+ <location filename="../deviceitemwidget.cpp" line="85"/>
+ <source>Edit Device Name</source>
+ <translation>Përpunoni Emër Pajisjeje</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="44"/>
+ <source>Unlink Device From Account</source>
+ <translation>Hiqini Lidhjen Prej Llogarie Kësaj Pajisjeje</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="80"/>
+ <source>Save new device name</source>
+ <translation>Ruani emrin e pajisjes së re</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.cpp" line="39"/>
+ <source>Add as contact</source>
+ <translation>Shtojeni si kontakt</translation>
+ </message>
+</context>
+<context>
+ <name>RingButton</name>
+ <message>
+ <location filename="../ringbutton.ui" line="140"/>
+ <source>Select folder</source>
+ <translation>Përzgjidhni dosje</translation>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <location filename="../settingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formular</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="141"/>
+ <source>Settings</source>
+ <translation>Rregullime</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="229"/>
+ <source>Account</source>
+ <translation>Llogari</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="267"/>
+ <location filename="../settingswidget.ui" line="503"/>
+ <source>General</source>
+ <translation>Të përgjithshme</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="305"/>
+ <location filename="../settingswidget.ui" line="3416"/>
+ <source>Audio / Video</source>
+ <translation>Audio / Video</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="542"/>
+ <source>System</source>
+ <translation>Sistem</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="610"/>
+ <source>Enable desktop notifications</source>
+ <translation>Aktivizoni njoftime nga desktopi</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="653"/>
+ <source>Keep minimized on close</source>
+ <translation>Mbaje të minimizuar kur dilet</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="678"/>
+ <source>Download folder</source>
+ <translation>Dosje Shkarkimi</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="811"/>
+ <source>Save in</source>
+ <translation>Ruaje te</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="904"/>
+ <source>Always Recording</source>
+ <translation>Përherë Në Regjistrim</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="943"/>
+ <source>Updates</source>
+ <translation>Përditësime</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1008"/>
+ <source>Check for updates automatically every</source>
+ <translation>Kontrollo vetvetiu për përditësime çdo</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1032"/>
+ <source>Interval between update checks in days selector</source>
+ <translation>Përzgjedhës intervali mes kontrollesh për përditësime, në ditë</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1038"/>
+ <source> days</source>
+ <translation>ditë</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1081"/>
+ <source>Check for updates now button</source>
+ <translation>Buton Kontrollo tani për përditësime</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1084"/>
+ <source>Check for updates now</source>
+ <translation>Kontrollo tani për përditësime</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3027"/>
+ <source>Password</source>
+ <translation>Fjalëkalim</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1418"/>
+ <location filename="../settingswidget.ui" line="2729"/>
+ <source>Enable</source>
+ <translation>Aktivizoje</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="607"/>
+ <source>toggle enable notifications</source>
+ <translation>aktivizo/çaktivizo njoftime</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="650"/>
+ <source>Toggle keep minimized on close</source>
+ <translation>Këmbe zgjedhjen për “Mbaje të minimizuar kur dilet”</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="764"/>
+ <source>Call Recordings</source>
+ <translation>Incizim Thirrjesh</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1005"/>
+ <source>Toggle automatic updates</source>
+ <translation>Aktivizo/çaktivizo përditësime të automatizuara</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1231"/>
+ <source>Jami Account</source>
+ <translation>Llogari Jami</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1453"/>
+ <location filename="../settingswidget.ui" line="2761"/>
+ <source>Profile</source>
+ <translation>Profil</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1567"/>
+ <location filename="../settingswidget.ui" line="2875"/>
+ <source>Identity</source>
+ <translation>Identitet</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1614"/>
+ <source>Id</source>
+ <translation>ID</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1673"/>
+ <source>Registered name</source>
+ <translation>Emër i regjistruar</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1721"/>
+ <source>Type here to register a username</source>
+ <translation>Shtypni këtu që të regjistroni një emër përdoruesi</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1755"/>
+ <source>Register</source>
+ <translation>Regjistrohuni</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1827"/>
+ <source>Change Password</source>
+ <translation>Ndryshoni Fjalëkalimin</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1868"/>
+ <source>Export Account</source>
+ <translation>Eksportoje Llogarinë</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1909"/>
+ <location filename="../settingswidget.ui" line="3089"/>
+ <source>Delete Account</source>
+ <translation>Fshije Llogarinë</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1973"/>
+ <source>Linked Devices</source>
+ <translation>Pajisje të Lidhura</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2078"/>
+ <source>Link Another Device</source>
+ <translation>Lidhni Një Pajisje Tjetër</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2142"/>
+ <source>Banned Contacts</source>
+ <translation>Kontakte të Dëbuar</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3788"/>
+ <source>Format</source>
+ <translation>Format</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3831"/>
+ <source>Video device framerate selector</source>
+ <translation>Përzgjedhës shpejtësie kuadrosh pajisjeje video</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3967"/>
+ <source>Preview unavailable</source>
+ <translation>S’ka paraparje</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2359"/>
+ <location filename="../settingswidget.ui" line="3187"/>
+ <source>Advanced Account Settings</source>
+ <translation>Rregullime të Mëtejshme Llogarie</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2554"/>
+ <source>SIP Account</source>
+ <translation>Llogari SIP</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2925"/>
+ <source>Username</source>
+ <translation>Emër përdoruesi</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2958"/>
+ <source>Hostname</source>
+ <translation>Strehëemër</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2991"/>
+ <source>Proxy</source>
+ <translation>Ndërmjetës</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3461"/>
+ <source>Audio</source>
+ <translation>Audio</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3511"/>
+ <source>Microphone</source>
+ <translation>Mikrofon</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3551"/>
+ <source>Audio input device selector</source>
+ <translation>Përzgjedhës pajisje audio në hyrje</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3585"/>
+ <source>Output Device</source>
+ <translation>Pajisje Në Dalje</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3625"/>
+ <source>Choose the output device</source>
+ <translation>Zgjidhni pajisje output-i</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3682"/>
+ <source>Video</source>
+ <translation>Video</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3720"/>
+ <source>Device</source>
+ <translation>Pajisje</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3766"/>
+ <source>Video device selector</source>
+ <translation>Përzgjedhës pajisje video</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="459"/>
+ <source>A registered name should not have any spaces and must be at least three letters long</source>
+ <translation>Emri i regjistruar s’duhet të përmbajë hapësira dhe duhet të jetë të paktën tre shkronja i gjatë</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="466"/>
+ <source>This name is already taken</source>
+ <translation>Ky emër është zënë tashmë</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="92"/>
+ <location filename="../settingswidget.cpp" line="110"/>
+ <source>Enter an alias</source>
+ <translation>Jepni një alias</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="473"/>
+ <source>Register this name</source>
+ <translation>Regjistro këtë emër</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="550"/>
+ <source>Remove Device</source>
+ <translation>Hiqe Pajisjen</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="551"/>
+ <source>Enter this account's password to confirm the removal of this device</source>
+ <translation>Që të ripohoni heqjen e kësaj pajisje, jepni fjalëkalimin e kësaj llogarie</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="558"/>
+ <source>Are you sure you wish to remove this device?</source>
+ <translation>Jeni i sigurt se doni të hiqet kjo pajisje?</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="589"/>
+ <source>Export Account Here</source>
+ <translation>Eksportoje Llogarinë Këtu</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="887"/>
+ <source>Select A Folder For Your Downloads</source>
+ <translation>Përzgjidhni Një Dosje Për Shkarkimet Tuaja</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="904"/>
+ <source>Select A Folder For Your Recordings</source>
+ <translation>Përzgjidhni Një Dosje Për Regjistrimet Tuaja</translation>
+ </message>
+</context>
+<context>
+ <name>VideoOverlay</name>
+ <message>
+ <location filename="../videooverlay.ui" line="419"/>
+ <source>Call on Hold</source>
+ <translation>Thirrje Pezull</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="89"/>
+ <source>Hold / Unhold</source>
+ <translation>Mbaje Pezull/Rimerre</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="124"/>
+ <source>Chat</source>
+ <translation>Fjalosje</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="162"/>
+ <source>Mute Mic</source>
+ <translation>Heshtoje Mikrofonin</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="244"/>
+ <source>Record call</source>
+ <translation>Incizo thirrjen</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="325"/>
+ <source>Name label</source>
+ <translation>Etiketë emri</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="390"/>
+ <source>Time elapsed</source>
+ <translation>Kohë e rrjedhur</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="393"/>
+ <source>00:00</source>
+ <translation>00:00</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="57"/>
+ <source>Hangup</source>
+ <translation>Mbylle</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="203"/>
+ <source>Mute Video</source>
+ <translation>Hiqi Zërin Videos</translation>
+ </message>
+</context>
+<context>
+ <name>VideoView</name>
+ <message>
+ <location filename="../videoview.cpp" line="271"/>
+ <source>Share entire screen</source>
+ <translation>Nda krejt ekranin</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="274"/>
+ <source>Share screen area</source>
+ <translation>Ndani me të tjerët zonën e ekranit</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="281"/>
+ <source>Share file</source>
+ <translation>Ndani kartelë me të tjerë</translation>
+ </message>
+</context>
+</TS>
\ No newline at end of file
diff --git a/translations/ring_client_windows_sr@latin.ts b/translations/ring_client_windows_sr@latin.ts
new file mode 100644
index 0000000..bd133c6
--- /dev/null
+++ b/translations/ring_client_windows_sr@latin.ts
@@ -0,0 +1,1589 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="sr@latin" version="2.0">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../aboutdialog.ui" line="435"/>
+ <location filename="../aboutdialog.ui" line="465"/>
+ <source>About</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="462"/>
+ <source>about button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="478"/>
+ <source>credits button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="481"/>
+ <source>Credits</source>
+ <translation>Zasluge</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="547"/>
+ <source>Free as in Freedom</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="563"/>
+ <source>The Microsoft Windows client for Jami.
+Jami is a secured and distributed communication software.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="32"/>
+ <source>version</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="39"/>
+ <source>Created by:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="73"/>
+ <source>Artwork by:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="77"/>
+ <source>Based on the SFLPhone project</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AccountItemDelegate</name>
+ <message>
+ <location filename="../accountitemdelegate.cpp" line="91"/>
+ <source>Add Account</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSIPSettingsWidget</name>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="55"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="102"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="130"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="191"/>
+ <source>Connectivity</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="281"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="293"/>
+ <source>Use STUN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="317"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="329"/>
+ <source>Use TURN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="359"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="391"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="423"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="464"/>
+ <source>Media</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="515"/>
+ <source>Enable Video</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="539"/>
+ <source>Video Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="692"/>
+ <source>Audio Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="142"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="151"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSettingsWidget</name>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="61"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="108"/>
+ <source>Allow Calls From Untrusted Peers</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="133"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="161"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="188"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="225"/>
+ <source>Name Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="275"/>
+ <source>Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="351"/>
+ <source>OpenDHT Configuration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="398"/>
+ <source>Enable Proxy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="454"/>
+ <source>Bootstrap</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="530"/>
+ <source>Security</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="571"/>
+ <source>Private Key Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="583"/>
+ <source>User Certificate</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="622"/>
+ <source>Private Key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="634"/>
+ <source>CA Certificate</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="766"/>
+ <source>Connectivity</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="868"/>
+ <source>Use STUN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="856"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="892"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="904"/>
+ <source>Use TURN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="934"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="966"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="998"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1039"/>
+ <source>Media</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1090"/>
+ <source>Enable Video</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1267"/>
+ <source>Audio Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1114"/>
+ <source>Video Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="181"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AnimatedOverlay</name>
+ <message>
+ <location filename="../animatedoverlay.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>BannedItemWidget</name>
+ <message>
+ <location filename="../banneditemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="80"/>
+ <source>name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="104"/>
+ <source>id</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>CallWidget</name>
+ <message>
+ <location filename="../callwidget.ui" line="184"/>
+ <source>Show conversations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="187"/>
+ <source>Conversations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="368"/>
+ <source>Search contact text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="653"/>
+ <source>Jami is free software for universal communication which respects the freedoms and privacy of its users.</source>
+ <translation>Jami je besplatan i slobodan softver za univerzalnu komunikaciju, koji poštuje slobode i privatnost svojih korisnika</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="693"/>
+ <source>
+ This is your ID.
+Copy and share it with your friends!
+ </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="806"/>
+ <source>Show ring ID QR code</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="857"/>
+ <source>Share ring ID button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="915"/>
+ <source>Double-click to copy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="956"/>
+ <source>Error while generating QR Code</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1184"/>
+ <location filename="../callwidget.ui" line="1434"/>
+ <source>best name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1208"/>
+ <source>best Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1734"/>
+ <source>Back to homepage button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1943"/>
+ <source>Add to contacts</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="202"/>
+ <source>Show invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="205"/>
+ <source>Invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="377"/>
+ <location filename="../callwidget.cpp" line="552"/>
+ <source>Find a new or existing contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1444"/>
+ <source>Wants to talk to you!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1517"/>
+ <source>Answer incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1589"/>
+ <source>Ignore incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1539"/>
+ <source>Answer</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1617"/>
+ <source>Ignore</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1280"/>
+ <source>Cancel outgoing call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1305"/>
+ <source>Cancel</source>
+ <translation>Otkaži</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="332"/>
+ <source>Start video call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="343"/>
+ <source>Start audio call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="354"/>
+ <source>Clear conversation</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="361"/>
+ <source>Remove contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="373"/>
+ <source>Block contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="384"/>
+ <source>Copy number</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="561"/>
+ <source>Search your received invitations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>Contact me on Jami</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>My Id is : </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="847"/>
+ <source>%1</source>
+ <comment>%1 is the contact username</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="852"/>
+ <source>%1</source>
+ <comment>%1 is the contact unique identifier</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="675"/>
+ <source>Call incoming from %1</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>DeleteAccountDialog</name>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="35"/>
+ <source>Account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="58"/>
+ <source>Do you really want to delete the following account?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="153"/>
+ <source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="235"/>
+ <source>Permanently delete account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="241"/>
+ <source>Delete</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="278"/>
+ <source>Cancel account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="284"/>
+ <source>Cancel</source>
+ <translation>Otkaži</translation>
+ </message>
+</context>
+<context>
+ <name>DeviceItemWidget</name>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="105"/>
+ <source>Device Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="143"/>
+ <source>this device</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>InviteButtonsWidget</name>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="83"/>
+ <source>Accept</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="131"/>
+ <source>Refuse</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="179"/>
+ <source>Block</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>LinkDeviceDialog</name>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="62"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="117"/>
+ <source>Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="184"/>
+ <source>Ok</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="218"/>
+ <source>Cancel</source>
+ <translation>Otkaži</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="279"/>
+ <source>Exporting account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="402"/>
+ <source>Your PIN is</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="432"/>
+ <source>PIN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="477"/>
+ <source>This pin and the account password should be entered in your device within 10 minutes.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="553"/>
+ <source>Close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="34"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="96"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="110"/>
+ <source>Something went wrong.
+Please try again later.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="83"/>
+ <source>Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="94"/>
+ <source>Exit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="111"/>
+ <source>About</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="435"/>
+ <source>Jami</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>NameRegistrationDialog</name>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="35"/>
+ <source>Set Registered Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="163"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="244"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="250"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="256"/>
+ <source>Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="323"/>
+ <source>Register</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="357"/>
+ <source>Cancel</source>
+ <translation>Otkaži</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="424"/>
+ <source>Registering Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="548"/>
+ <source>Something went wrong</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="618"/>
+ <source>Close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="82"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="85"/>
+ <source>Network error</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>NewWizardWidget</name>
+ <message>
+ <location filename="../newwizardwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="141"/>
+ <source>Welcome Label</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="147"/>
+ <source> Welcome to</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="185"/>
+ <source>Welcome Logo</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="239"/>
+ <source>Create Jami account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="245"/>
+ <source>Push button for Jami account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="251"/>
+ <source>Create a Jami account</source>
+ <translation>Napravi Jami profil</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="282"/>
+ <source>Link device button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="288"/>
+ <source>Push button for device linkage start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="291"/>
+ <source>Link this device to an account</source>
+ <translation>Poveži uređaj sa profilom</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="328"/>
+ <source>Create Jami SIP account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="334"/>
+ <source>Push button for Jami SIP account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="340"/>
+ <source>Create a SIP account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="405"/>
+ <source>Link this device to an existing account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="469"/>
+ <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">To link this device to another account, you first </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">need to obtain a PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> code. To generate the PIN code:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Account management setting</span><span style=" font-size:14px;"> of a previous device</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choose the </span><span style=" font-size:14px; font-weight:600;">Jami account</span><span style=" font-size:14px;"> you want to use</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Devices</span><span style=" font-size:14px;"> tab</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Select </span><span style=" font-size:14px; font-weight:600;">Add a device</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">You will get the necessary PIN to complete this form. The PIN is only valid for </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutes</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="531"/>
+ <source>Enter your pin:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="599"/>
+ <source>Or import a file:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="626"/>
+ <source>Link from exported account archive file</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="629"/>
+ <location filename="../newwizardwidget.cpp" line="83"/>
+ <location filename="../newwizardwidget.cpp" line="218"/>
+ <source>(None)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="705"/>
+ <source>Password:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="799"/>
+ <location filename="../newwizardwidget.ui" line="1586"/>
+ <source>Profile</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="953"/>
+ <location filename="../newwizardwidget.ui" line="1767"/>
+ <source>Profile name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1027"/>
+ <source>Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1136"/>
+ <source>Register your username.
+This will reserve the username so that only you can use it.
+Your friends will be able to call you with your usename
+instead of using your ID.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1142"/>
+ <source>Public username checkbox</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1145"/>
+ <source>Checkbox selecting if the user wants a public username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1148"/>
+ <source>Register public username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1367"/>
+ <source>Public username edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1373"/>
+ <source>Choose your username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1289"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1295"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1301"/>
+ <location filename="../newwizardwidget.ui" line="2213"/>
+ <source>Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1211"/>
+ <location filename="../newwizardwidget.ui" line="1217"/>
+ <source>Password confirmation text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1223"/>
+ <source>Confirm password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1814"/>
+ <source>SIP Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1973"/>
+ <source>SIP Server edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1979"/>
+ <source>Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2045"/>
+ <source>SIP proxy input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2051"/>
+ <source>SIP proxy text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2057"/>
+ <source>Proxy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2123"/>
+ <source>SIP username input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2129"/>
+ <source>SIP Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2135"/>
+ <source>Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2201"/>
+ <location filename="../newwizardwidget.ui" line="2207"/>
+ <source>SIP Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message utf8="true">
+ <location filename="../newwizardwidget.ui" line="2282"/>
+ <source>Generating your Jami account…</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2356"/>
+ <source>Previous page button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2362"/>
+ <source>push button to access previous page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2365"/>
+ <source>Previous</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2396"/>
+ <source>Cancel account create/link</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2402"/>
+ <source>push button to cancel account creation or linking</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2405"/>
+ <source>Back</source>
+ <translation>Nazad</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2442"/>
+ <source>Next page Button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2448"/>
+ <source>Push button to access next page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2451"/>
+ <source>Next</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="75"/>
+ <source>Open File</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="77"/>
+ <source>Jami archive files (*.gz); All files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="123"/>
+ <source>Your account needs to be migrated. Enter your password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="419"/>
+ <source>Migrating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="412"/>
+ <source>Importing account archive...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="404"/>
+ <source>Generating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="422"/>
+ <source>Generating your SIP account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="533"/>
+ <source>Error creating account</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PasswordDialog</name>
+ <message>
+ <location filename="../passworddialog.ui" line="32"/>
+ <source>Change Account Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="97"/>
+ <source>Enter Current Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="169"/>
+ <source>Enter New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="190"/>
+ <source>Confirm New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="247"/>
+ <source>Confirm</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="290"/>
+ <source>Cancel</source>
+ <translation>Otkaži</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="143"/>
+ <source>Current Password Incorrect</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PhotoBoothDialog</name>
+ <message>
+ <location filename="../photoboothdialog.ui" line="14"/>
+ <source>Photobooth</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PhotoboothWidget</name>
+ <message>
+ <location filename="../photoboothwidget.ui" line="20"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.ui" line="120"/>
+ <source>Photobooth display</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="92"/>
+ <source>Choose File</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="94"/>
+ <source>Image Files (*.jpg *.jpeg *.png)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PrivateBridging</name>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Choose File</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../utils.cpp" line="183"/>
+ <source>No default mail client found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="43"/>
+ <location filename="../deviceitemwidget.cpp" line="85"/>
+ <source>Edit Device Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="44"/>
+ <source>Unlink Device From Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="80"/>
+ <source>Save new device name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.cpp" line="39"/>
+ <source>Add as contact</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>RingButton</name>
+ <message>
+ <location filename="../ringbutton.ui" line="140"/>
+ <source>Select folder</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <location filename="../settingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="141"/>
+ <source>Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="229"/>
+ <source>Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="267"/>
+ <location filename="../settingswidget.ui" line="503"/>
+ <source>General</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="305"/>
+ <location filename="../settingswidget.ui" line="3416"/>
+ <source>Audio / Video</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="542"/>
+ <source>System</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="610"/>
+ <source>Enable desktop notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="653"/>
+ <source>Keep minimized on close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="678"/>
+ <source>Download folder</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="811"/>
+ <source>Save in</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="904"/>
+ <source>Always Recording</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="943"/>
+ <source>Updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1008"/>
+ <source>Check for updates automatically every</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1032"/>
+ <source>Interval between update checks in days selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1038"/>
+ <source> days</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1081"/>
+ <source>Check for updates now button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1084"/>
+ <source>Check for updates now</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3027"/>
+ <source>Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1418"/>
+ <location filename="../settingswidget.ui" line="2729"/>
+ <source>Enable</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="607"/>
+ <source>toggle enable notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="650"/>
+ <source>Toggle keep minimized on close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="764"/>
+ <source>Call Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1005"/>
+ <source>Toggle automatic updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1231"/>
+ <source>Jami Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1453"/>
+ <location filename="../settingswidget.ui" line="2761"/>
+ <source>Profile</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1567"/>
+ <location filename="../settingswidget.ui" line="2875"/>
+ <source>Identity</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1614"/>
+ <source>Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1673"/>
+ <source>Registered name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1721"/>
+ <source>Type here to register a username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1755"/>
+ <source>Register</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1827"/>
+ <source>Change Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1868"/>
+ <source>Export Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1909"/>
+ <location filename="../settingswidget.ui" line="3089"/>
+ <source>Delete Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1973"/>
+ <source>Linked Devices</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2078"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2142"/>
+ <source>Banned Contacts</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3788"/>
+ <source>Format</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3831"/>
+ <source>Video device framerate selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3967"/>
+ <source>Preview unavailable</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2359"/>
+ <location filename="../settingswidget.ui" line="3187"/>
+ <source>Advanced Account Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2554"/>
+ <source>SIP Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2925"/>
+ <source>Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2958"/>
+ <source>Hostname</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2991"/>
+ <source>Proxy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3461"/>
+ <source>Audio</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3511"/>
+ <source>Microphone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3551"/>
+ <source>Audio input device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3585"/>
+ <source>Output Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3625"/>
+ <source>Choose the output device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3682"/>
+ <source>Video</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3720"/>
+ <source>Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3766"/>
+ <source>Video device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="459"/>
+ <source>A registered name should not have any spaces and must be at least three letters long</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="466"/>
+ <source>This name is already taken</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="92"/>
+ <location filename="../settingswidget.cpp" line="110"/>
+ <source>Enter an alias</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="473"/>
+ <source>Register this name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="550"/>
+ <source>Remove Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="551"/>
+ <source>Enter this account's password to confirm the removal of this device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="558"/>
+ <source>Are you sure you wish to remove this device?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="589"/>
+ <source>Export Account Here</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="887"/>
+ <source>Select A Folder For Your Downloads</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="904"/>
+ <source>Select A Folder For Your Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>VideoOverlay</name>
+ <message>
+ <location filename="../videooverlay.ui" line="419"/>
+ <source>Call on Hold</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="89"/>
+ <source>Hold / Unhold</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="124"/>
+ <source>Chat</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="162"/>
+ <source>Mute Mic</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="244"/>
+ <source>Record call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="325"/>
+ <source>Name label</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="390"/>
+ <source>Time elapsed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="393"/>
+ <source>00:00</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="57"/>
+ <source>Hangup</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="203"/>
+ <source>Mute Video</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>VideoView</name>
+ <message>
+ <location filename="../videoview.cpp" line="271"/>
+ <source>Share entire screen</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="274"/>
+ <source>Share screen area</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="281"/>
+ <source>Share file</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+</TS>
\ No newline at end of file
diff --git a/translations/ring_client_windows_sv.ts b/translations/ring_client_windows_sv.ts
new file mode 100644
index 0000000..ce5f926
--- /dev/null
+++ b/translations/ring_client_windows_sv.ts
@@ -0,0 +1,1589 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="sv" version="2.0">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../aboutdialog.ui" line="435"/>
+ <location filename="../aboutdialog.ui" line="465"/>
+ <source>About</source>
+ <translation>Om</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="462"/>
+ <source>about button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="478"/>
+ <source>credits button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="481"/>
+ <source>Credits</source>
+ <translation>Tack till</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="547"/>
+ <source>Free as in Freedom</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="563"/>
+ <source>The Microsoft Windows client for Jami.
+Jami is a secured and distributed communication software.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="32"/>
+ <source>version</source>
+ <translation>version</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="39"/>
+ <source>Created by:</source>
+ <translation>Skapad av:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="73"/>
+ <source>Artwork by:</source>
+ <translation>Bildkonst av:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="77"/>
+ <source>Based on the SFLPhone project</source>
+ <translation>Baserad på SFLPhone-projektet</translation>
+ </message>
+</context>
+<context>
+ <name>AccountItemDelegate</name>
+ <message>
+ <location filename="../accountitemdelegate.cpp" line="91"/>
+ <source>Add Account</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSIPSettingsWidget</name>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulär</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="55"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="102"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="130"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="191"/>
+ <source>Connectivity</source>
+ <translation>Anslutningsbarhet</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="281"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="293"/>
+ <source>Use STUN</source>
+ <translation>Använd STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="317"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="329"/>
+ <source>Use TURN</source>
+ <translation>Använd TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="359"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="391"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="423"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="464"/>
+ <source>Media</source>
+ <translation>Media</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="515"/>
+ <source>Enable Video</source>
+ <translation>Aktivera video</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="539"/>
+ <source>Video Codecs</source>
+ <translation>Videokodekar</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="692"/>
+ <source>Audio Codecs</source>
+ <translation>Ljudkodekar</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="142"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="151"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSettingsWidget</name>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulär</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="61"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="108"/>
+ <source>Allow Calls From Untrusted Peers</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="133"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="161"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="188"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="225"/>
+ <source>Name Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="275"/>
+ <source>Address</source>
+ <translation>Adress</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="351"/>
+ <source>OpenDHT Configuration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="398"/>
+ <source>Enable Proxy</source>
+ <translation>Aktivera proxy</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="454"/>
+ <source>Bootstrap</source>
+ <translation>Bootstrap</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="530"/>
+ <source>Security</source>
+ <translation>Säkerhet</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="571"/>
+ <source>Private Key Password</source>
+ <translation>Privat nyckellösenord</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="583"/>
+ <source>User Certificate</source>
+ <translation>Användarcertifikat</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="622"/>
+ <source>Private Key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="634"/>
+ <source>CA Certificate</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="766"/>
+ <source>Connectivity</source>
+ <translation>Anslutningsbarhet</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="868"/>
+ <source>Use STUN</source>
+ <translation>Använd STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="856"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="892"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="904"/>
+ <source>Use TURN</source>
+ <translation>Använd TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="934"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="966"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="998"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1039"/>
+ <source>Media</source>
+ <translation>Media</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1090"/>
+ <source>Enable Video</source>
+ <translation>Aktivera video</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1267"/>
+ <source>Audio Codecs</source>
+ <translation>Ljudkodekar</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1114"/>
+ <source>Video Codecs</source>
+ <translation>Videokodekar</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="181"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AnimatedOverlay</name>
+ <message>
+ <location filename="../animatedoverlay.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulär</translation>
+ </message>
+</context>
+<context>
+ <name>BannedItemWidget</name>
+ <message>
+ <location filename="../banneditemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulär</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="80"/>
+ <source>name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="104"/>
+ <source>id</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>CallWidget</name>
+ <message>
+ <location filename="../callwidget.ui" line="184"/>
+ <source>Show conversations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="187"/>
+ <source>Conversations</source>
+ <translation>Konversationer</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="368"/>
+ <source>Search contact text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="653"/>
+ <source>Jami is free software for universal communication which respects the freedoms and privacy of its users.</source>
+ <translation>Jami är fri mjukvara för universell kommunikation, med respekt för användarens frihet och integritet.</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="693"/>
+ <source>
+ This is your ID.
+Copy and share it with your friends!
+ </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="806"/>
+ <source>Show ring ID QR code</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="857"/>
+ <source>Share ring ID button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="915"/>
+ <source>Double-click to copy</source>
+ <translation>Dubbelklicka för att kopiera</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="956"/>
+ <source>Error while generating QR Code</source>
+ <translation>Ett fel inträffade vid generering av QR-kod</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1184"/>
+ <location filename="../callwidget.ui" line="1434"/>
+ <source>best name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1208"/>
+ <source>best Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1734"/>
+ <source>Back to homepage button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1943"/>
+ <source>Add to contacts</source>
+ <translation>Lägg till i kontakter</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="202"/>
+ <source>Show invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="205"/>
+ <source>Invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="377"/>
+ <location filename="../callwidget.cpp" line="552"/>
+ <source>Find a new or existing contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1444"/>
+ <source>Wants to talk to you!</source>
+ <translation>Vill prata med dig!</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1517"/>
+ <source>Answer incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1589"/>
+ <source>Ignore incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1539"/>
+ <source>Answer</source>
+ <translation>Svara</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1617"/>
+ <source>Ignore</source>
+ <translation>Ignorera</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1280"/>
+ <source>Cancel outgoing call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1305"/>
+ <source>Cancel</source>
+ <translation>Avbryt</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="332"/>
+ <source>Start video call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="343"/>
+ <source>Start audio call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="354"/>
+ <source>Clear conversation</source>
+ <translation>Rensa konversation</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="361"/>
+ <source>Remove contact</source>
+ <translation>Ta bort kontakt</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="373"/>
+ <source>Block contact</source>
+ <translation>Blockera kontakt</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="384"/>
+ <source>Copy number</source>
+ <translation>Kopiera nummer</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="561"/>
+ <source>Search your received invitations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>Contact me on Jami</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>My Id is : </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="847"/>
+ <source>%1</source>
+ <comment>%1 is the contact username</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="852"/>
+ <source>%1</source>
+ <comment>%1 is the contact unique identifier</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="675"/>
+ <source>Call incoming from %1</source>
+ <translation>Inkommande samtal från %1</translation>
+ </message>
+</context>
+<context>
+ <name>DeleteAccountDialog</name>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="35"/>
+ <source>Account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="58"/>
+ <source>Do you really want to delete the following account?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="153"/>
+ <source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="235"/>
+ <source>Permanently delete account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="241"/>
+ <source>Delete</source>
+ <translation>Ta bort</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="278"/>
+ <source>Cancel account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="284"/>
+ <source>Cancel</source>
+ <translation>Avbryt</translation>
+ </message>
+</context>
+<context>
+ <name>DeviceItemWidget</name>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulär</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="105"/>
+ <source>Device Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="143"/>
+ <source>this device</source>
+ <translation>denna enhet</translation>
+ </message>
+</context>
+<context>
+ <name>InviteButtonsWidget</name>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="83"/>
+ <source>Accept</source>
+ <translation>Acceptera</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="131"/>
+ <source>Refuse</source>
+ <translation>Neka</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="179"/>
+ <source>Block</source>
+ <translation>Blockera</translation>
+ </message>
+</context>
+<context>
+ <name>LinkDeviceDialog</name>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation>Dialog</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="62"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="117"/>
+ <source>Password</source>
+ <translation>Lösenord</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="184"/>
+ <source>Ok</source>
+ <translation>OK</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="218"/>
+ <source>Cancel</source>
+ <translation>Avbryt</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="279"/>
+ <source>Exporting account</source>
+ <translation>Exporterar konto</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="402"/>
+ <source>Your PIN is</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="432"/>
+ <source>PIN</source>
+ <translation>PIN-kod</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="477"/>
+ <source>This pin and the account password should be entered in your device within 10 minutes.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="553"/>
+ <source>Close</source>
+ <translation>Stäng</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="34"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="96"/>
+ <source>Incorrect password</source>
+ <translation>Felaktigt lösenord</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="110"/>
+ <source>Something went wrong.
+Please try again later.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="83"/>
+ <source>Settings</source>
+ <translation>Inställningar</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="94"/>
+ <source>Exit</source>
+ <translation>Avsluta</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="111"/>
+ <source>About</source>
+ <translation>Om</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="435"/>
+ <source>Jami</source>
+ <translation>Jami</translation>
+ </message>
+</context>
+<context>
+ <name>NameRegistrationDialog</name>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="35"/>
+ <source>Set Registered Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="163"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="244"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="250"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="256"/>
+ <source>Password</source>
+ <translation>Lösenord</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="323"/>
+ <source>Register</source>
+ <translation>Registrera</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="357"/>
+ <source>Cancel</source>
+ <translation>Avbryt</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="424"/>
+ <source>Registering Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="548"/>
+ <source>Something went wrong</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="618"/>
+ <source>Close</source>
+ <translation>Stäng</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="82"/>
+ <source>Incorrect password</source>
+ <translation>Felaktigt lösenord</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="85"/>
+ <source>Network error</source>
+ <translation>Nätverksfel</translation>
+ </message>
+</context>
+<context>
+ <name>NewWizardWidget</name>
+ <message>
+ <location filename="../newwizardwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulär</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="141"/>
+ <source>Welcome Label</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="147"/>
+ <source> Welcome to</source>
+ <translation>Välkommen till</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="185"/>
+ <source>Welcome Logo</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="239"/>
+ <source>Create Jami account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="245"/>
+ <source>Push button for Jami account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="251"/>
+ <source>Create a Jami account</source>
+ <translation>Skapa ett Jami-konto</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="282"/>
+ <source>Link device button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="288"/>
+ <source>Push button for device linkage start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="291"/>
+ <source>Link this device to an account</source>
+ <translation>Koppla denna enhet till ett konto</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="328"/>
+ <source>Create Jami SIP account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="334"/>
+ <source>Push button for Jami SIP account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="340"/>
+ <source>Create a SIP account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="405"/>
+ <source>Link this device to an existing account</source>
+ <translation>Koppla den här enheten till ett befintligt konto</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="469"/>
+ <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">To link this device to another account, you first </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">need to obtain a PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> code. To generate the PIN code:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Account management setting</span><span style=" font-size:14px;"> of a previous device</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choose the </span><span style=" font-size:14px; font-weight:600;">Jami account</span><span style=" font-size:14px;"> you want to use</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Devices</span><span style=" font-size:14px;"> tab</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Select </span><span style=" font-size:14px; font-weight:600;">Add a device</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">You will get the necessary PIN to complete this form. The PIN is only valid for </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutes</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="531"/>
+ <source>Enter your pin:</source>
+ <translation>Ange din PIN-kod:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="599"/>
+ <source>Or import a file:</source>
+ <translation>Eller importera en fil:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="626"/>
+ <source>Link from exported account archive file</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="629"/>
+ <location filename="../newwizardwidget.cpp" line="83"/>
+ <location filename="../newwizardwidget.cpp" line="218"/>
+ <source>(None)</source>
+ <translation>(Ingen)</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="705"/>
+ <source>Password:</source>
+ <translation>Lösenord:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="799"/>
+ <location filename="../newwizardwidget.ui" line="1586"/>
+ <source>Profile</source>
+ <translation>Profil</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="953"/>
+ <location filename="../newwizardwidget.ui" line="1767"/>
+ <source>Profile name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1027"/>
+ <source>Account</source>
+ <translation>Konto</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1136"/>
+ <source>Register your username.
+This will reserve the username so that only you can use it.
+Your friends will be able to call you with your usename
+instead of using your ID.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1142"/>
+ <source>Public username checkbox</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1145"/>
+ <source>Checkbox selecting if the user wants a public username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1148"/>
+ <source>Register public username</source>
+ <translation>Registrera offentligt användarnamn</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1367"/>
+ <source>Public username edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1373"/>
+ <source>Choose your username</source>
+ <translation>Välj användarnamn</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1289"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1295"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1301"/>
+ <location filename="../newwizardwidget.ui" line="2213"/>
+ <source>Password</source>
+ <translation>Lösenord</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1211"/>
+ <location filename="../newwizardwidget.ui" line="1217"/>
+ <source>Password confirmation text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1223"/>
+ <source>Confirm password</source>
+ <translation>Bekräfta lösenord</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1814"/>
+ <source>SIP Account</source>
+ <translation>SIP-konto</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1973"/>
+ <source>SIP Server edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1979"/>
+ <source>Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2045"/>
+ <source>SIP proxy input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2051"/>
+ <source>SIP proxy text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2057"/>
+ <source>Proxy</source>
+ <translation>Proxy</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2123"/>
+ <source>SIP username input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2129"/>
+ <source>SIP Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2135"/>
+ <source>Username</source>
+ <translation>Användarnamn</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2201"/>
+ <location filename="../newwizardwidget.ui" line="2207"/>
+ <source>SIP Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message utf8="true">
+ <location filename="../newwizardwidget.ui" line="2282"/>
+ <source>Generating your Jami account…</source>
+ <translation>Genererar ditt Jami-konto...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2356"/>
+ <source>Previous page button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2362"/>
+ <source>push button to access previous page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2365"/>
+ <source>Previous</source>
+ <translation>Föregående</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2396"/>
+ <source>Cancel account create/link</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2402"/>
+ <source>push button to cancel account creation or linking</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2405"/>
+ <source>Back</source>
+ <translation>Tillbaka</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2442"/>
+ <source>Next page Button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2448"/>
+ <source>Push button to access next page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2451"/>
+ <source>Next</source>
+ <translation>Nästa</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="75"/>
+ <source>Open File</source>
+ <translation>Öppna fil</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="77"/>
+ <source>Jami archive files (*.gz); All files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="123"/>
+ <source>Your account needs to be migrated. Enter your password.</source>
+ <translation>Ditt konto måste migreras. Ange ditt lösenord.</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="419"/>
+ <source>Migrating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="412"/>
+ <source>Importing account archive...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="404"/>
+ <source>Generating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="422"/>
+ <source>Generating your SIP account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="533"/>
+ <source>Error creating account</source>
+ <translation>Fel vid kontoskapande</translation>
+ </message>
+</context>
+<context>
+ <name>PasswordDialog</name>
+ <message>
+ <location filename="../passworddialog.ui" line="32"/>
+ <source>Change Account Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="97"/>
+ <source>Enter Current Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="169"/>
+ <source>Enter New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="190"/>
+ <source>Confirm New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="247"/>
+ <source>Confirm</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="290"/>
+ <source>Cancel</source>
+ <translation>Avbryt</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="143"/>
+ <source>Current Password Incorrect</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PhotoBoothDialog</name>
+ <message>
+ <location filename="../photoboothdialog.ui" line="14"/>
+ <source>Photobooth</source>
+ <translation>Photobooth</translation>
+ </message>
+</context>
+<context>
+ <name>PhotoboothWidget</name>
+ <message>
+ <location filename="../photoboothwidget.ui" line="20"/>
+ <source>Form</source>
+ <translation>Formulär</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.ui" line="120"/>
+ <source>Photobooth display</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="92"/>
+ <source>Choose File</source>
+ <translation>Välj fil</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="94"/>
+ <source>Image Files (*.jpg *.jpeg *.png)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PrivateBridging</name>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Choose File</source>
+ <translation>Välj fil</translation>
+ </message>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Files (*)</source>
+ <translation>Filer (*)</translation>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../utils.cpp" line="183"/>
+ <source>No default mail client found</source>
+ <translation>Ingen ordinarie e-postklient hittades</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="43"/>
+ <location filename="../deviceitemwidget.cpp" line="85"/>
+ <source>Edit Device Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="44"/>
+ <source>Unlink Device From Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="80"/>
+ <source>Save new device name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.cpp" line="39"/>
+ <source>Add as contact</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>RingButton</name>
+ <message>
+ <location filename="../ringbutton.ui" line="140"/>
+ <source>Select folder</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <location filename="../settingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Formulär</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="141"/>
+ <source>Settings</source>
+ <translation>Inställningar</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="229"/>
+ <source>Account</source>
+ <translation>Konto</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="267"/>
+ <location filename="../settingswidget.ui" line="503"/>
+ <source>General</source>
+ <translation>Allmänt</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="305"/>
+ <location filename="../settingswidget.ui" line="3416"/>
+ <source>Audio / Video</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="542"/>
+ <source>System</source>
+ <translation>System</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="610"/>
+ <source>Enable desktop notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="653"/>
+ <source>Keep minimized on close</source>
+ <translation>Minimera istället för att avsluta</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="678"/>
+ <source>Download folder</source>
+ <translation>Nerladdningsmapp</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="811"/>
+ <source>Save in</source>
+ <translation>Spara i</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="904"/>
+ <source>Always Recording</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="943"/>
+ <source>Updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1008"/>
+ <source>Check for updates automatically every</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1032"/>
+ <source>Interval between update checks in days selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1038"/>
+ <source> days</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1081"/>
+ <source>Check for updates now button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1084"/>
+ <source>Check for updates now</source>
+ <translation>Sök efter uppdateringar nu</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3027"/>
+ <source>Password</source>
+ <translation>Lösenord</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1418"/>
+ <location filename="../settingswidget.ui" line="2729"/>
+ <source>Enable</source>
+ <translation>Aktivera</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="607"/>
+ <source>toggle enable notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="650"/>
+ <source>Toggle keep minimized on close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="764"/>
+ <source>Call Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1005"/>
+ <source>Toggle automatic updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1231"/>
+ <source>Jami Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1453"/>
+ <location filename="../settingswidget.ui" line="2761"/>
+ <source>Profile</source>
+ <translation>Profil</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1567"/>
+ <location filename="../settingswidget.ui" line="2875"/>
+ <source>Identity</source>
+ <translation>Identitet</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1614"/>
+ <source>Id</source>
+ <translation>ID</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1673"/>
+ <source>Registered name</source>
+ <translation>Registrerat namn</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1721"/>
+ <source>Type here to register a username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1755"/>
+ <source>Register</source>
+ <translation>Registrera</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1827"/>
+ <source>Change Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1868"/>
+ <source>Export Account</source>
+ <translation>Exportera konto</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1909"/>
+ <location filename="../settingswidget.ui" line="3089"/>
+ <source>Delete Account</source>
+ <translation>Ta bort konto</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1973"/>
+ <source>Linked Devices</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2078"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2142"/>
+ <source>Banned Contacts</source>
+ <translation>Bannlysta kontakter</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3788"/>
+ <source>Format</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3831"/>
+ <source>Video device framerate selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3967"/>
+ <source>Preview unavailable</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2359"/>
+ <location filename="../settingswidget.ui" line="3187"/>
+ <source>Advanced Account Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2554"/>
+ <source>SIP Account</source>
+ <translation>SIP-konto</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2925"/>
+ <source>Username</source>
+ <translation>Användarnamn</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2958"/>
+ <source>Hostname</source>
+ <translation>Värdnamn</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2991"/>
+ <source>Proxy</source>
+ <translation>Proxy</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3461"/>
+ <source>Audio</source>
+ <translation>Ljud</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3511"/>
+ <source>Microphone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3551"/>
+ <source>Audio input device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3585"/>
+ <source>Output Device</source>
+ <translation>Utdataenhet</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3625"/>
+ <source>Choose the output device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3682"/>
+ <source>Video</source>
+ <translation>Video</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3720"/>
+ <source>Device</source>
+ <translation>Enhet</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3766"/>
+ <source>Video device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="459"/>
+ <source>A registered name should not have any spaces and must be at least three letters long</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="466"/>
+ <source>This name is already taken</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="92"/>
+ <location filename="../settingswidget.cpp" line="110"/>
+ <source>Enter an alias</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="473"/>
+ <source>Register this name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="550"/>
+ <source>Remove Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="551"/>
+ <source>Enter this account's password to confirm the removal of this device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="558"/>
+ <source>Are you sure you wish to remove this device?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="589"/>
+ <source>Export Account Here</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="887"/>
+ <source>Select A Folder For Your Downloads</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="904"/>
+ <source>Select A Folder For Your Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>VideoOverlay</name>
+ <message>
+ <location filename="../videooverlay.ui" line="419"/>
+ <source>Call on Hold</source>
+ <translation>Parkerat samtal</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="89"/>
+ <source>Hold / Unhold</source>
+ <translation>Parkera / Återuppta</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="124"/>
+ <source>Chat</source>
+ <translation>Chatt</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="162"/>
+ <source>Mute Mic</source>
+ <translation>Stäng av mikrofon</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="244"/>
+ <source>Record call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="325"/>
+ <source>Name label</source>
+ <translation>Namnetikett</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="390"/>
+ <source>Time elapsed</source>
+ <translation>Förfluten tid</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="393"/>
+ <source>00:00</source>
+ <translation>00:00</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="57"/>
+ <source>Hangup</source>
+ <translation>Lägg på</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="203"/>
+ <source>Mute Video</source>
+ <translation>Pausa video</translation>
+ </message>
+</context>
+<context>
+ <name>VideoView</name>
+ <message>
+ <location filename="../videoview.cpp" line="271"/>
+ <source>Share entire screen</source>
+ <translation>Dela hela skärmen</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="274"/>
+ <source>Share screen area</source>
+ <translation>Dela skärmområde</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="281"/>
+ <source>Share file</source>
+ <translation>Dela fil</translation>
+ </message>
+</context>
+</TS>
\ No newline at end of file
diff --git a/translations/ring_client_windows_ta.ts b/translations/ring_client_windows_ta.ts
new file mode 100644
index 0000000..3eb3c94
--- /dev/null
+++ b/translations/ring_client_windows_ta.ts
@@ -0,0 +1,1589 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="ta" version="2.0">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../aboutdialog.ui" line="435"/>
+ <location filename="../aboutdialog.ui" line="465"/>
+ <source>About</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="462"/>
+ <source>about button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="478"/>
+ <source>credits button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="481"/>
+ <source>Credits</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="547"/>
+ <source>Free as in Freedom</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="563"/>
+ <source>The Microsoft Windows client for Jami.
+Jami is a secured and distributed communication software.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="32"/>
+ <source>version</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="39"/>
+ <source>Created by:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="73"/>
+ <source>Artwork by:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="77"/>
+ <source>Based on the SFLPhone project</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AccountItemDelegate</name>
+ <message>
+ <location filename="../accountitemdelegate.cpp" line="91"/>
+ <source>Add Account</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSIPSettingsWidget</name>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="55"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="102"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="130"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="191"/>
+ <source>Connectivity</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="281"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="293"/>
+ <source>Use STUN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="317"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="329"/>
+ <source>Use TURN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="359"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="391"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="423"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="464"/>
+ <source>Media</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="515"/>
+ <source>Enable Video</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="539"/>
+ <source>Video Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="692"/>
+ <source>Audio Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="142"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="151"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSettingsWidget</name>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="61"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="108"/>
+ <source>Allow Calls From Untrusted Peers</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="133"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="161"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="188"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="225"/>
+ <source>Name Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="275"/>
+ <source>Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="351"/>
+ <source>OpenDHT Configuration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="398"/>
+ <source>Enable Proxy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="454"/>
+ <source>Bootstrap</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="530"/>
+ <source>Security</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="571"/>
+ <source>Private Key Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="583"/>
+ <source>User Certificate</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="622"/>
+ <source>Private Key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="634"/>
+ <source>CA Certificate</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="766"/>
+ <source>Connectivity</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="868"/>
+ <source>Use STUN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="856"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="892"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="904"/>
+ <source>Use TURN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="934"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="966"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="998"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1039"/>
+ <source>Media</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1090"/>
+ <source>Enable Video</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1267"/>
+ <source>Audio Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1114"/>
+ <source>Video Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="181"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AnimatedOverlay</name>
+ <message>
+ <location filename="../animatedoverlay.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>BannedItemWidget</name>
+ <message>
+ <location filename="../banneditemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="80"/>
+ <source>name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="104"/>
+ <source>id</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>CallWidget</name>
+ <message>
+ <location filename="../callwidget.ui" line="184"/>
+ <source>Show conversations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="187"/>
+ <source>Conversations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="368"/>
+ <source>Search contact text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="653"/>
+ <source>Jami is free software for universal communication which respects the freedoms and privacy of its users.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="693"/>
+ <source>
+ This is your ID.
+Copy and share it with your friends!
+ </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="806"/>
+ <source>Show ring ID QR code</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="857"/>
+ <source>Share ring ID button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="915"/>
+ <source>Double-click to copy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="956"/>
+ <source>Error while generating QR Code</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1184"/>
+ <location filename="../callwidget.ui" line="1434"/>
+ <source>best name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1208"/>
+ <source>best Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1734"/>
+ <source>Back to homepage button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1943"/>
+ <source>Add to contacts</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="202"/>
+ <source>Show invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="205"/>
+ <source>Invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="377"/>
+ <location filename="../callwidget.cpp" line="552"/>
+ <source>Find a new or existing contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1444"/>
+ <source>Wants to talk to you!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1517"/>
+ <source>Answer incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1589"/>
+ <source>Ignore incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1539"/>
+ <source>Answer</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1617"/>
+ <source>Ignore</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1280"/>
+ <source>Cancel outgoing call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1305"/>
+ <source>Cancel</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="332"/>
+ <source>Start video call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="343"/>
+ <source>Start audio call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="354"/>
+ <source>Clear conversation</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="361"/>
+ <source>Remove contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="373"/>
+ <source>Block contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="384"/>
+ <source>Copy number</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="561"/>
+ <source>Search your received invitations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>Contact me on Jami</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>My Id is : </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="847"/>
+ <source>%1</source>
+ <comment>%1 is the contact username</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="852"/>
+ <source>%1</source>
+ <comment>%1 is the contact unique identifier</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="675"/>
+ <source>Call incoming from %1</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>DeleteAccountDialog</name>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="35"/>
+ <source>Account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="58"/>
+ <source>Do you really want to delete the following account?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="153"/>
+ <source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="235"/>
+ <source>Permanently delete account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="241"/>
+ <source>Delete</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="278"/>
+ <source>Cancel account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="284"/>
+ <source>Cancel</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>DeviceItemWidget</name>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="105"/>
+ <source>Device Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="143"/>
+ <source>this device</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>InviteButtonsWidget</name>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="83"/>
+ <source>Accept</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="131"/>
+ <source>Refuse</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="179"/>
+ <source>Block</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>LinkDeviceDialog</name>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="62"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="117"/>
+ <source>Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="184"/>
+ <source>Ok</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="218"/>
+ <source>Cancel</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="279"/>
+ <source>Exporting account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="402"/>
+ <source>Your PIN is</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="432"/>
+ <source>PIN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="477"/>
+ <source>This pin and the account password should be entered in your device within 10 minutes.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="553"/>
+ <source>Close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="34"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="96"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="110"/>
+ <source>Something went wrong.
+Please try again later.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="83"/>
+ <source>Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="94"/>
+ <source>Exit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="111"/>
+ <source>About</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="435"/>
+ <source>Jami</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>NameRegistrationDialog</name>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="35"/>
+ <source>Set Registered Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="163"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="244"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="250"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="256"/>
+ <source>Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="323"/>
+ <source>Register</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="357"/>
+ <source>Cancel</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="424"/>
+ <source>Registering Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="548"/>
+ <source>Something went wrong</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="618"/>
+ <source>Close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="82"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="85"/>
+ <source>Network error</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>NewWizardWidget</name>
+ <message>
+ <location filename="../newwizardwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="141"/>
+ <source>Welcome Label</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="147"/>
+ <source> Welcome to</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="185"/>
+ <source>Welcome Logo</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="239"/>
+ <source>Create Jami account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="245"/>
+ <source>Push button for Jami account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="251"/>
+ <source>Create a Jami account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="282"/>
+ <source>Link device button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="288"/>
+ <source>Push button for device linkage start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="291"/>
+ <source>Link this device to an account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="328"/>
+ <source>Create Jami SIP account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="334"/>
+ <source>Push button for Jami SIP account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="340"/>
+ <source>Create a SIP account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="405"/>
+ <source>Link this device to an existing account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="469"/>
+ <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">To link this device to another account, you first </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">need to obtain a PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> code. To generate the PIN code:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Account management setting</span><span style=" font-size:14px;"> of a previous device</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choose the </span><span style=" font-size:14px; font-weight:600;">Jami account</span><span style=" font-size:14px;"> you want to use</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Devices</span><span style=" font-size:14px;"> tab</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Select </span><span style=" font-size:14px; font-weight:600;">Add a device</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">You will get the necessary PIN to complete this form. The PIN is only valid for </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutes</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="531"/>
+ <source>Enter your pin:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="599"/>
+ <source>Or import a file:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="626"/>
+ <source>Link from exported account archive file</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="629"/>
+ <location filename="../newwizardwidget.cpp" line="83"/>
+ <location filename="../newwizardwidget.cpp" line="218"/>
+ <source>(None)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="705"/>
+ <source>Password:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="799"/>
+ <location filename="../newwizardwidget.ui" line="1586"/>
+ <source>Profile</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="953"/>
+ <location filename="../newwizardwidget.ui" line="1767"/>
+ <source>Profile name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1027"/>
+ <source>Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1136"/>
+ <source>Register your username.
+This will reserve the username so that only you can use it.
+Your friends will be able to call you with your usename
+instead of using your ID.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1142"/>
+ <source>Public username checkbox</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1145"/>
+ <source>Checkbox selecting if the user wants a public username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1148"/>
+ <source>Register public username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1367"/>
+ <source>Public username edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1373"/>
+ <source>Choose your username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1289"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1295"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1301"/>
+ <location filename="../newwizardwidget.ui" line="2213"/>
+ <source>Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1211"/>
+ <location filename="../newwizardwidget.ui" line="1217"/>
+ <source>Password confirmation text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1223"/>
+ <source>Confirm password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1814"/>
+ <source>SIP Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1973"/>
+ <source>SIP Server edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1979"/>
+ <source>Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2045"/>
+ <source>SIP proxy input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2051"/>
+ <source>SIP proxy text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2057"/>
+ <source>Proxy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2123"/>
+ <source>SIP username input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2129"/>
+ <source>SIP Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2135"/>
+ <source>Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2201"/>
+ <location filename="../newwizardwidget.ui" line="2207"/>
+ <source>SIP Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message utf8="true">
+ <location filename="../newwizardwidget.ui" line="2282"/>
+ <source>Generating your Jami account…</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2356"/>
+ <source>Previous page button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2362"/>
+ <source>push button to access previous page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2365"/>
+ <source>Previous</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2396"/>
+ <source>Cancel account create/link</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2402"/>
+ <source>push button to cancel account creation or linking</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2405"/>
+ <source>Back</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2442"/>
+ <source>Next page Button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2448"/>
+ <source>Push button to access next page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2451"/>
+ <source>Next</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="75"/>
+ <source>Open File</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="77"/>
+ <source>Jami archive files (*.gz); All files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="123"/>
+ <source>Your account needs to be migrated. Enter your password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="419"/>
+ <source>Migrating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="412"/>
+ <source>Importing account archive...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="404"/>
+ <source>Generating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="422"/>
+ <source>Generating your SIP account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="533"/>
+ <source>Error creating account</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PasswordDialog</name>
+ <message>
+ <location filename="../passworddialog.ui" line="32"/>
+ <source>Change Account Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="97"/>
+ <source>Enter Current Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="169"/>
+ <source>Enter New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="190"/>
+ <source>Confirm New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="247"/>
+ <source>Confirm</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="290"/>
+ <source>Cancel</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="143"/>
+ <source>Current Password Incorrect</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PhotoBoothDialog</name>
+ <message>
+ <location filename="../photoboothdialog.ui" line="14"/>
+ <source>Photobooth</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PhotoboothWidget</name>
+ <message>
+ <location filename="../photoboothwidget.ui" line="20"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.ui" line="120"/>
+ <source>Photobooth display</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="92"/>
+ <source>Choose File</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="94"/>
+ <source>Image Files (*.jpg *.jpeg *.png)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PrivateBridging</name>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Choose File</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../utils.cpp" line="183"/>
+ <source>No default mail client found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="43"/>
+ <location filename="../deviceitemwidget.cpp" line="85"/>
+ <source>Edit Device Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="44"/>
+ <source>Unlink Device From Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="80"/>
+ <source>Save new device name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.cpp" line="39"/>
+ <source>Add as contact</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>RingButton</name>
+ <message>
+ <location filename="../ringbutton.ui" line="140"/>
+ <source>Select folder</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <location filename="../settingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="141"/>
+ <source>Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="229"/>
+ <source>Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="267"/>
+ <location filename="../settingswidget.ui" line="503"/>
+ <source>General</source>
+ <translation>பொது</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="305"/>
+ <location filename="../settingswidget.ui" line="3416"/>
+ <source>Audio / Video</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="542"/>
+ <source>System</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="610"/>
+ <source>Enable desktop notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="653"/>
+ <source>Keep minimized on close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="678"/>
+ <source>Download folder</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="811"/>
+ <source>Save in</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="904"/>
+ <source>Always Recording</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="943"/>
+ <source>Updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1008"/>
+ <source>Check for updates automatically every</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1032"/>
+ <source>Interval between update checks in days selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1038"/>
+ <source> days</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1081"/>
+ <source>Check for updates now button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1084"/>
+ <source>Check for updates now</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3027"/>
+ <source>Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1418"/>
+ <location filename="../settingswidget.ui" line="2729"/>
+ <source>Enable</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="607"/>
+ <source>toggle enable notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="650"/>
+ <source>Toggle keep minimized on close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="764"/>
+ <source>Call Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1005"/>
+ <source>Toggle automatic updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1231"/>
+ <source>Jami Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1453"/>
+ <location filename="../settingswidget.ui" line="2761"/>
+ <source>Profile</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1567"/>
+ <location filename="../settingswidget.ui" line="2875"/>
+ <source>Identity</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1614"/>
+ <source>Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1673"/>
+ <source>Registered name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1721"/>
+ <source>Type here to register a username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1755"/>
+ <source>Register</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1827"/>
+ <source>Change Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1868"/>
+ <source>Export Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1909"/>
+ <location filename="../settingswidget.ui" line="3089"/>
+ <source>Delete Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1973"/>
+ <source>Linked Devices</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2078"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2142"/>
+ <source>Banned Contacts</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3788"/>
+ <source>Format</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3831"/>
+ <source>Video device framerate selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3967"/>
+ <source>Preview unavailable</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2359"/>
+ <location filename="../settingswidget.ui" line="3187"/>
+ <source>Advanced Account Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2554"/>
+ <source>SIP Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2925"/>
+ <source>Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2958"/>
+ <source>Hostname</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2991"/>
+ <source>Proxy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3461"/>
+ <source>Audio</source>
+ <translation>கேள்விமாற்றி</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3511"/>
+ <source>Microphone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3551"/>
+ <source>Audio input device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3585"/>
+ <source>Output Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3625"/>
+ <source>Choose the output device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3682"/>
+ <source>Video</source>
+ <translation>காணொளி</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3720"/>
+ <source>Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3766"/>
+ <source>Video device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="459"/>
+ <source>A registered name should not have any spaces and must be at least three letters long</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="466"/>
+ <source>This name is already taken</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="92"/>
+ <location filename="../settingswidget.cpp" line="110"/>
+ <source>Enter an alias</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="473"/>
+ <source>Register this name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="550"/>
+ <source>Remove Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="551"/>
+ <source>Enter this account's password to confirm the removal of this device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="558"/>
+ <source>Are you sure you wish to remove this device?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="589"/>
+ <source>Export Account Here</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="887"/>
+ <source>Select A Folder For Your Downloads</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="904"/>
+ <source>Select A Folder For Your Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>VideoOverlay</name>
+ <message>
+ <location filename="../videooverlay.ui" line="419"/>
+ <source>Call on Hold</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="89"/>
+ <source>Hold / Unhold</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="124"/>
+ <source>Chat</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="162"/>
+ <source>Mute Mic</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="244"/>
+ <source>Record call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="325"/>
+ <source>Name label</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="390"/>
+ <source>Time elapsed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="393"/>
+ <source>00:00</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="57"/>
+ <source>Hangup</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="203"/>
+ <source>Mute Video</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>VideoView</name>
+ <message>
+ <location filename="../videoview.cpp" line="271"/>
+ <source>Share entire screen</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="274"/>
+ <source>Share screen area</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="281"/>
+ <source>Share file</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+</TS>
\ No newline at end of file
diff --git a/translations/ring_client_windows_tr.ts b/translations/ring_client_windows_tr.ts
new file mode 100644
index 0000000..65d7db1
--- /dev/null
+++ b/translations/ring_client_windows_tr.ts
@@ -0,0 +1,1605 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="tr" version="2.0">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../aboutdialog.ui" line="435"/>
+ <location filename="../aboutdialog.ui" line="465"/>
+ <source>About</source>
+ <translation>Hakkında</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="462"/>
+ <source>about button</source>
+ <translation>hakkında butonu</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="478"/>
+ <source>credits button</source>
+ <translation>kredi butonu</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="481"/>
+ <source>Credits</source>
+ <translation>Krediler</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="547"/>
+ <source>Free as in Freedom</source>
+ <translation>Özgürlükteki gibi ücretsiz</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="563"/>
+ <source>The Microsoft Windows client for Jami.
+Jami is a secured and distributed communication software.</source>
+ <translation>Jami için Microsoft Windows istemcisi.
+Jami güvenli ve dağıtık bir iletişim yazılımıdır.</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="32"/>
+ <source>version</source>
+ <translation>sürüm</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="39"/>
+ <source>Created by:</source>
+ <translation>Oluşturanlar:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="73"/>
+ <source>Artwork by:</source>
+ <translation>Çizenler:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="77"/>
+ <source>Based on the SFLPhone project</source>
+ <translation>SFLPhone tasarısı temel alınmıştır.</translation>
+ </message>
+</context>
+<context>
+ <name>AccountItemDelegate</name>
+ <message>
+ <location filename="../accountitemdelegate.cpp" line="91"/>
+ <source>Add Account</source>
+ <translation>Hesap Ekle</translation>
+ </message>
+</context>
+<context>
+ <name>AdvancedSIPSettingsWidget</name>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Form</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="55"/>
+ <source>Call Settings</source>
+ <translation>Arama Ayarları</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="102"/>
+ <source>Auto Answer Calls</source>
+ <translation>Aramaları otomatik yanıtla</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="130"/>
+ <source>Enable Custom Ringtone</source>
+ <translation>Özel zil sesini etkinleştir</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="191"/>
+ <source>Connectivity</source>
+ <translation>Bağlanabilirlik</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="281"/>
+ <source>STUN Address</source>
+ <translation>STUN Adresi</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="293"/>
+ <source>Use STUN</source>
+ <translation>STUN kullan</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="317"/>
+ <source>Use UPnP</source>
+ <translation>UpnP kullan</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="329"/>
+ <source>Use TURN</source>
+ <translation>TURN kullan</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="359"/>
+ <source>TURN Password</source>
+ <translation>TURN Parolası</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="391"/>
+ <source>TURN Username</source>
+ <translation>TURN Kullanıcı Adı</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="423"/>
+ <source>TURN Address</source>
+ <translation>TURN Adresi</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="464"/>
+ <source>Media</source>
+ <translation>Ortam</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="515"/>
+ <source>Enable Video</source>
+ <translation>Görüntüyü Etkinleştir</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="539"/>
+ <source>Video Codecs</source>
+ <translation>Görüntü çözücüler</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="692"/>
+ <source>Audio Codecs</source>
+ <translation>Ses çözücüleri</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="142"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation>Ses Dosyaları (*.wav *.ogg *.opus *.mp3 *aiff *wma)</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="151"/>
+ <source>Add a custom ringtone</source>
+ <translation>Özel bir zil sesi ekle</translation>
+ </message>
+</context>
+<context>
+ <name>AdvancedSettingsWidget</name>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Form</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="61"/>
+ <source>Call Settings</source>
+ <translation>Arama Ayarları</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="108"/>
+ <source>Allow Calls From Untrusted Peers</source>
+ <translation>Güvenilmeyen Eşlerden Gelen Aramalara İzin Ver</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="133"/>
+ <source>Auto Answer Calls</source>
+ <translation>Aramaları otomatik yanıtla</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="161"/>
+ <source>Enable Custom Ringtone</source>
+ <translation>Özel zil sesini etkinleştir</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="188"/>
+ <source>Add a custom ringtone</source>
+ <translation>Özel bir zil sesi ekle</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="225"/>
+ <source>Name Server</source>
+ <translation>Ad Sunucusu</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="275"/>
+ <source>Address</source>
+ <translation>Yer</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="351"/>
+ <source>OpenDHT Configuration</source>
+ <translation>OpenDHT Yapılandırması</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="398"/>
+ <source>Enable Proxy</source>
+ <translation>Vekil sunucuyu etkinleştir</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="454"/>
+ <source>Bootstrap</source>
+ <translation>Önyükleme</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="530"/>
+ <source>Security</source>
+ <translation>Güvenlik</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="571"/>
+ <source>Private Key Password</source>
+ <translation>Özel Anahtar Parolası</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="583"/>
+ <source>User Certificate</source>
+ <translation>Kullanıcı Sertifikası</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="622"/>
+ <source>Private Key</source>
+ <translation>Özel Anahtar</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="634"/>
+ <source>CA Certificate</source>
+ <translation>CA sertifikası</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="766"/>
+ <source>Connectivity</source>
+ <translation>Bağlanabilirlik</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="868"/>
+ <source>Use STUN</source>
+ <translation>STUN kullan</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="856"/>
+ <source>STUN Address</source>
+ <translation>STUN Adresi</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="892"/>
+ <source>Use UPnP</source>
+ <translation>UpnP kullan</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="904"/>
+ <source>Use TURN</source>
+ <translation>TURN kullan</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="934"/>
+ <source>TURN Password</source>
+ <translation>TURN Parolası</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="966"/>
+ <source>TURN Username</source>
+ <translation>TURN Kullanıcı Adı</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="998"/>
+ <source>TURN Address</source>
+ <translation>TURN Adresi</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1039"/>
+ <source>Media</source>
+ <translation>Ortam</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1090"/>
+ <source>Enable Video</source>
+ <translation>Görüntüyü Etkinleştir</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1267"/>
+ <source>Audio Codecs</source>
+ <translation>Ses çözücüleri</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1114"/>
+ <source>Video Codecs</source>
+ <translation>Görüntü çözücüler</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="181"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation>Ses Dosyaları (*.wav *.ogg *.opus *.mp3 *aiff *wma)</translation>
+ </message>
+</context>
+<context>
+ <name>AnimatedOverlay</name>
+ <message>
+ <location filename="../animatedoverlay.ui" line="14"/>
+ <source>Form</source>
+ <translation>Form</translation>
+ </message>
+</context>
+<context>
+ <name>BannedItemWidget</name>
+ <message>
+ <location filename="../banneditemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Form</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="80"/>
+ <source>name</source>
+ <translation>isim</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="104"/>
+ <source>id</source>
+ <translation>kimlik</translation>
+ </message>
+</context>
+<context>
+ <name>CallWidget</name>
+ <message>
+ <location filename="../callwidget.ui" line="184"/>
+ <source>Show conversations</source>
+ <translation>Konuşmaları göster</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="187"/>
+ <source>Conversations</source>
+ <translation>Konuşmalar</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="368"/>
+ <source>Search contact text input</source>
+ <translation>Kişi ara</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="653"/>
+ <source>Jami is free software for universal communication which respects the freedoms and privacy of its users.</source>
+ <translation>Jami, kullanıcılarının özgürlüklerine ve gizliliğine önem veren, evrensel iletişim için özgür yazılımdır.</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="693"/>
+ <source>
+ This is your ID.
+Copy and share it with your friends!
+ </source>
+ <translation>
+ Bu sizin kimliğiniz.
+Kopyalayın ve arkadaşlarınızla paylaşın!</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="806"/>
+ <source>Show ring ID QR code</source>
+ <translation>Ring kimliği QR kodunu göster</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="857"/>
+ <source>Share ring ID button</source>
+ <translation>Ring kimliği düğmesini paylaş</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="915"/>
+ <source>Double-click to copy</source>
+ <translation>Kopyalamak için çift tıkla</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="956"/>
+ <source>Error while generating QR Code</source>
+ <translation>QR Kodu oluşturulurken hata</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1184"/>
+ <location filename="../callwidget.ui" line="1434"/>
+ <source>best name</source>
+ <translation>en iyi ad</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1208"/>
+ <source>best Id</source>
+ <translation>en iyi kimlik</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1734"/>
+ <source>Back to homepage button</source>
+ <translation>Anasayfaya dön düğmesi</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1943"/>
+ <source>Add to contacts</source>
+ <translation>Kişilere ekle</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="202"/>
+ <source>Show invites</source>
+ <translation>Davetleri göster</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="205"/>
+ <source>Invites</source>
+ <translation>Davetler</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="377"/>
+ <location filename="../callwidget.cpp" line="552"/>
+ <source>Find a new or existing contact</source>
+ <translation>Yeni veya mevcut bir kişiyi bulun</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1444"/>
+ <source>Wants to talk to you!</source>
+ <translation>Sizinle konuşmak istiyor!</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1517"/>
+ <source>Answer incoming call button</source>
+ <translation>Gelen aramayı yanıtla düğmesi</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1589"/>
+ <source>Ignore incoming call button</source>
+ <translation>Gelen arama düğmesini yoksay</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1539"/>
+ <source>Answer</source>
+ <translation>Yanıtla</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1617"/>
+ <source>Ignore</source>
+ <translation>Göz ardı et</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1280"/>
+ <source>Cancel outgoing call</source>
+ <translation>Giden aramayı iptal et</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1305"/>
+ <source>Cancel</source>
+ <translation>İptal</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="332"/>
+ <source>Start video call</source>
+ <translation>Görüntülü arama başlat</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="343"/>
+ <source>Start audio call</source>
+ <translation>Sesli arama başlat</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="354"/>
+ <source>Clear conversation</source>
+ <translation>Konuşmayı temizle</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="361"/>
+ <source>Remove contact</source>
+ <translation>Kişiyi kaldır</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="373"/>
+ <source>Block contact</source>
+ <translation>Kişiyi engelle</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="384"/>
+ <source>Copy number</source>
+ <translation>Numarayı kopyala</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="561"/>
+ <source>Search your received invitations</source>
+ <translation>Aldığınız davetiyeleri arayın</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>Contact me on Jami</source>
+ <translation>Jami'de bana ulaşın</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>My Id is : </source>
+ <translation>Kimliğim :</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="847"/>
+ <source>%1</source>
+ <comment>%1 is the contact username</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="852"/>
+ <source>%1</source>
+ <comment>%1 is the contact unique identifier</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="675"/>
+ <source>Call incoming from %1</source>
+ <translation>%1$s'dan gelen arama</translation>
+ </message>
+</context>
+<context>
+ <name>DeleteAccountDialog</name>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="35"/>
+ <source>Account deletion</source>
+ <translation>Hesap silme</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="58"/>
+ <source>Do you really want to delete the following account?</source>
+ <translation>Aşağıdaki hesabı gerçekten silmek istiyor musunuz?</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="153"/>
+ <source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
+ <translation>Bu hesap dışa aktarılmadıysa veya başka bir cihaza eklenmediyse, geri döndürülemez şekilde kaybolacaktır.</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="235"/>
+ <source>Permanently delete account</source>
+ <translation>Hesabı kalıcı olarak sil</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="241"/>
+ <source>Delete</source>
+ <translation>Sil</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="278"/>
+ <source>Cancel account deletion</source>
+ <translation>Hesap silmeyi iptal et</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="284"/>
+ <source>Cancel</source>
+ <translation>İptal</translation>
+ </message>
+</context>
+<context>
+ <name>DeviceItemWidget</name>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Form</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="105"/>
+ <source>Device Id</source>
+ <translation>Aygıt Kimliği</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="143"/>
+ <source>this device</source>
+ <translation>bu aygıt</translation>
+ </message>
+</context>
+<context>
+ <name>InviteButtonsWidget</name>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="83"/>
+ <source>Accept</source>
+ <translation>Kabul et</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="131"/>
+ <source>Refuse</source>
+ <translation>Geri Çevir</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="179"/>
+ <source>Block</source>
+ <translation>Engelleme</translation>
+ </message>
+</context>
+<context>
+ <name>LinkDeviceDialog</name>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation>Karşılıklı konuşma</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="62"/>
+ <source>Enter your account password</source>
+ <translation>Hesap şifrenizi girin</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="117"/>
+ <source>Password</source>
+ <translation>Parola</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="184"/>
+ <source>Ok</source>
+ <translation>Tamam</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="218"/>
+ <source>Cancel</source>
+ <translation>İptal</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="279"/>
+ <source>Exporting account</source>
+ <translation>Hesap dışa aktarılıyor</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="402"/>
+ <source>Your PIN is</source>
+ <translation>PIN kodunuz</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="432"/>
+ <source>PIN</source>
+ <translation>PIN</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="477"/>
+ <source>This pin and the account password should be entered in your device within 10 minutes.</source>
+ <translation>Bu pin ve hesap şifresi 10 dakika içinde cihazınıza girilmelidir.</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="553"/>
+ <source>Close</source>
+ <translation>Kapat</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="34"/>
+ <source>Link Another Device</source>
+ <translation>Diğer aygıtı bağla</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="96"/>
+ <source>Incorrect password</source>
+ <translation>Geçersiz parola</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="110"/>
+ <source>Something went wrong.
+Please try again later.</source>
+ <translation>Bir şeyler yanlış gitt.
+Lütfen daha sonra yeniden deneyin.</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="83"/>
+ <source>Settings</source>
+ <translation>Ayarlar</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="94"/>
+ <source>Exit</source>
+ <translation>Çıkış</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="111"/>
+ <source>About</source>
+ <translation>Hakkında</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="435"/>
+ <source>Jami</source>
+ <translation>Jami</translation>
+ </message>
+</context>
+<context>
+ <name>NameRegistrationDialog</name>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="35"/>
+ <source>Set Registered Name</source>
+ <translation>Kayıtlı Adı Ayarla</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="163"/>
+ <source>Enter your account password</source>
+ <translation>Hesap şifrenizi girin</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="244"/>
+ <source>Password text input</source>
+ <translation>Şifre metin girişi</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="250"/>
+ <source>Password text entry</source>
+ <translation>Şifre metin girişi</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="256"/>
+ <source>Password</source>
+ <translation>Parola</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="323"/>
+ <source>Register</source>
+ <translation>Kaydol</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="357"/>
+ <source>Cancel</source>
+ <translation>İptal</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="424"/>
+ <source>Registering Name</source>
+ <translation>Kayıt Adı</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="548"/>
+ <source>Something went wrong</source>
+ <translation>Bir şeyler yanlış gitti</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="618"/>
+ <source>Close</source>
+ <translation>Kapat</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="82"/>
+ <source>Incorrect password</source>
+ <translation>Geçersiz parola</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="85"/>
+ <source>Network error</source>
+ <translation>Ağ hatası</translation>
+ </message>
+</context>
+<context>
+ <name>NewWizardWidget</name>
+ <message>
+ <location filename="../newwizardwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Form</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="141"/>
+ <source>Welcome Label</source>
+ <translation>Hoşgeldin Etiketi</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="147"/>
+ <source> Welcome to</source>
+ <translation>Hoş Geldiniz</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="185"/>
+ <source>Welcome Logo</source>
+ <translation>Hoşgeldin Logosu</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="239"/>
+ <source>Create Jami account button</source>
+ <translation>Jami hesabı düğmesi oluştur</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="245"/>
+ <source>Push button for Jami account creation start trigger</source>
+ <translation>Jami hesabı oluşturma başlatma tetikleyicisi için basma düğmesi</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="251"/>
+ <source>Create a Jami account</source>
+ <translation>Bir Jami hesabı oluştur</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="282"/>
+ <source>Link device button</source>
+ <translation>Aygıt bağla düğmesi</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="288"/>
+ <source>Push button for device linkage start trigger</source>
+ <translation>Jami hesabı oluşturma başlatma tetikleyicisi için basınız</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="291"/>
+ <source>Link this device to an account</source>
+ <translation>Bu aygıtı bir hesaba bağla</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="328"/>
+ <source>Create Jami SIP account button</source>
+ <translation>Jami SIP hesabı oluştur düğmesi</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="334"/>
+ <source>Push button for Jami SIP account creation start trigger</source>
+ <translation>Jami SIP hesabı oluşturma başlatma tetikleyicisi için basınız</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="340"/>
+ <source>Create a SIP account</source>
+ <translation>Bir SIP hesabı oluşturun</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="405"/>
+ <source>Link this device to an existing account</source>
+ <translation>Bu aygıtı var olan bir hesaba bağla</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="469"/>
+ <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">To link this device to another account, you first </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">need to obtain a PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> code. To generate the PIN code:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Account management setting</span><span style=" font-size:14px;"> of a previous device</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choose the </span><span style=" font-size:14px; font-weight:600;">Jami account</span><span style=" font-size:14px;"> you want to use</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Devices</span><span style=" font-size:14px;"> tab</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Select </span><span style=" font-size:14px; font-weight:600;">Add a device</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">You will get the necessary PIN to complete this form. The PIN is only valid for </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutes</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></source>
+ <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">Bu cihazı başka bir hesapla eşlemek için, önce </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;"> PIN edinmeniz gerekir</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> PIN kodu edinmek için:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Bir önceki </span><span style=" font-size:14px; font-weight:600;">cihazınızdaki hesap ayarları</span><span style=" font-size:14px;"> yönetimine gidin</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">İstediğiniz </span><span style=" font-size:14px; font-weight:600;">Jami hesabını</span><span style=" font-size:14px;"> seçin</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Cihazlar </span><span style=" font-size:14px; font-weight:600;">sekmesine </span><span style=" font-size:14px;"> gidin </li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Cihaz </span><span style=" font-size:14px; font-weight:600;"> Ekleyi seçin</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">Bu formu doldurmak için gerekli PIN kodunu alacaksınız. Bu PIN sadece </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 dakika geçerlidir.</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="531"/>
+ <source>Enter your pin:</source>
+ <translation>Pin'inizi girin:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="599"/>
+ <source>Or import a file:</source>
+ <translation>veya bir dosya içe aktar</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="626"/>
+ <source>Link from exported account archive file</source>
+ <translation>Dışa aktarılan hesap arşiv dosyasından bağlantı</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="629"/>
+ <location filename="../newwizardwidget.cpp" line="83"/>
+ <location filename="../newwizardwidget.cpp" line="218"/>
+ <source>(None)</source>
+ <translation>(Hiçbiri)</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="705"/>
+ <source>Password:</source>
+ <translation>Parola:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="799"/>
+ <location filename="../newwizardwidget.ui" line="1586"/>
+ <source>Profile</source>
+ <translation>Profil</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="953"/>
+ <location filename="../newwizardwidget.ui" line="1767"/>
+ <source>Profile name</source>
+ <translation>Profil adı</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1027"/>
+ <source>Account</source>
+ <translation>Hesap</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1136"/>
+ <source>Register your username.
+This will reserve the username so that only you can use it.
+Your friends will be able to call you with your usename
+instead of using your ID.</source>
+ <translation>Kullanıcı adınızı kaydedin.
+Bu, yalnızca siz kullanabilmeniz için kullanıcı adını ayıracaktır.
+Arkadaşlarınız kimliğinizi kullanmak yerine
+kullanıcı adınızla sizi arayabilecek.</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1142"/>
+ <source>Public username checkbox</source>
+ <translation>Herkese açık kullanıcı adı onay kutusu</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1145"/>
+ <source>Checkbox selecting if the user wants a public username</source>
+ <translation>Kullanıcının herkese açık bir kullanıcı adı isteyip istemediğini seçme onay kutusu</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1148"/>
+ <source>Register public username</source>
+ <translation>Halka açık kullanıcı adı kaydet</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1367"/>
+ <source>Public username edit</source>
+ <translation>Herkese açık kullanıcı adı düzenleme</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1373"/>
+ <source>Choose your username</source>
+ <translation>Kullanıcı adınızı seçin</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1289"/>
+ <source>Password text input</source>
+ <translation>Şifre metin girişi</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1295"/>
+ <source>Password text entry</source>
+ <translation>Şifre metin girişi</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1301"/>
+ <location filename="../newwizardwidget.ui" line="2213"/>
+ <source>Password</source>
+ <translation>Parola</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1211"/>
+ <location filename="../newwizardwidget.ui" line="1217"/>
+ <source>Password confirmation text input</source>
+ <translation>Şifre onay metni girişi</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1223"/>
+ <source>Confirm password</source>
+ <translation>Parolayı onayla</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1814"/>
+ <source>SIP Account</source>
+ <translation>SIP Hesabı</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1973"/>
+ <source>SIP Server edit</source>
+ <translation>SIP Sunucusu düzenleme</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1979"/>
+ <source>Server</source>
+ <translation>Sunucu</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2045"/>
+ <source>SIP proxy input</source>
+ <translation>SIP proxy girişi</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2051"/>
+ <source>SIP proxy text entry</source>
+ <translation>SIP proxy metin girişi</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2057"/>
+ <source>Proxy</source>
+ <translation>Vekil</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2123"/>
+ <source>SIP username input</source>
+ <translation>SIP kullanıcı adı girişi</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2129"/>
+ <source>SIP Password text entry</source>
+ <translation>SIP Parolası metin girişi</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2135"/>
+ <source>Username</source>
+ <translation>Kullanıcı adı</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2201"/>
+ <location filename="../newwizardwidget.ui" line="2207"/>
+ <source>SIP Password text input</source>
+ <translation>SIP Şifre metin girişi</translation>
+ </message>
+ <message utf8="true">
+ <location filename="../newwizardwidget.ui" line="2282"/>
+ <source>Generating your Jami account…</source>
+ <translation>Jami hesabınız oluşturuluyor...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2356"/>
+ <source>Previous page button</source>
+ <translation>Önceki sayfa düğmesi</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2362"/>
+ <source>push button to access previous page of wizard</source>
+ <translation>sihirbazın önceki sayfasına erişmek için düğmeye basın</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2365"/>
+ <source>Previous</source>
+ <translation>Önceki</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2396"/>
+ <source>Cancel account create/link</source>
+ <translation>Hesap oluşturmayı / bağlantıyı iptal et</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2402"/>
+ <source>push button to cancel account creation or linking</source>
+ <translation>hesap oluşturmayı veya bağlamayı iptal etmek için düğmeye basın</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2405"/>
+ <source>Back</source>
+ <translation>Geri</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2442"/>
+ <source>Next page Button</source>
+ <translation>Sonraki sayfa düğmesi</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2448"/>
+ <source>Push button to access next page of wizard</source>
+ <translation>Sihirbazın sonraki sayfasına erişmek için düğmeye basın</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2451"/>
+ <source>Next</source>
+ <translation>İleri</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="75"/>
+ <source>Open File</source>
+ <translation>Dosyayı Aç</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="77"/>
+ <source>Jami archive files (*.gz); All files (*)</source>
+ <translation>Jami arşiv dosyaları (*.gz); Tüm Dosyalar (*)</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="123"/>
+ <source>Your account needs to be migrated. Enter your password.</source>
+ <translation>Hesabınızın taşınması gerekiyor. Parolanızı girin.</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="419"/>
+ <source>Migrating your Jami account...</source>
+ <translation>Jami hesabınız göç ettiriliyor...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="412"/>
+ <source>Importing account archive...</source>
+ <translation>Hesap arşivi içe aktarılıyor...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="404"/>
+ <source>Generating your Jami account...</source>
+ <translation>Jami hesabınız oluşturuluyor...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="422"/>
+ <source>Generating your SIP account...</source>
+ <translation>SIP hesabınız oluşturuluyor ...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="533"/>
+ <source>Error creating account</source>
+ <translation>Hesap oluşturma hatası</translation>
+ </message>
+</context>
+<context>
+ <name>PasswordDialog</name>
+ <message>
+ <location filename="../passworddialog.ui" line="32"/>
+ <source>Change Account Password</source>
+ <translation>Hesap Parolasını Değiştir</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="97"/>
+ <source>Enter Current Password</source>
+ <translation>Şimdiki Parolayı Girin</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="169"/>
+ <source>Enter New Password</source>
+ <translation>Yeni Parolayı Girin</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="190"/>
+ <source>Confirm New Password</source>
+ <translation>Yeni Parolayı Doğrulayın</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="247"/>
+ <source>Confirm</source>
+ <translation>Onayla</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="290"/>
+ <source>Cancel</source>
+ <translation>İptal</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="143"/>
+ <source>Current Password Incorrect</source>
+ <translation>Kullanılan Parola Hatalı</translation>
+ </message>
+</context>
+<context>
+ <name>PhotoBoothDialog</name>
+ <message>
+ <location filename="../photoboothdialog.ui" line="14"/>
+ <source>Photobooth</source>
+ <translation>Fotoğraf kabini</translation>
+ </message>
+</context>
+<context>
+ <name>PhotoboothWidget</name>
+ <message>
+ <location filename="../photoboothwidget.ui" line="20"/>
+ <source>Form</source>
+ <translation>Form</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.ui" line="120"/>
+ <source>Photobooth display</source>
+ <translation>Fotoğraf kabini görüntüsü</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="92"/>
+ <source>Choose File</source>
+ <translation>Dosya Seç</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="94"/>
+ <source>Image Files (*.jpg *.jpeg *.png)</source>
+ <translation>Resim Dosyaları (*.jpg *.jpeg *.png)</translation>
+ </message>
+</context>
+<context>
+ <name>PrivateBridging</name>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Choose File</source>
+ <translation>Dosya Seç</translation>
+ </message>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Files (*)</source>
+ <translation>Dosyalar (*)</translation>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../utils.cpp" line="183"/>
+ <source>No default mail client found</source>
+ <translation>Varsayılan posta istemcisi bulunmadı</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="43"/>
+ <location filename="../deviceitemwidget.cpp" line="85"/>
+ <source>Edit Device Name</source>
+ <translation>Aygıt Adını Düzenle</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="44"/>
+ <source>Unlink Device From Account</source>
+ <translation>Aygıtın Hesaptan Bağlantısını Kaldır</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="80"/>
+ <source>Save new device name</source>
+ <translation>Yeni cihaz adını kaydet</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.cpp" line="39"/>
+ <source>Add as contact</source>
+ <translation>Kişi listesine ekle</translation>
+ </message>
+</context>
+<context>
+ <name>RingButton</name>
+ <message>
+ <location filename="../ringbutton.ui" line="140"/>
+ <source>Select folder</source>
+ <translation>Klasör seç</translation>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <location filename="../settingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Form</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="141"/>
+ <source>Settings</source>
+ <translation>Ayarlar</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="229"/>
+ <source>Account</source>
+ <translation>Hesap</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="267"/>
+ <location filename="../settingswidget.ui" line="503"/>
+ <source>General</source>
+ <translation>Genel</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="305"/>
+ <location filename="../settingswidget.ui" line="3416"/>
+ <source>Audio / Video</source>
+ <translation>Ses / Görüntü</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="542"/>
+ <source>System</source>
+ <translation>Düzen</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="610"/>
+ <source>Enable desktop notifications</source>
+ <translation>Masaüstü bildirimlerini etkinleştir</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="653"/>
+ <source>Keep minimized on close</source>
+ <translation>Kapatırken küçültülmüş olarak tut</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="678"/>
+ <source>Download folder</source>
+ <translation>İndirme klasörü</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="811"/>
+ <source>Save in</source>
+ <translation>Kaydet</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="904"/>
+ <source>Always Recording</source>
+ <translation>Devamlı kaydediliyor</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="943"/>
+ <source>Updates</source>
+ <translation>Güncellemeler</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1008"/>
+ <source>Check for updates automatically every</source>
+ <translation>Güncellemeleri kendiliğinden denetle</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1032"/>
+ <source>Interval between update checks in days selector</source>
+ <translation>Gün seçicideki güncelleme denetimleri aralığı</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1038"/>
+ <source> days</source>
+ <translation>gün</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1081"/>
+ <source>Check for updates now button</source>
+ <translation>Şimdi güncellemeleri denetle düğmesi</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1084"/>
+ <source>Check for updates now</source>
+ <translation>Şimdi güncellemeleri denetle</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3027"/>
+ <source>Password</source>
+ <translation>Parola</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1418"/>
+ <location filename="../settingswidget.ui" line="2729"/>
+ <source>Enable</source>
+ <translation>Etkin</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="607"/>
+ <source>toggle enable notifications</source>
+ <translation>bildirimleri etkinleştirmeyi aç / kapat</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="650"/>
+ <source>Toggle keep minimized on close</source>
+ <translation>Kapatırken simge durumuna küçültmeyi aç / kapat</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="764"/>
+ <source>Call Recordings</source>
+ <translation>Çağrı Kayıtları</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1005"/>
+ <source>Toggle automatic updates</source>
+ <translation>Otomatik güncellemeleri aç / kapat</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1231"/>
+ <source>Jami Account</source>
+ <translation>Jami Hesabı</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1453"/>
+ <location filename="../settingswidget.ui" line="2761"/>
+ <source>Profile</source>
+ <translation>Profil</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1567"/>
+ <location filename="../settingswidget.ui" line="2875"/>
+ <source>Identity</source>
+ <translation>Kimlik</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1614"/>
+ <source>Id</source>
+ <translation>Kimlik</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1673"/>
+ <source>Registered name</source>
+ <translation>Kaydedilen ad</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1721"/>
+ <source>Type here to register a username</source>
+ <translation>Bir kullanıcı adı kaydetmek için buraya yazın</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1755"/>
+ <source>Register</source>
+ <translation>Kaydol</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1827"/>
+ <source>Change Password</source>
+ <translation>Parolayı Değiştir</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1868"/>
+ <source>Export Account</source>
+ <translation>Hesabı Dışa Aktar</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1909"/>
+ <location filename="../settingswidget.ui" line="3089"/>
+ <source>Delete Account</source>
+ <translation>Hesabı Sil</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1973"/>
+ <source>Linked Devices</source>
+ <translation>Bağlı Aygıtlar</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2078"/>
+ <source>Link Another Device</source>
+ <translation>Diğer aygıtı bağla</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2142"/>
+ <source>Banned Contacts</source>
+ <translation>Engellenmiş Kişiler</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3788"/>
+ <source>Format</source>
+ <translation>Biçim</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3831"/>
+ <source>Video device framerate selector</source>
+ <translation>Video cihazı kare hızı seçici</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3967"/>
+ <source>Preview unavailable</source>
+ <translation>Önizleme kullanılamıyor</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2359"/>
+ <location filename="../settingswidget.ui" line="3187"/>
+ <source>Advanced Account Settings</source>
+ <translation>Gelişmiş Hesap ayarları</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2554"/>
+ <source>SIP Account</source>
+ <translation>SIP Hesabı</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2925"/>
+ <source>Username</source>
+ <translation>Kullanıcı adı</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2958"/>
+ <source>Hostname</source>
+ <translation>Sunucu adı</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2991"/>
+ <source>Proxy</source>
+ <translation>Vekil</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3461"/>
+ <source>Audio</source>
+ <translation>Ses</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3511"/>
+ <source>Microphone</source>
+ <translation>Mikrofon</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3551"/>
+ <source>Audio input device selector</source>
+ <translation>Ses giriş aygıtı seçici</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3585"/>
+ <source>Output Device</source>
+ <translation>Çıkış Aygıtı</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3625"/>
+ <source>Choose the output device</source>
+ <translation>Çıkış aygıtını seç</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3682"/>
+ <source>Video</source>
+ <translation>Görüntü</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3720"/>
+ <source>Device</source>
+ <translation>Aygıt</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3766"/>
+ <source>Video device selector</source>
+ <translation>Görüntü aygıtı seçici</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="459"/>
+ <source>A registered name should not have any spaces and must be at least three letters long</source>
+ <translation>Kayıtlı bir isim hiç boşluk bırakmamalı ve en az üç harf uzunluğunda olmalıdır.</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="466"/>
+ <source>This name is already taken</source>
+ <translation>Bu ad önceden alınmış</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="92"/>
+ <location filename="../settingswidget.cpp" line="110"/>
+ <source>Enter an alias</source>
+ <translation>Bir takma ad girin</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="473"/>
+ <source>Register this name</source>
+ <translation>Bu adı kaydet</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="550"/>
+ <source>Remove Device</source>
+ <translation>Aygıtı Kaldır</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="551"/>
+ <source>Enter this account's password to confirm the removal of this device</source>
+ <translation>Bu aygıtın kaldırılmasını onaylamak için bu hesabın şifresini girin.</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="558"/>
+ <source>Are you sure you wish to remove this device?</source>
+ <translation>Bu cihazı kaldırmak istediğinizden emin misiniz?</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="589"/>
+ <source>Export Account Here</source>
+ <translation>Hesabı Buraya Dışa Aktar</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="887"/>
+ <source>Select A Folder For Your Downloads</source>
+ <translation>İndirmeleriniz İçin Bir Klasör Seçin</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="904"/>
+ <source>Select A Folder For Your Recordings</source>
+ <translation>Kayıtlarınız İçin Bir Klasör Seçin</translation>
+ </message>
+</context>
+<context>
+ <name>VideoOverlay</name>
+ <message>
+ <location filename="../videooverlay.ui" line="419"/>
+ <source>Call on Hold</source>
+ <translation>Çağrı Beklemede</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="89"/>
+ <source>Hold / Unhold</source>
+ <translation>Beklet / Bekletmeyi kaldır</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="124"/>
+ <source>Chat</source>
+ <translation>Sohbet</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="162"/>
+ <source>Mute Mic</source>
+ <translation>Mikrofonu kapat</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="244"/>
+ <source>Record call</source>
+ <translation>Çağrıyı kaydet</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="325"/>
+ <source>Name label</source>
+ <translation>İsim etiketi</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="390"/>
+ <source>Time elapsed</source>
+ <translation>Geçen zaman</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="393"/>
+ <source>00:00</source>
+ <translation>00:00</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="57"/>
+ <source>Hangup</source>
+ <translation>Kapat</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="203"/>
+ <source>Mute Video</source>
+ <translation>Görüntüyü kapat</translation>
+ </message>
+</context>
+<context>
+ <name>VideoView</name>
+ <message>
+ <location filename="../videoview.cpp" line="271"/>
+ <source>Share entire screen</source>
+ <translation>Tüm ekranı paylaş</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="274"/>
+ <source>Share screen area</source>
+ <translation>Ekran alanı paylaş</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="281"/>
+ <source>Share file</source>
+ <translation>Dosya paylaş</translation>
+ </message>
+</context>
+</TS>
\ No newline at end of file
diff --git a/translations/ring_client_windows_tr_TR.ts b/translations/ring_client_windows_tr_TR.ts
new file mode 100644
index 0000000..06e7fb9
--- /dev/null
+++ b/translations/ring_client_windows_tr_TR.ts
@@ -0,0 +1,1589 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="tr_TR" version="2.0">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../aboutdialog.ui" line="435"/>
+ <location filename="../aboutdialog.ui" line="465"/>
+ <source>About</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="462"/>
+ <source>about button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="478"/>
+ <source>credits button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="481"/>
+ <source>Credits</source>
+ <translation>Emek verenler</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="547"/>
+ <source>Free as in Freedom</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="563"/>
+ <source>The Microsoft Windows client for Jami.
+Jami is a secured and distributed communication software.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="32"/>
+ <source>version</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="39"/>
+ <source>Created by:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="73"/>
+ <source>Artwork by:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="77"/>
+ <source>Based on the SFLPhone project</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AccountItemDelegate</name>
+ <message>
+ <location filename="../accountitemdelegate.cpp" line="91"/>
+ <source>Add Account</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSIPSettingsWidget</name>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="55"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="102"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="130"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="191"/>
+ <source>Connectivity</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="281"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="293"/>
+ <source>Use STUN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="317"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="329"/>
+ <source>Use TURN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="359"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="391"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="423"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="464"/>
+ <source>Media</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="515"/>
+ <source>Enable Video</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="539"/>
+ <source>Video Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="692"/>
+ <source>Audio Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="142"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="151"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSettingsWidget</name>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="61"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="108"/>
+ <source>Allow Calls From Untrusted Peers</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="133"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="161"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="188"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="225"/>
+ <source>Name Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="275"/>
+ <source>Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="351"/>
+ <source>OpenDHT Configuration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="398"/>
+ <source>Enable Proxy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="454"/>
+ <source>Bootstrap</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="530"/>
+ <source>Security</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="571"/>
+ <source>Private Key Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="583"/>
+ <source>User Certificate</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="622"/>
+ <source>Private Key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="634"/>
+ <source>CA Certificate</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="766"/>
+ <source>Connectivity</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="868"/>
+ <source>Use STUN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="856"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="892"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="904"/>
+ <source>Use TURN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="934"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="966"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="998"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1039"/>
+ <source>Media</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1090"/>
+ <source>Enable Video</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1267"/>
+ <source>Audio Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1114"/>
+ <source>Video Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="181"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AnimatedOverlay</name>
+ <message>
+ <location filename="../animatedoverlay.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>BannedItemWidget</name>
+ <message>
+ <location filename="../banneditemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="80"/>
+ <source>name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="104"/>
+ <source>id</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>CallWidget</name>
+ <message>
+ <location filename="../callwidget.ui" line="184"/>
+ <source>Show conversations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="187"/>
+ <source>Conversations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="368"/>
+ <source>Search contact text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="653"/>
+ <source>Jami is free software for universal communication which respects the freedoms and privacy of its users.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="693"/>
+ <source>
+ This is your ID.
+Copy and share it with your friends!
+ </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="806"/>
+ <source>Show ring ID QR code</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="857"/>
+ <source>Share ring ID button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="915"/>
+ <source>Double-click to copy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="956"/>
+ <source>Error while generating QR Code</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1184"/>
+ <location filename="../callwidget.ui" line="1434"/>
+ <source>best name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1208"/>
+ <source>best Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1734"/>
+ <source>Back to homepage button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1943"/>
+ <source>Add to contacts</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="202"/>
+ <source>Show invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="205"/>
+ <source>Invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="377"/>
+ <location filename="../callwidget.cpp" line="552"/>
+ <source>Find a new or existing contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1444"/>
+ <source>Wants to talk to you!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1517"/>
+ <source>Answer incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1589"/>
+ <source>Ignore incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1539"/>
+ <source>Answer</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1617"/>
+ <source>Ignore</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1280"/>
+ <source>Cancel outgoing call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1305"/>
+ <source>Cancel</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="332"/>
+ <source>Start video call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="343"/>
+ <source>Start audio call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="354"/>
+ <source>Clear conversation</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="361"/>
+ <source>Remove contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="373"/>
+ <source>Block contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="384"/>
+ <source>Copy number</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="561"/>
+ <source>Search your received invitations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>Contact me on Jami</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>My Id is : </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="847"/>
+ <source>%1</source>
+ <comment>%1 is the contact username</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="852"/>
+ <source>%1</source>
+ <comment>%1 is the contact unique identifier</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="675"/>
+ <source>Call incoming from %1</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>DeleteAccountDialog</name>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="35"/>
+ <source>Account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="58"/>
+ <source>Do you really want to delete the following account?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="153"/>
+ <source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="235"/>
+ <source>Permanently delete account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="241"/>
+ <source>Delete</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="278"/>
+ <source>Cancel account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="284"/>
+ <source>Cancel</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>DeviceItemWidget</name>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="105"/>
+ <source>Device Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="143"/>
+ <source>this device</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>InviteButtonsWidget</name>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="83"/>
+ <source>Accept</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="131"/>
+ <source>Refuse</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="179"/>
+ <source>Block</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>LinkDeviceDialog</name>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="62"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="117"/>
+ <source>Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="184"/>
+ <source>Ok</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="218"/>
+ <source>Cancel</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="279"/>
+ <source>Exporting account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="402"/>
+ <source>Your PIN is</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="432"/>
+ <source>PIN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="477"/>
+ <source>This pin and the account password should be entered in your device within 10 minutes.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="553"/>
+ <source>Close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="34"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="96"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="110"/>
+ <source>Something went wrong.
+Please try again later.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="83"/>
+ <source>Settings</source>
+ <translation>Ayarlar</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="94"/>
+ <source>Exit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="111"/>
+ <source>About</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="435"/>
+ <source>Jami</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>NameRegistrationDialog</name>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="35"/>
+ <source>Set Registered Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="163"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="244"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="250"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="256"/>
+ <source>Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="323"/>
+ <source>Register</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="357"/>
+ <source>Cancel</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="424"/>
+ <source>Registering Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="548"/>
+ <source>Something went wrong</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="618"/>
+ <source>Close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="82"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="85"/>
+ <source>Network error</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>NewWizardWidget</name>
+ <message>
+ <location filename="../newwizardwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="141"/>
+ <source>Welcome Label</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="147"/>
+ <source> Welcome to</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="185"/>
+ <source>Welcome Logo</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="239"/>
+ <source>Create Jami account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="245"/>
+ <source>Push button for Jami account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="251"/>
+ <source>Create a Jami account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="282"/>
+ <source>Link device button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="288"/>
+ <source>Push button for device linkage start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="291"/>
+ <source>Link this device to an account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="328"/>
+ <source>Create Jami SIP account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="334"/>
+ <source>Push button for Jami SIP account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="340"/>
+ <source>Create a SIP account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="405"/>
+ <source>Link this device to an existing account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="469"/>
+ <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">To link this device to another account, you first </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">need to obtain a PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> code. To generate the PIN code:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Account management setting</span><span style=" font-size:14px;"> of a previous device</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choose the </span><span style=" font-size:14px; font-weight:600;">Jami account</span><span style=" font-size:14px;"> you want to use</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Devices</span><span style=" font-size:14px;"> tab</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Select </span><span style=" font-size:14px; font-weight:600;">Add a device</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">You will get the necessary PIN to complete this form. The PIN is only valid for </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutes</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="531"/>
+ <source>Enter your pin:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="599"/>
+ <source>Or import a file:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="626"/>
+ <source>Link from exported account archive file</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="629"/>
+ <location filename="../newwizardwidget.cpp" line="83"/>
+ <location filename="../newwizardwidget.cpp" line="218"/>
+ <source>(None)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="705"/>
+ <source>Password:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="799"/>
+ <location filename="../newwizardwidget.ui" line="1586"/>
+ <source>Profile</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="953"/>
+ <location filename="../newwizardwidget.ui" line="1767"/>
+ <source>Profile name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1027"/>
+ <source>Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1136"/>
+ <source>Register your username.
+This will reserve the username so that only you can use it.
+Your friends will be able to call you with your usename
+instead of using your ID.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1142"/>
+ <source>Public username checkbox</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1145"/>
+ <source>Checkbox selecting if the user wants a public username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1148"/>
+ <source>Register public username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1367"/>
+ <source>Public username edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1373"/>
+ <source>Choose your username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1289"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1295"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1301"/>
+ <location filename="../newwizardwidget.ui" line="2213"/>
+ <source>Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1211"/>
+ <location filename="../newwizardwidget.ui" line="1217"/>
+ <source>Password confirmation text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1223"/>
+ <source>Confirm password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1814"/>
+ <source>SIP Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1973"/>
+ <source>SIP Server edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1979"/>
+ <source>Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2045"/>
+ <source>SIP proxy input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2051"/>
+ <source>SIP proxy text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2057"/>
+ <source>Proxy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2123"/>
+ <source>SIP username input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2129"/>
+ <source>SIP Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2135"/>
+ <source>Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2201"/>
+ <location filename="../newwizardwidget.ui" line="2207"/>
+ <source>SIP Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message utf8="true">
+ <location filename="../newwizardwidget.ui" line="2282"/>
+ <source>Generating your Jami account…</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2356"/>
+ <source>Previous page button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2362"/>
+ <source>push button to access previous page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2365"/>
+ <source>Previous</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2396"/>
+ <source>Cancel account create/link</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2402"/>
+ <source>push button to cancel account creation or linking</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2405"/>
+ <source>Back</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2442"/>
+ <source>Next page Button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2448"/>
+ <source>Push button to access next page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2451"/>
+ <source>Next</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="75"/>
+ <source>Open File</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="77"/>
+ <source>Jami archive files (*.gz); All files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="123"/>
+ <source>Your account needs to be migrated. Enter your password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="419"/>
+ <source>Migrating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="412"/>
+ <source>Importing account archive...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="404"/>
+ <source>Generating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="422"/>
+ <source>Generating your SIP account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="533"/>
+ <source>Error creating account</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PasswordDialog</name>
+ <message>
+ <location filename="../passworddialog.ui" line="32"/>
+ <source>Change Account Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="97"/>
+ <source>Enter Current Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="169"/>
+ <source>Enter New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="190"/>
+ <source>Confirm New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="247"/>
+ <source>Confirm</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="290"/>
+ <source>Cancel</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="143"/>
+ <source>Current Password Incorrect</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PhotoBoothDialog</name>
+ <message>
+ <location filename="../photoboothdialog.ui" line="14"/>
+ <source>Photobooth</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PhotoboothWidget</name>
+ <message>
+ <location filename="../photoboothwidget.ui" line="20"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.ui" line="120"/>
+ <source>Photobooth display</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="92"/>
+ <source>Choose File</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="94"/>
+ <source>Image Files (*.jpg *.jpeg *.png)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PrivateBridging</name>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Choose File</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../utils.cpp" line="183"/>
+ <source>No default mail client found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="43"/>
+ <location filename="../deviceitemwidget.cpp" line="85"/>
+ <source>Edit Device Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="44"/>
+ <source>Unlink Device From Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="80"/>
+ <source>Save new device name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.cpp" line="39"/>
+ <source>Add as contact</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>RingButton</name>
+ <message>
+ <location filename="../ringbutton.ui" line="140"/>
+ <source>Select folder</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <location filename="../settingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="141"/>
+ <source>Settings</source>
+ <translation>Ayarlar</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="229"/>
+ <source>Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="267"/>
+ <location filename="../settingswidget.ui" line="503"/>
+ <source>General</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="305"/>
+ <location filename="../settingswidget.ui" line="3416"/>
+ <source>Audio / Video</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="542"/>
+ <source>System</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="610"/>
+ <source>Enable desktop notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="653"/>
+ <source>Keep minimized on close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="678"/>
+ <source>Download folder</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="811"/>
+ <source>Save in</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="904"/>
+ <source>Always Recording</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="943"/>
+ <source>Updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1008"/>
+ <source>Check for updates automatically every</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1032"/>
+ <source>Interval between update checks in days selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1038"/>
+ <source> days</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1081"/>
+ <source>Check for updates now button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1084"/>
+ <source>Check for updates now</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3027"/>
+ <source>Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1418"/>
+ <location filename="../settingswidget.ui" line="2729"/>
+ <source>Enable</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="607"/>
+ <source>toggle enable notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="650"/>
+ <source>Toggle keep minimized on close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="764"/>
+ <source>Call Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1005"/>
+ <source>Toggle automatic updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1231"/>
+ <source>Jami Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1453"/>
+ <location filename="../settingswidget.ui" line="2761"/>
+ <source>Profile</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1567"/>
+ <location filename="../settingswidget.ui" line="2875"/>
+ <source>Identity</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1614"/>
+ <source>Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1673"/>
+ <source>Registered name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1721"/>
+ <source>Type here to register a username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1755"/>
+ <source>Register</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1827"/>
+ <source>Change Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1868"/>
+ <source>Export Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1909"/>
+ <location filename="../settingswidget.ui" line="3089"/>
+ <source>Delete Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1973"/>
+ <source>Linked Devices</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2078"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2142"/>
+ <source>Banned Contacts</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3788"/>
+ <source>Format</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3831"/>
+ <source>Video device framerate selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3967"/>
+ <source>Preview unavailable</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2359"/>
+ <location filename="../settingswidget.ui" line="3187"/>
+ <source>Advanced Account Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2554"/>
+ <source>SIP Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2925"/>
+ <source>Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2958"/>
+ <source>Hostname</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2991"/>
+ <source>Proxy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3461"/>
+ <source>Audio</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3511"/>
+ <source>Microphone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3551"/>
+ <source>Audio input device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3585"/>
+ <source>Output Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3625"/>
+ <source>Choose the output device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3682"/>
+ <source>Video</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3720"/>
+ <source>Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3766"/>
+ <source>Video device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="459"/>
+ <source>A registered name should not have any spaces and must be at least three letters long</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="466"/>
+ <source>This name is already taken</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="92"/>
+ <location filename="../settingswidget.cpp" line="110"/>
+ <source>Enter an alias</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="473"/>
+ <source>Register this name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="550"/>
+ <source>Remove Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="551"/>
+ <source>Enter this account's password to confirm the removal of this device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="558"/>
+ <source>Are you sure you wish to remove this device?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="589"/>
+ <source>Export Account Here</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="887"/>
+ <source>Select A Folder For Your Downloads</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="904"/>
+ <source>Select A Folder For Your Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>VideoOverlay</name>
+ <message>
+ <location filename="../videooverlay.ui" line="419"/>
+ <source>Call on Hold</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="89"/>
+ <source>Hold / Unhold</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="124"/>
+ <source>Chat</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="162"/>
+ <source>Mute Mic</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="244"/>
+ <source>Record call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="325"/>
+ <source>Name label</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="390"/>
+ <source>Time elapsed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="393"/>
+ <source>00:00</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="57"/>
+ <source>Hangup</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="203"/>
+ <source>Mute Video</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>VideoView</name>
+ <message>
+ <location filename="../videoview.cpp" line="271"/>
+ <source>Share entire screen</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="274"/>
+ <source>Share screen area</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="281"/>
+ <source>Share file</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+</TS>
\ No newline at end of file
diff --git a/translations/ring_client_windows_uk.ts b/translations/ring_client_windows_uk.ts
new file mode 100644
index 0000000..c083d3c
--- /dev/null
+++ b/translations/ring_client_windows_uk.ts
@@ -0,0 +1,1599 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="uk" version="2.0">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../aboutdialog.ui" line="435"/>
+ <location filename="../aboutdialog.ui" line="465"/>
+ <source>About</source>
+ <translation>Про программу</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="462"/>
+ <source>about button</source>
+ <translation>кнопка про програму</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="478"/>
+ <source>credits button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="481"/>
+ <source>Credits</source>
+ <translation>Подяки</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="547"/>
+ <source>Free as in Freedom</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="563"/>
+ <source>The Microsoft Windows client for Jami.
+Jami is a secured and distributed communication software.</source>
+ <translation>Клієнт Джамі для Microsoft Windows.
+Джамі — це безпечне розподілене програмне забезпечення для зв'язку.</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="32"/>
+ <source>version</source>
+ <translation>версія</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="39"/>
+ <source>Created by:</source>
+ <translation>Стоворено:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="73"/>
+ <source>Artwork by:</source>
+ <translation>Намальовано:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="77"/>
+ <source>Based on the SFLPhone project</source>
+ <translation>Базується на проекті SFLPhone</translation>
+ </message>
+</context>
+<context>
+ <name>AccountItemDelegate</name>
+ <message>
+ <location filename="../accountitemdelegate.cpp" line="91"/>
+ <source>Add Account</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSIPSettingsWidget</name>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Форма</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="55"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="102"/>
+ <source>Auto Answer Calls</source>
+ <translation>Приймати дзвінки автоматично</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="130"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="191"/>
+ <source>Connectivity</source>
+ <translation>З'єднання</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="281"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="293"/>
+ <source>Use STUN</source>
+ <translation>Використовувати STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="317"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="329"/>
+ <source>Use TURN</source>
+ <translation>Використовувати TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="359"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="391"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="423"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="464"/>
+ <source>Media</source>
+ <translation>Медіа</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="515"/>
+ <source>Enable Video</source>
+ <translation>Увімкнути відео</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="539"/>
+ <source>Video Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="692"/>
+ <source>Audio Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="142"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="151"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSettingsWidget</name>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Форма</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="61"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="108"/>
+ <source>Allow Calls From Untrusted Peers</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="133"/>
+ <source>Auto Answer Calls</source>
+ <translation>Приймати дзвінки автоматично</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="161"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="188"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="225"/>
+ <source>Name Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="275"/>
+ <source>Address</source>
+ <translation>Адреса</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="351"/>
+ <source>OpenDHT Configuration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="398"/>
+ <source>Enable Proxy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="454"/>
+ <source>Bootstrap</source>
+ <translation>Початкове завантаження</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="530"/>
+ <source>Security</source>
+ <translation>Безпека</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="571"/>
+ <source>Private Key Password</source>
+ <translation>Пароль від приватного ключа</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="583"/>
+ <source>User Certificate</source>
+ <translation>Сертифікат користувача</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="622"/>
+ <source>Private Key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="634"/>
+ <source>CA Certificate</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="766"/>
+ <source>Connectivity</source>
+ <translation>З'єднання</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="868"/>
+ <source>Use STUN</source>
+ <translation>Використовувати STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="856"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="892"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="904"/>
+ <source>Use TURN</source>
+ <translation>Використовувати TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="934"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="966"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="998"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1039"/>
+ <source>Media</source>
+ <translation>Медіа</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1090"/>
+ <source>Enable Video</source>
+ <translation>Увімкнути відео</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1267"/>
+ <source>Audio Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1114"/>
+ <source>Video Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="181"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AnimatedOverlay</name>
+ <message>
+ <location filename="../animatedoverlay.ui" line="14"/>
+ <source>Form</source>
+ <translation>Форма</translation>
+ </message>
+</context>
+<context>
+ <name>BannedItemWidget</name>
+ <message>
+ <location filename="../banneditemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Форма</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="80"/>
+ <source>name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="104"/>
+ <source>id</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>CallWidget</name>
+ <message>
+ <location filename="../callwidget.ui" line="184"/>
+ <source>Show conversations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="187"/>
+ <source>Conversations</source>
+ <translation>Групові чати</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="368"/>
+ <source>Search contact text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="653"/>
+ <source>Jami is free software for universal communication which respects the freedoms and privacy of its users.</source>
+ <translation>Джамі — це вільне програмне забезпечення для будь-якого зв'язку з повагою до свобод і приватності користувачів.</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="693"/>
+ <source>
+ This is your ID.
+Copy and share it with your friends!
+ </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="806"/>
+ <source>Show ring ID QR code</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="857"/>
+ <source>Share ring ID button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="915"/>
+ <source>Double-click to copy</source>
+ <translation>Клацніть двічі, щоб скопіювати</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="956"/>
+ <source>Error while generating QR Code</source>
+ <translation>Помилка при генерації QR-коду</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1184"/>
+ <location filename="../callwidget.ui" line="1434"/>
+ <source>best name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1208"/>
+ <source>best Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1734"/>
+ <source>Back to homepage button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1943"/>
+ <source>Add to contacts</source>
+ <translation>Додати контакти</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="202"/>
+ <source>Show invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="205"/>
+ <source>Invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="377"/>
+ <location filename="../callwidget.cpp" line="552"/>
+ <source>Find a new or existing contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1444"/>
+ <source>Wants to talk to you!</source>
+ <translation>Хоче поговорити з вами!</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1517"/>
+ <source>Answer incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1589"/>
+ <source>Ignore incoming call button</source>
+ <translation>Кнопка ігнорування вхідного дзвінка</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1539"/>
+ <source>Answer</source>
+ <translation>Відповідь</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1617"/>
+ <source>Ignore</source>
+ <translation>Ігнорувати</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1280"/>
+ <source>Cancel outgoing call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1305"/>
+ <source>Cancel</source>
+ <translation>Відміна</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="332"/>
+ <source>Start video call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="343"/>
+ <source>Start audio call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="354"/>
+ <source>Clear conversation</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="361"/>
+ <source>Remove contact</source>
+ <translation>Видалити контакт</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="373"/>
+ <source>Block contact</source>
+ <translation>Заблокувати контакт</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="384"/>
+ <source>Copy number</source>
+ <translation>Копіювати номер</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="561"/>
+ <source>Search your received invitations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>Contact me on Jami</source>
+ <translation>Зв'яжіться зі мною в Джамі</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>My Id is : </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="847"/>
+ <source>%1</source>
+ <comment>%1 is the contact username</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="852"/>
+ <source>%1</source>
+ <comment>%1 is the contact unique identifier</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="675"/>
+ <source>Call incoming from %1</source>
+ <translation>Вхідний виклик від %1</translation>
+ </message>
+</context>
+<context>
+ <name>DeleteAccountDialog</name>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="35"/>
+ <source>Account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="58"/>
+ <source>Do you really want to delete the following account?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="153"/>
+ <source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="235"/>
+ <source>Permanently delete account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="241"/>
+ <source>Delete</source>
+ <translation>Видалити</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="278"/>
+ <source>Cancel account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="284"/>
+ <source>Cancel</source>
+ <translation>Відміна</translation>
+ </message>
+</context>
+<context>
+ <name>DeviceItemWidget</name>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Форма</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="105"/>
+ <source>Device Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="143"/>
+ <source>this device</source>
+ <translation>цей пристрій</translation>
+ </message>
+</context>
+<context>
+ <name>InviteButtonsWidget</name>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="83"/>
+ <source>Accept</source>
+ <translation>Прийняти</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="131"/>
+ <source>Refuse</source>
+ <translation>Скидання</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="179"/>
+ <source>Block</source>
+ <translation>Заблокувати</translation>
+ </message>
+</context>
+<context>
+ <name>LinkDeviceDialog</name>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation>Діалог</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="62"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="117"/>
+ <source>Password</source>
+ <translation>Пароль</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="184"/>
+ <source>Ok</source>
+ <translation>Ок</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="218"/>
+ <source>Cancel</source>
+ <translation>Відміна</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="279"/>
+ <source>Exporting account</source>
+ <translation>Експортувати акаунт</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="402"/>
+ <source>Your PIN is</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="432"/>
+ <source>PIN</source>
+ <translation>PIN-код</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="477"/>
+ <source>This pin and the account password should be entered in your device within 10 minutes.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="553"/>
+ <source>Close</source>
+ <translation>Закрити</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="34"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="96"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="110"/>
+ <source>Something went wrong.
+Please try again later.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="83"/>
+ <source>Settings</source>
+ <translation>Налаштування</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="94"/>
+ <source>Exit</source>
+ <translation>Вийти</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="111"/>
+ <source>About</source>
+ <translation>Про программу</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="435"/>
+ <source>Jami</source>
+ <translation>Джамі</translation>
+ </message>
+</context>
+<context>
+ <name>NameRegistrationDialog</name>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="35"/>
+ <source>Set Registered Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="163"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="244"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="250"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="256"/>
+ <source>Password</source>
+ <translation>Пароль</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="323"/>
+ <source>Register</source>
+ <translation>Зареєструватися</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="357"/>
+ <source>Cancel</source>
+ <translation>Відміна</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="424"/>
+ <source>Registering Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="548"/>
+ <source>Something went wrong</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="618"/>
+ <source>Close</source>
+ <translation>Закрити</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="82"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="85"/>
+ <source>Network error</source>
+ <translation>Збій мережі</translation>
+ </message>
+</context>
+<context>
+ <name>NewWizardWidget</name>
+ <message>
+ <location filename="../newwizardwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Форма</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="141"/>
+ <source>Welcome Label</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="147"/>
+ <source> Welcome to</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="185"/>
+ <source>Welcome Logo</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="239"/>
+ <source>Create Jami account button</source>
+ <translation>Кнопка створення облікового запису Джамі</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="245"/>
+ <source>Push button for Jami account creation start trigger</source>
+ <translation>Натисніть кнопку, щоб розпочати створення облікового запису Джамі</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="251"/>
+ <source>Create a Jami account</source>
+ <translation>Створити обліковий запис Джамі</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="282"/>
+ <source>Link device button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="288"/>
+ <source>Push button for device linkage start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="291"/>
+ <source>Link this device to an account</source>
+ <translation>Прив'язати цей пристрій до облікового запису</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="328"/>
+ <source>Create Jami SIP account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="334"/>
+ <source>Push button for Jami SIP account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="340"/>
+ <source>Create a SIP account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="405"/>
+ <source>Link this device to an existing account</source>
+ <translation>Зв'язати цей пристрій з наявним обліковим записом</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="469"/>
+ <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">To link this device to another account, you first </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">need to obtain a PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> code. To generate the PIN code:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Account management setting</span><span style=" font-size:14px;"> of a previous device</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choose the </span><span style=" font-size:14px; font-weight:600;">Jami account</span><span style=" font-size:14px;"> you want to use</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Devices</span><span style=" font-size:14px;"> tab</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Select </span><span style=" font-size:14px; font-weight:600;">Add a device</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">You will get the necessary PIN to complete this form. The PIN is only valid for </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutes</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></source>
+ <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">Щоб прив'язати цей пристрій до іншого облікового запису, вам, спершу, </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">потрібно отримати PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">-код. Щоб отримати PIN-код:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Перейдіть до </span><span style=" font-size:14px; font-weight:600;">Налаштування управління обліковим записом</span><span style=" font-size:14px;"> на попередньому пристрої</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Виберіть </span><span style=" font-size:14px; font-weight:600;">обліковий запис Джамі</span><span style=" font-size:14px;"> який ви бажаєте</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Перейдіть до </span><span style=" font-size:14px; font-weight:600;">Пристрої</span><span style=" font-size:14px;"> вкладки</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Виберіть </span><span style=" font-size:14px; font-weight:600;">Додатки пристрій</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">Ви отримаєте PIN-код, який потрібно ввести тут. PIN-код дійсний лише протягом </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 хвилин</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="531"/>
+ <source>Enter your pin:</source>
+ <translation>Введіть ваш PIN-код:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="599"/>
+ <source>Or import a file:</source>
+ <translation>Або завантажте з файлу:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="626"/>
+ <source>Link from exported account archive file</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="629"/>
+ <location filename="../newwizardwidget.cpp" line="83"/>
+ <location filename="../newwizardwidget.cpp" line="218"/>
+ <source>(None)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="705"/>
+ <source>Password:</source>
+ <translation>Пароль:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="799"/>
+ <location filename="../newwizardwidget.ui" line="1586"/>
+ <source>Profile</source>
+ <translation>Профіль</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="953"/>
+ <location filename="../newwizardwidget.ui" line="1767"/>
+ <source>Profile name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1027"/>
+ <source>Account</source>
+ <translation>Аккаунт</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1136"/>
+ <source>Register your username.
+This will reserve the username so that only you can use it.
+Your friends will be able to call you with your usename
+instead of using your ID.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1142"/>
+ <source>Public username checkbox</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1145"/>
+ <source>Checkbox selecting if the user wants a public username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1148"/>
+ <source>Register public username</source>
+ <translation>Зареєструвати публічне ум'я користувача</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1367"/>
+ <source>Public username edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1373"/>
+ <source>Choose your username</source>
+ <translation>Оберіть ваше ім'я користувача</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1289"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1295"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1301"/>
+ <location filename="../newwizardwidget.ui" line="2213"/>
+ <source>Password</source>
+ <translation>Пароль</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1211"/>
+ <location filename="../newwizardwidget.ui" line="1217"/>
+ <source>Password confirmation text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1223"/>
+ <source>Confirm password</source>
+ <translation>Підтвердити пароль</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1814"/>
+ <source>SIP Account</source>
+ <translation>Аккаунт SIP</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1973"/>
+ <source>SIP Server edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1979"/>
+ <source>Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2045"/>
+ <source>SIP proxy input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2051"/>
+ <source>SIP proxy text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2057"/>
+ <source>Proxy</source>
+ <translation>Проксі</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2123"/>
+ <source>SIP username input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2129"/>
+ <source>SIP Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2135"/>
+ <source>Username</source>
+ <translation>Ім’я</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2201"/>
+ <location filename="../newwizardwidget.ui" line="2207"/>
+ <source>SIP Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message utf8="true">
+ <location filename="../newwizardwidget.ui" line="2282"/>
+ <source>Generating your Jami account…</source>
+ <translation>Створення вашого облікового запису Джамі…</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2356"/>
+ <source>Previous page button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2362"/>
+ <source>push button to access previous page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2365"/>
+ <source>Previous</source>
+ <translation>Попереднє</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2396"/>
+ <source>Cancel account create/link</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2402"/>
+ <source>push button to cancel account creation or linking</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2405"/>
+ <source>Back</source>
+ <translation>Назад</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2442"/>
+ <source>Next page Button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2448"/>
+ <source>Push button to access next page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2451"/>
+ <source>Next</source>
+ <translation>Далі</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="75"/>
+ <source>Open File</source>
+ <translation>Відкрити файл</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="77"/>
+ <source>Jami archive files (*.gz); All files (*)</source>
+ <translation>Файли архівів Джамі (*.gz); Усі файли (*)</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="123"/>
+ <source>Your account needs to be migrated. Enter your password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="419"/>
+ <source>Migrating your Jami account...</source>
+ <translation>Переведення вашого облікового запису Джамі…</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="412"/>
+ <source>Importing account archive...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="404"/>
+ <source>Generating your Jami account...</source>
+ <translation>Створення вашого облікового запису Джамі…</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="422"/>
+ <source>Generating your SIP account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="533"/>
+ <source>Error creating account</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PasswordDialog</name>
+ <message>
+ <location filename="../passworddialog.ui" line="32"/>
+ <source>Change Account Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="97"/>
+ <source>Enter Current Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="169"/>
+ <source>Enter New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="190"/>
+ <source>Confirm New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="247"/>
+ <source>Confirm</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="290"/>
+ <source>Cancel</source>
+ <translation>Відміна</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="143"/>
+ <source>Current Password Incorrect</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PhotoBoothDialog</name>
+ <message>
+ <location filename="../photoboothdialog.ui" line="14"/>
+ <source>Photobooth</source>
+ <translation>Стенд</translation>
+ </message>
+</context>
+<context>
+ <name>PhotoboothWidget</name>
+ <message>
+ <location filename="../photoboothwidget.ui" line="20"/>
+ <source>Form</source>
+ <translation>Форма</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.ui" line="120"/>
+ <source>Photobooth display</source>
+ <translation>Показ віконця світлини</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="92"/>
+ <source>Choose File</source>
+ <translation>Вибрати файл</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="94"/>
+ <source>Image Files (*.jpg *.jpeg *.png)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PrivateBridging</name>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Choose File</source>
+ <translation>Вибрати файл</translation>
+ </message>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Files (*)</source>
+ <translation>Файли (*)</translation>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../utils.cpp" line="183"/>
+ <source>No default mail client found</source>
+ <translation>Не знайдено жодного поштового клієнту</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="43"/>
+ <location filename="../deviceitemwidget.cpp" line="85"/>
+ <source>Edit Device Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="44"/>
+ <source>Unlink Device From Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="80"/>
+ <source>Save new device name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.cpp" line="39"/>
+ <source>Add as contact</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>RingButton</name>
+ <message>
+ <location filename="../ringbutton.ui" line="140"/>
+ <source>Select folder</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <location filename="../settingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>Форма</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="141"/>
+ <source>Settings</source>
+ <translation>Налаштування</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="229"/>
+ <source>Account</source>
+ <translation>Аккаунт</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="267"/>
+ <location filename="../settingswidget.ui" line="503"/>
+ <source>General</source>
+ <translation>Головні</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="305"/>
+ <location filename="../settingswidget.ui" line="3416"/>
+ <source>Audio / Video</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="542"/>
+ <source>System</source>
+ <translation>Система</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="610"/>
+ <source>Enable desktop notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="653"/>
+ <source>Keep minimized on close</source>
+ <translation>Згортати вікно при закриванні</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="678"/>
+ <source>Download folder</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="811"/>
+ <source>Save in</source>
+ <translation>Зберігти в</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="904"/>
+ <source>Always Recording</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="943"/>
+ <source>Updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1008"/>
+ <source>Check for updates automatically every</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1032"/>
+ <source>Interval between update checks in days selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1038"/>
+ <source> days</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1081"/>
+ <source>Check for updates now button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1084"/>
+ <source>Check for updates now</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3027"/>
+ <source>Password</source>
+ <translation>Пароль</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1418"/>
+ <location filename="../settingswidget.ui" line="2729"/>
+ <source>Enable</source>
+ <translation>Увімкнути</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="607"/>
+ <source>toggle enable notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="650"/>
+ <source>Toggle keep minimized on close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="764"/>
+ <source>Call Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1005"/>
+ <source>Toggle automatic updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1231"/>
+ <source>Jami Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1453"/>
+ <location filename="../settingswidget.ui" line="2761"/>
+ <source>Profile</source>
+ <translation>Профіль</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1567"/>
+ <location filename="../settingswidget.ui" line="2875"/>
+ <source>Identity</source>
+ <translation>Особа</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1614"/>
+ <source>Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1673"/>
+ <source>Registered name</source>
+ <translation>Зареєстроване ім'я</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1721"/>
+ <source>Type here to register a username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1755"/>
+ <source>Register</source>
+ <translation>Зареєструватися</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1827"/>
+ <source>Change Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1868"/>
+ <source>Export Account</source>
+ <translation>Вивантажити обліковий запис</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1909"/>
+ <location filename="../settingswidget.ui" line="3089"/>
+ <source>Delete Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1973"/>
+ <source>Linked Devices</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2078"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2142"/>
+ <source>Banned Contacts</source>
+ <translation>Заблоковані контакти</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3788"/>
+ <source>Format</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3831"/>
+ <source>Video device framerate selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3967"/>
+ <source>Preview unavailable</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2359"/>
+ <location filename="../settingswidget.ui" line="3187"/>
+ <source>Advanced Account Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2554"/>
+ <source>SIP Account</source>
+ <translation>Аккаунт SIP</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2925"/>
+ <source>Username</source>
+ <translation>Ім’я</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2958"/>
+ <source>Hostname</source>
+ <translation>Ім'я хоста</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2991"/>
+ <source>Proxy</source>
+ <translation>Проксі</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3461"/>
+ <source>Audio</source>
+ <translation>Звук</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3511"/>
+ <source>Microphone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3551"/>
+ <source>Audio input device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3585"/>
+ <source>Output Device</source>
+ <translation>Пристрій Виведення</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3625"/>
+ <source>Choose the output device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3682"/>
+ <source>Video</source>
+ <translation>Відео</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3720"/>
+ <source>Device</source>
+ <translation>Пристрій</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3766"/>
+ <source>Video device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="459"/>
+ <source>A registered name should not have any spaces and must be at least three letters long</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="466"/>
+ <source>This name is already taken</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="92"/>
+ <location filename="../settingswidget.cpp" line="110"/>
+ <source>Enter an alias</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="473"/>
+ <source>Register this name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="550"/>
+ <source>Remove Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="551"/>
+ <source>Enter this account's password to confirm the removal of this device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="558"/>
+ <source>Are you sure you wish to remove this device?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="589"/>
+ <source>Export Account Here</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="887"/>
+ <source>Select A Folder For Your Downloads</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="904"/>
+ <source>Select A Folder For Your Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>VideoOverlay</name>
+ <message>
+ <location filename="../videooverlay.ui" line="419"/>
+ <source>Call on Hold</source>
+ <translation>Виклик на утриманні</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="89"/>
+ <source>Hold / Unhold</source>
+ <translation>Утримати / Заняти з утримування</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="124"/>
+ <source>Chat</source>
+ <translation>Чат</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="162"/>
+ <source>Mute Mic</source>
+ <translation>Відключити мікрофон</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="244"/>
+ <source>Record call</source>
+ <translation>Запис дзвінка</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="325"/>
+ <source>Name label</source>
+ <translation>Назва етикетки</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="390"/>
+ <source>Time elapsed</source>
+ <translation>Витрачено часу</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="393"/>
+ <source>00:00</source>
+ <translation>00:00</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="57"/>
+ <source>Hangup</source>
+ <translation>Відновлення виклику</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="203"/>
+ <source>Mute Video</source>
+ <translation>Відключити відео</translation>
+ </message>
+</context>
+<context>
+ <name>VideoView</name>
+ <message>
+ <location filename="../videoview.cpp" line="271"/>
+ <source>Share entire screen</source>
+ <translation>Поділитися частиною екрану</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="274"/>
+ <source>Share screen area</source>
+ <translation>Поділитися екраном</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="281"/>
+ <source>Share file</source>
+ <translation>Відправити файл</translation>
+ </message>
+</context>
+</TS>
\ No newline at end of file
diff --git a/translations/ring_client_windows_zh.ts b/translations/ring_client_windows_zh.ts
new file mode 100644
index 0000000..7433229
--- /dev/null
+++ b/translations/ring_client_windows_zh.ts
@@ -0,0 +1,1589 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="zh" version="2.0">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../aboutdialog.ui" line="435"/>
+ <location filename="../aboutdialog.ui" line="465"/>
+ <source>About</source>
+ <translation>關於</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="462"/>
+ <source>about button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="478"/>
+ <source>credits button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="481"/>
+ <source>Credits</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="547"/>
+ <source>Free as in Freedom</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="563"/>
+ <source>The Microsoft Windows client for Jami.
+Jami is a secured and distributed communication software.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="32"/>
+ <source>version</source>
+ <translation>版本</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="39"/>
+ <source>Created by:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="73"/>
+ <source>Artwork by:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="77"/>
+ <source>Based on the SFLPhone project</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AccountItemDelegate</name>
+ <message>
+ <location filename="../accountitemdelegate.cpp" line="91"/>
+ <source>Add Account</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSIPSettingsWidget</name>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>從</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="55"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="102"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="130"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="191"/>
+ <source>Connectivity</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="281"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="293"/>
+ <source>Use STUN</source>
+ <translation>使用STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="317"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="329"/>
+ <source>Use TURN</source>
+ <translation>使用TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="359"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="391"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="423"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="464"/>
+ <source>Media</source>
+ <translation>媒體</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="515"/>
+ <source>Enable Video</source>
+ <translation>啟用視訊</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="539"/>
+ <source>Video Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="692"/>
+ <source>Audio Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="142"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="151"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AdvancedSettingsWidget</name>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>從</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="61"/>
+ <source>Call Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="108"/>
+ <source>Allow Calls From Untrusted Peers</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="133"/>
+ <source>Auto Answer Calls</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="161"/>
+ <source>Enable Custom Ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="188"/>
+ <source>Add a custom ringtone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="225"/>
+ <source>Name Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="275"/>
+ <source>Address</source>
+ <translation>地址</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="351"/>
+ <source>OpenDHT Configuration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="398"/>
+ <source>Enable Proxy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="454"/>
+ <source>Bootstrap</source>
+ <translation>引導</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="530"/>
+ <source>Security</source>
+ <translation>安全</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="571"/>
+ <source>Private Key Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="583"/>
+ <source>User Certificate</source>
+ <translation>使用者認證</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="622"/>
+ <source>Private Key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="634"/>
+ <source>CA Certificate</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="766"/>
+ <source>Connectivity</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="868"/>
+ <source>Use STUN</source>
+ <translation>使用STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="856"/>
+ <source>STUN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="892"/>
+ <source>Use UPnP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="904"/>
+ <source>Use TURN</source>
+ <translation>使用TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="934"/>
+ <source>TURN Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="966"/>
+ <source>TURN Username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="998"/>
+ <source>TURN Address</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1039"/>
+ <source>Media</source>
+ <translation>媒體</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1090"/>
+ <source>Enable Video</source>
+ <translation>啟用視訊</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1267"/>
+ <source>Audio Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1114"/>
+ <source>Video Codecs</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="181"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>AnimatedOverlay</name>
+ <message>
+ <location filename="../animatedoverlay.ui" line="14"/>
+ <source>Form</source>
+ <translation>從</translation>
+ </message>
+</context>
+<context>
+ <name>BannedItemWidget</name>
+ <message>
+ <location filename="../banneditemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>從</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="80"/>
+ <source>name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="104"/>
+ <source>id</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>CallWidget</name>
+ <message>
+ <location filename="../callwidget.ui" line="184"/>
+ <source>Show conversations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="187"/>
+ <source>Conversations</source>
+ <translation>對話</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="368"/>
+ <source>Search contact text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="653"/>
+ <source>Jami is free software for universal communication which respects the freedoms and privacy of its users.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="693"/>
+ <source>
+ This is your ID.
+Copy and share it with your friends!
+ </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="806"/>
+ <source>Show ring ID QR code</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="857"/>
+ <source>Share ring ID button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="915"/>
+ <source>Double-click to copy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="956"/>
+ <source>Error while generating QR Code</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1184"/>
+ <location filename="../callwidget.ui" line="1434"/>
+ <source>best name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1208"/>
+ <source>best Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1734"/>
+ <source>Back to homepage button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1943"/>
+ <source>Add to contacts</source>
+ <translation>加到聯絡人</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="202"/>
+ <source>Show invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="205"/>
+ <source>Invites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="377"/>
+ <location filename="../callwidget.cpp" line="552"/>
+ <source>Find a new or existing contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1444"/>
+ <source>Wants to talk to you!</source>
+ <translation>想要與你談天!</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1517"/>
+ <source>Answer incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1589"/>
+ <source>Ignore incoming call button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1539"/>
+ <source>Answer</source>
+ <translation>接通</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1617"/>
+ <source>Ignore</source>
+ <translation>忽略</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1280"/>
+ <source>Cancel outgoing call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1305"/>
+ <source>Cancel</source>
+ <translation>取消</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="332"/>
+ <source>Start video call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="343"/>
+ <source>Start audio call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="354"/>
+ <source>Clear conversation</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="361"/>
+ <source>Remove contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="373"/>
+ <source>Block contact</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="384"/>
+ <source>Copy number</source>
+ <translation>複製號碼</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="561"/>
+ <source>Search your received invitations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>Contact me on Jami</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>My Id is : </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="847"/>
+ <source>%1</source>
+ <comment>%1 is the contact username</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="852"/>
+ <source>%1</source>
+ <comment>%1 is the contact unique identifier</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="675"/>
+ <source>Call incoming from %1</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>DeleteAccountDialog</name>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="35"/>
+ <source>Account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="58"/>
+ <source>Do you really want to delete the following account?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="153"/>
+ <source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="235"/>
+ <source>Permanently delete account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="241"/>
+ <source>Delete</source>
+ <translation>刪除</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="278"/>
+ <source>Cancel account deletion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="284"/>
+ <source>Cancel</source>
+ <translation>取消</translation>
+ </message>
+</context>
+<context>
+ <name>DeviceItemWidget</name>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>從</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="105"/>
+ <source>Device Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="143"/>
+ <source>this device</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>InviteButtonsWidget</name>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="83"/>
+ <source>Accept</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="131"/>
+ <source>Refuse</source>
+ <translation>拒絕</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="179"/>
+ <source>Block</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>LinkDeviceDialog</name>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="62"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="117"/>
+ <source>Password</source>
+ <translation>密码</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="184"/>
+ <source>Ok</source>
+ <translation>確定</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="218"/>
+ <source>Cancel</source>
+ <translation>取消</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="279"/>
+ <source>Exporting account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="402"/>
+ <source>Your PIN is</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="432"/>
+ <source>PIN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="477"/>
+ <source>This pin and the account password should be entered in your device within 10 minutes.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="553"/>
+ <source>Close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="34"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="96"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="110"/>
+ <source>Something went wrong.
+Please try again later.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="83"/>
+ <source>Settings</source>
+ <translation>設定</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="94"/>
+ <source>Exit</source>
+ <translation>離開</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="111"/>
+ <source>About</source>
+ <translation>關於</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="435"/>
+ <source>Jami</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>NameRegistrationDialog</name>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="35"/>
+ <source>Set Registered Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="163"/>
+ <source>Enter your account password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="244"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="250"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="256"/>
+ <source>Password</source>
+ <translation>密码</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="323"/>
+ <source>Register</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="357"/>
+ <source>Cancel</source>
+ <translation>取消</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="424"/>
+ <source>Registering Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="548"/>
+ <source>Something went wrong</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="618"/>
+ <source>Close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="82"/>
+ <source>Incorrect password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="85"/>
+ <source>Network error</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>NewWizardWidget</name>
+ <message>
+ <location filename="../newwizardwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>從</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="141"/>
+ <source>Welcome Label</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="147"/>
+ <source> Welcome to</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="185"/>
+ <source>Welcome Logo</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="239"/>
+ <source>Create Jami account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="245"/>
+ <source>Push button for Jami account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="251"/>
+ <source>Create a Jami account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="282"/>
+ <source>Link device button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="288"/>
+ <source>Push button for device linkage start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="291"/>
+ <source>Link this device to an account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="328"/>
+ <source>Create Jami SIP account button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="334"/>
+ <source>Push button for Jami SIP account creation start trigger</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="340"/>
+ <source>Create a SIP account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="405"/>
+ <source>Link this device to an existing account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="469"/>
+ <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">To link this device to another account, you first </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">need to obtain a PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> code. To generate the PIN code:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Account management setting</span><span style=" font-size:14px;"> of a previous device</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choose the </span><span style=" font-size:14px; font-weight:600;">Jami account</span><span style=" font-size:14px;"> you want to use</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Devices</span><span style=" font-size:14px;"> tab</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Select </span><span style=" font-size:14px; font-weight:600;">Add a device</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">You will get the necessary PIN to complete this form. The PIN is only valid for </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutes</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="531"/>
+ <source>Enter your pin:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="599"/>
+ <source>Or import a file:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="626"/>
+ <source>Link from exported account archive file</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="629"/>
+ <location filename="../newwizardwidget.cpp" line="83"/>
+ <location filename="../newwizardwidget.cpp" line="218"/>
+ <source>(None)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="705"/>
+ <source>Password:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="799"/>
+ <location filename="../newwizardwidget.ui" line="1586"/>
+ <source>Profile</source>
+ <translation>個人檔案</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="953"/>
+ <location filename="../newwizardwidget.ui" line="1767"/>
+ <source>Profile name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1027"/>
+ <source>Account</source>
+ <translation>帳號</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1136"/>
+ <source>Register your username.
+This will reserve the username so that only you can use it.
+Your friends will be able to call you with your usename
+instead of using your ID.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1142"/>
+ <source>Public username checkbox</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1145"/>
+ <source>Checkbox selecting if the user wants a public username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1148"/>
+ <source>Register public username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1367"/>
+ <source>Public username edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1373"/>
+ <source>Choose your username</source>
+ <translation>選擇你的使用者名稱</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1289"/>
+ <source>Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1295"/>
+ <source>Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1301"/>
+ <location filename="../newwizardwidget.ui" line="2213"/>
+ <source>Password</source>
+ <translation>密码</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1211"/>
+ <location filename="../newwizardwidget.ui" line="1217"/>
+ <source>Password confirmation text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1223"/>
+ <source>Confirm password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1814"/>
+ <source>SIP Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1973"/>
+ <source>SIP Server edit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1979"/>
+ <source>Server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2045"/>
+ <source>SIP proxy input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2051"/>
+ <source>SIP proxy text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2057"/>
+ <source>Proxy</source>
+ <translation>代理</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2123"/>
+ <source>SIP username input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2129"/>
+ <source>SIP Password text entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2135"/>
+ <source>Username</source>
+ <translation>使用者名</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2201"/>
+ <location filename="../newwizardwidget.ui" line="2207"/>
+ <source>SIP Password text input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message utf8="true">
+ <location filename="../newwizardwidget.ui" line="2282"/>
+ <source>Generating your Jami account…</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2356"/>
+ <source>Previous page button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2362"/>
+ <source>push button to access previous page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2365"/>
+ <source>Previous</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2396"/>
+ <source>Cancel account create/link</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2402"/>
+ <source>push button to cancel account creation or linking</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2405"/>
+ <source>Back</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2442"/>
+ <source>Next page Button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2448"/>
+ <source>Push button to access next page of wizard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2451"/>
+ <source>Next</source>
+ <translation>下一步</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="75"/>
+ <source>Open File</source>
+ <translation>開啟檔案</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="77"/>
+ <source>Jami archive files (*.gz); All files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="123"/>
+ <source>Your account needs to be migrated. Enter your password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="419"/>
+ <source>Migrating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="412"/>
+ <source>Importing account archive...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="404"/>
+ <source>Generating your Jami account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="422"/>
+ <source>Generating your SIP account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="533"/>
+ <source>Error creating account</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PasswordDialog</name>
+ <message>
+ <location filename="../passworddialog.ui" line="32"/>
+ <source>Change Account Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="97"/>
+ <source>Enter Current Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="169"/>
+ <source>Enter New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="190"/>
+ <source>Confirm New Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="247"/>
+ <source>Confirm</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="290"/>
+ <source>Cancel</source>
+ <translation>取消</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="143"/>
+ <source>Current Password Incorrect</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PhotoBoothDialog</name>
+ <message>
+ <location filename="../photoboothdialog.ui" line="14"/>
+ <source>Photobooth</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PhotoboothWidget</name>
+ <message>
+ <location filename="../photoboothwidget.ui" line="20"/>
+ <source>Form</source>
+ <translation>從</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.ui" line="120"/>
+ <source>Photobooth display</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="92"/>
+ <source>Choose File</source>
+ <translation>選擇檔案</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="94"/>
+ <source>Image Files (*.jpg *.jpeg *.png)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PrivateBridging</name>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Choose File</source>
+ <translation>選擇檔案</translation>
+ </message>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Files (*)</source>
+ <translation>檔案(*)</translation>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../utils.cpp" line="183"/>
+ <source>No default mail client found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="43"/>
+ <location filename="../deviceitemwidget.cpp" line="85"/>
+ <source>Edit Device Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="44"/>
+ <source>Unlink Device From Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="80"/>
+ <source>Save new device name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.cpp" line="39"/>
+ <source>Add as contact</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>RingButton</name>
+ <message>
+ <location filename="../ringbutton.ui" line="140"/>
+ <source>Select folder</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <location filename="../settingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>從</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="141"/>
+ <source>Settings</source>
+ <translation>設定</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="229"/>
+ <source>Account</source>
+ <translation>帳號</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="267"/>
+ <location filename="../settingswidget.ui" line="503"/>
+ <source>General</source>
+ <translation>通用</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="305"/>
+ <location filename="../settingswidget.ui" line="3416"/>
+ <source>Audio / Video</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="542"/>
+ <source>System</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="610"/>
+ <source>Enable desktop notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="653"/>
+ <source>Keep minimized on close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="678"/>
+ <source>Download folder</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="811"/>
+ <source>Save in</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="904"/>
+ <source>Always Recording</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="943"/>
+ <source>Updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1008"/>
+ <source>Check for updates automatically every</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1032"/>
+ <source>Interval between update checks in days selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1038"/>
+ <source> days</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1081"/>
+ <source>Check for updates now button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1084"/>
+ <source>Check for updates now</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3027"/>
+ <source>Password</source>
+ <translation>密码</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1418"/>
+ <location filename="../settingswidget.ui" line="2729"/>
+ <source>Enable</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="607"/>
+ <source>toggle enable notifications</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="650"/>
+ <source>Toggle keep minimized on close</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="764"/>
+ <source>Call Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1005"/>
+ <source>Toggle automatic updates</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1231"/>
+ <source>Jami Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1453"/>
+ <location filename="../settingswidget.ui" line="2761"/>
+ <source>Profile</source>
+ <translation>個人檔案</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1567"/>
+ <location filename="../settingswidget.ui" line="2875"/>
+ <source>Identity</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1614"/>
+ <source>Id</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1673"/>
+ <source>Registered name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1721"/>
+ <source>Type here to register a username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1755"/>
+ <source>Register</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1827"/>
+ <source>Change Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1868"/>
+ <source>Export Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1909"/>
+ <location filename="../settingswidget.ui" line="3089"/>
+ <source>Delete Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1973"/>
+ <source>Linked Devices</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2078"/>
+ <source>Link Another Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2142"/>
+ <source>Banned Contacts</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3788"/>
+ <source>Format</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3831"/>
+ <source>Video device framerate selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3967"/>
+ <source>Preview unavailable</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2359"/>
+ <location filename="../settingswidget.ui" line="3187"/>
+ <source>Advanced Account Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2554"/>
+ <source>SIP Account</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2925"/>
+ <source>Username</source>
+ <translation>使用者名</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2958"/>
+ <source>Hostname</source>
+ <translation>主機名稱</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2991"/>
+ <source>Proxy</source>
+ <translation>代理</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3461"/>
+ <source>Audio</source>
+ <translation>語音</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3511"/>
+ <source>Microphone</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3551"/>
+ <source>Audio input device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3585"/>
+ <source>Output Device</source>
+ <translation>輸出裝置</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3625"/>
+ <source>Choose the output device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3682"/>
+ <source>Video</source>
+ <translation>影像</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3720"/>
+ <source>Device</source>
+ <translation>裝置</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3766"/>
+ <source>Video device selector</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="459"/>
+ <source>A registered name should not have any spaces and must be at least three letters long</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="466"/>
+ <source>This name is already taken</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="92"/>
+ <location filename="../settingswidget.cpp" line="110"/>
+ <source>Enter an alias</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="473"/>
+ <source>Register this name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="550"/>
+ <source>Remove Device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="551"/>
+ <source>Enter this account's password to confirm the removal of this device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="558"/>
+ <source>Are you sure you wish to remove this device?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="589"/>
+ <source>Export Account Here</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="887"/>
+ <source>Select A Folder For Your Downloads</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="904"/>
+ <source>Select A Folder For Your Recordings</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>VideoOverlay</name>
+ <message>
+ <location filename="../videooverlay.ui" line="419"/>
+ <source>Call on Hold</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="89"/>
+ <source>Hold / Unhold</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="124"/>
+ <source>Chat</source>
+ <translation>聊天</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="162"/>
+ <source>Mute Mic</source>
+ <translation>麥克風靜音</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="244"/>
+ <source>Record call</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="325"/>
+ <source>Name label</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="390"/>
+ <source>Time elapsed</source>
+ <translation>經過時間</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="393"/>
+ <source>00:00</source>
+ <translation>00:00</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="57"/>
+ <source>Hangup</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="203"/>
+ <source>Mute Video</source>
+ <translation>視訊靜音</translation>
+ </message>
+</context>
+<context>
+ <name>VideoView</name>
+ <message>
+ <location filename="../videoview.cpp" line="271"/>
+ <source>Share entire screen</source>
+ <translation>分享整個螢幕</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="274"/>
+ <source>Share screen area</source>
+ <translation>分享部分螢幕</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="281"/>
+ <source>Share file</source>
+ <translation>分享檔案</translation>
+ </message>
+</context>
+</TS>
\ No newline at end of file
diff --git a/translations/ring_client_windows_zh_CN.ts b/translations/ring_client_windows_zh_CN.ts
new file mode 100644
index 0000000..de17cad
--- /dev/null
+++ b/translations/ring_client_windows_zh_CN.ts
@@ -0,0 +1,1606 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="zh_CN" version="2.0">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../aboutdialog.ui" line="435"/>
+ <location filename="../aboutdialog.ui" line="465"/>
+ <source>About</source>
+ <translation>关于</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="462"/>
+ <source>about button</source>
+ <translation>关于按钮</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="478"/>
+ <source>credits button</source>
+ <translation>致谢按钮</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="481"/>
+ <source>Credits</source>
+ <translation>致谢</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="547"/>
+ <source>Free as in Freedom</source>
+ <translation>"Free as in Freedom"</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="563"/>
+ <source>The Microsoft Windows client for Jami.
+Jami is a secured and distributed communication software.</source>
+ <translation>Jami 的 Microsoft Windows 客户端。
+Jami 是一款加密、分布式的通讯软件。</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="32"/>
+ <source>version</source>
+ <translation>版本</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="39"/>
+ <source>Created by:</source>
+ <translation>开发者:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="73"/>
+ <source>Artwork by:</source>
+ <translation>美工设计:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="77"/>
+ <source>Based on the SFLPhone project</source>
+ <translation>基于 SFLPhone 项目</translation>
+ </message>
+</context>
+<context>
+ <name>AccountItemDelegate</name>
+ <message>
+ <location filename="../accountitemdelegate.cpp" line="91"/>
+ <source>Add Account</source>
+ <translation>添加账户</translation>
+ </message>
+</context>
+<context>
+ <name>AdvancedSIPSettingsWidget</name>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>表单</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="55"/>
+ <source>Call Settings</source>
+ <translation>呼叫设置</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="102"/>
+ <source>Auto Answer Calls</source>
+ <translation>自动接听来电</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="130"/>
+ <source>Enable Custom Ringtone</source>
+ <translation> 启用自定义铃声</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="191"/>
+ <source>Connectivity</source>
+ <translation>连接性</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="281"/>
+ <source>STUN Address</source>
+ <translation>STUN地址</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="293"/>
+ <source>Use STUN</source>
+ <translation>使用STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="317"/>
+ <source>Use UPnP</source>
+ <translation>使用UPnP</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="329"/>
+ <source>Use TURN</source>
+ <translation>使用TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="359"/>
+ <source>TURN Password</source>
+ <translation>TURN密码</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="391"/>
+ <source>TURN Username</source>
+ <translation>TURN用户名</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="423"/>
+ <source>TURN Address</source>
+ <translation>TURN地址</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="464"/>
+ <source>Media</source>
+ <translation>媒体</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="515"/>
+ <source>Enable Video</source>
+ <translation>启用视频</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="539"/>
+ <source>Video Codecs</source>
+ <translation>视频编码</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="692"/>
+ <source>Audio Codecs</source>
+ <translation>音频编码</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="142"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation>音频文件(*.wav *.ogg *.opus *.mp3 *aiff *wma)</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="151"/>
+ <source>Add a custom ringtone</source>
+ <translation>添加自定义铃声</translation>
+ </message>
+</context>
+<context>
+ <name>AdvancedSettingsWidget</name>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>表单</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="61"/>
+ <source>Call Settings</source>
+ <translation>呼叫设置</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="108"/>
+ <source>Allow Calls From Untrusted Peers</source>
+ <translation>允许未被信任的用户来电</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="133"/>
+ <source>Auto Answer Calls</source>
+ <translation>自动接听来电</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="161"/>
+ <source>Enable Custom Ringtone</source>
+ <translation> 启用自定义铃声</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="188"/>
+ <source>Add a custom ringtone</source>
+ <translation>添加自定义铃声</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="225"/>
+ <source>Name Server</source>
+ <translation>名称服务器</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="275"/>
+ <source>Address</source>
+ <translation>地址:</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="351"/>
+ <source>OpenDHT Configuration</source>
+ <translation>OpenDHT配置</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="398"/>
+ <source>Enable Proxy</source>
+ <translation>启用代理</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="454"/>
+ <source>Bootstrap</source>
+ <translation>初始服务器</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="530"/>
+ <source>Security</source>
+ <translation>安全</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="571"/>
+ <source>Private Key Password</source>
+ <translation>私钥密码</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="583"/>
+ <source>User Certificate</source>
+ <translation>用户证书</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="622"/>
+ <source>Private Key</source>
+ <translation>私钥</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="634"/>
+ <source>CA Certificate</source>
+ <translation>颁发机构证书</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="766"/>
+ <source>Connectivity</source>
+ <translation>连接性</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="868"/>
+ <source>Use STUN</source>
+ <translation>使用STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="856"/>
+ <source>STUN Address</source>
+ <translation>STUN地址</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="892"/>
+ <source>Use UPnP</source>
+ <translation>使用UPnP</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="904"/>
+ <source>Use TURN</source>
+ <translation>使用TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="934"/>
+ <source>TURN Password</source>
+ <translation>TURN密码</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="966"/>
+ <source>TURN Username</source>
+ <translation>TURN用户名</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="998"/>
+ <source>TURN Address</source>
+ <translation>TURN地址</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1039"/>
+ <source>Media</source>
+ <translation>媒体</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1090"/>
+ <source>Enable Video</source>
+ <translation>启用视频</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1267"/>
+ <source>Audio Codecs</source>
+ <translation>音频编码</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1114"/>
+ <source>Video Codecs</source>
+ <translation>视频编码</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="181"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation>音频文件(*.wav *.ogg *.opus *.mp3 *aiff *wma)</translation>
+ </message>
+</context>
+<context>
+ <name>AnimatedOverlay</name>
+ <message>
+ <location filename="../animatedoverlay.ui" line="14"/>
+ <source>Form</source>
+ <translation>表单</translation>
+ </message>
+</context>
+<context>
+ <name>BannedItemWidget</name>
+ <message>
+ <location filename="../banneditemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>表单</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="80"/>
+ <source>name</source>
+ <translation>姓名</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="104"/>
+ <source>id</source>
+ <translation>id</translation>
+ </message>
+</context>
+<context>
+ <name>CallWidget</name>
+ <message>
+ <location filename="../callwidget.ui" line="184"/>
+ <source>Show conversations</source>
+ <translation>显示会话</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="187"/>
+ <source>Conversations</source>
+ <translation>会话</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="368"/>
+ <source>Search contact text input</source>
+ <translation>搜索联系人文本输入 </translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="653"/>
+ <source>Jami is free software for universal communication which respects the freedoms and privacy of its users.</source>
+ <translation>Jami是一种自由通信软件,它尊重用户的自由和隐私。</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="693"/>
+ <source>
+ This is your ID.
+Copy and share it with your friends!
+ </source>
+ <translation>
+这是您的ID。
+复制并发送给您的朋友!
+</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="806"/>
+ <source>Show ring ID QR code</source>
+ <translation>显示RingID二维码</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="857"/>
+ <source>Share ring ID button</source>
+ <translation>分享ring ID按钮</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="915"/>
+ <source>Double-click to copy</source>
+ <translation>双击复制</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="956"/>
+ <source>Error while generating QR Code</source>
+ <translation>创建二维码时产生错误</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1184"/>
+ <location filename="../callwidget.ui" line="1434"/>
+ <source>best name</source>
+ <translation>最佳名字</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1208"/>
+ <source>best Id</source>
+ <translation>最佳Id</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1734"/>
+ <source>Back to homepage button</source>
+ <translation>返回主页按钮</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1943"/>
+ <source>Add to contacts</source>
+ <translation>加入通讯录</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="202"/>
+ <source>Show invites</source>
+ <translation>显示邀请</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="205"/>
+ <source>Invites</source>
+ <translation>邀请</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="377"/>
+ <location filename="../callwidget.cpp" line="552"/>
+ <source>Find a new or existing contact</source>
+ <translation>查找新的或现有的联系人 </translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1444"/>
+ <source>Wants to talk to you!</source>
+ <translation>想要与您通信!</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1517"/>
+ <source>Answer incoming call button</source>
+ <translation>接听来电按钮 </translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1589"/>
+ <source>Ignore incoming call button</source>
+ <translation>忽略来电按钮 </translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1539"/>
+ <source>Answer</source>
+ <translation>应答</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1617"/>
+ <source>Ignore</source>
+ <translation>忽略</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1280"/>
+ <source>Cancel outgoing call</source>
+ <translation>取消拨出的电话</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1305"/>
+ <source>Cancel</source>
+ <translation>取消</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="332"/>
+ <source>Start video call</source>
+ <translation>发起视频通话</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="343"/>
+ <source>Start audio call</source>
+ <translation>发起语音通话</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="354"/>
+ <source>Clear conversation</source>
+ <translation>清除会话</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="361"/>
+ <source>Remove contact</source>
+ <translation>删除联系人</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="373"/>
+ <source>Block contact</source>
+ <translation>屏蔽联系人</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="384"/>
+ <source>Copy number</source>
+ <translation>复制号码</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="561"/>
+ <source>Search your received invitations</source>
+ <translation>搜索收到的邀请 </translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>Contact me on Jami</source>
+ <translation>在Jami上联系我</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>My Id is : </source>
+ <translation>我的ID是:</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="847"/>
+ <source>%1</source>
+ <comment>%1 is the contact username</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="852"/>
+ <source>%1</source>
+ <comment>%1 is the contact unique identifier</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="675"/>
+ <source>Call incoming from %1</source>
+ <translation>来电:%1</translation>
+ </message>
+</context>
+<context>
+ <name>DeleteAccountDialog</name>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="35"/>
+ <source>Account deletion</source>
+ <translation>删除账户</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="58"/>
+ <source>Do you really want to delete the following account?</source>
+ <translation>确定删除以下账户吗?</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="153"/>
+ <source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
+ <translation>如果此账户尚未导出或添加到其他设备,它将不可挽回地丢失。</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="235"/>
+ <source>Permanently delete account</source>
+ <translation>永久删除账户 </translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="241"/>
+ <source>Delete</source>
+ <translation>删除</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="278"/>
+ <source>Cancel account deletion</source>
+ <translation>取消账户删除 </translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="284"/>
+ <source>Cancel</source>
+ <translation>取消</translation>
+ </message>
+</context>
+<context>
+ <name>DeviceItemWidget</name>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>表单</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="105"/>
+ <source>Device Id</source>
+ <translation>设备ID</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="143"/>
+ <source>this device</source>
+ <translation>该设备</translation>
+ </message>
+</context>
+<context>
+ <name>InviteButtonsWidget</name>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="83"/>
+ <source>Accept</source>
+ <translation>接听</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="131"/>
+ <source>Refuse</source>
+ <translation>拒接</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="179"/>
+ <source>Block</source>
+ <translation>屏蔽</translation>
+ </message>
+</context>
+<context>
+ <name>LinkDeviceDialog</name>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation>对话框</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="62"/>
+ <source>Enter your account password</source>
+ <translation>输入您的账户密码 </translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="117"/>
+ <source>Password</source>
+ <translation>密码</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="184"/>
+ <source>Ok</source>
+ <translation>确定</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="218"/>
+ <source>Cancel</source>
+ <translation>取消</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="279"/>
+ <source>Exporting account</source>
+ <translation>正导出账户</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="402"/>
+ <source>Your PIN is</source>
+ <translation>您的PIN码是 </translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="432"/>
+ <source>PIN</source>
+ <translation>PIN</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="477"/>
+ <source>This pin and the account password should be entered in your device within 10 minutes.</source>
+ <translation>您需在 10 分钟内在您的设备上输入此 PIN 码和账户密码。</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="553"/>
+ <source>Close</source>
+ <translation>关闭</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="34"/>
+ <source>Link Another Device</source>
+ <translation>连结其他设备</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="96"/>
+ <source>Incorrect password</source>
+ <translation>密码错误</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="110"/>
+ <source>Something went wrong.
+Please try again later.</source>
+ <translation>有些不对劲。
+请稍后再试 </translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="83"/>
+ <source>Settings</source>
+ <translation>设置</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="94"/>
+ <source>Exit</source>
+ <translation>退出</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="111"/>
+ <source>About</source>
+ <translation>关于</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="435"/>
+ <source>Jami</source>
+ <translation>Jami</translation>
+ </message>
+</context>
+<context>
+ <name>NameRegistrationDialog</name>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="35"/>
+ <source>Set Registered Name</source>
+ <translation>设置注册名称 </translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="163"/>
+ <source>Enter your account password</source>
+ <translation>输入您的账户密码 </translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="244"/>
+ <source>Password text input</source>
+ <translation>密码文本输入</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="250"/>
+ <source>Password text entry</source>
+ <translation>密码文本条目</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="256"/>
+ <source>Password</source>
+ <translation>密码</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="323"/>
+ <source>Register</source>
+ <translation>注册</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="357"/>
+ <source>Cancel</source>
+ <translation>取消</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="424"/>
+ <source>Registering Name</source>
+ <translation>正在注册名称</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="548"/>
+ <source>Something went wrong</source>
+ <translation>有些不对劲 </translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="618"/>
+ <source>Close</source>
+ <translation>关闭</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="82"/>
+ <source>Incorrect password</source>
+ <translation>密码错误</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="85"/>
+ <source>Network error</source>
+ <translation>网络错误</translation>
+ </message>
+</context>
+<context>
+ <name>NewWizardWidget</name>
+ <message>
+ <location filename="../newwizardwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>表单</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="141"/>
+ <source>Welcome Label</source>
+ <translation>欢迎标签 </translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="147"/>
+ <source> Welcome to</source>
+ <translation>欢迎来到</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="185"/>
+ <source>Welcome Logo</source>
+ <translation>欢迎图标</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="239"/>
+ <source>Create Jami account button</source>
+ <translation>创建Jami账户按钮</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="245"/>
+ <source>Push button for Jami account creation start trigger</source>
+ <translation>按下Jami账户创建按钮开始触发</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="251"/>
+ <source>Create a Jami account</source>
+ <translation>创建一个Jami账户</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="282"/>
+ <source>Link device button</source>
+ <translation>连结设备按钮</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="288"/>
+ <source>Push button for device linkage start trigger</source>
+ <translation>按下设备连结按钮开始触发</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="291"/>
+ <source>Link this device to an account</source>
+ <translation>将此设备与一个账户进行连接</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="328"/>
+ <source>Create Jami SIP account button</source>
+ <translation>创建 Jami SIP 账户按钮 </translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="334"/>
+ <source>Push button for Jami SIP account creation start trigger</source>
+ <translation>按下 Jami SIP 账户创建按钮开始触发</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="340"/>
+ <source>Create a SIP account</source>
+ <translation>创建 SIP 账户</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="405"/>
+ <source>Link this device to an existing account</source>
+ <translation>将此设备与已有账户进行连接</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="469"/>
+ <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">To link this device to another account, you first </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">need to obtain a PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> code. To generate the PIN code:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Account management setting</span><span style=" font-size:14px;"> of a previous device</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choose the </span><span style=" font-size:14px; font-weight:600;">Jami account</span><span style=" font-size:14px;"> you want to use</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Devices</span><span style=" font-size:14px;"> tab</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Select </span><span style=" font-size:14px; font-weight:600;">Add a device</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">You will get the necessary PIN to complete this form. The PIN is only valid for </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutes</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></source>
+ <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">要将此设备关联到账户,首先您 </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;"> 需要获取 PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> 码。 要生成 PIN 码:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">需前往 </span><span style=" font-size:14px; font-weight:600;">先前设备的</span><span style=" font-size:14px;"> 账户管理设置中</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">选择 </span><span style=" font-size:14px; font-weight:600;">您要使用的</span><span style=" font-size:14px;"> Jami 账户</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">到 </span><span style=" font-size:14px; font-weight:600;">设备</span><span style=" font-size:14px;"> 选项卡下</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">选择 </span><span style=" font-size:14px; font-weight:600;">添加设备</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">您会得到填写本栏所需的 PIN 码。PIN 码有效期为 </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 分钟</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">。</span></p></body></html></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="531"/>
+ <source>Enter your pin:</source>
+ <translation>输入您的PIN:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="599"/>
+ <source>Or import a file:</source>
+ <translation>或导入一个文件:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="626"/>
+ <source>Link from exported account archive file</source>
+ <translation>用导出账户的存档文件进行设备连结</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="629"/>
+ <location filename="../newwizardwidget.cpp" line="83"/>
+ <location filename="../newwizardwidget.cpp" line="218"/>
+ <source>(None)</source>
+ <translation>(无)</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="705"/>
+ <source>Password:</source>
+ <translation>密码:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="799"/>
+ <location filename="../newwizardwidget.ui" line="1586"/>
+ <source>Profile</source>
+ <translation>账户资料</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="953"/>
+ <location filename="../newwizardwidget.ui" line="1767"/>
+ <source>Profile name</source>
+ <translation>个人资料名称</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1027"/>
+ <source>Account</source>
+ <translation>账户</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1136"/>
+ <source>Register your username.
+This will reserve the username so that only you can use it.
+Your friends will be able to call you with your usename
+instead of using your ID.</source>
+ <translation>用你的用户名注册
+这将保留用户名,以便只有您可以使用它
+您的朋友可以使用您的用户名给您打电话
+而非用你的ID</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1142"/>
+ <source>Public username checkbox</source>
+ <translation>公开用户名的复选框 </translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1145"/>
+ <source>Checkbox selecting if the user wants a public username</source>
+ <translation>如果用户想要公开的用户名就勾选这个复选框</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1148"/>
+ <source>Register public username</source>
+ <translation>注册公共用户名</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1367"/>
+ <source>Public username edit</source>
+ <translation>编辑公开用户名</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1373"/>
+ <source>Choose your username</source>
+ <translation>设置您的用户名</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1289"/>
+ <source>Password text input</source>
+ <translation>密码文本输入 </translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1295"/>
+ <source>Password text entry</source>
+ <translation>密码文本条目 </translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1301"/>
+ <location filename="../newwizardwidget.ui" line="2213"/>
+ <source>Password</source>
+ <translation>密码</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1211"/>
+ <location filename="../newwizardwidget.ui" line="1217"/>
+ <source>Password confirmation text input</source>
+ <translation>确认密码文本输入</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1223"/>
+ <source>Confirm password</source>
+ <translation>确认密码</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1814"/>
+ <source>SIP Account</source>
+ <translation>SIP 账户</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1973"/>
+ <source>SIP Server edit</source>
+ <translation>编辑SIP服务器</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1979"/>
+ <source>Server</source>
+ <translation>服务器</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2045"/>
+ <source>SIP proxy input</source>
+ <translation>输入SIP代理</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2051"/>
+ <source>SIP proxy text entry</source>
+ <translation>SIP代理文本条目</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2057"/>
+ <source>Proxy</source>
+ <translation>代理</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2123"/>
+ <source>SIP username input</source>
+ <translation>SIP用户名输入 </translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2129"/>
+ <source>SIP Password text entry</source>
+ <translation>SIP密码文本条目</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2135"/>
+ <source>Username</source>
+ <translation>用户名</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2201"/>
+ <location filename="../newwizardwidget.ui" line="2207"/>
+ <source>SIP Password text input</source>
+ <translation>SIP密码文本输入</translation>
+ </message>
+ <message utf8="true">
+ <location filename="../newwizardwidget.ui" line="2282"/>
+ <source>Generating your Jami account…</source>
+ <translation>正在生成您的Jami账户…</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2356"/>
+ <source>Previous page button</source>
+ <translation>上一页按钮 </translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2362"/>
+ <source>push button to access previous page of wizard</source>
+ <translation>按按钮访问向导的上一页</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2365"/>
+ <source>Previous</source>
+ <translation>上一步</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2396"/>
+ <source>Cancel account create/link</source>
+ <translation>取消账户创建/连结</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2402"/>
+ <source>push button to cancel account creation or linking</source>
+ <translation>按按钮取消账户创建或连结</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2405"/>
+ <source>Back</source>
+ <translation>上一步</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2442"/>
+ <source>Next page Button</source>
+ <translation>下一页按钮 </translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2448"/>
+ <source>Push button to access next page of wizard</source>
+ <translation>按按钮来访问向导的下一页</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2451"/>
+ <source>Next</source>
+ <translation>下一步</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="75"/>
+ <source>Open File</source>
+ <translation>打开文件</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="77"/>
+ <source>Jami archive files (*.gz); All files (*)</source>
+ <translation>Jami档案文件 (*.gz); 所有文件 (*)</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="123"/>
+ <source>Your account needs to be migrated. Enter your password.</source>
+ <translation>您的Ring账户可以被更新。\n请输入您的密码。</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="419"/>
+ <source>Migrating your Jami account...</source>
+ <translation>正在迁移您的Jami账户…</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="412"/>
+ <source>Importing account archive...</source>
+ <translation>正导入账户存档...</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="404"/>
+ <source>Generating your Jami account...</source>
+ <translation>正在生成您的Jami账户…</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="422"/>
+ <source>Generating your SIP account...</source>
+ <translation>正在生成您的SIP账户…</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="533"/>
+ <source>Error creating account</source>
+ <translation>创建账户时发生错误</translation>
+ </message>
+</context>
+<context>
+ <name>PasswordDialog</name>
+ <message>
+ <location filename="../passworddialog.ui" line="32"/>
+ <source>Change Account Password</source>
+ <translation>更改账户密码</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="97"/>
+ <source>Enter Current Password</source>
+ <translation>输入当前密码</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="169"/>
+ <source>Enter New Password</source>
+ <translation>输入新密码</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="190"/>
+ <source>Confirm New Password</source>
+ <translation>确认新密码</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="247"/>
+ <source>Confirm</source>
+ <translation>确认</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="290"/>
+ <source>Cancel</source>
+ <translation>取消</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="143"/>
+ <source>Current Password Incorrect</source>
+ <translation>当前密码错误</translation>
+ </message>
+</context>
+<context>
+ <name>PhotoBoothDialog</name>
+ <message>
+ <location filename="../photoboothdialog.ui" line="14"/>
+ <source>Photobooth</source>
+ <translation>Photobooth</translation>
+ </message>
+</context>
+<context>
+ <name>PhotoboothWidget</name>
+ <message>
+ <location filename="../photoboothwidget.ui" line="20"/>
+ <source>Form</source>
+ <translation>表单</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.ui" line="120"/>
+ <source>Photobooth display</source>
+ <translation>照片展台展示</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="92"/>
+ <source>Choose File</source>
+ <translation>选择文件</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="94"/>
+ <source>Image Files (*.jpg *.jpeg *.png)</source>
+ <translation>图像文件(* .jpg * .jpeg * .png) </translation>
+ </message>
+</context>
+<context>
+ <name>PrivateBridging</name>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Choose File</source>
+ <translation>选择文件</translation>
+ </message>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Files (*)</source>
+ <translation>文件 (*)</translation>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../utils.cpp" line="183"/>
+ <source>No default mail client found</source>
+ <translation>未找到默认邮件客户端</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="43"/>
+ <location filename="../deviceitemwidget.cpp" line="85"/>
+ <source>Edit Device Name</source>
+ <translation>编辑设备名</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="44"/>
+ <source>Unlink Device From Account</source>
+ <translation>取消设备与账户的链接</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="80"/>
+ <source>Save new device name</source>
+ <translation>保存新设备名称 </translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.cpp" line="39"/>
+ <source>Add as contact</source>
+ <translation>添加为联系人 </translation>
+ </message>
+</context>
+<context>
+ <name>RingButton</name>
+ <message>
+ <location filename="../ringbutton.ui" line="140"/>
+ <source>Select folder</source>
+ <translation>选择文件夹</translation>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <location filename="../settingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>表单</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="141"/>
+ <source>Settings</source>
+ <translation>设置</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="229"/>
+ <source>Account</source>
+ <translation>账户</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="267"/>
+ <location filename="../settingswidget.ui" line="503"/>
+ <source>General</source>
+ <translation>通用</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="305"/>
+ <location filename="../settingswidget.ui" line="3416"/>
+ <source>Audio / Video</source>
+ <translation>音频/视频</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="542"/>
+ <source>System</source>
+ <translation>系统</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="610"/>
+ <source>Enable desktop notifications</source>
+ <translation>启用桌面通知</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="653"/>
+ <source>Keep minimized on close</source>
+ <translation>退出时保持窗口最小化</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="678"/>
+ <source>Download folder</source>
+ <translation>下载文件夹</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="811"/>
+ <source>Save in</source>
+ <translation>保存至</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="904"/>
+ <source>Always Recording</source>
+ <translation>总是录音</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="943"/>
+ <source>Updates</source>
+ <translation>更新</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1008"/>
+ <source>Check for updates automatically every</source>
+ <translation>自动检查更新:每</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1032"/>
+ <source>Interval between update checks in days selector</source>
+ <translation>每隔几天检查更新</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1038"/>
+ <source> days</source>
+ <translation>天</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1081"/>
+ <source>Check for updates now button</source>
+ <translation>现在检查更新按钮</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1084"/>
+ <source>Check for updates now</source>
+ <translation>立即检查更新</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3027"/>
+ <source>Password</source>
+ <translation>密码</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1418"/>
+ <location filename="../settingswidget.ui" line="2729"/>
+ <source>Enable</source>
+ <translation>启用</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="607"/>
+ <source>toggle enable notifications</source>
+ <translation>是否启用通知 </translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="650"/>
+ <source>Toggle keep minimized on close</source>
+ <translation>是否在关闭时保持最小化</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="764"/>
+ <source>Call Recordings</source>
+ <translation>通话录音</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1005"/>
+ <source>Toggle automatic updates</source>
+ <translation>是否自动更新应用</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1231"/>
+ <source>Jami Account</source>
+ <translation>Jami账户</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1453"/>
+ <location filename="../settingswidget.ui" line="2761"/>
+ <source>Profile</source>
+ <translation>资料</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1567"/>
+ <location filename="../settingswidget.ui" line="2875"/>
+ <source>Identity</source>
+ <translation>身份</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1614"/>
+ <source>Id</source>
+ <translation>ID</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1673"/>
+ <source>Registered name</source>
+ <translation>已注册名称</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1721"/>
+ <source>Type here to register a username</source>
+ <translation>在此处输入注册用户名 </translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1755"/>
+ <source>Register</source>
+ <translation>注册</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1827"/>
+ <source>Change Password</source>
+ <translation>更改用户名</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1868"/>
+ <source>Export Account</source>
+ <translation>导出账户</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1909"/>
+ <location filename="../settingswidget.ui" line="3089"/>
+ <source>Delete Account</source>
+ <translation>删除账户</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1973"/>
+ <source>Linked Devices</source>
+ <translation>连结的设备</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2078"/>
+ <source>Link Another Device</source>
+ <translation>连结其他设备</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2142"/>
+ <source>Banned Contacts</source>
+ <translation>已屏蔽的联系人</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3788"/>
+ <source>Format</source>
+ <translation>格式</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3831"/>
+ <source>Video device framerate selector</source>
+ <translation>选择视频设备帧率</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3967"/>
+ <source>Preview unavailable</source>
+ <translation>预览不可用</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2359"/>
+ <location filename="../settingswidget.ui" line="3187"/>
+ <source>Advanced Account Settings</source>
+ <translation>高级账户设置</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2554"/>
+ <source>SIP Account</source>
+ <translation>SIP 账户</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2925"/>
+ <source>Username</source>
+ <translation>用户名</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2958"/>
+ <source>Hostname</source>
+ <translation>主机名</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2991"/>
+ <source>Proxy</source>
+ <translation>代理</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3461"/>
+ <source>Audio</source>
+ <translation>音频</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3511"/>
+ <source>Microphone</source>
+ <translation>麦克风</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3551"/>
+ <source>Audio input device selector</source>
+ <translation>选择音频输入设备</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3585"/>
+ <source>Output Device</source>
+ <translation>输出设备</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3625"/>
+ <source>Choose the output device</source>
+ <translation>选择输出设备</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3682"/>
+ <source>Video</source>
+ <translation>视频</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3720"/>
+ <source>Device</source>
+ <translation>设备</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3766"/>
+ <source>Video device selector</source>
+ <translation>选择视频设备</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="459"/>
+ <source>A registered name should not have any spaces and must be at least three letters long</source>
+ <translation>注册名称不得有空格,并且必须至少包含三个字母 </translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="466"/>
+ <source>This name is already taken</source>
+ <translation>这个名字已被占用</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="92"/>
+ <location filename="../settingswidget.cpp" line="110"/>
+ <source>Enter an alias</source>
+ <translation>输入别名</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="473"/>
+ <source>Register this name</source>
+ <translation>注册这个名字 </translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="550"/>
+ <source>Remove Device</source>
+ <translation>删除设备</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="551"/>
+ <source>Enter this account's password to confirm the removal of this device</source>
+ <translation>输入此账户的密码,以确认删除该设备</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="558"/>
+ <source>Are you sure you wish to remove this device?</source>
+ <translation>您确定要删除此设备吗? </translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="589"/>
+ <source>Export Account Here</source>
+ <translation>此处导出账户</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="887"/>
+ <source>Select A Folder For Your Downloads</source>
+ <translation>为您下载的文件选择一个文件夹</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="904"/>
+ <source>Select A Folder For Your Recordings</source>
+ <translation>为你的录音挑选一个文件夹</translation>
+ </message>
+</context>
+<context>
+ <name>VideoOverlay</name>
+ <message>
+ <location filename="../videooverlay.ui" line="419"/>
+ <source>Call on Hold</source>
+ <translation>通话等待中</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="89"/>
+ <source>Hold / Unhold</source>
+ <translation>等待/取消等待</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="124"/>
+ <source>Chat</source>
+ <translation>聊天</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="162"/>
+ <source>Mute Mic</source>
+ <translation>将麦克风静音</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="244"/>
+ <source>Record call</source>
+ <translation>录制通话</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="325"/>
+ <source>Name label</source>
+ <translation>名称标签</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="390"/>
+ <source>Time elapsed</source>
+ <translation>用时</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="393"/>
+ <source>00:00</source>
+ <translation>00:00</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="57"/>
+ <source>Hangup</source>
+ <translation>挂断</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="203"/>
+ <source>Mute Video</source>
+ <translation>关闭视频</translation>
+ </message>
+</context>
+<context>
+ <name>VideoView</name>
+ <message>
+ <location filename="../videoview.cpp" line="271"/>
+ <source>Share entire screen</source>
+ <translation>共享整个屏幕</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="274"/>
+ <source>Share screen area</source>
+ <translation>共享屏幕区域</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="281"/>
+ <source>Share file</source>
+ <translation>共享文件</translation>
+ </message>
+</context>
+</TS>
\ No newline at end of file
diff --git a/translations/ring_client_windows_zh_TW.ts b/translations/ring_client_windows_zh_TW.ts
new file mode 100644
index 0000000..bc7cd8e
--- /dev/null
+++ b/translations/ring_client_windows_zh_TW.ts
@@ -0,0 +1,1606 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="zh_TW" version="2.0">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../aboutdialog.ui" line="435"/>
+ <location filename="../aboutdialog.ui" line="465"/>
+ <source>About</source>
+ <translation>關於</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="462"/>
+ <source>about button</source>
+ <translation>關於按鈕</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="478"/>
+ <source>credits button</source>
+ <translation>感謝按鈕</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="481"/>
+ <source>Credits</source>
+ <translation>榮譽</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="547"/>
+ <source>Free as in Freedom</source>
+ <translation>Free as in Freedom</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.ui" line="563"/>
+ <source>The Microsoft Windows client for Jami.
+Jami is a secured and distributed communication software.</source>
+ <translation>Jami 的 Microsoft Windows 客戶端。
+Jami 是一個安全且分散式的通訊軟體。</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="32"/>
+ <source>version</source>
+ <translation>版本</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="39"/>
+ <source>Created by:</source>
+ <translation>建立由:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="73"/>
+ <source>Artwork by:</source>
+ <translation>美術由:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="77"/>
+ <source>Based on the SFLPhone project</source>
+ <translation>基於 SFLPhone 專案</translation>
+ </message>
+</context>
+<context>
+ <name>AccountItemDelegate</name>
+ <message>
+ <location filename="../accountitemdelegate.cpp" line="91"/>
+ <source>Add Account</source>
+ <translation>新增帳號</translation>
+ </message>
+</context>
+<context>
+ <name>AdvancedSIPSettingsWidget</name>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>表單</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="55"/>
+ <source>Call Settings</source>
+ <translation>通話設定</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="102"/>
+ <source>Auto Answer Calls</source>
+ <translation>自動回應通話</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="130"/>
+ <source>Enable Custom Ringtone</source>
+ <translation>啟用自訂鈴聲</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="191"/>
+ <source>Connectivity</source>
+ <translation>連線</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="281"/>
+ <source>STUN Address</source>
+ <translation>STUN 地址</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="293"/>
+ <source>Use STUN</source>
+ <translation>使用 STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="317"/>
+ <source>Use UPnP</source>
+ <translation>使用 UPnP</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="329"/>
+ <source>Use TURN</source>
+ <translation>使用 TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="359"/>
+ <source>TURN Password</source>
+ <translation>TURN 密碼</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="391"/>
+ <source>TURN Username</source>
+ <translation>TURN 使用者名稱</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="423"/>
+ <source>TURN Address</source>
+ <translation>TURN 地址</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="464"/>
+ <source>Media</source>
+ <translation>媒體</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="515"/>
+ <source>Enable Video</source>
+ <translation>啟用視訊</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="539"/>
+ <source>Video Codecs</source>
+ <translation>視訊編解碼器</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.ui" line="692"/>
+ <source>Audio Codecs</source>
+ <translation>音訊編解碼器</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="142"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation>音訊檔 (*.wav *.ogg *.opus *.mp3 *aiff *wma)</translation>
+ </message>
+ <message>
+ <location filename="../advancedsipsettingwidget.cpp" line="151"/>
+ <source>Add a custom ringtone</source>
+ <translation>新增自訂鈴聲</translation>
+ </message>
+</context>
+<context>
+ <name>AdvancedSettingsWidget</name>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>表單</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="61"/>
+ <source>Call Settings</source>
+ <translation>通話設定</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="108"/>
+ <source>Allow Calls From Untrusted Peers</source>
+ <translation>允許來自未受信任使用者的通話</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="133"/>
+ <source>Auto Answer Calls</source>
+ <translation>自動回應通話</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="161"/>
+ <source>Enable Custom Ringtone</source>
+ <translation>啟用自訂鈴聲</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="188"/>
+ <source>Add a custom ringtone</source>
+ <translation>新增自訂鈴聲</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="225"/>
+ <source>Name Server</source>
+ <translation>名稱伺服器</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="275"/>
+ <source>Address</source>
+ <translation>地址</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="351"/>
+ <source>OpenDHT Configuration</source>
+ <translation>OpenDHT 設定</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="398"/>
+ <source>Enable Proxy</source>
+ <translation>啟用代理伺服器</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="454"/>
+ <source>Bootstrap</source>
+ <translation>Bootstrap</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="530"/>
+ <source>Security</source>
+ <translation>安全性</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="571"/>
+ <source>Private Key Password</source>
+ <translation>私密金鑰密碼</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="583"/>
+ <source>User Certificate</source>
+ <translation>使用者憑證</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="622"/>
+ <source>Private Key</source>
+ <translation>私鑰</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="634"/>
+ <source>CA Certificate</source>
+ <translation>CA 憑證</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="766"/>
+ <source>Connectivity</source>
+ <translation>連線</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="868"/>
+ <source>Use STUN</source>
+ <translation>使用 STUN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="856"/>
+ <source>STUN Address</source>
+ <translation>STUN 地址</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="892"/>
+ <source>Use UPnP</source>
+ <translation>使用 UPnP</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="904"/>
+ <source>Use TURN</source>
+ <translation>使用 TURN</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="934"/>
+ <source>TURN Password</source>
+ <translation>TURN 密碼</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="966"/>
+ <source>TURN Username</source>
+ <translation>TURN 使用者名稱</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="998"/>
+ <source>TURN Address</source>
+ <translation>TURN 地址</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1039"/>
+ <source>Media</source>
+ <translation>媒體</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1090"/>
+ <source>Enable Video</source>
+ <translation>啟用視訊</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1267"/>
+ <source>Audio Codecs</source>
+ <translation>音訊編解碼器</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.ui" line="1114"/>
+ <source>Video Codecs</source>
+ <translation>視訊編解碼器</translation>
+ </message>
+ <message>
+ <location filename="../advancedsettingswidget.cpp" line="181"/>
+ <source>Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)</source>
+ <translation>音訊檔 (*.wav *.ogg *.opus *.mp3 *aiff *wma)</translation>
+ </message>
+</context>
+<context>
+ <name>AnimatedOverlay</name>
+ <message>
+ <location filename="../animatedoverlay.ui" line="14"/>
+ <source>Form</source>
+ <translation>表單</translation>
+ </message>
+</context>
+<context>
+ <name>BannedItemWidget</name>
+ <message>
+ <location filename="../banneditemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>表單</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="80"/>
+ <source>name</source>
+ <translation>名稱</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.ui" line="104"/>
+ <source>id</source>
+ <translation>id</translation>
+ </message>
+</context>
+<context>
+ <name>CallWidget</name>
+ <message>
+ <location filename="../callwidget.ui" line="184"/>
+ <source>Show conversations</source>
+ <translation>顯示對話</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="187"/>
+ <source>Conversations</source>
+ <translation>對話</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="368"/>
+ <source>Search contact text input</source>
+ <translation>搜尋聯絡人文字輸入</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="653"/>
+ <source>Jami is free software for universal communication which respects the freedoms and privacy of its users.</source>
+ <translation>Jami 是一套通用通訊的自由軟體,其尊重使用者的自由與隱私。</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="693"/>
+ <source>
+ This is your ID.
+Copy and share it with your friends!
+ </source>
+ <translation>
+ 這是您的 ID。
+複製並分享它給您的朋友!
+ </translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="806"/>
+ <source>Show ring ID QR code</source>
+ <translation>顯示 Ring ID 二維條碼</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="857"/>
+ <source>Share ring ID button</source>
+ <translation>分享 Ring ID 按鈕</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="915"/>
+ <source>Double-click to copy</source>
+ <translation>雙擊以複製</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="956"/>
+ <source>Error while generating QR Code</source>
+ <translation>產生 QR Code 時發生錯誤</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1184"/>
+ <location filename="../callwidget.ui" line="1434"/>
+ <source>best name</source>
+ <translation>最佳名稱</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1208"/>
+ <source>best Id</source>
+ <translation>最佳 ID</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1734"/>
+ <source>Back to homepage button</source>
+ <translation>回到首頁按鈕</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1943"/>
+ <source>Add to contacts</source>
+ <translation>加到聯絡人</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="202"/>
+ <source>Show invites</source>
+ <translation>顯示邀請</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="205"/>
+ <source>Invites</source>
+ <translation>邀請</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="377"/>
+ <location filename="../callwidget.cpp" line="552"/>
+ <source>Find a new or existing contact</source>
+ <translation>尋找新的或既有的聯絡人</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1444"/>
+ <source>Wants to talk to you!</source>
+ <translation>想要與您說說話!</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1517"/>
+ <source>Answer incoming call button</source>
+ <translation>答覆來電按鈕</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1589"/>
+ <source>Ignore incoming call button</source>
+ <translation>忽略來電按鈕</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1539"/>
+ <source>Answer</source>
+ <translation>回覆</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1617"/>
+ <source>Ignore</source>
+ <translation>忽略</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1280"/>
+ <source>Cancel outgoing call</source>
+ <translation>取消去電</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.ui" line="1305"/>
+ <source>Cancel</source>
+ <translation>取消</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="332"/>
+ <source>Start video call</source>
+ <translation>開始視訊通話</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="343"/>
+ <source>Start audio call</source>
+ <translation>開始音訊通話</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="354"/>
+ <source>Clear conversation</source>
+ <translation>清除對話</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="361"/>
+ <source>Remove contact</source>
+ <translation>移除聯絡人</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="373"/>
+ <source>Block contact</source>
+ <translation>阻擋連絡人</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="384"/>
+ <source>Copy number</source>
+ <translation>複製號碼</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="561"/>
+ <source>Search your received invitations</source>
+ <translation>搜尋您收到的邀請</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>Contact me on Jami</source>
+ <translation>在 Jami 上聯絡我</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="943"/>
+ <source>My Id is : </source>
+ <translation>我的 Id 是:</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="847"/>
+ <source>%1</source>
+ <comment>%1 is the contact username</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="852"/>
+ <source>%1</source>
+ <comment>%1 is the contact unique identifier</comment>
+ <translation>%1</translation>
+ </message>
+ <message>
+ <location filename="../callwidget.cpp" line="675"/>
+ <source>Call incoming from %1</source>
+ <translation>從 %1 的來電</translation>
+ </message>
+</context>
+<context>
+ <name>DeleteAccountDialog</name>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="35"/>
+ <source>Account deletion</source>
+ <translation>帳號刪除</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="58"/>
+ <source>Do you really want to delete the following account?</source>
+ <translation>您真的想要刪除以下的帳號嗎?</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="153"/>
+ <source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
+ <translation>若此帳號尚未匯出,或是新增到其他裝置,它將會不可逆地遺失。</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="235"/>
+ <source>Permanently delete account</source>
+ <translation>永久刪除帳號</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="241"/>
+ <source>Delete</source>
+ <translation>刪除</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="278"/>
+ <source>Cancel account deletion</source>
+ <translation>取消帳號刪除</translation>
+ </message>
+ <message>
+ <location filename="../deleteaccountdialog.ui" line="284"/>
+ <source>Cancel</source>
+ <translation>取消</translation>
+ </message>
+</context>
+<context>
+ <name>DeviceItemWidget</name>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>表單</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="105"/>
+ <source>Device Id</source>
+ <translation>裝置 Id</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.ui" line="143"/>
+ <source>this device</source>
+ <translation>此裝置</translation>
+ </message>
+</context>
+<context>
+ <name>InviteButtonsWidget</name>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="83"/>
+ <source>Accept</source>
+ <translation>接聽</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="131"/>
+ <source>Refuse</source>
+ <translation>拒絕</translation>
+ </message>
+ <message>
+ <location filename="../invitebuttonswidget.ui" line="179"/>
+ <source>Block</source>
+ <translation>阻擋</translation>
+ </message>
+</context>
+<context>
+ <name>LinkDeviceDialog</name>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation>對話框</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="62"/>
+ <source>Enter your account password</source>
+ <translation>輸入您的帳號密碼</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="117"/>
+ <source>Password</source>
+ <translation>密碼</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="184"/>
+ <source>Ok</source>
+ <translation>確定</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="218"/>
+ <source>Cancel</source>
+ <translation>取消</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="279"/>
+ <source>Exporting account</source>
+ <translation>正在匯出帳號</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="402"/>
+ <source>Your PIN is</source>
+ <translation>您的 PIN 碼為</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="432"/>
+ <source>PIN</source>
+ <translation>PIN 碼</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="477"/>
+ <source>This pin and the account password should be entered in your device within 10 minutes.</source>
+ <translation>這個 PIN 碼與帳號密碼應該要在 10 分鐘之內在您的裝置上輸入。</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.ui" line="553"/>
+ <source>Close</source>
+ <translation>關閉</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="34"/>
+ <source>Link Another Device</source>
+ <translation>聯結其他裝置</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="96"/>
+ <source>Incorrect password</source>
+ <translation>不正確的密碼</translation>
+ </message>
+ <message>
+ <location filename="../linkdevicedialog.cpp" line="110"/>
+ <source>Something went wrong.
+Please try again later.</source>
+ <translation>有東西出問題了。
+請再試一次。</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="83"/>
+ <source>Settings</source>
+ <translation>設定</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="94"/>
+ <source>Exit</source>
+ <translation>離開</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="111"/>
+ <source>About</source>
+ <translation>關於</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="435"/>
+ <source>Jami</source>
+ <translation>Jami</translation>
+ </message>
+</context>
+<context>
+ <name>NameRegistrationDialog</name>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="35"/>
+ <source>Set Registered Name</source>
+ <translation>設定已註冊的名稱</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="163"/>
+ <source>Enter your account password</source>
+ <translation>輸入您的帳號密碼</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="244"/>
+ <source>Password text input</source>
+ <translation>密碼文字輸入</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="250"/>
+ <source>Password text entry</source>
+ <translation>密碼文字項目</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="256"/>
+ <source>Password</source>
+ <translation>密碼</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="323"/>
+ <source>Register</source>
+ <translation>註冊</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="357"/>
+ <source>Cancel</source>
+ <translation>取消</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="424"/>
+ <source>Registering Name</source>
+ <translation>註冊名稱</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="548"/>
+ <source>Something went wrong</source>
+ <translation>出了點問題</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.ui" line="618"/>
+ <source>Close</source>
+ <translation>關閉</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="82"/>
+ <source>Incorrect password</source>
+ <translation>不正確的密碼</translation>
+ </message>
+ <message>
+ <location filename="../nameregistrationdialog.cpp" line="85"/>
+ <source>Network error</source>
+ <translation>網路錯誤</translation>
+ </message>
+</context>
+<context>
+ <name>NewWizardWidget</name>
+ <message>
+ <location filename="../newwizardwidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>表單</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="141"/>
+ <source>Welcome Label</source>
+ <translation>歡迎標籤</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="147"/>
+ <source> Welcome to</source>
+ <translation>歡迎來到</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="185"/>
+ <source>Welcome Logo</source>
+ <translation>歡迎圖示</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="239"/>
+ <source>Create Jami account button</source>
+ <translation>建立 Jami 帳號按鈕</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="245"/>
+ <source>Push button for Jami account creation start trigger</source>
+ <translation>Jami 帳號建立開始觸發請按下按鈕</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="251"/>
+ <source>Create a Jami account</source>
+ <translation>建立 Jami 帳號</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="282"/>
+ <source>Link device button</source>
+ <translation>連結裝置按鈕</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="288"/>
+ <source>Push button for device linkage start trigger</source>
+ <translation>裝置連結開始觸發請按下按鈕</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="291"/>
+ <source>Link this device to an account</source>
+ <translation>連結這個裝置到一個帳號</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="328"/>
+ <source>Create Jami SIP account button</source>
+ <translation>建立 Jami SIP 帳號按鈕</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="334"/>
+ <source>Push button for Jami SIP account creation start trigger</source>
+ <translation>按下按鈕以啟動 Jami SIP 帳號建立程序</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="340"/>
+ <source>Create a SIP account</source>
+ <translation>建立 SIP 帳號</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="405"/>
+ <source>Link this device to an existing account</source>
+ <translation>連結此裝置到既有的帳號</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="469"/>
+ <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">To link this device to another account, you first </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">need to obtain a PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;"> code. To generate the PIN code:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Account management setting</span><span style=" font-size:14px;"> of a previous device</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Choose the </span><span style=" font-size:14px; font-weight:600;">Jami account</span><span style=" font-size:14px;"> you want to use</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Go to the </span><span style=" font-size:14px; font-weight:600;">Devices</span><span style=" font-size:14px;"> tab</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">Select </span><span style=" font-size:14px; font-weight:600;">Add a device</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">You will get the necessary PIN to complete this form. The PIN is only valid for </span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 minutes</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">.</span></p></body></html></source>
+ <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">要連結此裝置到其他帳號,您必須先</span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">取得 PIN</span><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">碼。要生成 PIN 碼:</span></p>
+<ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">請到</span><span style=" font-size:14px; font-weight:600;">帳號管理設定</span><span style=" font-size:14px;"> 在前一個裝置上</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">選擇</span><span style=" font-size:14px; font-weight:600;">Jami 帳號</span><span style=" font-size:14px;">,當然是您想要用的</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">到</span><span style=" font-size:14px; font-weight:600;">裝置</span><span style=" font-size:14px;"> 分頁</span></li>
+<li style=" font-family:'Ubuntu'; font-size:14px; color:#555555;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14px;">選取</span><span style=" font-size:14px; font-weight:600;">新增裝置</span></li></ol>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14px; color:#555555;">您將會取得所需的 PIN 碼來完成此表單。PIN 只在</span><span style=" font-family:'Ubuntu'; font-size:14px; font-weight:600; color:#555555;">10 分鐘</span><span style=" font-family:'Ubuntu'; font-size:10px; color:#555555;">內有效。</span></p></body></html></translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="531"/>
+ <source>Enter your pin:</source>
+ <translation>輸入您的 PIN 碼:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="599"/>
+ <source>Or import a file:</source>
+ <translation>或是匯入檔案:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="626"/>
+ <source>Link from exported account archive file</source>
+ <translation>從已匯出的帳號封存檔連結</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="629"/>
+ <location filename="../newwizardwidget.cpp" line="83"/>
+ <location filename="../newwizardwidget.cpp" line="218"/>
+ <source>(None)</source>
+ <translation>(無)</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="705"/>
+ <source>Password:</source>
+ <translation>密碼:</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="799"/>
+ <location filename="../newwizardwidget.ui" line="1586"/>
+ <source>Profile</source>
+ <translation>介紹</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="953"/>
+ <location filename="../newwizardwidget.ui" line="1767"/>
+ <source>Profile name</source>
+ <translation>個人檔案名稱</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1027"/>
+ <source>Account</source>
+ <translation>帳號</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1136"/>
+ <source>Register your username.
+This will reserve the username so that only you can use it.
+Your friends will be able to call you with your usename
+instead of using your ID.</source>
+ <translation>註冊您的使用者名稱。
+這將會保留使用者名稱,只有您可以使用它。
+您的朋友將可以使用您的使用者名稱來與您通話,
+而不用使用您的 ID。</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1142"/>
+ <source>Public username checkbox</source>
+ <translation>公開使用者名稱勾選框</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1145"/>
+ <source>Checkbox selecting if the user wants a public username</source>
+ <translation>若使用者想要一個公開的使用者名稱就在勾選框打勾</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1148"/>
+ <source>Register public username</source>
+ <translation>註冊公開使用者名稱</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1367"/>
+ <source>Public username edit</source>
+ <translation>公開使用者名稱編輯</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1373"/>
+ <source>Choose your username</source>
+ <translation>選擇您的使用者名稱</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1289"/>
+ <source>Password text input</source>
+ <translation>密碼文字輸入</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1295"/>
+ <source>Password text entry</source>
+ <translation>密碼文字項目</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1301"/>
+ <location filename="../newwizardwidget.ui" line="2213"/>
+ <source>Password</source>
+ <translation>密碼</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1211"/>
+ <location filename="../newwizardwidget.ui" line="1217"/>
+ <source>Password confirmation text input</source>
+ <translation>確認密碼文字輸入</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1223"/>
+ <source>Confirm password</source>
+ <translation>確認密碼</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1814"/>
+ <source>SIP Account</source>
+ <translation>SIP 帳號</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1973"/>
+ <source>SIP Server edit</source>
+ <translation>SIP 伺服器編輯</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="1979"/>
+ <source>Server</source>
+ <translation>伺服器</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2045"/>
+ <source>SIP proxy input</source>
+ <translation>SIP 代理伺服器輸入</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2051"/>
+ <source>SIP proxy text entry</source>
+ <translation>SIP 代理伺服器文字項目</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2057"/>
+ <source>Proxy</source>
+ <translation>代理服務器</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2123"/>
+ <source>SIP username input</source>
+ <translation>SIP 使用者名稱輸入</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2129"/>
+ <source>SIP Password text entry</source>
+ <translation>SIP 密碼文字項目</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2135"/>
+ <source>Username</source>
+ <translation>使用者名稱</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2201"/>
+ <location filename="../newwizardwidget.ui" line="2207"/>
+ <source>SIP Password text input</source>
+ <translation>SIP 密碼文字輸入</translation>
+ </message>
+ <message utf8="true">
+ <location filename="../newwizardwidget.ui" line="2282"/>
+ <source>Generating your Jami account…</source>
+ <translation>正在生成您的 Jami 帳號……</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2356"/>
+ <source>Previous page button</source>
+ <translation>先前頁面按鈕</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2362"/>
+ <source>push button to access previous page of wizard</source>
+ <translation>存取前一頁精靈請按下按鈕</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2365"/>
+ <source>Previous</source>
+ <translation>前一個</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2396"/>
+ <source>Cancel account create/link</source>
+ <translation>取消帳號建立/連結</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2402"/>
+ <source>push button to cancel account creation or linking</source>
+ <translation>按下按鈕以取消帳號建立或連結</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2405"/>
+ <source>Back</source>
+ <translation>前一個</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2442"/>
+ <source>Next page Button</source>
+ <translation>下一頁按鈕</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2448"/>
+ <source>Push button to access next page of wizard</source>
+ <translation>存取下一頁精靈請按下按鈕</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.ui" line="2451"/>
+ <source>Next</source>
+ <translation>下一個</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="75"/>
+ <source>Open File</source>
+ <translation>開啟檔案</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="77"/>
+ <source>Jami archive files (*.gz); All files (*)</source>
+ <translation>Jami 封存檔 (*.gz); 所有檔案 (*)</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="123"/>
+ <source>Your account needs to be migrated. Enter your password.</source>
+ <translation>您的帳號需要遷移。輸入您的密碼。</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="419"/>
+ <source>Migrating your Jami account...</source>
+ <translation>正在遷移您的 Jami 帳號……</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="412"/>
+ <source>Importing account archive...</source>
+ <translation>正在匯入帳號封存檔……</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="404"/>
+ <source>Generating your Jami account...</source>
+ <translation>正在生成您的 Jami 帳號……</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="422"/>
+ <source>Generating your SIP account...</source>
+ <translation>正在生成您的 SIP 帳號……</translation>
+ </message>
+ <message>
+ <location filename="../newwizardwidget.cpp" line="533"/>
+ <source>Error creating account</source>
+ <translation>無法建立帳號</translation>
+ </message>
+</context>
+<context>
+ <name>PasswordDialog</name>
+ <message>
+ <location filename="../passworddialog.ui" line="32"/>
+ <source>Change Account Password</source>
+ <translation>變更帳號密碼</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="97"/>
+ <source>Enter Current Password</source>
+ <translation>輸入目前的密碼</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="169"/>
+ <source>Enter New Password</source>
+ <translation>輸入新密碼</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="190"/>
+ <source>Confirm New Password</source>
+ <translation>確認新密碼</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="247"/>
+ <source>Confirm</source>
+ <translation>確認</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="290"/>
+ <source>Cancel</source>
+ <translation>取消</translation>
+ </message>
+ <message>
+ <location filename="../passworddialog.ui" line="143"/>
+ <source>Current Password Incorrect</source>
+ <translation>目前的密碼不正確</translation>
+ </message>
+</context>
+<context>
+ <name>PhotoBoothDialog</name>
+ <message>
+ <location filename="../photoboothdialog.ui" line="14"/>
+ <source>Photobooth</source>
+ <translation>照片展台</translation>
+ </message>
+</context>
+<context>
+ <name>PhotoboothWidget</name>
+ <message>
+ <location filename="../photoboothwidget.ui" line="20"/>
+ <source>Form</source>
+ <translation>表單</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.ui" line="120"/>
+ <source>Photobooth display</source>
+ <translation>大頭貼相機顯示</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="92"/>
+ <source>Choose File</source>
+ <translation>選擇檔案</translation>
+ </message>
+ <message>
+ <location filename="../photoboothwidget.cpp" line="94"/>
+ <source>Image Files (*.jpg *.jpeg *.png)</source>
+ <translation>圖片檔 (*.jpg *.jpeg *.png)</translation>
+ </message>
+</context>
+<context>
+ <name>PrivateBridging</name>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Choose File</source>
+ <translation>選擇檔案</translation>
+ </message>
+ <message>
+ <location filename="../messagewebview.cpp" line="374"/>
+ <source>Files (*)</source>
+ <translation>檔案 (*)</translation>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../utils.cpp" line="183"/>
+ <source>No default mail client found</source>
+ <translation>找不到預設的電子郵件客戶端</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="43"/>
+ <location filename="../deviceitemwidget.cpp" line="85"/>
+ <source>Edit Device Name</source>
+ <translation>編輯裝置名稱</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="44"/>
+ <source>Unlink Device From Account</source>
+ <translation>從帳號取消連結裝置</translation>
+ </message>
+ <message>
+ <location filename="../deviceitemwidget.cpp" line="80"/>
+ <source>Save new device name</source>
+ <translation>儲存新裝置名稱</translation>
+ </message>
+ <message>
+ <location filename="../banneditemwidget.cpp" line="39"/>
+ <source>Add as contact</source>
+ <translation>新增為聯絡人</translation>
+ </message>
+</context>
+<context>
+ <name>RingButton</name>
+ <message>
+ <location filename="../ringbutton.ui" line="140"/>
+ <source>Select folder</source>
+ <translation>選擇資料夾</translation>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <location filename="../settingswidget.ui" line="14"/>
+ <source>Form</source>
+ <translation>表單</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="141"/>
+ <source>Settings</source>
+ <translation>設定</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="229"/>
+ <source>Account</source>
+ <translation>帳號</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="267"/>
+ <location filename="../settingswidget.ui" line="503"/>
+ <source>General</source>
+ <translation>一般</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="305"/>
+ <location filename="../settingswidget.ui" line="3416"/>
+ <source>Audio / Video</source>
+ <translation>音訊/視訊</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="542"/>
+ <source>System</source>
+ <translation>系統</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="610"/>
+ <source>Enable desktop notifications</source>
+ <translation>啟用桌面通知</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="653"/>
+ <source>Keep minimized on close</source>
+ <translation>在關閉時保持最小化</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="678"/>
+ <source>Download folder</source>
+ <translation>下載資料夾</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="811"/>
+ <source>Save in</source>
+ <translation>儲存在</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="904"/>
+ <source>Always Recording</source>
+ <translation>總是錄製</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="943"/>
+ <source>Updates</source>
+ <translation>更新</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1008"/>
+ <source>Check for updates automatically every</source>
+ <translation>自動檢查更新每</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1032"/>
+ <source>Interval between update checks in days selector</source>
+ <translation>檢查更新間隔(以天計)選擇器</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1038"/>
+ <source> days</source>
+ <translation>天</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1081"/>
+ <source>Check for updates now button</source>
+ <translation>立刻檢查更新按鈕</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1084"/>
+ <source>Check for updates now</source>
+ <translation>現在檢查更新</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3027"/>
+ <source>Password</source>
+ <translation>密碼</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1418"/>
+ <location filename="../settingswidget.ui" line="2729"/>
+ <source>Enable</source>
+ <translation>啟用</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="607"/>
+ <source>toggle enable notifications</source>
+ <translation>啟用通知開關</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="650"/>
+ <source>Toggle keep minimized on close</source>
+ <translation>切換時保持最小化開關</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="764"/>
+ <source>Call Recordings</source>
+ <translation>通話紀錄</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1005"/>
+ <source>Toggle automatic updates</source>
+ <translation>自動更新開關</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1231"/>
+ <source>Jami Account</source>
+ <translation>Jami 帳號</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1453"/>
+ <location filename="../settingswidget.ui" line="2761"/>
+ <source>Profile</source>
+ <translation>介紹</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1567"/>
+ <location filename="../settingswidget.ui" line="2875"/>
+ <source>Identity</source>
+ <translation>身份</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1614"/>
+ <source>Id</source>
+ <translation>Id</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1673"/>
+ <source>Registered name</source>
+ <translation>已註冊的名稱</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1721"/>
+ <source>Type here to register a username</source>
+ <translation>在此輸入以註冊使用者名稱</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1755"/>
+ <source>Register</source>
+ <translation>註冊</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1827"/>
+ <source>Change Password</source>
+ <translation>變更密碼</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1868"/>
+ <source>Export Account</source>
+ <translation>匯出帳號</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1909"/>
+ <location filename="../settingswidget.ui" line="3089"/>
+ <source>Delete Account</source>
+ <translation>刪除帳號</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="1973"/>
+ <source>Linked Devices</source>
+ <translation>已連結的裝置</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2078"/>
+ <source>Link Another Device</source>
+ <translation>聯結其他裝置</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2142"/>
+ <source>Banned Contacts</source>
+ <translation>黑名單聯絡人</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3788"/>
+ <source>Format</source>
+ <translation>格式</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3831"/>
+ <source>Video device framerate selector</source>
+ <translation>視訊裝置幀率選擇器</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3967"/>
+ <source>Preview unavailable</source>
+ <translation>預覽不可用</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2359"/>
+ <location filename="../settingswidget.ui" line="3187"/>
+ <source>Advanced Account Settings</source>
+ <translation>進階帳號設定</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2554"/>
+ <source>SIP Account</source>
+ <translation>SIP 帳號</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2925"/>
+ <source>Username</source>
+ <translation>使用者名稱</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2958"/>
+ <source>Hostname</source>
+ <translation>主機名稱</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="2991"/>
+ <source>Proxy</source>
+ <translation>代理服務器</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3461"/>
+ <source>Audio</source>
+ <translation>音訊</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3511"/>
+ <source>Microphone</source>
+ <translation>麥克風</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3551"/>
+ <source>Audio input device selector</source>
+ <translation>音訊輸入裝置選擇器</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3585"/>
+ <source>Output Device</source>
+ <translation>輸出裝置</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3625"/>
+ <source>Choose the output device</source>
+ <translation>選擇輸出裝置</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3682"/>
+ <source>Video</source>
+ <translation>視訊</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3720"/>
+ <source>Device</source>
+ <translation>裝置</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.ui" line="3766"/>
+ <source>Video device selector</source>
+ <translation>視訊裝置選擇器</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="459"/>
+ <source>A registered name should not have any spaces and must be at least three letters long</source>
+ <translation>註冊的使用者名稱不應該有任何空格,且必須至少有三個字母</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="466"/>
+ <source>This name is already taken</source>
+ <translation>這個名字已經有人用了</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="92"/>
+ <location filename="../settingswidget.cpp" line="110"/>
+ <source>Enter an alias</source>
+ <translation>輸入別名</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="473"/>
+ <source>Register this name</source>
+ <translation>註冊這個名字</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="550"/>
+ <source>Remove Device</source>
+ <translation>移除裝置</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="551"/>
+ <source>Enter this account's password to confirm the removal of this device</source>
+ <translation>輸入這個帳號的密碼以確認移除此裝置</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="558"/>
+ <source>Are you sure you wish to remove this device?</source>
+ <translation>您確定您想要移除此裝置嗎?</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="589"/>
+ <source>Export Account Here</source>
+ <translation>在此匯出帳號</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="887"/>
+ <source>Select A Folder For Your Downloads</source>
+ <translation>選取您的下載資料夾</translation>
+ </message>
+ <message>
+ <location filename="../settingswidget.cpp" line="904"/>
+ <source>Select A Folder For Your Recordings</source>
+ <translation>選取您的錄音資料夾</translation>
+ </message>
+</context>
+<context>
+ <name>VideoOverlay</name>
+ <message>
+ <location filename="../videooverlay.ui" line="419"/>
+ <source>Call on Hold</source>
+ <translation>保留中的通話</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="89"/>
+ <source>Hold / Unhold</source>
+ <translation>保留/繼續通話</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="124"/>
+ <source>Chat</source>
+ <translation>聊天</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="162"/>
+ <source>Mute Mic</source>
+ <translation>麥克風靜音</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="244"/>
+ <source>Record call</source>
+ <translation>記錄通話</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="325"/>
+ <source>Name label</source>
+ <translation>名稱標籤</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="390"/>
+ <source>Time elapsed</source>
+ <translation>時間流逝</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="393"/>
+ <source>00:00</source>
+ <translation>00:00</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="57"/>
+ <source>Hangup</source>
+ <translation>掛斷</translation>
+ </message>
+ <message>
+ <location filename="../videooverlay.ui" line="203"/>
+ <source>Mute Video</source>
+ <translation>視訊靜音</translation>
+ </message>
+</context>
+<context>
+ <name>VideoView</name>
+ <message>
+ <location filename="../videoview.cpp" line="271"/>
+ <source>Share entire screen</source>
+ <translation>分享整個螢幕</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="274"/>
+ <source>Share screen area</source>
+ <translation>分享螢幕區域</translation>
+ </message>
+ <message>
+ <location filename="../videoview.cpp" line="281"/>
+ <source>Share file</source>
+ <translation>分享檔案</translation>
+ </message>
+</context>
+</TS>
\ No newline at end of file
diff --git a/update-translations.py b/update-translations.py
new file mode 100755
index 0000000..0cbc9d2
--- /dev/null
+++ b/update-translations.py
@@ -0,0 +1,62 @@
+#!/usr/bin/python
+
+##
+## Copyright (C) 2016-2017 Savoir-faire Linux Inc.
+##
+## Author: Edric Milaret <edric.ladent-milaret@savoirfairelinux.com>
+## Author: Guillaume Roguez <guillaume.roguez@savoirfairelinux.com>
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 3 of the License, or
+## (at your option) any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+##
+
+import os
+import shutil
+
+print("== Updating from sources")
+if os.system("lupdate jami-qt.pro -no-obsolete"):
+ print("trying with 'lupdate-qt5'")
+ if os.system("lupdate-qt5 jami-qt.pro -no-obsolete"):
+ raise RuntimeError("unable to find any suitable lupdate Qt tool on this system. Stopping")
+
+print("== Pushing sources")
+os.system("tx push -s")
+
+print("== Pulling translations")
+os.system("tx pull -af --minimum-perc=1")
+
+print("Updating .pro file")
+
+translationFiles = []
+
+for filename in os.listdir('./translations'):
+ translationFiles.append("translations/{0}".format(filename))
+
+proFile = "jami-qt.pro"
+shutil.move(proFile, proFile + "~")
+
+destination = open(proFile, "w")
+source = open(proFile + "~", "r")
+for line in source:
+ if not ".ts" in line:
+ destination.write(line)
+ if "TRANSLATIONS = " in line:
+ for filename in translationFiles:
+ destination.write(" {0} \\\n".format(filename))
+
+source.close()
+destination.close()
+os.remove(proFile + "~")
+
+print("== All done you can commit now")