Skip to content

Commit

Permalink
Merge pull request #47 from introlab/dev
Browse files Browse the repository at this point in the history
Dev merge for 1.0.1 release
  • Loading branch information
SBriere authored Jan 28, 2021
2 parents aae78ba + 1c08893 commit 1cbf8ca
Show file tree
Hide file tree
Showing 66 changed files with 11,043 additions and 1,586 deletions.
5 changes: 4 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,12 @@ cmake_policy(SET CMP0043 NEW)
# Software version
SET(CPACK_PACKAGE_VERSION_MAJOR "1")
SET(CPACK_PACKAGE_VERSION_MINOR "0")
SET(CPACK_PACKAGE_VERSION_PATCH "0")
SET(CPACK_PACKAGE_VERSION_PATCH "1")
SET(CPACK_PACKAGE_VERSION ${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH})
add_definitions(-DOPENTERAPLUS_VERSION="${CPACK_PACKAGE_VERSION}" )
add_definitions(-DOPENTERAPLUS_VERSION_MAJOR="${CPACK_PACKAGE_VERSION_MAJOR}" )
add_definitions(-DOPENTERAPLUS_VERSION_MINOR="${CPACK_PACKAGE_VERSION_MINOR}" )
add_definitions(-DOPENTERAPLUS_VERSION_PATCH="${CPACK_PACKAGE_VERSION_PATCH}" )
add_definitions(-DOPENTERAPLUS_CLIENT_NAME="${CMAKE_PROJECT_NAME}")

# Compile in debug or release mode
Expand Down
56 changes: 44 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,46 @@
# OpenTera Qt/C++ Client

