Exemplo n.º 1
0
 public SelectGroupViewModel(IGroupsClient groupsClient, INavigator navigator, RopuClient ropuClient)
 {
     _groupsClient    = groupsClient;
     _navigator       = navigator;
     _ropuClient      = ropuClient;
     Title            = "Browse";
     Items            = new ObservableCollection <Group>();
     LoadItemsCommand = new AsyncCommand(async() => await ExecuteLoadItemsCommand());
 }
Exemplo n.º 2
0
        public PttViewModel(
            RopuClient ropuClient,
            ISettingsManager settingsManager,
            IGroupsClient groupsClient,
            IUsersClient usersClient,
            ImageClient imageClient,
            IColorService <ColorT> colorService,
            Action <Func <Task> > invoke,
            IPermissionService permissionService,
            RopuWebClient webClient,
            INavigator navigator)
        {
            _navigator  = navigator;
            _ropuClient = ropuClient;
            _webClient  = webClient;

            _ropuClient.StateChanged += (sender, args) =>
            {
                invoke(ChangeState);
            };
            _ropuClient.IdleGroupChanged += async(sender, args) =>
            {
                await UpdateIdleGroup();
                await ChangeState();
            };
            _groupsClient = groupsClient;
            _usersClient  = usersClient;
            _imageClient  = imageClient;

            _settingsManager   = settingsManager;
            _colorService      = colorService;
            _permissionService = permissionService;

            Blue  = _colorService.FromRgb(0x3193e3);
            Green = _colorService.FromRgb(0x31e393);
            Gray  = _colorService.FromRgb(0x999999);
            Red   = _colorService.FromRgb(0xFF6961);

            _pttColor          = Gray;
            _receivingColor    = Red;
            _transmittingColor = Green;

            _state = _ropuClient.State.ToString();
        }
Exemplo n.º 3
0
 public RopuApplication(RopuClient ropuClient)
 {
     _ropuClient = ropuClient;
 }
Exemplo n.º 4
0
        static void Main(string[] args)
        {
            const ushort controlPortStarting = 5061;

            var settingsManager = new CommandLineClientSettingsReader();

            if (!settingsManager.ParseArgs(args))
            {
                return;
            }

            var settings = settingsManager.ClientSettings;

            var webClient = new RopuWebClient("https://192.168.1.9:5001/", settingsManager);

            var keysClient       = new KeysClient(webClient, false, encryptionKey => new CachedEncryptionKey(encryptionKey, key => new AesGcmWrapper(key)));
            var packetEncryption = new PacketEncryption(keysClient);

            var protocolSwitch    = new ProtocolSwitch(controlPortStarting, new PortFinder(), packetEncryption, keysClient, settings);
            var servingNodeClient = new ServingNodeClient(protocolSwitch);

            IAudioSource audioSource =
                settings.FileMediaSource != null ?
                (IAudioSource) new FileAudioSource(settings.FileMediaSource) :
                (IAudioSource) new PulseAudioSimple(StreamDirection.Record, "RopuInput");

            var audioPlayer            = new PulseAudioSimple(StreamDirection.Playback, "RopuOutput");
            var audioCodec             = new OpusCodec();
            var jitterBuffer           = new AdaptiveJitterBuffer(2, 50);
            var mediaClient            = new MediaClient(protocolSwitch, audioSource, audioPlayer, audioCodec, jitterBuffer, settings);
            var callManagementProtocol = new LoadBalancerProtocol(new PortFinder(), 5079, packetEncryption, keysClient);

            var beepPlayer = new BeepPlayer(new PulseAudioSimple(StreamDirection.Playback, "RopuBeeps"));


            var ropuClient = new RopuClient(protocolSwitch, servingNodeClient, mediaClient, callManagementProtocol, settings, beepPlayer, webClient, keysClient);

            var application = new RopuApplication(ropuClient);

            var imageService = new ImageService();

            //TODO: get web address from config
            var imageClient  = new ImageClient(webClient);
            var groupsClient = new GroupsClient(webClient, imageClient);
            var usersClient  = new UsersClient(webClient);
            //settings.UserId = usersClient.GetCurrentUser().Result.Id;
            var pttPage = new PttPage(imageService);

            var navigator = new Navigator();

            var colorService = new ColorService();

            navigator.Register <LoginViewModel, LoginView>(() => new LoginView(new LoginViewModel(navigator, webClient, settingsManager), imageService));

            navigator.Register <SignupViewModel, SignupPage>(() => new SignupPage(new SignupViewModel(navigator, usersClient), imageService));

            Action <Func <Task> > invoke = toDo => Application.Instance.Invoke(toDo);

            var permissionServices = new PermissionServices();

            var pttView = new PttView(new PttViewModel <Color>(ropuClient, settingsManager, groupsClient, usersClient, imageClient, colorService, invoke, permissionServices, webClient, navigator), pttPage);

            navigator.Register <PttViewModel <Color>, PttView>(() => pttView);
            navigator.RegisterView("HomeRightPanel", "PttView", () => pttView);


            var homeView = new HomeView(new HomeViewModel(navigator), navigator, colorService);

            navigator.Register <HomeViewModel, HomeView>(() => homeView);

            var browseGroupsView = new BrowseGroupsView(new BrowseGroupsViewModel(groupsClient, navigator));

            navigator.Register <BrowseGroupsViewModel, BrowseGroupsView>(() => browseGroupsView);

            Func <Group, BrowseGroupView> browseGroupViewBuilder = group => new BrowseGroupView(new BrowseGroupViewModel(group, groupsClient, settings, navigator), imageService, navigator, colorService);

            navigator.Register <BrowseGroupViewModel, BrowseGroupView, Group>(group => browseGroupViewBuilder(group));

            var selectIdleGroupView = new SelectIdleGroupView(new SelectGroupViewModel(groupsClient, navigator, ropuClient));

            navigator.RegisterView("HomeRightPanel", "SelectIdleGroupView", () => selectIdleGroupView);

            var mainForm = new MainView(navigator, new MainViewModel(settings, navigator));

            mainForm.Icon = imageService.Ropu;

            var ignore = navigator.ShowModal <HomeViewModel>();

            ignore = navigator.ShowPttView();
            application.Run(mainForm);
        }