VideoPage.xaml.h 6.02 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
/**************************************************************************
* Copyright (C) 2016 by Savoir-faire Linux                                *
* Author: Jger Nicolas <nicolas.jager@savoirfairelinux.com>              *
* Author: Traczyk Andreas <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/>.   *
**************************************************************************/
19 20
#pragma once

Nicolas Jager's avatar
Nicolas Jager committed
21
#include "VideoPage.g.h"
22
#include "MessageTextPage.xaml.h"
Nicolas Jager's avatar
Nicolas Jager committed
23

24 25
using namespace Platform;
using namespace Concurrency;
Nicolas Jager's avatar
Nicolas Jager committed
26 27
using namespace Windows::Media::Capture;
using namespace Windows::UI::Xaml::Navigation;
atraczyk's avatar
atraczyk committed
28
using namespace Windows::UI::Xaml;
29
using namespace Windows::UI::Xaml::Media;
atraczyk's avatar
atraczyk committed
30 31
using namespace Windows::ApplicationModel::Core;
using namespace Windows::Devices::Enumeration;
32
using namespace Windows::UI::Xaml::Input;
atraczyk's avatar
atraczyk committed
33

Nicolas Jager's avatar
Nicolas Jager committed
34 35 36 37 38
namespace RingClientUWP
{
/* delegate */
delegate void PressHangUpCall();
delegate void PauseCall();
39
delegate void ChatPanelCall(); // nobody use this ?
Nicolas Jager's avatar
Nicolas Jager committed
40 41 42 43 44 45 46 47 48 49 50 51 52 53
delegate void AddContactCall();
delegate void TransferCall();
delegate void SwitchMicrophoneStateCall();
delegate void SwitchVideoStateCall();
delegate void ReccordVideoCall();
delegate void QualityVideoLevelCall();

namespace Views
{

public ref class VideoPage sealed
{
public:
    VideoPage();
54 55
    void updatePageContent();

56 57 58
    property bool barFading {
        bool get(){ return barFading_; }
        void set(bool value) { barFading_ = value; }
Nicolas Jager's avatar
Nicolas Jager committed
59 60
    }

61
    void scrollDown();
62
    void screenVideo(bool state);
63

Nicolas Jager's avatar
Nicolas Jager committed
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
protected:
    virtual void OnNavigatedTo(Windows::UI::Xaml::Navigation::NavigationEventArgs^ e) override;

internal:
    /* events */
    event PressHangUpCall^ pressHangUpCall;
    event PauseCall^ pauseCall;
    event ChatPanelCall^ chatPanelCall;
    event AddContactCall^ addContactCall;
    event TransferCall^ transferCall;
    event SwitchMicrophoneStateCall^ switchMicrophoneStateCall;
    event SwitchVideoStateCall^ switchVideoStateCall;
    event ReccordVideoCall^ reccordVideoCall;
    event QualityVideoLevelCall^ qualityVideoLevelCall;

private:
    bool barFading_;
81

82 83 84 85 86 87 88 89
    // For transforming the preview image
    double userPreviewHeightModifier = 0.0;
    bool isResizingPreview = false;
    int lastQuadrant = 0;
    int quadrant = 0;
    TransformGroup^ PreviewImage_transforms;
    MatrixTransform^ PreviewImage_previousTransform;
    CompositeTransform^ PreviewImage_deltaTransform;
Nicolas Jager's avatar
Nicolas Jager committed
90

atraczyk's avatar
atraczyk committed
91
    Concurrency::task<void> WriteFrameAsSoftwareBitmapAsync(String^ id, uint8_t* buf, int width, int height);
92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
    void _sendBtn__Click(Platform::Object^ sender, RoutedEventArgs^ e);
    void _messageTextBox__KeyDown(Object^ sender, KeyRoutedEventArgs^ e);
    void sendMessage();
    void Button_Click(Object^ sender, RoutedEventArgs^ e);
    void _btnCancel__Click(Object^ sender, RoutedEventArgs^ e);
    void _btnHangUp__Tapped(Object^ sender, TappedRoutedEventArgs^ e);
    void _btnPause__Tapped(Object^ sender, TappedRoutedEventArgs^ e);
    void _btnChat__Tapped(Object^ sender, TappedRoutedEventArgs^ e);
    void _btnAddFriend__Tapped(Object^ sender, TappedRoutedEventArgs^ e);
    void _btnSwitch__Tapped(Object^ sender, TappedRoutedEventArgs^ e);
    void _btnMicrophone__Tapped(Object^ sender, TappedRoutedEventArgs^ e);
    void _btnMemo__Tapped(Object^ sender, TappedRoutedEventArgs^ e);
    void _btnHQ__Tapped(Object^ sender, TappedRoutedEventArgs^ e);
    void _btnVideo__Tapped(Object^ sender, TappedRoutedEventArgs^ e);
    void _videoControl__PointerMoved(Object^ sender, PointerRoutedEventArgs^ e);
    void btnAny_entered(Object^ sender, PointerRoutedEventArgs^ e);
    void btnAny_exited(Object^ sender, PointerRoutedEventArgs^ e);
    void _btnVideo__Click(Object^ sender, RoutedEventArgs^ e);
    void _btnMicrophone__Click(Object^ sender, RoutedEventArgs^ e);
    void IncomingVideoImage_DoubleTapped(Object^ sender, DoubleTappedRoutedEventArgs^ e);
    void OnincomingMessage(String ^callId, String ^payload);
    void OnincomingVideoMuted(String ^callId, bool state);
114 115
    void OnstartPreviewing();
    void OnstopPreviewing();
116
    void OnaudioMuted(const std::string &callId, bool state);
117
    void OnvideoMuted(const std::string &callId, bool state);
118 119 120 121 122 123 124 125 126 127 128 129 130 131

    // For transforming the preview image
    void computeQuadrant();
    void arrangeResizer();
    void anchorPreview();
    void updatePreviewFrameDimensions();
    void InitManipulationTransforms();
    void PreviewImage_ManipulationDelta(Object^ sender, ManipulationDeltaRoutedEventArgs^ e);
    void PreviewImage_ManipulationCompleted(Object^ sender, ManipulationCompletedRoutedEventArgs^ e);
    void PreviewImageResizer_ManipulationDelta(Object^ sender, ManipulationDeltaRoutedEventArgs^ e);
    void PreviewImageResizer_ManipulationCompleted(Object^ sender, ManipulationCompletedRoutedEventArgs^ e);
    void PreviewImage_PointerReleased(Object^ sender, PointerRoutedEventArgs^ e);
    void PreviewImageResizer_PointerEntered(Object^ sender, PointerRoutedEventArgs^ e);
    void PreviewImageResizer_PointerExited(Object^ sender, PointerRoutedEventArgs^ e);
Nicolas Jager's avatar
Nicolas Jager committed
132 133 134
};
}
}