The client works with the [OpenTera Server](https://github.com/introlab/opentera) and allows :
- Site management
- Participant management
- Device management
- Session management
- File Download

# Authors
<img src="docs/logo/LogoOpenTeraPlus.png" width="500">

# OpenTeraPlus
OpenTeraPlus is a client that works with [OpenTera Server](https://github.com/introlab/opentera). It aims to act as a general tool to manage an OpenTera instance and to provide service specific features, such as VideoRehabilitation.

## Authors

* Simon Brière, ing. M.Sc.A., Research Center on Aging, CIUSSS de l'Estrie-CHUS (@sbriere)
* Dominic Létourneau, ing. M.Sc.A., IntRoLab, Université de Sherbrooke (@doumdi)

- Simon Brière
- Dominic Létourneau
## Current Features

### High-level features
* Global system management including users access roles for specific sites and projects, devices, sessions types and services
* Participant (patient) management, including activation/deactivation, grouping and sessions dashboard
* Specific integration for telerehabilitation services and all clinical activites that involves a secure and adapted audio-video-data session
* Sessions allows to have data files attached to them and events

### Detailled features
* User-based login
* Implementation of role access architecture from OpenTera Server
* Site and project management
* User groups access
* Session types
* Allowed services
* Participant (patient) management
* Participant grouping
* Participant enabling / disabling, including web access and traditional password
* Session management
* New session creation and edition of existing sessions
* Calendar view of realized and planned sessions
* Session events view
* Assets (data file) download and management
* Devices management
* Device association
* Device enabling / disabling
* Device configuration editing
* Services managements
* Edit configuration
* ... and more!

# Screenshots
Coming soon!

# License
OpenTeraPlus is licensed under [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0.txt)
Binary file modified client/resources/TeRA_Background.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
5 changes: 3 additions & 2 deletions client/resources/TeraClient.qrc
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
<qresource prefix="/">
<file>logos/Estrad.png</file>
<file>logos/IntRoLab.png</file>
<file>logos/LOGO Transparent.png</file>
<file>logos/logo_CDRV.png</file>
<file>status/calling.gif</file>
<file>status/connecting.gif</file>
Expand All @@ -11,7 +10,6 @@
<file>status/status_notok.png</file>
<file>status/status_ok.png</file>
<file>status/warning.png</file>
<file>icons/ESTRAD.ico</file>
<file>controls/branch_closed.png</file>
<file>controls/branch_left.png</file>
<file>controls/branch_opened.png</file>
Expand Down Expand Up @@ -132,5 +130,8 @@
<file>icons/smile.png</file>
<file>defaults/OpenTeraPlus.json</file>
<file>sounds/notify_invite.wav</file>
<file>icons/random.png</file>
<file>logos/LogoOpenTeraPlus.png</file>
<file>icons/OpenTeraPlus.ico</file>
</qresource>
</RCC>
10 changes: 3 additions & 7 deletions client/resources/defaults/OpenTeraPlus.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,9 @@
"logToFile": true
},
"Servers": {
"Local-40075": {
"url": "localhost",
"Local - Port 40075": {
"url": "127.0.0.1",
"port": 40075
},
"3IT-Telesante": {
"url": "telesante.3it.usherbrooke.ca",
"port": 40075
}
}
}
}
Binary file removed client/resources/icons/ESTRAD.ico
Binary file not shown.
Binary file added client/resources/icons/OpenTeraPlus.ico
Binary file not shown.
Binary file added client/resources/icons/random.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed client/resources/logos/LOGO Transparent.png
Binary file not shown.
Binary file added client/resources/logos/LogoOpenTeraPlus.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
68 changes: 44 additions & 24 deletions client/resources/stylesheet.qss
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ QStatusBar::item{border: 1px transparent black;}
*/
QMainWindow::separator { background: rgb(29,29,29);width: 5px;height: 5px;}
QMainWindow::separator:hover {background: black;}
QMainWindow{background: rgb(29,29,29); }
QMainWindow{background: #2c3338; }

/*
QFrame
Expand Down Expand Up @@ -146,7 +146,7 @@ QToolBox::tab:!selected {
/*
QDialog.
*/
QDialog {background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,stop: 0 rgb(64,64,64), stop: 1.0 rgb(40,40,40)); spacing: 3px;}
QDialog {background: #2c3338;/*qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,stop: 0 rgb(64,64,64), stop: 1.0 rgb(40,40,40));*/ spacing: 3px;}

/*
QLabel
Expand Down Expand Up @@ -182,21 +182,26 @@ QTreeWidget::branch:open:has-children:has-siblings {
/*
QLineEdit
*/
QLineEdit, QSpinBox, QTextEdit{
QLineEdit, QSpinBox, QTextEdit, QDateTimeEdit, QTimeEdit{
background-color: rgba(255,255,255,50%);
color:black;
min-height: 25px;
padding-left: 5px;
}

QLineEdit:!enabled, QSpinBox:!enabled, QTextEdit:!enabled{
QLineEdit:!enabled, QSpinBox:!enabled, QTextEdit:!enabled, QDateTimeEdit:!enabled, QTimeEdit:!enabled{
background-color: rgba(0,0,0,0%);
color:rgba(255,255,255,80%);
padding-left: 0px;
color: white;
}


QDateTimeEdit::down-arrow:!enabled, QDateTimeEdit::up-arrow:!enabled {
image: none;
}


/*
QPlainTextEdit
*/
Expand Down Expand Up @@ -240,8 +245,13 @@ QComboBox {
}

QComboBox:!enabled {
background-color: rgba(255,255,255,10%);
background-color: rgba(255,255,255,0%);
color: white;
border: 0px solid transparent;
}

QComboBox::down-arrow:!enabled {
image: none;
}

QComboBox QAbstractItemView {
Expand All @@ -265,17 +275,16 @@ QComboBox::item{
*/
QPushButton{
color:white;
background-color: qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 black, stop: 0.2 rgb(100,100,100), stop:1 black);
border: 2px solid rgb(96, 96, 96);
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #173448, stop: 1 #295d80);/*qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 black, stop: 0.2 #173448, stop:1 black);*/
border: 2px solid #15679e;
border-radius: 5px;
min-height: 30px;
min-width: 150px;
}

QPushButton:hover{
color:black;
background-color: qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 grey, stop: 0.2 rgb(200,200,200), stop:1 grey);
border: 2px solid rgb(186, 186, 186);
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #295d80, stop: 1 #173448);/*qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 #173448, stop: 0.2 rgb(200,200,200), stop:1 #173448);*/
border: 2px solid #3286bf /*rgb(186, 186, 186)*/;
border-radius: 5px;
}

Expand Down Expand Up @@ -455,20 +464,21 @@ QWidget#ConfigWidget{background-image: url(://TeRA_Background.png); }
QWidget#SessionWidget{background-image: url(://TeRA_Background.png); }

/* Customizations for Editors */
QPushButton#btnEdit:hover{
/*
QPushButton#btnEdit:hover, QPushButton#btnGeneratePassword:hover{
background-color: qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 rgba(0,5,45,100%), stop: 0.2 rgba(0,0,155,100%), stop:1 rgba(0,5,45,100%));
color: white;
border: 0px solid transparent;
}

QPushButton#btnEdit{
background-color: qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 rgba(0,0,155,100%), stop: 0.2 rgba(0,5,45,100%), stop:1 rgba(0,0,155,100%));
QPushButton#btnEdit, QPushButton#btnGeneratePassword{
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #173448, stop: 1 #295d80);
border: 0px solid transparent;
}

QPushButton#btnEdit:!enabled{
background-color: rgba(0,0,155,25%);
}
}*/

QLabel#lblTitle{
font-weight: bold;
Expand All @@ -489,36 +499,36 @@ QLabel#lblMessage{color:white;}
QFrame#frameMessage{background-color: transparent;}

/* Customizations for MainWindow */
QMainWindow{background-image: url(://TeRA_Background.png); background-color: rgb(0,0,70);}
QMainWindow{background-image: url(://TeRA_Background.png); background-color: #2c3338;}
QWidget#toolsWidget,QWidget#InToolsWidget{background-color:rgba(0,128,200,20%);}
QWidget#topWidget{background-color:rgba(0,128,200,50%);}
QWidget#docketTopWidget{background-color: #2c3338;}
QFrame#frameMenu,QFrame#frameVideo{border: 1px solid rgba(150,150,150,50%);}
QFrame#frameMessages{background-color:rgba(255,0,0,50%); border-radius:5px;}
QToolButton#btnVideoSwitch, QToolButton#btnLog {color: white; min-height: 35px; background-color: qlineargradient(spread:reflect, x1:0.220183, y1:0.745192, x2:1, y2:0, stop:0.201835 rgba(0, 0, 0, 255), stop:0.880734 rgba(255, 255, 255, 255), stop:1 rgba(189, 189, 189, 255)); border-radius: 5px;}

/* Red buttons */
QPushButton#btnLogout {
background-color: qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 rgba(140,10,10,100%), stop: 0.2 rgba(45,5,0,100%), stop:1 rgba(140,10,10,100%));
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #8f1010, stop: 1 #cc1616);/*qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 rgba(140,10,10,100%), stop: 0.2 rgba(45,5,0,100%), stop:1 rgba(140,10,10,100%));*/
color: white;
border: 1px solid rgb(150,0,0);
border: 1px solid #e60b0b;
}

QPushButton#btnLogout:hover {
background-color: qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 rgba(45,5,0,100%), stop: 0.2 rgba(140,10,10,100%), stop:1 rgba(45,5,0,100%));
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #cc1616, stop: 1 #8f1010);/*qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 rgba(45,5,0,100%), stop: 0.2 rgba(140,10,10,100%), stop:1 rgba(45,5,0,100%));*/
color: white;
border: 1px solid rgb(150,0,0);
border: 1px solid #e60b0b;
}

/* Green buttons */
QPushButton#btnNewSession, QPushButton#btnStartSession {
background-color: qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 rgba(10,140,10,100%), stop: 0.2 rgba(0,45,5,100%), stop:1 rgba(10,140,10,100%));
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 rgba(0,45,5,100%), stop: 1 rgba(10,140,10,100%));/*qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 rgba(10,140,10,100%), stop: 0.2 rgba(0,45,5,100%), stop:1 rgba(10,140,10,100%));*/
color: white;
border: 1px solid rgb(0,150,0);
min-height:36px;
}

