using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using DTS.Common.Base;
using DTS.Common.Classes.DSP;
using DTS.Common.Classes.Hardware;
using DTS.Common.Enums;
using DTS.Common.Interface.Pagination;
using DTS.Common.Interface.TestSetups.TestSetupsList;
namespace DTS.Common.Interface.DASFactory.Diagnostics.HardwareList
{
public interface IHardwareListViewModel : IBaseViewModel, IFilterableListView
{
///
/// a user selected slice6
///
ISLICE6TreeNode SelectedSLICE6 { get; set; }
///
/// all slice6 which are not associated with a given S6DB
///
ISLICE6TreeNode[] AvailableSLICE6 { get; set; }
///
/// currently selected SLICE6DB
///
IHardware SelectedSLICE6DB { get; set; }
///
/// all available SLICE6DB
///
IHardware[] AvailableSLICE6DB { get; set; }
bool IsEdit { get; set; }
int TDASCalPeriod { get; set; }
int G5CalPeriod { get; set; }
int SLICE1CalPeriod { get; set; }
int SLICE1_5CalPeriod { get; set; }
int SLICE2_CalPeriod { get; set; }
int SLICE6_CalPeriod { get; set; }
int POWERPRO_CalPeriod { get; set; }
int SLICE6Air_CalPeriod { get; set; }
int SLICE6DB_CalPeriod { get; set; }
int TSRAir_CalPeriod { get; set; }
IStreamingFilterProfile StreamingDSPProfile { get;set; }
///
/// the hardware replacement view
///
IHardwareListReplaceView ReplaceView { get; set; }
IHardwareListView View { get; set; }
IHardwareListOverdueView OverdueView { get; set; }
IHardwareListSelectView SelectView { get; set; }
ISLICE6TreeView SLICE6TreeView { get; set; }
IHardware[] Hardware { get; set; }
IHardware[] OverdueHardware { get; set; }
///
/// the hardware in the test (replacementview)
///
IHardware[] HardwareInTest { get; set; }
///
/// the hardware to replace
///
IHardware HardwareToReplace { get; set; }
///
/// the hardware that is available to replace with
///
IHardware[] AvailableHardware { get; set; }
///
/// initializes the replacement view given a test id
///
void InitializeReplace(ITestSetup setup, IsoViewMode viewMode);
void GetHardware(bool bIncludeModules, bool bIncludeOverdue, bool bIncludeBridges, int? testId, int? groupId);
void GetAvailableSampleRates(int[] availableSampleRates);
void SetTestSampleRates(Dictionary testSampleRates);
void SetHasIncludedChildren();
void UpdateTestSampleRate(string childSerialNumber, double testSampleRate);
int TestAAFRateHzColumnWidth { get; set; }
void SetTestAAFRates(Dictionary testAAFRates);
void UpdateTestAAFilterRate(string childSerialNumber, float testAAFilterRate);
Func GetAAFForHardwareFunc { get; set; }
void CheckForMixedDAS(string nonParentSerialNumber, double testSampleRate);
void SetParentMixedRates(string parentDAS, bool mixedRates);
int TestSampleRateColumnWidth { get; set; }
int TestClockMasterColumnWidth { get; set; }
int PTPDomainColumnWidth { get; set; }
void SetTestClockProfiles(DTS.Common.ClockSyncProfile masterProfile, DTS.Common.ClockSyncProfile slaveProfile);
void SetTestClockMasters(Dictionary testClockMasters);
void UpdateTestClockMaster(string childSerialNumber, bool testClockMaster);
void SetTestPTPDomainIDs(Dictionary testPTPDomainIDs);
void UpdateTestPTPDomainID(string childSerialNumber, byte ptpDomainId);
void Unset();
void Sort(object o, bool columnClick);
void SortOverdue(object o, bool columnClick);
void SetIncluded(string[] serialNumbers, bool included);
void SetIncluded(int[] dasId);
void Filter(string term);
void MouseDoubleClick(int index);
void SetCache(IISOHardware[] hardware);
///
/// whether to show a compact view (no rack modules) or
/// expanded (show rack modules)
///
bool ShowCompact { get; set; }
///
/// loads tree for given hardware
///
///
void LoadTreeView(string serialNumber);
///
/// all the SLICE6 associated with a S6DB
/// (LoadTreeView will set this)
///
ISLICE6TreeNode[] SLICE6TreeNodes { get; set; }
///
/// associates a SLICE6 with a SLICE6DB
/// [does not commit]
///
///
void Associate(ISLICE6TreeNode node);
///
/// associates units from one SLICE6DB
/// with another
/// [does not commit]
///
///
void Associate(IHardware node);
///
/// removes the association of a SLICE6 with a SLICE6DB
/// [does not commit]
///
///
void UnAssociate(ISLICE6TreeNode node);
///
/// associates or de-associates SLICE6 from a SLICE6DB
///
void SaveSLICE6Associations(string serialNumber);
IHardware[] GetSelectedItems();
///
/// Replaces HardwareToReplace with ReplacementHardware
///
void Replace();
///
/// the selected hardware to replace with
///
IHardware ReplacementHardware { get; set; }
void SetCalPeriods(int g5CalPeriod, int slice1CalPeriod, int slice1_5CalPeriod, int slice2_CalPeriod, int slice6_CalPeriod, int tdasCalPeriod,
int powerpro_CalPeriod, int slice6Air_CalPeriod, int slice6DB_CalPeriod, int tsrAir_CalPeriod, int slice6AirBridge_CalPeriod, int sliceTcCalPeriod);
}
}