diff --git a/client/janus_gateway_win/usocket_test/peer_connection.cpp b/client/janus_gateway_win/usocket_test/peer_connection.cpp index 9dcdc83..8bf35c6 100644 --- a/client/janus_gateway_win/usocket_test/peer_connection.cpp +++ b/client/janus_gateway_win/usocket_test/peer_connection.cpp @@ -11,9 +11,6 @@ #include "modules/video_capture/video_capture_factory.h" - - - std::string IceGatheringStateName(webrtc::PeerConnectionInterface::IceGatheringState w) { switch (w) { case webrtc::PeerConnectionInterface::IceGatheringState::kIceGatheringNew: diff --git a/client/rtmp_demo/yuvgl/depency/conanfile.txt b/client/rtmp_demo/yuvgl/depency/conanfile.txt new file mode 100644 index 0000000..3134468 --- /dev/null +++ b/client/rtmp_demo/yuvgl/depency/conanfile.txt @@ -0,0 +1,4 @@ +[requires] +ffmpeg/4.2.1 +[imports] +.,* -> ./third/msvc32 @ folder=True, ignore_case=True, excludes=*.html *.jpeg \ No newline at end of file diff --git a/client/webrtc_demo/qss/css/QssMainWindow.css b/client/webrtc_demo/qss/css/QssMainWindow.css new file mode 100644 index 0000000..3a28dc5 --- /dev/null +++ b/client/webrtc_demo/qss/css/QssMainWindow.css @@ -0,0 +1,8 @@ + +QFrame#window { + border: 1px solid black; + font-style: normal; + background: rgb(239,242,245); +} + + diff --git a/client/webrtc_demo/qss/css/QssTitleBar.css b/client/webrtc_demo/qss/css/QssTitleBar.css new file mode 100644 index 0000000..90be03b --- /dev/null +++ b/client/webrtc_demo/qss/css/QssTitleBar.css @@ -0,0 +1,65 @@ +QWidget#qssTitleBar{ + color: white; + background: rgb(51,101,177); + border: 0px; + margin: 0px; + +} +QWidget#qssTitleBar > QPushButton#titlebaricon{ + background: rgb(51,101,177); + width: 25px; + height:25px; +} + +QWidget#qssTitleBar > QPushButton#titlebarclosebtn{ + image: url(":/qss/icon/btn_close_down.svg"); + background: rgb(51,101,177); + width: 25px; + height:25px; + margin-left: 1px; +} +QWidget#qssTitleBar >QPushButton#titlebarmaxbtn{ + background: rgb(51,101,177); + width: 25px; + height:25px; + margin-left: 1px; + image: url(":/qss/icon/btn_max_normal.svg"); + +} +QWidget#qssTitleBar >QPushButton#titlebarclosebtn:enabled:hover{ + background: red; +} +QWidget#qssTitleBar >QPushButton#titlebarminbtn{ + image: url(":/qss/icon/btn_mini_down.svg"); + background: rgb(51,101,177); + width: 25px; + height:25px; + margin-left: 1px; +} +QWidget#qssTitleBar >QPushButton#titlebarminbtn:enabled:hover{ + background: rgb(187, 212, 238); +} +QWidget#qssTitleBar >QPushButton#titlebarrestorebtn{ + image: url(":/qss/icon/btn_max_normal.svg"); + background: rgb(187, 212, 238); + width: 25px; + height:25px; + margin-left: 1px; + margin-right: 2px; +} +QWidget#qssTitleBar >QPushButton#titlebarrestorebtn:enabled:hover{ + background: rgb(187, 212, 238); +} +QWidget#qssTitleBar >QPushButton#btn_serial:!enabled { + background: rgb(180, 180, 180); + color: white; +} +QWidget#qssTitleBar >QPushButton#titlebarmaxbtn:enabled:hover{ + background: rgb(100, 160, 220); +} +QWidget#qssTitleBar > QLabel#title{ + color: white; + font-size: 13px; + font-family: monospace; +} + diff --git a/client/webrtc_demo/qss/css/basic.css b/client/webrtc_demo/qss/css/basic.css new file mode 100644 index 0000000..3299e21 --- /dev/null +++ b/client/webrtc_demo/qss/css/basic.css @@ -0,0 +1,149 @@ + +QPushButton:enabled { + background: rgb(22,155,213); + color: white; + border-radius:3px; +} + +QPushButton:!enabled { + background: white; + color: black; +} + +QPushButton:enabled:hover { + background: rgb(100, 160, 220); +} + +QPushButton:enabled:pressed { + background: rgb(120, 170, 220); +} + + + +QLabel{ + +} +/**********下拉列表**********/ +QComboBox { + height: 25px; + border: 1px solid rgb(111, 156, 207); + background: white; + border-radius:3px; +} + +QComboBox:enabled { + color: rgb(84, 84, 84); +} + +QComboBox:!enabled { + color: rgb(80, 80, 80); +} + +QComboBox:enabled:hover, QComboBox:enabled:focus { + color: rgb(51, 51, 51); +} + +QComboBox::drop-down { + width: 20px; + border: none; + background: transparent; +} + +QComboBox::drop-down:hover { + background: rgba(0, 0, 0, 30); +} + +QComboBox::down-arrow { + image: url(:/qss/icon/combo_arrow.png); + max-height:30%; + max-width: 30%; +} + +QComboBox::down-arrow:on { + top: 1px; +} + +QComboBox QAbstractItemView { + border: 1px solid rgb(111, 156, 207); + background: white; + outline: none; +} + +QComboBox QAbstractItemView::item { + height: 25px; + color: rgb(73, 73, 73); +} + +QComboBox QAbstractItemView::item:selected { + background: rgb(232, 241, 250); + color: rgb(2, 65, 132); +} + + + +QTabWidget{ + margin-left:10; + background: rgb(239,242,245); + +} + +QTabWidget::pane { + border: none; + +} + +QTabWidget::tab-bar { + border: none; +} + +QTabBar::tab { + border: none; + border-top-left-radius: 4px; + color: white; + background: rgb(239,242,245); + color: black; + + height: 28px; + min-width: 85px; + margin-right: 5px; +} + +QTabBar::tab:hover { + background: rgb(51,101,177); +} + +QTabBar::tab:selected { + color: white; + background: rgb(51,101,177); +} + + +QTableView { + border: none; +} +QTableView::item { + padding-left: 5px; + padding-right: 5px; + background: white; +} +QTableView::item:selected { + border: 1px solid black; + color: rgb(65, 65, 65); + +} +QTableView::item:selected:!active { + color: rgb(65, 65, 65); +} +QTableView::indicator { + border: 1px solid black; + + width: 20px; + height: 20px; +} + + +QLineEdit { + border: 1px solid rgb(111, 156, 207); + background: white; + border-radius:3px; +} diff --git a/client/webrtc_demo/qss/css/corrugation_form.css b/client/webrtc_demo/qss/css/corrugation_form.css new file mode 100644 index 0000000..b7e5d55 --- /dev/null +++ b/client/webrtc_demo/qss/css/corrugation_form.css @@ -0,0 +1,192 @@ + +QPushButton:enabled { + background: rgb(22,155,213); + color: white; + border-radius:3px; +} + +QPushButton:!enabled { + background: white; + color: black; +} + +QPushButton:enabled:hover { + background: rgb(100, 160, 220); +} + +QPushButton:enabled:pressed { + background: rgb(120, 170, 220); +} + + +QPushButton#pushButton:enabled { + background: white; + color: black; + border-radius:3px; +} + +QPushButton#pushButton:!enabled { + background: rgb(180, 180, 180); + color: white; +} + +QPushButton#pushButton:enabled:hover{ + background: rgb(100, 160, 220); +} + +QPushButton#pushButton:enabled:pressed{ + background: rgb(120, 170, 220); +} + +QLabel{ + font-size: 13px; +} +/**********б**********/ +QComboBox { + height: 25px; + border: 1px solid rgb(111, 156, 207); + background: white; + border-radius:3px; +} + +QComboBox:enabled { + color: rgb(84, 84, 84); +} + +QComboBox:!enabled { + color: rgb(80, 80, 80); +} + +QComboBox:enabled:hover, QComboBox:enabled:focus { + color: rgb(51, 51, 51); +} + +QComboBox::drop-down { + width: 20px; + border: none; + background: transparent; +} + +QComboBox::drop-down:hover { + background: rgba(0, 0, 0, 30); +} + +QComboBox::down-arrow { + image: url(:/qss/icon/combo_arrow.png); + max-height:30%; + max-width: 30%; +} + +QComboBox::down-arrow:on { + top: 1px; +} + +QComboBox QAbstractItemView { + border: 1px solid rgb(111, 156, 207); + background: white; + outline: none; +} + +QComboBox QAbstractItemView::item { + height: 25px; + color: rgb(73, 73, 73); +} + +QComboBox QAbstractItemView::item:selected { + background: rgb(232, 241, 250); + color: rgb(2, 65, 132); +} + + + +QTabWidget{ + margin-left:10; + background: rgb(239,242,245); + +} + +QTabWidget::pane { + border: none; + +} + +QTabWidget::tab-bar { + border: none; +} + +QTabBar::tab { + border: none; + border-top-left-radius: 4px; + color: white; + background: rgb(239,242,245); + color: black; + + height: 28px; + min-width: 85px; + margin-right: 5px; +} + +QTabBar::tab:hover { + background: rgb(51,101,177); +} + +QTabBar::tab:selected { + color: white; + background: rgb(51,101,177); +} + + +QTableView { + border: 1px solid grey; +} +QTableView::item { + padding-left: 5px; + padding-right: 5px; + background: white; +} +QTableView::item:selected { + border: 1px solid black; + background: rgba(255, 255, 255, 30); + color: black; +} +QTableView::item:selected:!active { + color: rgb(65, 65, 65); +} +QTableView::indicator { + border: 1px solid black; + + width: 20px; + height: 20px; +} + + +QTableView::indicator:enabled:unchecked { + + image: url(:/White/checkBox); +} +QTableView::indicator:enabled:unchecked:hover { + image: url(:/White/checkBoxHover); +} +QTableView::indicator:enabled:unchecked:pressed { + image: url(:/White/checkBoxPressed); +} +QTableView::indicator:enabled:checked { + image: url(:/White/checkBoxChecked); +} +QTableView::indicator:enabled:checked:hover { + image: url(:/White/checkBoxCheckedHover); +} +QTableView::indicator:enabled:checked:pressed { + image: url(:/White/checkBoxCheckedPressed); +} +QTableView::indicator:enabled:indeterminate { + image: url(:/White/checkBoxIndeterminate); +} +QTableView::indicator:enabled:indeterminate:hover { + image: url(:/White/checkBoxIndeterminateHover); +} +QTableView::indicator:enabled:indeterminate:pressed { + image: url(:/White/checkBoxIndeterminatePressed); +} + + diff --git a/client/webrtc_demo/qss/css/dark.css b/client/webrtc_demo/qss/css/dark.css new file mode 100644 index 0000000..c7021da --- /dev/null +++ b/client/webrtc_demo/qss/css/dark.css @@ -0,0 +1,866 @@ +/* +Colour scheme used: +- White (text): #eff0f1 +- Dark black (main bg): #272a2d +- Lighter dark black (menu bar): #373b3f +- Dark blue: #18465d +- Gray: #76797C +- Red (accents): #db1c49 + +Useful reference on QSS: + - http://doc.qt.io/qt-5/stylesheet-reference.html#alternate-background-color-prop + +Be sure to change all image urls to the appropriate folder on your system. +*/ + + +QPushButton#btn_serial:enabled { + border-image: url(:/qss/icon/btn_serial.png); + background: rgb(120, 170, 220); + color: white; + margin-left: 10; + margin-top:5; +} +QPushButton#btn_serial:!enabled { + background: rgb(180, 180, 180); + color: white; +} + +QPushButton#btn_serial:enabled:hover{ + background: rgb(100, 160, 220); +} +QPushButton#btn_serial:enabled:pressed{ + background: rgb(0, 78, 161); +} + + +QPushButton#btn_process:enabled { + background: rgb(120, 170, 220); + color: white; + margin-left: 5; + margin-top:5; +} +QPushButton#btn_process:!enabled { + background: rgb(180, 180, 180); + color: white; +} +QPushButton#btn_process:enabled:hover{ + background: rgb(100, 160, 220); +} +QPushButton#btn_process:enabled:pressed{ + background: rgb(0, 78, 161); +} + +/*================================================================ +QWidget +================================================================*/ +QWidget { + color: #eff0f1; + background-color: #272a2d; + selection-background-color: #db1c49; + selection-color: #eff0f1; +} + +QWidget::item:hover { + background-color: #18465d; + color: #eff0f1; +} + +QWidget::item:selected { + background-color: #18465d; +} + +/*================================================================ +QCheckBox/QGroupBox +================================================================*/ +QCheckBox { + spacing: 5px; + outline: none; + color: #eff0f1; + margin-bottom: 2px; +} + +QCheckBox:disabled { + color: #76797C; +} + +QCheckBox::indicator, +QGroupBox::indicator { + width: 18px; + height: 18px; +} + +QGroupBox::indicator { + margin-left: 2px; +} + +QCheckBox::indicator:unchecked { + image: url(C:/Users/user/AppData/Roaming/TeXstudio/rc/checkbox_unchecked.png); +} + +QCheckBox::indicator:unchecked:hover, +QCheckBox::indicator:unchecked:focus, +QCheckBox::indicator:unchecked:pressed, +QGroupBox::indicator:unchecked:hover, +QGroupBox::indicator:unchecked:focus, +QGroupBox::indicator:unchecked:pressed { + border: none; + image: url(C:/Users/user/AppData/Roaming/TeXstudio/rc/checkbox_unchecked_focus.png); +} + +QCheckBox::indicator:checked { + image: url(C:/Users/user/AppData/Roaming/TeXstudio/rc/checkbox_checked.png); +} + +QCheckBox::indicator:checked:hover, +QCheckBox::indicator:checked:focus, +QCheckBox::indicator:checked:pressed, +QGroupBox::indicator:checked:hover, +QGroupBox::indicator:checked:focus, +QGroupBox::indicator:checked:pressed { + border: none; + image: url(C:/Users/user/AppData/Roaming/TeXstudio/rc/checkbox_checked_focus.png); +} + +QCheckBox::indicator:indeterminate { + image: url(C:/Users/user/AppData/Roaming/TeXstudio/rc/checkbox_indeterminate.png); +} + +QCheckBox::indicator:indeterminate:focus, +QCheckBox::indicator:indeterminate:hover, +QCheckBox::indicator:indeterminate:pressed { + image: url(C:/Users/franc/AppData/Roaming/TeXstudio/rc/checkbox_indeterminate_focus.png); +} + +QCheckBox::indicator:checked:disabled, +QGroupBox::indicator:checked:disabled { + image: url(C:/Users/user/AppData/Roaming/TeXstudio/rc/checkbox_checked_disabled.png); +} + +QCheckBox::indicator:unchecked:disabled, +QGroupBox::indicator:unchecked:disabled { + image: url(C:/Users/user/AppData/Roaming/TeXstudio/rc/checkbox_unchecked_disabled.png); +} + +/*================================================================ +QMenuBar - e.g. Main toolbar (file/edit/idefix etc.) +================================================================*/ +QMenuBar { + color: #eff0f1; + background-color: #373b3f; +} + +QMenuBar::item { + background: transparent; +} + +/*================================================================ +QMenu +================================================================*/ +QMenu { + border: 1px solid #76797C; + color: #eff0f1; + margin: 2px; +} + +QMenu::separator { + height: 2px; + background: #76797C; + margin-left: 5px; + margin-right: 5px; +} + +/*================================================================ +QToolbar +================================================================*/ +QToolBar { + border: 1px solid #393838; + background: 1px solid #272a2d; + font-weight: bold; +} + +QToolBar::handle:horizontal { + image: url(C:/Users/user/AppData/Roaming/TeXstudio/rc/Hmovetoolbar.png); +} + +QToolBar::handle:vertical { + image: url(C:/Users/user/AppData/Roaming/TeXstudio/rc/Vmovetoolbar.png); +} + +QToolBar::separator:horizontal { + width: 2px; + margin: 3px 10px; + background-color: #76797C; +} + +QToolBar::separator:vertical { + height: 2px; + margin: 10px 3px; + background-color: #76797C; +} + +/*================================================================ +QScrollBar - e.g. Scrollbar in internal PDFviewer, editor window etc. +================================================================*/ +QScrollBar:horizontal { + height: 25px; + margin: 3px 27px 3px 27px; + border: 1px transparent #2A2929; + border-radius: 4px; + background-color: #000000; +} + +QScrollBar::handle:horizontal { + background-color: #76797C; + min-width: 15px; + border-radius: 4px; +} + +QScrollBar::add-line:horizontal { + margin: 0px 3px 0px 3px; + border-image: url(C:/Users/user/AppData/Roaming/TeXstudio/rc/right_arrow_disabled.png); + width: 20px; + height: 20px; + subcontrol-position: right; + subcontrol-origin: margin; +} + +QScrollBar::sub-line:horizontal { + margin: 0px 3px 0px 3px; + border-image: url(C:/Users/user/AppData/Roaming/TeXstudio/rc/left_arrow_disabled.png); + height: 20px; + width: 20px; + subcontrol-position: left; + subcontrol-origin: margin; +} + +QScrollBar::add-line:horizontal:hover, +QScrollBar::add-line:horizontal:on { + border-image: url(C:/Users/user/AppData/Roaming/TeXstudio/rc/right_arrow.png); + height: 20px; + width: 20px; + subcontrol-position: right; + subcontrol-origin: margin; +} + +QScrollBar::sub-line:horizontal:hover, +QScrollBar::sub-line:horizontal:on { + border-image: url(C:/Users/user/AppData/Roaming/TeXstudio/rc/left_arrow.png); + height: 20px; + width: 20px; + subcontrol-position: left; + subcontrol-origin: margin; +} + +QScrollBar::up-arrow:horizontal, +QScrollBar::down-arrow:horizontal { + background: none; +} + +QScrollBar::add-page:horizontal, +QScrollBar::sub-page:horizontal { + background: none; +} + +QScrollBar:vertical { + background-color: #000000; + width: 25px; + margin: 27px 3px 27px 3px; + border: 1px solid #2A2929; + border-radius: 4px; +} + +QScrollBar::handle:vertical { + background-color: #76797C; + min-height: 15px; + border-radius: 4px; +} + +QScrollBar::sub-line:vertical { + margin: 3px 0px 3px 0px; + border-image: url(C:/Users/user/AppData/Roaming/TeXstudio/rc/up_arrow_disabled.png); + height: 20px; + width: 20px; + subcontrol-position: top; + subcontrol-origin: margin; +} + +QScrollBar::add-line:vertical { + margin: 3px 0px 3px 0px; + border-image: url(C:/Users/user/AppData/Roaming/TeXstudio/rc/down_arrow_disabled.png); + height: 20px; + width: 20px; + subcontrol-position: bottom; + subcontrol-origin: margin; +} + +QScrollBar::sub-line:vertical:hover, +QScrollBar::sub-line:vertical:on { + border-image: url(C:/Users/user/AppData/Roaming/TeXstudio/rc/up_arrow.png); + height: 20px; + width: 20px; + subcontrol-position: top; + subcontrol-origin: margin; +} + +QScrollBar::add-line:vertical:hover, +QScrollBar::add-line:vertical:on { + border-image: url(C:/Users/user/AppData/Roaming/TeXstudio/rc/down_arrow.png); + height: 20px; + width: 20px; + subcontrol-position: bottom; + subcontrol-origin: margin; +} + +QScrollBar::up-arrow:vertical, +QScrollBar::down-arrow:vertical { + background: none; +} + +QScrollBar::add-page:vertical, +QScrollBar::sub-page:vertical { + background: none; +} + +/*================================================================ +QTabBar - e.g. File tabs (top), Bottom panel tabs (top), Autocompleter window tabs (bottom) +================================================================*/ +QTabBar { + qproperty-drawBase: 0; /* important */ + background-color: transparent; +} + +/* Workaround for QTabBars created from docked QDockWidgets which don't draw the border if not set and reseted as follows: */ +QTabBar { + border-top: 1px transparent #76797C; /* set color for all QTabBars */ +} +QDialog QTabBar { + border-color: transparent; /* set color for QTabBars inside Preferences dialog */ +} +/* */ + +QTabBar::close-button { + image: url(C:/Users/user/AppData/Roaming/TeXstudio/rc/close.png); + background: transparent; + margin-top: 6px; + margin-bottom: 6px; +} + +QTabBar::close-button:hover { + image: url(C:/Users/user/AppData/Roaming/TeXstudio/rc/close-hover.png); + background: transparent; + margin-top: 6px; + margin-bottom: 6px; +} + +QTabBar::close-button:pressed { + image: url(C:/Users/user/AppData/Roaming/TeXstudio/rc/close-pressed.png); + background: transparent; + margin-top: 6px; + margin-bottom: 6px; +} + +/* TOP TABS */ + +QTabBar::tab:top { + color: #eff0f1; + border: 1px solid #76797C; + border-bottom: 1px transparent black; + background-color: #31363b; + padding: 5px; + min-width: 50px; + border-top-left-radius: 6px; + border-top-right-radius: 6px; +} + +QTabBar::tab:top:selected { + color: #eff0f1; + background-color: #54575B; + border: 2px solid #76797C; + border-bottom: 3px solid #3daee9; + border-top-left-radius: 6px; + border-top-right-radius: 6px; +} + +QTabBar::tab:top:!selected:hover { + background-color: #18465d; +} + +/* BOTTOM TABS */ + +QTabBar::tab:bottom { + color: #eff0f1; + border: 1px solid #76797C; + border-top: 1px transparent black; + background-color: #31363b; + padding: 5px; + border-bottom-left-radius: 6px; + border-bottom-right-radius: 6px; + min-width: 50px; +} + +QTabBar::tab:bottom:selected { + color: #eff0f1; + background-color: #54575B; + border: 2px solid #76797C; + border-top: 3px solid #3daee9; + border-bottom-left-radius: 6px; + border-bottom-right-radius: 6px; +} + +QTabBar::tab:bottom:!selected:hover { + background-color: #18465d; +} + +/*================================================================ +QDockWidget - e.g. "Search" header in internal PDF viewer +================================================================*/ +QDockWidget { + titlebar-close-icon: url(C:/Users/user/AppData/Roaming/TeXstudio/rc/transparent.png); + titlebar-normal-icon: url(C:/Users/user/AppData/Roaming/TeXstudio/rc/transparent.png); +} + +QDockWidget::title { + background: #373b3f; + color: transparent; + border: 1px transparent; + text-align: left; +} + +QDockWidget::close-button, +QDockWidget::float-button { + border: transparent; + padding: 0px; + icon-size: 25px; + background: transparent; +} + +QDockWidget::float-button { + image: url(C:/Users/user/AppData/Roaming/TeXstudio/rc/undock.png); + subcontrol-position: right center; + left: -50px; +} + +QDockWidget::close-button { + image: url(C:/Users/user/AppData/Roaming/TeXstudio/rc/close.png); + subcontrol-position: right center; + left: -10px; +} + +QDockWidget::float-button:hover { + image: url(C:/Users/user/AppData/Roaming/TeXstudio/rc/undock-pressed.png); + subcontrol-position: right center; + left: -50px; +} + +QDockWidget::close-button:hover { + image: url(C:/Users/user/AppData/Roaming/TeXstudio/rc/close-pressed.png); + subcontrol-position: right center; + left: -10px; +} + +QDockWidget::close-button:pressed { + padding: 2px -2px -2px 2px; + image: url(C:/Users/user/AppData/Roaming/TeXstudio/rc/close-pressed.png); +} + +QDockWidget::float-button:pressed { + padding: 2px -2px -2px 2px; + image: url(C:/Users/user/AppData/Roaming/TeXstudio/rc/undock-pressed.png); +} + +QDockWidget QListView { + outline: 0; + background: #272a2d; + alternate-background-color: #373b3f; + color: #eff0f1; +} + +/*================================================================ +QTreeView, QListView +================================================================*/ +QTreeView, +QListView { + border: 1px solid #76797C; + background-color: #232629; +} + +QTreeView:branch:selected, +QTreeView:branch:hover { + background: url(C:/Users/user/AppData/Roaming/TeXstudio/rc/transparent.png); +} + +QTreeView::branch:has-siblings:!adjoins-item { + border-image: url(C:/Users/user/AppData/Roaming/TeXstudio/rc/transparent.png); +} + +QTreeView::branch:has-siblings:adjoins-item { + border-image: url(C:/Users/user/AppData/Roaming/TeXstudio/rc/transparent.png); +} + +QTreeView::branch:!has-children:!has-siblings:adjoins-item { + border-image: url(C:/Users/user/AppData/Roaming/TeXstudio/rc/transparent.png); +} + +QTreeView::branch:has-children:!has-siblings:closed, +QTreeView::branch:closed:has-children:has-siblings { + image: url(C:/Users/user/AppData/Roaming/TeXstudio/rc/branch_closed.png); +} + +QTreeView::branch:open:has-children:!has-siblings, +QTreeView::branch:open:has-children:has-siblings { + image: url(C:/Users/user/AppData/Roaming/TeXstudio/rc/branch_open.png); +} + +QTreeView::branch:has-children:!has-siblings:closed:hover, +QTreeView::branch:closed:has-children:has-siblings:hover { + image: url(C:/Users/user/AppData/Roaming/TeXstudio/rc/branch_closed-on.png); +} + +QTreeView::branch:open:has-children:!has-siblings:hover, +QTreeView::branch:open:has-children:has-siblings:hover { + image: url(C:/Users/user/AppData/Roaming/TeXstudio/rc/branch_open-on.png); +} + +QListView::item:!selected:hover, +QTreeView::item:!selected:hover { + background: #18465d; + outline: 0; + color: #eff0f1; +} + +QListView::item:selected:hover, +QTreeView::item:selected:hover { + background: #287399; + color: #eff0f1; +} + +QTreeView::indicator:checked, +QListView::indicator:checked { + image: url(C:/Users/user/AppData/Roaming/TeXstudio/rc/checkbox_checked.png); +} + +QTreeView::indicator:unchecked, +QListView::indicator:unchecked { + image: url(C:/Users/user/AppData/Roaming/TeXstudio/rc/checkbox_unchecked.png); +} + +QTreeView::indicator:checked:hover, +QTreeView::indicator:checked:focus, +QTreeView::indicator:checked:pressed, +QListView::indicator:checked:hover, +QListView::indicator:checked:focus, +QListView::indicator:checked:pressed { + image: url(C:/Users/user/AppData/Roaming/TeXstudio/rc/checkbox_checked_focus.png); +} + +QTreeView::indicator:unchecked:hover, +QTreeView::indicator:unchecked:focus, +QTreeView::indicator:unchecked:pressed, +QListView::indicator:unchecked:hover, +QListView::indicator:unchecked:focus, +QListView::indicator:unchecked:pressed { + image: url(C:/Users/user/AppData/Roaming/TeXstudio/rc/checkbox_unchecked_focus.png); +} + +/*================================================================ +QPushButton +================================================================*/ +QPushButton { + color: #eff0f1; + background-color: #31363b; + border-width: 1px; + border-color: #76797C; + border-style: solid; + padding: 5px; + border-radius: 2px; + outline: none; +} + +QPushButton:disabled { + background-color: #31363b; + border-width: 1px; + border-color: #454545; + border-style: solid; + padding-top: 5px; + padding-bottom: 5px; + padding-left: 10px; + padding-right: 10px; + border-radius: 2px; + color: #454545; +} + +QPushButton:hover, +QPushButton:focus { + background-color: #18465d; + color: #ffffff; +} + +QPushButton:pressed { + background-color: #18465d; + padding-top: -15px; + padding-bottom: -17px; +} + +QPushButton:checked { + background-color: #76797C; + border-color: #6A6969; +} + +/*================================================================ +QToolButton - e.g. Reset pushbutton in GUI scaling, toolbar buttons +================================================================*/ +QToolButton { + text-align: center; +} + +/*================================================================ +QComboBox +================================================================*/ +QComboBox { + selection-background-color: #db1c49; + border: 1px solid #76797C; + border-radius: 2px; + padding: 5px; + min-width: 75px; +} + +QComboBox:hover, +QPushButton:hover, +QAbstractSpinBox:hover, +QLineEdit:hover, +QTextEdit:hover, +QPlainTextEdit:hover, +QAbstractView:hover, +QTreeView:hover { + border: 1px solid #3daee9; + color: #eff0f1; +} + +QComboBox:on { + padding-top: 3px; + padding-left: 4px; + selection-background-color: #4a4a4a; +} + +QComboBox QAbstractItemView { + background-color: #232629; + border-radius: 2px; + border: 1px solid #76797C; + selection-background-color: #18465d; +} + +QComboBox::drop-down { + subcontrol-origin: padding; + subcontrol-position: top right; + width: 35px; + border-left-width: 0px; + border-left-color: darkgray; + border-left-style: solid; + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; +} + +QComboBox::down-arrow { + image: url(C:/Users/user/AppData/Roaming/TeXstudio/rc/down_arrow_disabled.png); +} + +QComboBox::down-arrow:on, +QComboBox::down-arrow:hover, +QComboBox::down-arrow:focus { + image: url(C:/Users/user/AppData/Roaming/TeXstudio/rc/down_arrow.png); +} + +/*================================================================ +QLineEdit - e.g. Search textbox in internal pdf viewer +================================================================*/ +QLineEdit { + selection-background-color: #db1c49; + border: 1px solid #76797C; +} + +/*================================================================ +QHeaderView +================================================================*/ +QHeaderView { + background-color: #31363b; + border: 1px transparent; + border-radius: 0px; + margin: 0px; + padding: 0px; +} + +QHeaderView::section { + background-color: #31363b; + color: #eff0f1; + padding: 5px; + border: 1px solid #76797C; + border-radius: 0px; + text-align: center; +} + +QHeaderView::section::vertical::first, +QHeaderView::section::vertical::only-one { + border-top: 1px solid #76797C; +} + +QHeaderView::section::vertical { + border-top: transparent; +} + +QHeaderView::section::horizontal::first, +QHeaderView::section::horizontal::only-one { + border-left: 1px solid #76797C; +} + +QHeaderView::section::horizontal { + border-left: transparent; +} + +QHeaderView::section:checked { + color: #ffffff; + background-color: #31363B; +} + +/*================================================================ +QTableWidget +================================================================*/ +QTableWidget { + background-color: #373b3f; /*#232629;*/ + gridline-color: yellow; /*#31363b;*/ +} + +QTableWidget::item { + outline-style: none; + color: #eff0f1; + background: #31363b; + border: none; + border-bottom: 1px solid #31363b; +} + +/*================================================================ +QTableView - e.g. configMenu()->Syntax highlighting table +================================================================*/ +QTableView { + border: 1px solid #76797C; + gridline-color: #31363b; + background-color: #232629; +} + +QTableView, +QHeaderView { + border-radius: 0px; +} + +QTableView::item:hover { + background: #18465d; +} + +QTableView::item:pressed, +QListView::item:pressed, +QTreeView::item:pressed { + background: #18465d; + color: #eff0f1; +} + +QTableView::item:selected:active, +QTreeView::item:selected:active, +QListView::item:selected:active { + background: #287399; + color: #eff0f1; +} + +QTableCornerButton::section { + background-color: #31363b; + border: 1px transparent #76797C; + border-radius: 0px; +} + +/*================================================================ +QDialog - e.g. config menu, About TXS window, Wizards +================================================================*/ +QDialog { + background-color: #373b3f; +} + +QDialog QCheckBox, +QDialog QLabel { + background-color: transparent; +} + +QDialog QToolButton { /*Same as QPushButton*/ + color: #eff0f1; + background-color: #31363b; + border-width: 1px; + border-color: #76797C; + border-style: solid; + padding: 5px; + border-radius: 2px; + outline: none; +} + +QDialog QToolButton:hover, +QDialog QToolButton:focus { /*Same as QPushButton*/ + background-color: #18465d; + color: #ffffff; +} + +QDialog QToolButton:pressed { /*Same as QPushButton*/ + background-color: #18465d; + padding-top: -15px; + padding-bottom: -17px; +} + +/* Specific to table in "configMenu->Syntax highlighting" (hopefully) */ + +QDialog QTableWidget::item, +QDialog QTableView::item:hover { /* Turn off hover colour for cells -- it's distracting */ + background-color: #31363b; +} + +/* */ + +/*================================================================ +QSlider - e.g. GUI scaling settings +================================================================*/ +QSlider, +QSlider:active, +QSlider:!active { + border: none; + background-color: transparent; +} + +QSlider::groove:horizontal { + height: 12px; +} + +QSlider::groove:vertical { + width: 12px; +} + +QSlider::handle:horizontal, +QSlider::handle:vertical { + background-color: #db1c49; + border: 1px solid #db1c49; + width: 10px; + height: 15px; + border-radius: 8px; +} + +QSlider::handle:horizontal:hover, +QSlider::handle:vertical:hover, +QSlider::handle:horizontal:pressed, +QSlider::handle:vertical:pressed { + border: 1px solid #A21538; + background-color: #A21538; +} + +/*================================================================ +QToolTip - e.g. popup upon hovering on filename tabs +================================================================*/ +QToolTip { + border: 1px solid #272a2d; + background-color: #373b3f; + color: white; + padding: 0px; /*remove padding, for fix combobox tooltip.*/ +} diff --git a/client/webrtc_demo/qss/css/mainwindow.css b/client/webrtc_demo/qss/css/mainwindow.css new file mode 100644 index 0000000..cf55514 --- /dev/null +++ b/client/webrtc_demo/qss/css/mainwindow.css @@ -0,0 +1,45 @@ + +QTabBar{ + background: rgb(22,155,213); +} +QTabBar::tab { + border: none; + border-top-left-radius: 4px; + color: white; + background: rgb(239,242,245); + color: black; + + height: 28px; + min-width: 85px; + margin-right: 5px; +} + +QTabBar::tab:hover { + background: rgb(51,101,177); +} + +QTabBar::tab:selected { + color: white; + background: rgb(51,101,177); +} + + + +QPushButton:enabled { + background: rgb(22,155,213); + color: white; + border-radius:3px; +} + +QPushButton:!enabled { + background: white; + color: black; +} + +QPushButton:enabled:hover { + background: rgb(100, 160, 220); +} + +QPushButton:enabled:pressed { + background: rgb(120, 170, 220); +} diff --git a/client/webrtc_demo/qss/css/qss.css b/client/webrtc_demo/qss/css/qss.css new file mode 100644 index 0000000..49d6aee --- /dev/null +++ b/client/webrtc_demo/qss/css/qss.css @@ -0,0 +1,779 @@ +QDialog{ + border: 1px solid rgb(rgb(0, 78, 161)); + padding: 5px; + background: rgb(232, 241, 252); +} + +QMainWindow{ + border: none; + background: rgb(255, 255, 255); +} + +QMainWindow::title{ + text-align: right; /* align the text to the left */ + background: rgb(7,71,166); + padding-left: 5px; +} + +QWidget { +/* font-size: 10px;*/ +} + + +QDockWidget{ + background: rgb(187, 212, 238); +} +/*QFrame#window{ + background: rgba(244,245,247,100); +}*/ + +QWidget#remoteWidget { + border-top-right-radius: 10px; + border-bottom-right-radius: 10px; + border: 1px solid rgb(111, 156, 207); + border-left: none; + background: transparent; +} + +StyledWidget { + qproperty-normalColor: rgb(65, 65, 65); + qproperty-disableColor: rgb(180, 180, 180); + qproperty-highlightColor: rgb(0, 160, 230); + qproperty-errorColor: red; +} + +QProgressIndicator { + qproperty-color: rgb(2, 65, 132); +} + +/**********提示**********/ +QToolTip{ + border: 1px solid rgb(111, 156, 207); + background: white; + color: rgb(51, 51, 51); +} + +/**********菜单栏**********/ +QMenuBar { +/* background: rgb(7,71,166);*/ + border: 1px solid rgb(111, 156, 207); + border-left: none; + border-right: none; +} +QMenuBar::item { + border: 1px solid transparent; + padding: 5px 10px 5px 10px; + height : 30px; + background: "white"; + text-aligin: center; + font-size: 20px;; +} +QMenuBar::item:enabled { + font-size: 20px;; + background: rgb(198, 224, 252); +} +QMenuBar::item:!enabled { + font-size: 20px;; + background: rgb(198, 224, 252); +} +QMenuBar::item:enabled:selected { + font-size: 20px;; + background: rgb(198, 224, 252); +} + +/**********菜单**********/ +QMenu { + border: 1px solid rgb(2, 65, 132); + background: rgb(232, 241, 250); + height : 50px; + +} + +QssMessageBox#messagebox{ + background: rgb(0, 0, 250); +} + +QMenu::item { + height: 22px; + padding: 0px 25px 0px 20px; +} + +QMenu::item:enabled { + color: rgb(84, 84, 84); +} + +QMenu::item:!enabled { + color: rgb(155, 155, 155); +} + +QMenu::item:enabled:selected { + color: rgb(2, 65, 132); + background: rgba(255, 255, 255, 200); +} + +QMenu::separator { + height: 1px; + background: rgb(111, 156, 207); +} +QMenu::indicator { + width: 13px; + height: 13px; +} + +QMenu::icon { + padding-left: 2px; + padding-right: 2px; +} + +/**********状态栏**********/ +QStatusBar { + background: rgb(111, 156, 207); + border: 1px solid rgb(111, 156, 207); + border-left: none; + border-right: none; + border-bottom: none; +} + +QStatusBar::item { + border: none; + border-right: 1px solid rgb(111, 156, 207); +} + +/**********分组框**********/ +QGroupBox { + border: 1px solid rgb(111, 156, 207); + border-radius: 4px; + margin-top: 10px; +} + +QGroupBox::title { + color: rgb(56, 99, 154); + top: -12px; + left: 10px; +} + +QTabWidget{ + margin-left:10; +} +/**********页签项**********/ +QTabWidget::pane { + border: none; + border-top: 3px solid rgb(0, 78, 161); + background: rgb(187, 212, 238); +} + +QTabWidget::tab-bar { + border: none; +} + +QTabBar::tab { + border: none; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + color: white; + background: rgb(120, 170, 220); + height: 28px; + min-width: 85px; + margin-right: 5px; + padding-left: 5px; + padding-right: 5px; +} + +QTabBar::tab:hover { + background: rgb(0, 78, 161); +} + +QTabBar::tab:selected { + color: white; + background: rgb(0, 78, 161); +} + +QTabWidget#tabWidget::pane { + border: 1px solid rgb(111, 156, 207); + background: rgb(232, 241, 252); + margin-top: -1px; +} + +QTabBar#tabBar::tab { + border: 1px solid rgb(111, 156, 207); + border-bottom: none; + color: rgb(70, 71, 73); + background: transparent; +} +QTabBar#tabBar::tab:hover { + color: rgb(2, 65, 132); +} +QTabBar#tabBar::tab:selected { + color: rgb(2, 65, 132); + background: rgb(232, 241, 252); +} + +/**********表头**********/ +QHeaderView{ + border: 1px solid black; + border-bottom: 3px solid rgb(0, 78, 161); + background: transparent; + min-height: 30px; +} +QHeaderView::section:horizontal { + border: none; + color: rgb(2, 65, 132); + background: transparent; + padding-left: 5px; +} +QHeaderView::section:horizontal:hover { + color: white; + background: rgb(0, 78, 161); +} +QHeaderView::section:horizontal:pressed { + color: white; + background: rgb(6, 94, 187); +} +QHeaderView::up-arrow { + width: 13px; + height: 11px; + padding-right: 5px; + image: url(:/White/topArrow); + subcontrol-position: center right; +} +QHeaderView::up-arrow:hover, QHeaderView::up-arrow:pressed { + image: url(:/White/topArrowHover); +} +QHeaderView::down-arrow { + width: 13px; + height: 11px; + padding-right: 5px; + image: url(:/White/bottomArrow); + subcontrol-position: center right; +} +QHeaderView::down-arrow:hover, QHeaderView::down-arrow:pressed { + image: url(:/White/bottomArrowHover); +} +/**********TreeView**********/ +QTreeView::item { + height: 25px; + border-right: 0.5px solid grey; + background: transparent; +} +QTreeView::item:hover { + background : #DBDBDB; +} + +QTreeView::item:selected { + background : grey; +} +/**********表格**********/ +QTableView { + border: 1px solid grey; + background: rgb(224, 238, 255); + gridline-color: rgb(111, 156, 207); +} +QTableView::item { + padding-left: 5px; + padding-right: 5px; + border: 1px solid black; + background: white; +} +QTableView::item:selected { + border: 1px solid black; + + background: rgba(255, 255, 255, 30); +} +QTableView::item:selected:!active { + color: rgb(65, 65, 65); +} +QTableView::indicator { + border: 1px solid black; + + width: 20px; + height: 20px; +} + + +QTableView::indicator:enabled:unchecked { + + image: url(:/White/checkBox); +} +QTableView::indicator:enabled:unchecked:hover { + image: url(:/White/checkBoxHover); +} +QTableView::indicator:enabled:unchecked:pressed { + image: url(:/White/checkBoxPressed); +} +QTableView::indicator:enabled:checked { + image: url(:/White/checkBoxChecked); +} +QTableView::indicator:enabled:checked:hover { + image: url(:/White/checkBoxCheckedHover); +} +QTableView::indicator:enabled:checked:pressed { + image: url(:/White/checkBoxCheckedPressed); +} +QTableView::indicator:enabled:indeterminate { + image: url(:/White/checkBoxIndeterminate); +} +QTableView::indicator:enabled:indeterminate:hover { + image: url(:/White/checkBoxIndeterminateHover); +} +QTableView::indicator:enabled:indeterminate:pressed { + image: url(:/White/checkBoxIndeterminatePressed); +} + +/**********滚动条-水平**********/ +QScrollBar:horizontal { + height: 20px; + background: transparent; + margin-top: 3px; + margin-bottom: 3px; +} +QScrollBar::handle:horizontal { + height: 20px; + min-width: 30px; + background: rgb(170, 200, 230); + margin-left: 15px; + margin-right: 15px; +} +QScrollBar::handle:horizontal:hover { + background: rgb(165, 195, 225); +} +QScrollBar::sub-line:horizontal { + width: 15px; + background: transparent; + image: url(:/White/arrowLeft); + subcontrol-position: left; +} +QScrollBar::add-line:horizontal { + width: 15px; + background: transparent; + image: url(:/White/arrowRight); + subcontrol-position: right; +} +QScrollBar::sub-line:horizontal:hover { + background: rgb(170, 200, 230); +} +QScrollBar::add-line:horizontal:hover { + background: rgb(170, 200, 230); +} +QScrollBar::add-page:horizontal,QScrollBar::sub-page:horizontal { + background: transparent; +} + +/**********滚动条-垂直**********/ +QScrollBar:vertical { + width: 20px; + background: transparent; + margin-left: 3px; + margin-right: 3px; +} +QScrollBar::handle:vertical { + width: 20px; + min-height: 30px; + background: rgb(170, 200, 230); + margin-top: 15px; + margin-bottom: 15px; +} +QScrollBar::handle:vertical:hover { + background: rgb(165, 195, 225); +} +QScrollBar::sub-line:vertical { + height: 15px; + background: transparent; + image: url(:/White/topArrow); + subcontrol-position: top; +} +QScrollBar::add-line:vertical { + height: 15px; + background: transparent; + image: url(:/White/bottomArrow); + subcontrol-position: bottom; +} +QScrollBar::sub-line:vertical:hover { + background: rgb(170, 200, 230); +} +QScrollBar::add-line:vertical:hover { + background: rgb(170, 200, 230); +} +QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical { + background: transparent; +} + +QScrollBar#verticalScrollBar:vertical { + margin-top: 30px; +} + +/**********下拉列表**********/ +QComboBox { + height: 25px; + border: 1px solid rgb(111, 156, 207); + background: white; +} +QComboBox:enabled { + color: rgb(84, 84, 84); +} +QComboBox:!enabled { + color: rgb(80, 80, 80); +} +QComboBox:enabled:hover, QComboBox:enabled:focus { + color: rgb(51, 51, 51); +} +QComboBox::drop-down { + width: 20px; + border: none; + background: transparent; +} +QComboBox::drop-down:hover { + background: rgba(0, 0, 0, 30); +} +QComboBox::down-arrow { + image: url(:/qss/icon/combo_arrow.png); + max-height:100%; + max-width:100%; +} +QComboBox::down-arrow:on { + top: 1px; +} +QComboBox QAbstractItemView { + border: 1px solid rgb(111, 156, 207); + background: white; + outline: none; +} +QComboBox QAbstractItemView::item { + height: 25px; + color: rgb(73, 73, 73); +} +QComboBox QAbstractItemView::item:selected { + background: rgb(232, 241, 250); + color: rgb(2, 65, 132); +} + +/**********进度条**********/ +QProgressBar{ + border: black; + text-align: center; + color: white; + background: rgb(173, 202, 232); +} +QProgressBar::chunk { + background: rgb(16, 135, 209); +} + +QProgressBar { + border: rgb(173, 202, 232); + text-align: center; + color: light; + background-color: transparent; + background-image: rgb(173, 202, 232); + background-repeat: repeat-x; +} +QProgressBar::chunk { + border: none; + background-color:rgb(173, 202, 232); + background-repeat: repeat-x; +} + +/**********复选框**********/ +QCheckBox{ + spacing: 5px; +} +QCheckBox:enabled:checked{ + color: rgb(2, 65, 132); +} +QCheckBox:enabled:!checked{ + color: rgb(70, 71, 73); +} +QCheckBox:enabled:hover{ + color: rgb(0, 78, 161); +} +QCheckBox:!enabled{ + color: rgb(80, 80, 80); +} +QCheckBox::indicator { + width: 20px; + height: 20px; +} +QCheckBox::indicator:unchecked { + image: url(:/qss/icon/checkbox.png); +} +QCheckBox::indicator:unchecked:hover { + image: url(:/qss/icon/checkbox_h.png); +} +QCheckBox::indicator:unchecked:pressed { + image: url(:/qss/icon/checkbox_p.png); +} +QCheckBox::indicator:checked { + image: url(:/qss/icon/check_box_p.png); +} +QCheckBox::indicator:checked:hover { + image: url(:/qss/icon/check_box_p.png); +} +QCheckBox::indicator:checked:pressed { + image: url(:/qss/icon/check_box_p.png); +} +QCheckBox::indicator:indeterminate { + image: url(:/qss/icon/check_box_p.png); +} +QCheckBox::indicator:indeterminate:hover { + image: url(:/qss/icon/check_box_p.png); +} +QCheckBox::indicator:indeterminate:pressed { + image: url(:/qss/icon/check_box_p.png); +} + +/**********单选框**********/ +QRadioButton{ + spacing: 5px; +} +QRadioButton:enabled:checked{ + color: rgb(2, 65, 132); +} +QRadioButton:enabled:!checked{ + color: rgb(70, 71, 73); +} +QRadioButton:enabled:hover{ + color: rgb(0, 78, 161); +} +QRadioButton:!enabled{ + color: rgb(80, 80, 80); +} +QRadioButton::indicator { + width: 20px; + height: 20px; +} +QRadioButton::indicator:unchecked { + image: url(:/White/radioButton); +} +QRadioButton::indicator:unchecked:hover { + image: url(:/White/radioButtonHover); +} +QRadioButton::indicator:unchecked:pressed { + image: url(:/White/radioButtonPressed); +} +QRadioButton::indicator:checked { + image: url(:/White/radioButtonChecked); +} +QRadioButton::indicator:checked:hover { + image: url(:/White/radioButtonCheckedHover); +} +QRadioButton::indicator:checked:pressed { + image: url(:/White/radioButtonCheckedPressed); +} + +/**********输入框**********/ +QLineEdit { + border-radius: 4px; + height: 25px; + border: 1px solid rgb(111, 156, 207); + background: white; +} +QLineEdit:enabled { + color: rgb(84, 84, 84); +} +QLineEdit:enabled:hover, QLineEdit:enabled:focus { + color: rgb(51, 51, 51); +} +QLineEdit:!enabled { + color: rgb(80, 80, 80); +} + +/**********文本编辑框**********/ +QTextEdit { + border: 1px solid rgb(111, 156, 207); + color: rgb(70, 71, 73); + background: rgb(187, 212, 238); +} + +/**********滚动区域**********/ +QScrollArea { + border: 1px solid rgb(111, 156, 207); + background: rgb(187, 212, 238); +} + +/**********滚动区域**********/ +QWidget#transparentWidget { + background: transparent; +} + +/**********微调器**********/ +QSpinBox { + border-radius: 4px; + height: 24px; + min-width: 40px; + border: 1px solid rgb(111, 156, 207); + background: white; +} +QSpinBox:enabled { + color: rgb(60, 60, 60); +} +QSpinBox:enabled:hover, QSpinBox:enabled:focus { + color: rgb(51, 51, 51); +} +QSpinBox:!enabled { + color: rgb(210, 210, 210); + background: transparent; +} +QSpinBox::up-button { + border-left: 1px solid rgb(111, 156, 207); + width: 18px; + height: 12px; + border-top-right-radius: 4px; + image: url(:/White/upButton); +} +QSpinBox::up-button:!enabled { + background: transparent; +} +QSpinBox::up-button:enabled:hover { + background: rgb(255, 255, 255, 30); +} +QSpinBox::down-button { + border-left: 1px solid rgb(111, 156, 207); + width: 18px; + height: 12px; + border-bottom-right-radius: 4px; + image: url(:/White/downButton); +} +QSpinBox::down-button:!enabled { + background: transparent; +} +QSpinBox::down-button:hover { + background: rgb(255, 255, 255, 30); +} +QLabel#label_3{ + font-size: 20px; + background-color: rgb(255, 255, 255, 30); + color : light; +} + +QDockWidget *{ +} +/**********标签**********/ +QLabel#grayLabel { + color: rgb(70, 71, 73); +} + +QLabel#highlightLabel { + color: rgb(2, 65, 132); +} + +QLabel#redLabel { + color: red; +} + +QLabel#grayYaHeiLabel { + color: rgb(175, 175, 175); + font-size: 15px; +} + +QLabel#blueLabel { + color: rgb(0, 160, 230); +} + +QLabel#listLabel { + color: rgb(51, 51, 51); +} + +QLabel#lineBlueLabel { + background: rgb(0, 78, 161); +} + +QLabel#graySeperateLabel { + background: rgb(200, 220, 230); +} + +QLabel#seperateLabel { + background: rgb(112, 153, 194); +} + +QLabel#radiusBlueLabel { + border-radius: 15px; + color: white; + font-size: 18px; + background: rgb(0, 78, 161); +} + +QLabel#skinLabel[colorProperty="normal"] { + color: rgb(56, 99, 154); +} +QLabel#skinLabel[colorProperty="highlight"] { + color: rgb(0, 160, 230); +} + +QLabel#informationLabel { + qproperty-pixmap: url(:/White/information); +} + +QLabel#errorLabel { + qproperty-pixmap: url(:/White/error); +} + +QLabel#successLabel { + qproperty-pixmap: url(:/White/success); +} + +QLabel#questionLabel { + qproperty-pixmap: url(:/White/question); +} + +QLabel#warningLabel { + qproperty-pixmap: url(:/White/warning); +} + +QLabel#groupLabel { + color: rgb(56, 99, 154); + border: 1px solid rgb(111, 156, 207); + font-size: 15px; + border-top-color: transparent; + border-right-color: transparent; + border-left-color: transparent; +} + +/**********按钮**********/ +QToolButton#nsccButton { + border: none; + color: rgb(2, 65, 132); + background: transparent; + padding: 10px; + qproperty-icon: url(:/White/nscc); + qproperty-iconSize: 32px 32px; + qproperty-toolButtonStyle: ToolButtonTextUnderIcon; +} +QToolButton#nsccButton:hover { + background: rgb(187, 212, 238); +} + +QToolButton#transferButton { + border: none; + color: rgb(2, 65, 132); + background: transparent; + padding: 10px; + qproperty-icon: url(:/White/transfer); + qproperty-iconSize: 32px 32px; + qproperty-toolButtonStyle: ToolButtonTextUnderIcon; +} + +QToolButton#transferButton:hover { + background: rgb(187, 212, 238); +} + +/**********按钮**********/ +QPushButton{ + border: none; /*去除边框*/ + font-size: 15px; +} + +QPushButton:enabled { + background: rgb(0, 78, 161); + color: white; +} + +QPushButton:!enabled { + background: rgb(180, 180, 180); + color: white; +} + +QPushButton:enabled:hover{ + background: rgb(100, 160, 220); +} + +QPushButton:enabled:pressed{ + background: rgb(120, 170, 220); +} diff --git a/client/webrtc_demo/qss/css/save_data_form.css b/client/webrtc_demo/qss/css/save_data_form.css new file mode 100644 index 0000000..d5ce63b --- /dev/null +++ b/client/webrtc_demo/qss/css/save_data_form.css @@ -0,0 +1,6 @@ +QWidget#save_data_form +{ + background: "white"; + border:1px solid black; +} + diff --git a/client/webrtc_demo/qss/css/vibration_comparison_form.css b/client/webrtc_demo/qss/css/vibration_comparison_form.css new file mode 100644 index 0000000..4a6cbd6 --- /dev/null +++ b/client/webrtc_demo/qss/css/vibration_comparison_form.css @@ -0,0 +1,46 @@ +QWidget#vibration_comparison_form +{ + border: 1px solid black; +} +QWidget#vibration_comparison_form QLabel#label +{ +} +QWidget#vibration_comparison_form QComboBox#comboBox +{ + border-radius:3px; +} +QWidget#vibration_comparison_form QComboBox#comboBox_2 +{ + border-radius:3px; +} +QWidget#vibration_comparison_form QLabel#label_2 +{ +} +QWidget#vibration_comparison_form QComboBox#comboBox_3 +{ + border-radius:3px; + +} +QWidget#vibration_comparison_form QComboBox#comboBox_4 +{ + border-radius:3px; +} +QWidget#vibration_comparison_form QPushButton#pushButton +{ + width: 24px; +} + +QWidget#vibration_comparison_form QPushButton#pushButton_2 +{ + width: 24px; + +} +QWidget#vibration_comparison_form QLabel#label_3 +{ +} +QWidget#vibration_comparison_form QRadioButton#radioButton +{ +} +QWidget#vibration_comparison_form QGraphicsView#graphicsView +{ +} diff --git a/client/webrtc_demo/qss/css/white.css b/client/webrtc_demo/qss/css/white.css new file mode 100644 index 0000000..847d018 --- /dev/null +++ b/client/webrtc_demo/qss/css/white.css @@ -0,0 +1,303 @@ +/* * The MIT License (MIT) * * Copyright : http://blog.csdn.net/liang19890820 * * Author : 一去丶二三里 * * Date : 2016/07/22 * * Description : 白色靓丽 * */ + +/**********子界面背景**********/ +QWidget#customWidget { background: rgb(173, 202, 232); } + +/**********子界面中央背景**********/ +QWidget#centerWidget { background: rgb(232, 241, 252); } + +/**********主界面样式**********/ +QWidget#mainWindow { border: 1px solid rgb(111, 156, 207); background: rgb(232, 241, 252); } + +QWidget#messageWidget { background: rgba(173, 202, 232, 50%); } + +QWidget#loadingWidget { border: none; border-radius: 5px; background: rgb(187, 212, 238); } + +QWidget#remoteWidget { border-top-right-radius: 10px; border-bottom-right-radius: 10px; border: 1px solid rgb(111, 156, 207); border-left: none; background: transparent; } + +StyledWidget { qproperty-normalColor: rgb(65, 65, 65); qproperty-disableColor: rgb(180, 180, 180); qproperty-highlightColor: rgb(0, 160, 230); qproperty-errorColor: red; } + +QProgressIndicator { qproperty-color: rgb(2, 65, 132); } + +/**********提示**********/ +QToolTip{ border: 1px solid rgb(111, 156, 207); background: white; color: rgb(51, 51, 51); } + +/**********菜单栏**********/ +QMenuBar { background: rgb(187, 212, 238); border: 1px solid rgb(111, 156, 207); border-left: none; border-right: none; } +QMenuBar::item { border: 1px solid transparent; padding: 5px 10px 5px 10px; background: transparent; } +QMenuBar::item:enabled { color: rgb(2, 65, 132); } +QMenuBar::item:!enabled { color: rgb(155, 155, 155); } +QMenuBar::item:enabled:selected { border-top-color: rgb(111, 156, 207); border-bottom-color: rgb(111, 156, 207); background: rgb(198, 224, 252); } + +/**********菜单**********/ +QMenu { border: 1px solid rgb(111, 156, 207); background: rgb(232, 241, 250); } +QMenu::item { height: 22px; padding: 0px 25px 0px 20px; } +QMenu::item:enabled { color: rgb(84, 84, 84); } +QMenu::item:!enabled { color: rgb(155, 155, 155); } +QMenu::item:enabled:selected { color: rgb(2, 65, 132); background: rgba(255, 255, 255, 200); } +QMenu::separator { height: 1px; background: rgb(111, 156, 207); } +QMenu::indicator { width: 13px; height: 13px; } +QMenu::icon { padding-left: 2px; padding-right: 2px; } + +/**********状态栏**********/ +QStatusBar { background: rgb(187, 212, 238); border: 1px solid rgb(111, 156, 207); border-left: none; border-right: none; border-bottom: none; } +QStatusBar::item { border: none; border-right: 1px solid rgb(111, 156, 207); } + +/**********分组框**********/ +QGroupBox { font-size: 15px; border: 1px solid rgb(111, 156, 207); border-radius: 4px; margin-top: 10px; } +QGroupBox::title { color: rgb(56, 99, 154); top: -12px; left: 10px; } + +/**********页签项**********/ +QTabWidget::pane { border: none; border-top: 3px solid rgb(0, 78, 161); background: rgb(187, 212, 238); } +QTabWidget::tab-bar { border: none; } +QTabBar::tab { border: none; border-top-left-radius: 4px; border-top-right-radius: 4px; color: white; background: rgb(120, 170, 220); height: 28px; min-width: 85px; margin-right: 5px; padding-left: 5px; padding-right: 5px; } +QTabBar::tab:hover { background: rgb(0, 78, 161); } +QTabBar::tab:selected { color: white; background: rgb(0, 78, 161); } + +QTabWidget#tabWidget::pane { border: 1px solid rgb(111, 156, 207); background: rgb(232, 241, 252); margin-top: -1px; } + +QTabBar#tabBar::tab { border: 1px solid rgb(111, 156, 207); border-bottom: none; color: rgb(70, 71, 73); background: transparent; } +QTabBar#tabBar::tab:hover { color: rgb(2, 65, 132); } +QTabBar#tabBar::tab:selected { color: rgb(2, 65, 132); background: rgb(232, 241, 252); } + +/**********表头**********/ +QHeaderView{ border: none; border-bottom: 3px solid rgb(0, 78, 161); background: transparent; min-height: 30px; } +QHeaderView::section:horizontal { border: none; color: rgb(2, 65, 132); background: transparent; padding-left: 5px; } +QHeaderView::section:horizontal:hover { color: white; background: rgb(0, 78, 161); } +QHeaderView::section:horizontal:pressed { color: white; background: rgb(6, 94, 187); } +QHeaderView::up-arrow { width: 13px; height: 11px; padding-right: 5px; image: url(:/White/topArrow); subcontrol-position: center right; } +QHeaderView::up-arrow:hover, QHeaderView::up-arrow:pressed { image: url(:/White/topArrowHover); } +QHeaderView::down-arrow { width: 13px; height: 11px; padding-right: 5px; image: url(:/White/bottomArrow); subcontrol-position: center right; } +QHeaderView::down-arrow:hover, QHeaderView::down-arrow:pressed { image: url(:/White/bottomArrowHover); } + +/**********表格**********/ +QTableView { border: 1px solid rgb(111, 156, 207); background: rgb(224, 238, 255); gridline-color: rgb(111, 156, 207); } +QTableView::item { padding-left: 5px; padding-right: 5px; border: none; background: white; border-right: 1px solid rgb(111, 156, 207); border-bottom: 1px solid rgb(111, 156, 207); } +QTableView::item:selected { background: rgba(255, 255, 255, 100); } +QTableView::item:selected:!active { color: rgb(65, 65, 65); } +QTableView::indicator { width: 20px; height: 20px; } +QTableView::indicator:enabled:unchecked { image: url(:/White/checkBox); } +QTableView::indicator:enabled:unchecked:hover { image: url(:/White/checkBoxHover); } +QTableView::indicator:enabled:unchecked:pressed { image: url(:/White/checkBoxPressed); } +QTableView::indicator:enabled:checked { image: url(:/White/checkBoxChecked); } +QTableView::indicator:enabled:checked:hover { image: url(:/White/checkBoxCheckedHover); } +QTableView::indicator:enabled:checked:pressed { image: url(:/White/checkBoxCheckedPressed); } +QTableView::indicator:enabled:indeterminate { image: url(:/White/checkBoxIndeterminate); } +QTableView::indicator:enabled:indeterminate:hover { image: url(:/White/checkBoxIndeterminateHover); } +QTableView::indicator:enabled:indeterminate:pressed { image: url(:/White/checkBoxIndeterminatePressed); } + +/**********滚动条-水平**********/ +QScrollBar:horizontal { height: 20px; background: transparent; margin-top: 3px; margin-bottom: 3px; } +QScrollBar::handle:horizontal { height: 20px; min-width: 30px; background: rgb(170, 200, 230); margin-left: 15px; margin-right: 15px; } +QScrollBar::handle:horizontal:hover { background: rgb(165, 195, 225); } +QScrollBar::sub-line:horizontal { width: 15px; background: transparent; image: url(:/White/arrowLeft); subcontrol-position: left; } +QScrollBar::add-line:horizontal { width: 15px; background: transparent; image: url(:/White/arrowRight); subcontrol-position: right; } +QScrollBar::sub-line:horizontal:hover { background: rgb(170, 200, 230); } +QScrollBar::add-line:horizontal:hover { background: rgb(170, 200, 230); } +QScrollBar::add-page:horizontal,QScrollBar::sub-page:horizontal { background: transparent; } + +/**********滚动条-垂直**********/ +QScrollBar:vertical { width: 20px; background: transparent; margin-left: 3px; margin-right: 3px; } +QScrollBar::handle:vertical { width: 20px; min-height: 30px; background: rgb(170, 200, 230); margin-top: 15px; margin-bottom: 15px; } +QScrollBar::handle:vertical:hover { background: rgb(165, 195, 225); } +QScrollBar::sub-line:vertical { height: 15px; background: transparent; image: url(:/White/topArrow); subcontrol-position: top; } +QScrollBar::add-line:vertical { height: 15px; background: transparent; image: url(:/White/bottomArrow); subcontrol-position: bottom; } +QScrollBar::sub-line:vertical:hover { background: rgb(170, 200, 230); } +QScrollBar::add-line:vertical:hover { background: rgb(170, 200, 230); } +QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical { background: transparent; } + +QScrollBar#verticalScrollBar:vertical { margin-top: 30px; } + +/**********下拉列表**********/ +QComboBox { height: 25px; border-radius: 4px; border: 1px solid rgb(111, 156, 207); background: white; } +QComboBox:enabled { color: rgb(84, 84, 84); } +QComboBox:!enabled { color: rgb(80, 80, 80); } +QComboBox:enabled:hover, QComboBox:enabled:focus { color: rgb(51, 51, 51); } +QComboBox::drop-down { width: 20px; border: none; background: transparent; } +QComboBox::drop-down:hover { background: rgba(255, 255, 255, 30); } +QComboBox::down-arrow { image: url(:/White/arrowBottom); } +QComboBox::down-arrow:on { /**top: 1px;**/ } +QComboBox QAbstractItemView { border: 1px solid rgb(111, 156, 207); background: white; outline: none; } +QComboBox QAbstractItemView::item { height: 25px; color: rgb(73, 73, 73); } +QComboBox QAbstractItemView::item:selected { background: rgb(232, 241, 250); color: rgb(2, 65, 132); } + +/**********进度条**********/ +QProgressBar{ border: none; text-align: center; color: white; background: rgb(173, 202, 232); } +QProgressBar::chunk { background: rgb(16, 135, 209); } + +QProgressBar#progressBar { border: none; text-align: center; color: white; background-color: transparent; background-image: url(":/White/progressBar"); background-repeat: repeat-x; } +QProgressBar#progressBar::chunk { border: none; background-color: transparent; background-image: url(":/White/progressBarChunk"); background-repeat: repeat-x; } + +/**********复选框**********/ +QCheckBox{ spacing: 5px; } +QCheckBox:enabled:checked{ color: rgb(2, 65, 132); } +QCheckBox:enabled:!checked{ color: rgb(70, 71, 73); } +QCheckBox:enabled:hover{ color: rgb(0, 78, 161); } +QCheckBox:!enabled{ color: rgb(80, 80, 80); } +QCheckBox::indicator { width: 20px; height: 20px; } +QCheckBox::indicator:unchecked { image: url(:/White/checkBox); } +QCheckBox::indicator:unchecked:hover { image: url(:/White/checkBoxHover); } +QCheckBox::indicator:unchecked:pressed { image: url(:/White/checkBoxPressed); } +QCheckBox::indicator:checked { image: url(:/White/checkBoxChecked); } +QCheckBox::indicator:checked:hover { image: url(:/White/checkBoxCheckedHover); } +QCheckBox::indicator:checked:pressed { image: url(:/White/checkBoxCheckedPressed); } +QCheckBox::indicator:indeterminate { image: url(:/White/checkBoxIndeterminate); } +QCheckBox::indicator:indeterminate:hover { image: url(:/White/checkBoxIndeterminateHover); } +QCheckBox::indicator:indeterminate:pressed { image: url(:/White/checkBoxIndeterminatePressed); } + +/**********单选框**********/ +QRadioButton{ spacing: 5px; } +QRadioButton:enabled:checked{ color: rgb(2, 65, 132); } +QRadioButton:enabled:!checked{ color: rgb(70, 71, 73); } +QRadioButton:enabled:hover{ color: rgb(0, 78, 161); } +QRadioButton:!enabled{ color: rgb(80, 80, 80); } +QRadioButton::indicator { width: 20px; height: 20px; } +QRadioButton::indicator:unchecked { image: url(:/White/radioButton); } +QRadioButton::indicator:unchecked:hover { image: url(:/White/radioButtonHover); } +QRadioButton::indicator:unchecked:pressed { image: url(:/White/radioButtonPressed); } +QRadioButton::indicator:checked { image: url(:/White/radioButtonChecked); } +QRadioButton::indicator:checked:hover { image: url(:/White/radioButtonCheckedHover); } +QRadioButton::indicator:checked:pressed { image: url(:/White/radioButtonCheckedPressed); } + +/**********输入框**********/ +QLineEdit { border-radius: 4px; height: 25px; border: 1px solid rgb(111, 156, 207); background: white; } +QLineEdit:enabled { color: rgb(84, 84, 84); } +QLineEdit:enabled:hover, QLineEdit:enabled:focus { color: rgb(51, 51, 51); } +QLineEdit:!enabled { color: rgb(80, 80, 80); } + +/**********文本编辑框**********/ +QTextEdit { border: 1px solid rgb(111, 156, 207); color: rgb(70, 71, 73); background: rgb(187, 212, 238); } + +/**********滚动区域**********/ +QScrollArea { border: 1px solid rgb(111, 156, 207); background: rgb(187, 212, 238); } + +/**********滚动区域**********/ +QWidget#transparentWidget { background: transparent; } + +/**********微调器**********/ +QSpinBox { border-radius: 4px; height: 24px; min-width: 40px; border: 1px solid rgb(111, 156, 207); background: white; } +QSpinBox:enabled { color: rgb(60, 60, 60); } +QSpinBox:enabled:hover, QSpinBox:enabled:focus { color: rgb(51, 51, 51); } +QSpinBox:!enabled { color: rgb(210, 210, 210); background: transparent; } +QSpinBox::up-button { border-left: 1px solid rgb(111, 156, 207); width: 18px; height: 12px; border-top-right-radius: 4px; image: url(:/White/upButton); } +QSpinBox::up-button:!enabled { background: transparent; } +QSpinBox::up-button:enabled:hover { background: rgb(255, 255, 255, 30); } +QSpinBox::down-button { border-left: 1px solid rgb(111, 156, 207); width: 18px; height: 12px; border-bottom-right-radius: 4px; image: url(:/White/downButton); } +QSpinBox::down-button:!enabled { background: transparent; } +QSpinBox::down-button:hover { background: rgb(255, 255, 255, 30); } + +/**********标签**********/ +QLabel#grayLabel { color: rgb(70, 71, 73); } + +QLabel#highlightLabel { color: rgb(2, 65, 132); } + +QLabel#redLabel { color: red; } + +QLabel#grayYaHeiLabel { color: rgb(175, 175, 175); font-size: 16px; } + +QLabel#blueLabel { color: rgb(0, 160, 230); } + +QLabel#listLabel { color: rgb(51, 51, 51); } + +QLabel#lineBlueLabel { background: rgb(0, 78, 161); } + +QLabel#graySeperateLabel { background: rgb(200, 220, 230); } + +QLabel#seperateLabel { background: rgb(112, 153, 194); } + +QLabel#radiusBlueLabel { border-radius: 15px; color: white; font-size: 16px; background: rgb(0, 78, 161); } + +QLabel#skinLabel[colorProperty="normal"] { color: rgb(56, 99, 154); } +QLabel#skinLabel[colorProperty="highlight"] { color: rgb(0, 160, 230); } + +QLabel#informationLabel { qproperty-pixmap: url(:/White/information); } + +QLabel#errorLabel { qproperty-pixmap: url(:/White/error); } + +QLabel#successLabel { qproperty-pixmap: url(:/White/success); } + +QLabel#questionLabel { qproperty-pixmap: url(:/White/question); } + +QLabel#warningLabel { qproperty-pixmap: url(:/White/warning); } + +QLabel#groupLabel { color: rgb(56, 99, 154); border: 1px solid rgb(111, 156, 207); font-size: 15px; border-top-color: transparent; border-right-color: transparent; border-left-color: transparent; } + +/**********按钮**********/ +QToolButton#nsccButton { border: none; color: rgb(2, 65, 132); background: transparent; padding: 10px; qproperty-icon: url(:/White/nscc); qproperty-iconSize: 32px 32px; qproperty-toolButtonStyle: ToolButtonTextUnderIcon; } +QToolButton#nsccButton:hover { background: rgb(187, 212, 238); } + +QToolButton#transferButton { border: none; color: rgb(2, 65, 132); background: transparent; padding: 10px; qproperty-icon: url(:/White/transfer); qproperty-iconSize: 32px 32px; qproperty-toolButtonStyle: ToolButtonTextUnderIcon; } +QToolButton#transferButton:hover { background: rgb(187, 212, 238); } + +/**********按钮**********/ +QPushButton{ border-radius: 4px; border: none; width: 75px; height: 25px; } +QPushButton:enabled { background: rgb(120, 170, 220); color: white; } +QPushButton:!enabled { background: rgb(180, 180, 180); color: white; } +QPushButton:enabled:hover{ background: rgb(100, 160, 220); } +QPushButton:enabled:pressed{ background: rgb(0, 78, 161); } + +QPushButton#blueButton { color: white; } +QPushButton#blueButton:enabled { background: rgb(0, 78, 161); color: white; } +QPushButton:!enabled { background: rgb(180, 180, 180); color: white; } +QPushButton#blueButton:enabled:hover { background: rgb(2, 65, 132); } +QPushButton#blueButton:enabled:pressed { background: rgb(6, 94, 187); } + +QPushButton#selectButton { border: none; border-radius: none; border-left: 1px solid rgb(111, 156, 207); background: transparent; image: url(:/White/scan); color: rgb(51, 51, 51); } +QPushButton#selectButton:enabled:hover{ background: rgb(187, 212, 238); } +QPushButton#selectButton:enabled:pressed{ background: rgb(120, 170, 220); } + +QPushButton#linkButton { background: transparent; color: rgb(0, 160, 230); text-align:left; } +QPushButton#linkButton:hover { color: rgb(20, 185, 255); text-decoration: underline; } +QPushButton#linkButton:pressed { color: rgb(0, 160, 230); } + +QPushButton#transparentButton { background: transparent; } + +/*****************标题栏按钮*******************/ +QPushButton#minimizeButton { border-radius: none; border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; background: rgb(120, 170, 220); image: url(:/White/minimizeHover); } +QPushButton#minimizeButton:hover { image: url(:/White/minimize); } +QPushButton#minimizeButton:pressed { image: url(:/White/minimizePressed); } + +QPushButton#maximizeButton[maximizeProperty="maximize"] { border-radius: none; border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; background: rgb(120, 170, 220); image: url(:/White/maximizeHover); } +QPushButton#maximizeButton[maximizeProperty="maximize"]:hover { image: url(:/White/maximize); } +QPushButton#maximizeButton[maximizeProperty="maximize"]:pressed { image: url(:/White/maximizePressed); } + +QPushButton#maximizeButton[maximizeProperty="restore"] { border-radius: none; border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; background: rgb(120, 170, 220); image: url(:/White/restoreHover); } +QPushButton#maximizeButton[maximizeProperty="restore"]:hover { image: url(:/White/restore); } +QPushButton#maximizeButton[maximizeProperty="restore"]:pressed { image: url(:/White/restorePressed); } + +QPushButton#closeButton { border-radius: none; border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; background: rgb(120, 170, 220); image: url(:/White/closeHover); } +QPushButton#closeButton:hover { image: url(:/White/close); } +QPushButton#closeButton:pressed { image: url(:/White/closePressed); } + +QPushButton#skinButton { border-radius: none; border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; background: rgb(120, 170, 220); image: url(:/White/skinHover); } +QPushButton#skinButton:hover { image: url(:/White/skin); } +QPushButton#skinButton:pressed { image: url(:/White/skinPressed); } + +QPushButton#feedbackButton { border-radius: none; border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; background: rgb(120, 170, 220); image: url(:/White/feedbackHover); } +QPushButton#feedbackButton:hover { image: url(:/White/feedback); } +QPushButton#feedbackButton:pressed { image: url(:/White/feedbackPressed); } + +QPushButton#closeTipButton { border-radius: none; border-image: url(:/White/close); background: transparent; } +QPushButton#closeTipButton:hover { border-image: url(:/White/closeHover); } +QPushButton#closeTipButton:pressed { border-image: url(:/White/closePressed); } + +QPushButton#changeSkinButton{ border-radius: 4px; border: 2px solid rgb(111, 156, 207); background: rgb(204, 227, 252); } +QPushButton#changeSkinButton:hover{ border-color: rgb(60, 150, 200); } +QPushButton#changeSkinButton:pressed, QPushButton#changeSkinButton:checked{ border-color: rgb(0, 160, 230); } + +QPushButton#transferButton { padding-left: 5px; padding-right: 5px; color: white; background: rgb(0, 78, 161); } +QPushButton#transferButton:hover { background: rgb(2, 65, 132); } +QPushButton#transferButton:pressed { background: rgb(6, 94, 187); } +QPushButton#transferButton[iconProperty="left"] { qproperty-icon: url(:/White/left); } +QPushButton#transferButton[iconProperty="right"] { qproperty-icon: url(:/White/right); } + +QPushButton#openButton { border-radius: none; image: url(:/White/open); background: transparent; } +QPushButton#openButton:hover { image: url(:/White/openHover); } +QPushButton#openButton:pressed { image: url(:/White/openPressed); } + +QPushButton#deleteButton { border-radius: none; image: url(:/White/delete); background: transparent; } +QPushButton#deleteButton:hover { image: url(:/White/deleteHover); } +QPushButton#deleteButton:pressed { image: url(:/White/deletePressed); } + +QPushButton#menuButton { text-align: left center; padding-left: 3px; color: rgb(84, 84, 84); border: 1px solid rgb(111, 156, 207); background: white; } +QPushButton#menuButton::menu-indicator{ subcontrol-position: right center; subcontrol-origin: padding; image: url(:/White/arrowBottom); padding-right: 3px; } diff --git a/client/webrtc_demo/qss/icon/1-最大化.svg b/client/webrtc_demo/qss/icon/1-最大化.svg new file mode 100644 index 0000000..b704561 --- /dev/null +++ b/client/webrtc_demo/qss/icon/1-最大化.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/webrtc_demo/qss/icon/Thumbs.db b/client/webrtc_demo/qss/icon/Thumbs.db new file mode 100644 index 0000000..fb49600 Binary files /dev/null and b/client/webrtc_demo/qss/icon/Thumbs.db differ diff --git a/client/webrtc_demo/qss/icon/action_config.png b/client/webrtc_demo/qss/icon/action_config.png new file mode 100644 index 0000000..f7e64b6 Binary files /dev/null and b/client/webrtc_demo/qss/icon/action_config.png differ diff --git a/client/webrtc_demo/qss/icon/array.svg b/client/webrtc_demo/qss/icon/array.svg new file mode 100644 index 0000000..7ae234d --- /dev/null +++ b/client/webrtc_demo/qss/icon/array.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/webrtc_demo/qss/icon/boolean.svg b/client/webrtc_demo/qss/icon/boolean.svg new file mode 100644 index 0000000..6592ee0 --- /dev/null +++ b/client/webrtc_demo/qss/icon/boolean.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/webrtc_demo/qss/icon/btn_close_down.png b/client/webrtc_demo/qss/icon/btn_close_down.png new file mode 100644 index 0000000..814cdc7 Binary files /dev/null and b/client/webrtc_demo/qss/icon/btn_close_down.png differ diff --git a/client/webrtc_demo/qss/icon/btn_close_down.svg b/client/webrtc_demo/qss/icon/btn_close_down.svg new file mode 100644 index 0000000..095ee89 --- /dev/null +++ b/client/webrtc_demo/qss/icon/btn_close_down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/webrtc_demo/qss/icon/btn_close_highlight.png b/client/webrtc_demo/qss/icon/btn_close_highlight.png new file mode 100644 index 0000000..2bc66bb Binary files /dev/null and b/client/webrtc_demo/qss/icon/btn_close_highlight.png differ diff --git a/client/webrtc_demo/qss/icon/btn_close_normal.png b/client/webrtc_demo/qss/icon/btn_close_normal.png new file mode 100644 index 0000000..11c1f52 Binary files /dev/null and b/client/webrtc_demo/qss/icon/btn_close_normal.png differ diff --git a/client/webrtc_demo/qss/icon/btn_data.png b/client/webrtc_demo/qss/icon/btn_data.png new file mode 100644 index 0000000..61329e1 Binary files /dev/null and b/client/webrtc_demo/qss/icon/btn_data.png differ diff --git a/client/webrtc_demo/qss/icon/btn_max_down.png b/client/webrtc_demo/qss/icon/btn_max_down.png new file mode 100644 index 0000000..ab159f8 Binary files /dev/null and b/client/webrtc_demo/qss/icon/btn_max_down.png differ diff --git a/client/webrtc_demo/qss/icon/btn_max_highlight.png b/client/webrtc_demo/qss/icon/btn_max_highlight.png new file mode 100644 index 0000000..f9a2a1b Binary files /dev/null and b/client/webrtc_demo/qss/icon/btn_max_highlight.png differ diff --git a/client/webrtc_demo/qss/icon/btn_max_normal.png b/client/webrtc_demo/qss/icon/btn_max_normal.png new file mode 100644 index 0000000..cb065af Binary files /dev/null and b/client/webrtc_demo/qss/icon/btn_max_normal.png differ diff --git a/client/webrtc_demo/qss/icon/btn_max_normal.svg b/client/webrtc_demo/qss/icon/btn_max_normal.svg new file mode 100644 index 0000000..daacc05 --- /dev/null +++ b/client/webrtc_demo/qss/icon/btn_max_normal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/webrtc_demo/qss/icon/btn_mini_down.png b/client/webrtc_demo/qss/icon/btn_mini_down.png new file mode 100644 index 0000000..d7a579a Binary files /dev/null and b/client/webrtc_demo/qss/icon/btn_mini_down.png differ diff --git a/client/webrtc_demo/qss/icon/btn_mini_down.svg b/client/webrtc_demo/qss/icon/btn_mini_down.svg new file mode 100644 index 0000000..4ae753b --- /dev/null +++ b/client/webrtc_demo/qss/icon/btn_mini_down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/webrtc_demo/qss/icon/btn_mini_highlight.png b/client/webrtc_demo/qss/icon/btn_mini_highlight.png new file mode 100644 index 0000000..71b6020 Binary files /dev/null and b/client/webrtc_demo/qss/icon/btn_mini_highlight.png differ diff --git a/client/webrtc_demo/qss/icon/btn_mini_normal.png b/client/webrtc_demo/qss/icon/btn_mini_normal.png new file mode 100644 index 0000000..644727a Binary files /dev/null and b/client/webrtc_demo/qss/icon/btn_mini_normal.png differ diff --git a/client/webrtc_demo/qss/icon/btn_restore_down.png b/client/webrtc_demo/qss/icon/btn_restore_down.png new file mode 100644 index 0000000..67b4705 Binary files /dev/null and b/client/webrtc_demo/qss/icon/btn_restore_down.png differ diff --git a/client/webrtc_demo/qss/icon/btn_restore_down.svg b/client/webrtc_demo/qss/icon/btn_restore_down.svg new file mode 100644 index 0000000..04bc9e2 --- /dev/null +++ b/client/webrtc_demo/qss/icon/btn_restore_down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/webrtc_demo/qss/icon/btn_restore_highlight.png b/client/webrtc_demo/qss/icon/btn_restore_highlight.png new file mode 100644 index 0000000..f57eb81 Binary files /dev/null and b/client/webrtc_demo/qss/icon/btn_restore_highlight.png differ diff --git a/client/webrtc_demo/qss/icon/btn_restore_normal.png b/client/webrtc_demo/qss/icon/btn_restore_normal.png new file mode 100644 index 0000000..e53f9c1 Binary files /dev/null and b/client/webrtc_demo/qss/icon/btn_restore_normal.png differ diff --git a/client/webrtc_demo/qss/icon/btn_serial.png b/client/webrtc_demo/qss/icon/btn_serial.png new file mode 100644 index 0000000..8543aa8 Binary files /dev/null and b/client/webrtc_demo/qss/icon/btn_serial.png differ diff --git a/client/webrtc_demo/qss/icon/charts.png b/client/webrtc_demo/qss/icon/charts.png new file mode 100644 index 0000000..ddb2e5b Binary files /dev/null and b/client/webrtc_demo/qss/icon/charts.png differ diff --git a/client/webrtc_demo/qss/icon/check_box_p.png b/client/webrtc_demo/qss/icon/check_box_p.png new file mode 100644 index 0000000..33c8d49 Binary files /dev/null and b/client/webrtc_demo/qss/icon/check_box_p.png differ diff --git a/client/webrtc_demo/qss/icon/checkbox.png b/client/webrtc_demo/qss/icon/checkbox.png new file mode 100644 index 0000000..2c56aa4 Binary files /dev/null and b/client/webrtc_demo/qss/icon/checkbox.png differ diff --git a/client/webrtc_demo/qss/icon/checkbox_h.png b/client/webrtc_demo/qss/icon/checkbox_h.png new file mode 100644 index 0000000..3d89dc3 Binary files /dev/null and b/client/webrtc_demo/qss/icon/checkbox_h.png differ diff --git a/client/webrtc_demo/qss/icon/checkbox_p.png b/client/webrtc_demo/qss/icon/checkbox_p.png new file mode 100644 index 0000000..8f8d37b Binary files /dev/null and b/client/webrtc_demo/qss/icon/checkbox_p.png differ diff --git a/client/webrtc_demo/qss/icon/close_main.png b/client/webrtc_demo/qss/icon/close_main.png new file mode 100644 index 0000000..3356428 Binary files /dev/null and b/client/webrtc_demo/qss/icon/close_main.png differ diff --git a/client/webrtc_demo/qss/icon/code-array.svg b/client/webrtc_demo/qss/icon/code-array.svg new file mode 100644 index 0000000..0434557 --- /dev/null +++ b/client/webrtc_demo/qss/icon/code-array.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/webrtc_demo/qss/icon/combo_arrow.png b/client/webrtc_demo/qss/icon/combo_arrow.png new file mode 100644 index 0000000..a054bcd Binary files /dev/null and b/client/webrtc_demo/qss/icon/combo_arrow.png differ diff --git a/client/webrtc_demo/qss/icon/dataflow.svg b/client/webrtc_demo/qss/icon/dataflow.svg new file mode 100644 index 0000000..0c69265 --- /dev/null +++ b/client/webrtc_demo/qss/icon/dataflow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/webrtc_demo/qss/icon/downarrow.png b/client/webrtc_demo/qss/icon/downarrow.png new file mode 100644 index 0000000..b810e44 Binary files /dev/null and b/client/webrtc_demo/qss/icon/downarrow.png differ diff --git a/client/webrtc_demo/qss/icon/hor_scroll_left_arrow.png b/client/webrtc_demo/qss/icon/hor_scroll_left_arrow.png new file mode 100644 index 0000000..1093f6e Binary files /dev/null and b/client/webrtc_demo/qss/icon/hor_scroll_left_arrow.png differ diff --git a/client/webrtc_demo/qss/icon/hor_scroll_right_arrow.png b/client/webrtc_demo/qss/icon/hor_scroll_right_arrow.png new file mode 100644 index 0000000..cc3bf17 Binary files /dev/null and b/client/webrtc_demo/qss/icon/hor_scroll_right_arrow.png differ diff --git a/client/webrtc_demo/qss/icon/int.png b/client/webrtc_demo/qss/icon/int.png new file mode 100644 index 0000000..1052220 Binary files /dev/null and b/client/webrtc_demo/qss/icon/int.png differ diff --git a/client/webrtc_demo/qss/icon/int.svg b/client/webrtc_demo/qss/icon/int.svg new file mode 100644 index 0000000..9ce427c --- /dev/null +++ b/client/webrtc_demo/qss/icon/int.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/webrtc_demo/qss/icon/key.svg b/client/webrtc_demo/qss/icon/key.svg new file mode 100644 index 0000000..cda69f7 --- /dev/null +++ b/client/webrtc_demo/qss/icon/key.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/webrtc_demo/qss/icon/logo.png b/client/webrtc_demo/qss/icon/logo.png new file mode 100644 index 0000000..5fbeb2a Binary files /dev/null and b/client/webrtc_demo/qss/icon/logo.png differ diff --git a/client/webrtc_demo/qss/icon/missing.svg b/client/webrtc_demo/qss/icon/missing.svg new file mode 100644 index 0000000..fba40ff --- /dev/null +++ b/client/webrtc_demo/qss/icon/missing.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/webrtc_demo/qss/icon/objects.svg b/client/webrtc_demo/qss/icon/objects.svg new file mode 100644 index 0000000..2f33712 --- /dev/null +++ b/client/webrtc_demo/qss/icon/objects.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/webrtc_demo/qss/icon/radio.png b/client/webrtc_demo/qss/icon/radio.png new file mode 100644 index 0000000..8c32808 Binary files /dev/null and b/client/webrtc_demo/qss/icon/radio.png differ diff --git a/client/webrtc_demo/qss/icon/radio_h.png b/client/webrtc_demo/qss/icon/radio_h.png new file mode 100644 index 0000000..84407ba Binary files /dev/null and b/client/webrtc_demo/qss/icon/radio_h.png differ diff --git a/client/webrtc_demo/qss/icon/radio_p.png b/client/webrtc_demo/qss/icon/radio_p.png new file mode 100644 index 0000000..4f32d5e Binary files /dev/null and b/client/webrtc_demo/qss/icon/radio_p.png differ diff --git a/client/webrtc_demo/qss/icon/sizegrip.png b/client/webrtc_demo/qss/icon/sizegrip.png new file mode 100644 index 0000000..f2667b9 Binary files /dev/null and b/client/webrtc_demo/qss/icon/sizegrip.png differ diff --git a/client/webrtc_demo/qss/icon/string.svg b/client/webrtc_demo/qss/icon/string.svg new file mode 100644 index 0000000..924a541 --- /dev/null +++ b/client/webrtc_demo/qss/icon/string.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/webrtc_demo/qss/icon/ver_scroll_bottom_arrow.png b/client/webrtc_demo/qss/icon/ver_scroll_bottom_arrow.png new file mode 100644 index 0000000..2be161f Binary files /dev/null and b/client/webrtc_demo/qss/icon/ver_scroll_bottom_arrow.png differ diff --git a/client/webrtc_demo/qss/icon/ver_scroll_top_arrow.png b/client/webrtc_demo/qss/icon/ver_scroll_top_arrow.png new file mode 100644 index 0000000..a8e4fed Binary files /dev/null and b/client/webrtc_demo/qss/icon/ver_scroll_top_arrow.png differ diff --git a/client/webrtc_demo/qss/icon/关闭.svg b/client/webrtc_demo/qss/icon/关闭.svg new file mode 100644 index 0000000..90e1a95 --- /dev/null +++ b/client/webrtc_demo/qss/icon/关闭.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/webrtc_demo/qss/icon/最小化.svg b/client/webrtc_demo/qss/icon/最小化.svg new file mode 100644 index 0000000..171b4f6 --- /dev/null +++ b/client/webrtc_demo/qss/icon/最小化.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/webrtc_demo/qss/qss.qrc b/client/webrtc_demo/qss/qss.qrc new file mode 100644 index 0000000..5792182 --- /dev/null +++ b/client/webrtc_demo/qss/qss.qrc @@ -0,0 +1,56 @@ + + + icon/btn_close_down.png + icon/btn_close_highlight.png + icon/btn_close_normal.png + icon/btn_max_down.png + icon/btn_max_highlight.png + icon/btn_max_normal.png + icon/btn_mini_down.png + icon/btn_mini_highlight.png + icon/btn_mini_normal.png + icon/btn_restore_down.png + icon/btn_restore_highlight.png + icon/btn_restore_normal.png + icon/checkbox.png + icon/checkbox_h.png + icon/checkbox_p.png + icon/downarrow.png + icon/hor_scroll_left_arrow.png + icon/hor_scroll_right_arrow.png + icon/radio.png + icon/radio_h.png + icon/radio_p.png + icon/ver_scroll_bottom_arrow.png + icon/ver_scroll_top_arrow.png + icon/sizegrip.png + css/qss.css + icon/btn_serial.png + css/white.css + css/dark.css + icon/btn_data.png + icon/dataflow.svg + icon/check_box_p.png + icon/combo_arrow.png + icon/charts.png + icon/btn_max_normal.svg + icon/btn_restore_down.svg + icon/btn_mini_down.svg + icon/btn_close_down.svg + icon/close_main.png + icon/logo.png + icon/key.svg + icon/action_config.png + icon/int.svg + icon/objects.svg + icon/string.svg + icon/missing.svg + css/QssMainWindow.css + css/QssTitleBar.css + css/corrugation_form.css + css/vibration_comparison_form.css + css/mainwindow.css + css/basic.css + css/save_data_form.css + + diff --git a/client/webrtc_demo/src/MyCapturer.cpp b/client/webrtc_demo/src/camera_capture.cpp similarity index 89% rename from client/webrtc_demo/src/MyCapturer.cpp rename to client/webrtc_demo/src/camera_capture.cpp index 18f33a8..ed7c83f 100644 --- a/client/webrtc_demo/src/MyCapturer.cpp +++ b/client/webrtc_demo/src/camera_capture.cpp @@ -1,36 +1,35 @@ -#include "MyCapturer.h" +#include "camera_capture.h" #include "rtc_base/thread.h" #include #include #include #include "easylog.h" -MyCapturer::MyCapturer() { +CameraCapturer::CameraCapturer() { } -void MyCapturer::startCapturer() { +void CameraCapturer::startCapturer() { auto options = webrtc::DesktopCaptureOptions::CreateDefault(); options.set_allow_directx_capturer(true); capturer_ = webrtc::DesktopCapturer::CreateScreenCapturer(options); capturer_->Start(this); CaptureFrame(); - } -webrtc::MediaSourceInterface::SourceState MyCapturer::state() const { +webrtc::MediaSourceInterface::SourceState CameraCapturer::state() const { return webrtc::MediaSourceInterface::kLive; } -bool MyCapturer::remote() const { +bool CameraCapturer::remote() const { return false; } -bool MyCapturer::is_screencast() const { +bool CameraCapturer::is_screencast() const { return true; } -absl::optional MyCapturer::needs_denoising() const { +absl::optional CameraCapturer::needs_denoising() const { return false; } @@ -95,25 +94,19 @@ static void RawToBmp(unsigned char *pRawImage, int ImageHeight, int ImageWidth, } } } - - int dw = ImageWidth*bitcount / 8; for (int i = 0; i < ImageHeight; i++) { memcpy(imgData + headerLength + dataSizePerLine*i, pRawImage + dw*i, dw); } - - FILE *fp_bmp; fp_bmp = fopen(filePath.c_str()/*"temp.bmp"*/, "wb"); fwrite((void*)imgData, bfSize, 1, fp_bmp); fclose(fp_bmp); - - } -void MyCapturer::OnCaptureResult(webrtc::DesktopCapturer::Result result, +void CameraCapturer::OnCaptureResult(webrtc::DesktopCapturer::Result result, std::unique_ptr frame) { if (result != webrtc::DesktopCapturer::Result::SUCCESS) return; @@ -131,12 +124,12 @@ void MyCapturer::OnCaptureResult(webrtc::DesktopCapturer::Result result, OnFrame(webrtc::VideoFrame(i420_buffer_, 0, 0, webrtc::kVideoRotation_0)); } -void MyCapturer::OnMessage(rtc::Message* msg) { +void CameraCapturer::OnMessage(rtc::Message* msg) { if (msg->message_id == 0) CaptureFrame(); } -void MyCapturer::CaptureFrame() { +void CameraCapturer::CaptureFrame() { capturer_->CaptureFrame(); rtc::Location loc(__FUNCTION__, __FILE__,__LINE__); diff --git a/client/webrtc_demo/src/MyCapturer.h b/client/webrtc_demo/src/camera_capture.h similarity index 84% rename from client/webrtc_demo/src/MyCapturer.h rename to client/webrtc_demo/src/camera_capture.h index b7c976e..63e48c9 100644 --- a/client/webrtc_demo/src/MyCapturer.h +++ b/client/webrtc_demo/src/camera_capture.h @@ -12,29 +12,23 @@ #include "rtc_base/message_handler.h" #include "libyuv.h" -class MyCapturer : public rtc::AdaptedVideoTrackSource, +class CameraCapturer : public rtc::AdaptedVideoTrackSource, public rtc::MessageHandler, public webrtc::DesktopCapturer::Callback { - public: - MyCapturer(); - +public: + CameraCapturer(); void startCapturer(); - void CaptureFrame(); - bool is_screencast() const override; absl::optional needs_denoising() const override; - webrtc::MediaSourceInterface::SourceState state() const override; - bool remote() const override; - void OnCaptureResult(webrtc::DesktopCapturer::Result result, - std::unique_ptr frame) override; + std::unique_ptr frame) override; void OnMessage(rtc::Message* msg) override; - private: +private: std::unique_ptr capturer_; rtc::scoped_refptr i420_buffer_; //mutable volatile int ref_count_; diff --git a/client/webrtc_demo/src/cplaywidget.cpp b/client/webrtc_demo/src/cplaywidget.cpp index b7899b3..730767c 100644 --- a/client/webrtc_demo/src/cplaywidget.cpp +++ b/client/webrtc_demo/src/cplaywidget.cpp @@ -271,7 +271,6 @@ void CPlayWidget::paintGL() void CPlayWidget::initShaderYuv() { //?????????????????tex_y, tex_u, tex_v????,?????????????????? - //?????????????????? textureUniformY = m_pShaderProgram->uniformLocation("tex_y"); textureUniformU = m_pShaderProgram->uniformLocation("tex_u"); textureUniformV = m_pShaderProgram->uniformLocation("tex_v"); diff --git a/client/webrtc_demo/src/main.cpp b/client/webrtc_demo/src/main.cpp index 0e320a5..5804837 100644 --- a/client/webrtc_demo/src/main.cpp +++ b/client/webrtc_demo/src/main.cpp @@ -45,11 +45,12 @@ #include "api/video/i420_buffer.h" #include "signal_client.h" #include - +#include #pragma comment (lib,"advapi32.lib") extern"C" + BOOLEAN WINAPI SystemFunction036(PVOID, ULONG); #pragma comment(lib, "ws2_32.lib") @@ -66,31 +67,10 @@ BOOLEAN WINAPI SystemFunction036(PVOID, ULONG); #pragma comment(lib, "Gdi32.lib") -void EnumCapture() -{ - std::unique_ptr info( - webrtc::VideoCaptureFactory::CreateDeviceInfo()); - int num_devices = info->NumberOfDevices(); - if (!info) { - RTC_LOG(LERROR) << "CreateDeviceInfo failed"; - return; - } - for (int i = 0; i < num_devices; ++i) { - char name[128]; - char id[128]; - info->GetDeviceName(i,name,128,id,128,nullptr,0); - int cap_len = info->NumberOfCapabilities(id); - for(int j = 0;j < cap_len;j++){ - webrtc::VideoCaptureCapability p; - info->GetCapability(id,j,p); - qDebug()<>("rtc::scoped_refptr"); qRegisterMetaType>("rtc::scoped_refptr&"); @@ -102,6 +82,7 @@ void InitCustomMetaType(){ } + int main(int argc, char *argv[]) { InitCustomMetaType(); @@ -117,7 +98,11 @@ int main(int argc, char *argv[]) QCoreApplication::setAttribute(Qt::AA_DisableHighDpiScaling); QApplication a(argc, argv); MainWindow w; + w.setFixedSize(1024,768); + w.setWindowTitle(QString("webrtc janus demo ")); w.show(); return a.exec(); } + + diff --git a/client/webrtc_demo/src/mainwindow.cpp b/client/webrtc_demo/src/mainwindow.cpp index 1f012fb..3c5daca 100644 --- a/client/webrtc_demo/src/mainwindow.cpp +++ b/client/webrtc_demo/src/mainwindow.cpp @@ -2,7 +2,7 @@ #include "ui_mainwindow.h" #include #include -#include "MyCapturer.h" +#include "camera_capture.h" #include #include #include @@ -17,6 +17,50 @@ const char kCandidateSdpMlineIndexName[] = "sdpMLineIndex"; const char kCandidateSdpName[] = "candidate"; +typedef struct { + std::string id; + std::string name; + std::vector caps; +} VideoDevice; + +std::vector EnumCaptures() +{ + std::vector ret; + std::unique_ptr info( + webrtc::VideoCaptureFactory::CreateDeviceInfo()); + + int num_devices = info->NumberOfDevices(); + if (!info) { + RTC_LOG(LERROR) << "CreateDeviceInfo failed"; + return ret; + } + for (int i = 0; i < num_devices; ++i) { + VideoDevice v; + char name[128]; + char id[128]; + + info->GetDeviceName(i,name,128,id,128,nullptr,0); + int cap_len = info->NumberOfCapabilities(id); + for(int j = 0;j < cap_len;j++){ + webrtc::VideoCaptureCapability p; + info->GetCapability(id,j,p); + qDebug()<()) ,mSignalClient(nullptr) @@ -62,6 +106,12 @@ MainWindow::MainWindow(QWidget *parent) ,mLocalVideoTrack(nullptr) { ui->setupUi(this); + std::vector devices = EnumCaptures(); + + for(auto itr = devices.begin();itr != devices.end();itr++){ + ui->comboBox->addItem(QString::fromStdString(itr->name),QString::fromStdString(itr->name)); + } + ui->openGLWidget->show(); TCHAR username[UNLEN + 1]; @@ -76,6 +126,9 @@ MainWindow::MainWindow(QWidget *parent) this,SLOT(on_local_sdp(QString))); connect((WebrtcHanlder*)(mHandler.get()),SIGNAL(OnRemoteTrack(webrtc::MediaStreamTrackInterface*)), this,SLOT(on_track_add(webrtc::MediaStreamTrackInterface*))); + + mHandler->InitWebrtc(); + } MainWindow::~MainWindow() @@ -102,7 +155,6 @@ WebrtcHanlder::WebrtcHanlder() int WebrtcHanlder::InitWebrtc() { - m_peer_connection_factory_ = webrtc::CreatePeerConnectionFactory( nullptr /* network_thread */, nullptr /* worker_thread */, nullptr /* signaling_thread */, nullptr /* default_adm */, @@ -133,7 +185,7 @@ int WebrtcHanlder::InitWebrtc() config, nullptr, nullptr, this); if (!m_peer_connection_) { - auto x = new QMessageBox(nullptr); + auto x = new QMessageBox(nullptr); x->setText("创建peerconnection失败"); x->show(); exit(0); @@ -231,6 +283,7 @@ void WebrtcHanlder::SetRemoteCandidate(QString sdp) void WebrtcHanlder::CreateAnwer() { qDebug()<<"create answer"; + qDebug()<CreateAnswer( this, webrtc::PeerConnectionInterface::RTCOfferAnswerOptions()); gLog()->Log((QString::asprintf("%s %d",__FILE__,__LINE__) + @@ -267,7 +320,7 @@ void WebrtcHanlder::AddLocalTrack() gLog()->Log((QString::asprintf("%s %d",__FILE__,__LINE__) + " m_peer_connection_ AddTrack" + kAudioLabel).toStdString()); if(mVideoTrack == nullptr){ - rtc::scoped_refptr video_device = new rtc::RefCountedObject(); + rtc::scoped_refptr video_device = new rtc::RefCountedObject(); if (video_device) { video_device->startCapturer(); rtc::scoped_refptr video_track_( @@ -446,7 +499,7 @@ void MainWindow::signal_response(int type,QJsonObject data) { qDebug()<mModel->clear(); for (auto itr = data.begin();itr != data.end();itr++){ auto item = new QStandardItem(itr.key()); @@ -454,7 +507,7 @@ void MainWindow::signal_response(int type,QJsonObject data) mModel->appendRow(item); } break; - case 2005: + case 2005: // RESP_SENDSDP { auto sdp = data["sdp"].toString(); auto remote_name = data["remote_name"].toString(); @@ -466,7 +519,7 @@ void MainWindow::signal_response(int type,QJsonObject data) mHandler->CreateAnwer(); break; } - case 2006: + case 2006: //RESP_SENDCANDIDATE { auto candidate = data["candidate"].toString(); auto remote_names = data["remote_name"].toString(); @@ -488,7 +541,6 @@ void MainWindow::itemClicked(QModelIndex index) qDebug()<<"请先连接信令服务"; return; } - mHandler->InitWebrtc(); this->mLocalVideoTrack = mHandler->VideoTrack(); qDebug()<item(index.row())->text(); diff --git a/client/webrtc_demo/src/mainwindow.h b/client/webrtc_demo/src/mainwindow.h index 10568d8..efaef21 100644 --- a/client/webrtc_demo/src/mainwindow.h +++ b/client/webrtc_demo/src/mainwindow.h @@ -29,6 +29,7 @@ #include "api/video/i420_buffer.h" #include "signal_client.h" #include +#include "Qss.h" QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } @@ -148,7 +149,7 @@ private: webrtc::AudioTrackInterface *mAudioTrack; }; -class MainWindow :public QMainWindow +class MainWindow :public QssMainWindow { Q_OBJECT public: diff --git a/client/webrtc_demo/src/mainwindow.ui b/client/webrtc_demo/src/mainwindow.ui index 2fa6b9b..68b43e5 100644 --- a/client/webrtc_demo/src/mainwindow.ui +++ b/client/webrtc_demo/src/mainwindow.ui @@ -6,8 +6,8 @@ 0 0 - 1056 - 616 + 1166 + 776 @@ -73,7 +73,7 @@ - ws://192.168.5.73:9555/ws + ws://192.168.5.192:9555/ws diff --git a/client/webrtc_demo/src/signal_client.cpp b/client/webrtc_demo/src/signal_client.cpp index fac3d65..1b87103 100644 --- a/client/webrtc_demo/src/signal_client.cpp +++ b/client/webrtc_demo/src/signal_client.cpp @@ -160,7 +160,6 @@ void SignalClient::onSocketError(QAbstractSocket::SocketError error) qDebug()<Log((QString::asprintf("%s %d",__FILE__,__LINE__) + " WebSocket unconnected").toStdString()); - } void SignalClient::onReconenectTimeout() diff --git a/client/webrtc_demo/src/video_capture.cpp b/client/webrtc_demo/src/video_capture.cpp index 01435af..0ee77dd 100644 --- a/client/webrtc_demo/src/video_capture.cpp +++ b/client/webrtc_demo/src/video_capture.cpp @@ -79,9 +79,9 @@ void VcmCapturerTest::OnFrame(const webrtc::VideoFrame& frame) { std::chrono::system_clock::now().time_since_epoch()).count(); static size_t cnt = 0; -// RTC_LOG(LS_INFO) << "OnFrame "<type() -// <<" stride "<GetI420()->StrideY()<< frame.video_frame_buffer().get()->GetI420()->StrideU() ; + RTC_LOG(LS_INFO) << "OnFrame "<type() + <<" stride "<GetI420()->StrideY()<< frame.video_frame_buffer().get()->GetI420()->StrideU() ; int m_height = frame.height(); int m_width = frame.width(); diff --git a/client/webrtc_demo/src/video_capturer_test.h b/client/webrtc_demo/src/video_capturer_test.h index c199b2d..d5c8703 100644 --- a/client/webrtc_demo/src/video_capturer_test.h +++ b/client/webrtc_demo/src/video_capturer_test.h @@ -13,6 +13,10 @@ #include #include + +void EnumCapture(); + + class VideoCapturerTest : public QObject, public rtc::VideoSourceInterface{ Q_OBJECT diff --git a/client/webrtc_demo/webrtc_demo.pro b/client/webrtc_demo/webrtc_demo.pro index 1697823..d329001 100644 --- a/client/webrtc_demo/webrtc_demo.pro +++ b/client/webrtc_demo/webrtc_demo.pro @@ -1,6 +1,8 @@ QT += core gui websockets +include(D:\\project\\c++qt\\qsswraper\\qsswraper.pri) +RESOURCES += $$PWD/qss/qss.qrc greaterThan(QT_MAJOR_VERSION, 4): QT += widgets @@ -21,7 +23,7 @@ INCLUDEPATH += third/include/ LIBS += -L$$PWD/third/lib libwebrtc.lib ole32.lib oleaut32.lib strmiids.lib yuv.lib SOURCES += \ - src/MyCapturer.cpp \ + src/camera_capture.cpp \ src/cplaywidget.cpp \ src/easylog.cpp \ src/main.cpp \ @@ -31,7 +33,7 @@ SOURCES += \ src/video_capturer_test.cpp HEADERS += \ - src/MyCapturer.h \ + src/camera_capture.h \ src/cplaywidget.h \ src/easylog.h \ src/mainwindow.h \