QPushButton#btnNewSession:hover, QPushButton#btnStartSession:hover {
background-color: qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 rgba(0,45,5,100%), stop: 0.2 rgba(10,140,10,100%), stop:1 rgba(0,45,5,100%));
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 rgba(10,140,10,100%), stop: 1 rgba(0,45,5,100%));/*qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 rgba(0,45,5,100%), stop: 0.2 rgba(10,140,10,100%), stop:1 rgba(0,45,5,100%));*/
color: white;
border: 1px solid rgb(0,150,0);
min-height:36px;
Expand All @@ -530,8 +540,14 @@ QPushButton#btnNewSession:disabled, QPushButton#btnStartSession:disabled {
border: 0px transparent
}

QPushButton#btnEditUser,QPushButton#btnConfig {background-color: rgba(100,100,100,50%); min-width: 0px;}
QPushButton#btnEditUser::hover, QPushButton#btnConfig::hover{color:white;}
QPushButton#btnEditUser,QPushButton#btnConfig {
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 rgba(100,100,100,100%), stop: 1 rgba(148,148,148,100%)); /*rgba(100,100,100,50%); */
border: 1px solid rgba(148,148,148,100%);
min-width: 0px;
}
QPushButton#btnEditUser::hover, QPushButton#btnConfig::hover{
color:black;
}

QToolButton#btnVideo:!checked, QToolButton#btnLog:!checked{
color:white;
Expand Down Expand Up @@ -585,6 +601,10 @@ QFrame#frameCheckSessionTypes{
background-color: black;
}

QToolButton#btnRandomPass{
background-color: rgba(255,255,255,60%);
}

/* Customizations for SiteWidget */
QLabel#lblInherited{
font-weight: bold;
Expand Down
Loading

0 comments on commit 1cbf8ca

Please sign in to comment.