SwyxTray und Firefox-Plugin in das Repository aufnehmen
Windows-Tray-Anwendung (CLMgr-Anbindung an SwyxIt!) samt WebSocket-Zugang, Firefox-Erweiterung und Browser-Beispielclient.
This commit is contained in:
commit
78b17a1350
28 files changed
+4396
No files matched your search
@@ -0,0 +1,87 @@
|
||||
using IpPbx.CLMgrLib;
|
||||
|
||||
namespace SwyxTray.Swyx;
|
||||
|
||||
/// <summary>
|
||||
/// Einordnung der <see cref="CLMgrLineStates"/> aus der CLMgr-TypeLib.
|
||||
/// Die Werte stammen direkt aus dem Wrapper (Interop.CLMgr), sind also nicht
|
||||
/// geraten. Die vielen <c>LSWaitingFor*</c>-Werte sind Uebergangszustaende der
|
||||
/// CLMgr-Zustandsmaschine und werden hier bewusst als "belegt" behandelt.
|
||||
/// </summary>
|
||||
internal static class LineStateExtensions
|
||||
{
|
||||
/// <summary>Eingehender Ruf, der noch nicht angenommen wurde.</summary>
|
||||
public static bool IsRinging(this CLMgrLineStates state) => state switch
|
||||
{
|
||||
CLMgrLineStates.LSRinging => true,
|
||||
CLMgrLineStates.LSKnocking => true, // zweiter Ruf waehrend eines Gespraechs
|
||||
CLMgrLineStates.LSActiveAlerting => true,
|
||||
CLMgrLineStates.LSActiveAlertingDC => true,
|
||||
_ => false
|
||||
};
|
||||
|
||||
/// <summary>Bestehende Sprechverbindung.</summary>
|
||||
public static bool IsActive(this CLMgrLineStates state) => state switch
|
||||
{
|
||||
CLMgrLineStates.LSActive => true,
|
||||
CLMgrLineStates.LSConferenceActive => true,
|
||||
CLMgrLineStates.LSDirectCall => true,
|
||||
CLMgrLineStates.LSTransferring => true,
|
||||
_ => false
|
||||
};
|
||||
|
||||
/// <summary>Ausgehender Ruf im Aufbau.</summary>
|
||||
public static bool IsDialing(this CLMgrLineStates state) => state switch
|
||||
{
|
||||
CLMgrLineStates.LSDialing => true,
|
||||
CLMgrLineStates.LSAlerting => true,
|
||||
CLMgrLineStates.LSHookOffInternal => true,
|
||||
CLMgrLineStates.LSHookOffExternal => true,
|
||||
CLMgrLineStates.LSBusy => true,
|
||||
_ => false
|
||||
};
|
||||
|
||||
public static bool IsOnHold(this CLMgrLineStates state) => state switch
|
||||
{
|
||||
CLMgrLineStates.LSOnHold => true,
|
||||
CLMgrLineStates.LSConferenceOnHold => true,
|
||||
_ => false
|
||||
};
|
||||
|
||||
/// <summary>Leitung frei — wird in der Uebersicht ausgeblendet.</summary>
|
||||
public static bool IsIdle(this CLMgrLineStates state) => state switch
|
||||
{
|
||||
CLMgrLineStates.LSInactive => true,
|
||||
CLMgrLineStates.LSTerminated => true,
|
||||
CLMgrLineStates.LSDisabled => true,
|
||||
CLMgrLineStates.LSNone => true,
|
||||
_ => false
|
||||
};
|
||||
|
||||
/// <summary>Deutscher Klartext fuer Kontextmenue und Sprechblasen.</summary>
|
||||
public static string ToDisplayText(this CLMgrLineStates state) => state switch
|
||||
{
|
||||
CLMgrLineStates.LSInactive => "frei",
|
||||
CLMgrLineStates.LSHookOffInternal => "abgehoben (intern)",
|
||||
CLMgrLineStates.LSHookOffExternal => "abgehoben (extern)",
|
||||
CLMgrLineStates.LSRinging => "klingelt",
|
||||
CLMgrLineStates.LSDialing => "waehlt",
|
||||
CLMgrLineStates.LSAlerting => "ruft an",
|
||||
CLMgrLineStates.LSKnocking => "klopft an",
|
||||
CLMgrLineStates.LSBusy => "besetzt",
|
||||
CLMgrLineStates.LSActive => "aktiv",
|
||||
CLMgrLineStates.LSOnHold => "gehalten",
|
||||
CLMgrLineStates.LSConferenceActive => "Konferenz aktiv",
|
||||
CLMgrLineStates.LSConferenceOnHold => "Konferenz gehalten",
|
||||
CLMgrLineStates.LSTerminated => "beendet",
|
||||
CLMgrLineStates.LSTransferring => "wird verbunden",
|
||||
CLMgrLineStates.LSDisabled => "deaktiviert",
|
||||
CLMgrLineStates.LSDirectCall => "Direktansprache",
|
||||
CLMgrLineStates.LSActiveAlerting => "zweiter Ruf",
|
||||
CLMgrLineStates.LSActiveAlertingDC => "zweiter Ruf (Direktansprache)",
|
||||
CLMgrLineStates.LSNone => "unbekannt",
|
||||
_ => state.ToString().StartsWith("LSWaitingFor", StringComparison.Ordinal)
|
||||
? "wird geschaltet"
|
||||
: state.ToString()
|
||||
};
|
||||
}
|
||||
Reference in new issue
Block a user