Browse Source

Implemented user defined subline.

pull/48/head
Simon Eisenmann 12 years ago
parent
commit
5add1c5a81
  1. 4
      static/js/controllers/mediastreamcontroller.js
  2. 22
      static/js/services/buddylist.js
  3. 4
      static/partials/buddy.html
  4. 10
      static/partials/buddyactions.html
  5. 113
      static/partials/settings.html

4
static/js/controllers/mediastreamcontroller.js

@ -139,6 +139,7 @@ define(['underscore', 'bigscreen', 'moment', 'sjcl', 'webrtc.adapter'], function @@ -139,6 +139,7 @@ define(['underscore', 'bigscreen', 'moment', 'sjcl', 'webrtc.adapter'], function
$scope.master = {
displayName: null,
buddyPicture: null,
message: null,
settings: {
videoQuality: "high",
stereo: true,
@ -175,7 +176,8 @@ define(['underscore', 'bigscreen', 'moment', 'sjcl', 'webrtc.adapter'], function @@ -175,7 +176,8 @@ define(['underscore', 'bigscreen', 'moment', 'sjcl', 'webrtc.adapter'], function
// This is the user status.
var status = {
displayName: $scope.master.displayName || null,
buddyPicture: $scope.master.buddyPicture || null
buddyPicture: $scope.master.buddyPicture || null,
message: $scope.master.message || null
}
if (_.isEqual(status, cache.status)) {
console.log("Status update skipped, as status has not changed.")

22
static/js/services/buddylist.js

@ -435,7 +435,7 @@ define(['underscore', 'modernizr', 'avltree', 'text!partials/buddy.html', 'text! @@ -435,7 +435,7 @@ define(['underscore', 'modernizr', 'avltree', 'text!partials/buddy.html', 'text!
display.buddyPicture = status.buddyPicture;
this.updateBuddyPicture(display);
// Set display subline.
display.subLine = data.Ua;
this.updateSubline(display, status.message);
// Add to render queue when no element exists.
if (!scope.element) {
var before = this.tree.add(id, scope);
@ -462,8 +462,8 @@ define(['underscore', 'modernizr', 'avltree', 'text!partials/buddy.html', 'text! @@ -462,8 +462,8 @@ define(['underscore', 'modernizr', 'avltree', 'text!partials/buddy.html', 'text!
this.queue.push([queueName, id, before]);
}
// Update display subline.
if (data.Ua) {
display.subLine = data.Ua;
if (status.message) {
this.updateSubline(display, status.message);
}
// Update display picture.
display.buddyPicture = status.buddyPicture || null;
@ -471,6 +471,22 @@ define(['underscore', 'modernizr', 'avltree', 'text!partials/buddy.html', 'text! @@ -471,6 +471,22 @@ define(['underscore', 'modernizr', 'avltree', 'text!partials/buddy.html', 'text!
};
Buddylist.prototype.updateSubline = function(display, s) {
if (!s || s === "__none__") {
display.subline = "";
return;
}
if (s.length > 20) {
display.sublineFull = s;
s = s.substr(0, 20) + "...";
} else {
display.sublineFull = null;
}
display.subline = s;
};
Buddylist.prototype.onStatus = function(data) {
//console.log("onStatus", data);

4
static/partials/buddy.html

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
<div class="buddy" ng-class="{'contact': contact, 'withSubline': display.subLine}">
<div class="buddy" ng-class="{'contact': contact, 'withSubline': display.subline}">
<div class="buddyPicture"><i class="fa fa-user fa-3x"/><img ng-show="display.buddyPicture" alt ng-src="{{display.buddyPicture}}" width="46" height="46"/></div>
<div class="buddy1">{{session.Id|displayName}}</div>
<div class="buddy2"><span ng-show="session.Userid"><i class="fa contact" data-action="contact"></i><span ng-show="session.count"> ({{session.count}})</span></span> {{display.subLine}}</div>
<div class="buddy2"><span ng-show="session.Userid"><i class="fa contact" data-action="contact"></i><span ng-show="session.count"> ({{session.count}})</span></span> <span title="{{display.sublineFull}}">{{display.subline}}</span></div>
</div>

10
static/partials/buddyactions.html

@ -1,11 +1,11 @@ @@ -1,11 +1,11 @@
<div class="buddyhover">
<div class="buddyactions active">
<a class="btn btn-info" data-action="call" title="{{_('Start video call')}}"><i class="fa fa-eye"></i></a>
<a class="btn btn-info" data-action="chat" title="{{_('Start chat')}}"><i class="fa fa-comments-o"></i></a>
<a class="btn btn-info" data-action="call" title="{{_('Start video call')}}"><i class="fa fa-eye"></i></a>
<a class="btn btn-info" data-action="chat" title="{{_('Start chat')}}"><i class="fa fa-comments-o"></i></a>
</div>
<div class="buddysessions" ng-if="session.count>1">
<ul>
<li ng-repeat="(id, s) in session.sessions" ng-class="{currentsession: s.Id === session.Id}"><!--<div class="buddyPicture buddyPictureSmall"><i class="fa fa-user fa-2x"/><img ng-show="s.Status.buddyPicture" alt ng-src="{{s.Status.buddyPicture}}" width="30" height="30"/></div>--><span class="btn-group"><a class="btn btn-sm btn-default buddy3" ng-click="$event.stopPropagation()"><span>{{s.Status.displayName}}, {{s.Ua}}</span></a><a class="btn btn-sm btn-default" title="{{_('Start video call')}}" ng-click="doCall(s.Id); $event.stopPropagation()"><i class="fa fa-eye"></i></a><a class="btn btn-sm btn-default" title="{{_('Start chat')}}" ng-click="doChat(s.Id); $event.stopPropagation()"><i class="fa fa-comments-o"></i></a></span></li>
</ul>
<ul>
<li ng-repeat="(id, s) in session.sessions" ng-class="{currentsession: s.Id === session.Id}"><!--<div class="buddyPicture buddyPictureSmall"><i class="fa fa-user fa-2x"/><img ng-show="s.Status.buddyPicture" alt ng-src="{{s.Status.buddyPicture}}" width="30" height="30"/></div>--><span class="btn-group"><a class="btn btn-sm btn-default buddy3" ng-click="$event.stopPropagation()"><span>{{s.Status.displayName}}, {{s.Message}}</span></a><a class="btn btn-sm btn-default" title="{{_('Start video call')}}" ng-click="doCall(s.Id); $event.stopPropagation()"><i class="fa fa-eye"></i></a><a class="btn btn-sm btn-default" title="{{_('Start chat')}}" ng-click="doChat(s.Id); $event.stopPropagation()"><i class="fa fa-comments-o"></i></a></span></li>
</ul>
</div>
</div>

113
static/partials/settings.html

@ -3,7 +3,7 @@ @@ -3,7 +3,7 @@
<div class="form-horizontal" on-enter="saveSettings(user)" on-escape="reset()"
<fieldset>
<legend>{{_('Settings')}}</legend>
<legend>{{_('Profile')}}</legend>
<div class="form-group">
<label class="col-xs-4 control-label">{{_('Your picture')}}</label>
<div class="col-xs-8">
@ -16,69 +16,84 @@ @@ -16,69 +16,84 @@
<label class="col-xs-4 control-label">{{_('Your name')}}</label>
<div class="col-xs-8">
<input type="text" class="form-control" ng-model="user.displayName" placeholder="{{_('Name')}}" />
<span class="help-block">{{_('Your picture and name are visible to others.')}}</span>
</div>
</div>
<div class="form-group">
<label class="col-xs-4 control-label">{{_('Status message')}}</label>
<div class="col-xs-8">
<input type="text" class="form-control" ng-model="user.message" placeholder="{{_('What\'s on your mind?')}}" />
</div>
</div>
<div class="form-group">
<div class="col-xs-8 col-xs-offset-4">
{{_('Profile information is public.')}}
</div>
</div>
<div ng-controller="UsersettingsController as usersettings">
<div class="form-group" ng-if="(withUsers && withUsersRegistration) || userid">
<label class="col-xs-4 control-label">{{_('Your ID')}}</label>
<div ng-switch="withUsersMode">
<form ng-switch-when="certificate" class="col-xs-8" target="users_registration_certificate_iframe">
<div ng-if="!userid">
<keygen style="display:none" name="pubkey"/>
<label ng-if="!userid && withUsersRegistration && usersettings.registerUserid">
<button class="btn btn-small btn-primary" ng-click="usersettings.registerUserid($event.target)">{{_('Register')}}</button>
</label>
<iframe style="display:none" name="users_registration_certificate_iframe"></iframe>
</div>
<div ng-if="userid">
<pre class="small">{{userid}}</pre>
<span class-"help-block">{{_('Authenticated by certificate. To log out you have to remove your certificate from the browser.')}}</span>
</div>
</form>
<div ng-switch-default class="col-xs-8">
<div ng-if="!userid && withUsersRegistration">
<label ng-if="usersettings.loginUserid">
<button class="btn btn-small btn-primary" ng-click="usersettings.loginUserid()">{{_('Login')}}</button>
</label>
<label ng-if="usersettings.registerUserid">
<button class="btn btn-small btn-default" ng-click="usersettings.registerUserid($event.target)">{{_('Register')}}</button>
<div ng-if="(withUsers && withUsersRegistration) || userid">
<legend>{{_('Account')}}</legend>
<div class="form-group">
<label class="col-xs-4 control-label">{{_('Your ID')}}</label>
<div ng-switch="withUsersMode">
<form ng-switch-when="certificate" class="col-xs-8" target="users_registration_certificate_iframe">
<div ng-if="!userid">
<keygen style="display:none" name="pubkey"/>
<label ng-if="!userid && withUsersRegistration && usersettings.registerUserid">
<button class="btn btn-small btn-primary" ng-click="usersettings.registerUserid($event.target)">{{_('Register')}}</button>
</label>
<iframe style="display:none" name="users_registration_certificate_iframe"></iframe>
</div>
<div ng-if="userid">
<pre class="small">{{userid}}</pre>
<span class-"help-block">{{_('Authenticated by certificate. To log out you have to remove your certificate from the browser.')}}</span>
</div>
</form>
<div ng-switch-default class="col-xs-8">
<div ng-if="!userid && withUsersRegistration">
<label ng-if="usersettings.loginUserid">
<button class="btn btn-small btn-primary" ng-click="usersettings.loginUserid()">{{_('Login')}}</button>
</label>
<label ng-if="usersettings.registerUserid">
<button class="btn btn-small btn-default" ng-click="usersettings.registerUserid($event.target)">{{_('Register')}}</button>
</label>
</div>
<pre class="small" ng-if="userid">{{userid}}</pre>
<label ng-if="userid && withUsersForget && usersettings.forgetUserid">
<button class="btn btn-small btn-default" ng-click="usersettings.forgetUserid()">{{_('Log out')}}</button>
</label>
</div>
<pre class="small" ng-if="userid">{{userid}}</pre>
<label ng-if="userid && withUsersForget && usersettings.forgetUserid">
<button class="btn btn-small btn-default" ng-click="usersettings.forgetUserid()">{{_('Log out')}}</button>
</label>
</div>
</div>
</div>
</div>
<div ng-show="mediaSources.supported">
<hr/>
<div class="form-group">
<label class="col-xs-4 control-label">{{_('Microphone')}}</label>
<div class="col-xs-8">
<select class="form-control" ng-model="user.settings.microphoneId" ng-options="mic.id as mic.label for mic in mediaSources.audio"></select>
<div ng-show="mediaSources.supported || isChrome">
<legend>{{_('Media')}}</legend>
<div ng-show="mediaSources.supported">
<div class="form-group">
<label class="col-xs-4 control-label">{{_('Microphone')}}</label>
<div class="col-xs-8">
<select class="form-control" ng-model="user.settings.microphoneId" ng-options="mic.id as mic.label for mic in mediaSources.audio"></select>
</div>
</div>
</div>
<div class="form-group">
<label class="col-xs-4 control-label">{{_('Camera')}}</label>
<div class="col-xs-8">
<select class="form-control" ng-model="user.settings.cameraId" ng-options="vid.id as vid.label for vid in mediaSources.video"></select>
<div class="form-group">
<label class="col-xs-4 control-label">{{_('Camera')}}</label>
<div class="col-xs-8">
<select class="form-control" ng-model="user.settings.cameraId" ng-options="vid.id as vid.label for vid in mediaSources.video"></select>
</div>
</div>
</div>
</div>
<div ng-show="isChrome" class="form-group">
<label class="col-xs-4 control-label">{{_('Video quality')}}</label>
<div class="col-xs-8">
<div class="btn-group">
<button type="button" class="btn btn-default" ng-model="user.settings.videoQuality" btn-radio="'low'">{{_('Low')}}</button>
<button type="button" class="btn btn-default" ng-model="user.settings.videoQuality" btn-radio="'high'">{{_('High')}}</button>
<button type="button" class="btn btn-default" ng-model="user.settings.videoQuality" btn-radio="'hd'">{{_('HD')}}</button>
<div ng-show="isChrome" class="form-group">
<label class="col-xs-4 control-label">{{_('Video quality')}}</label>
<div class="col-xs-8">
<div class="btn-group">
<button type="button" class="btn btn-default" ng-model="user.settings.videoQuality" btn-radio="'low'">{{_('Low')}}</button>
<button type="button" class="btn btn-default" ng-model="user.settings.videoQuality" btn-radio="'high'">{{_('High')}}</button>
<button type="button" class="btn btn-default" ng-model="user.settings.videoQuality" btn-radio="'hd'">{{_('HD')}}</button>
</div>
</div>
</div>
</div>
<hr/>
<legend>{{_('Settings')}}</legend>
<div class="form-group">
<label class="col-xs-4 control-label">{{_('Language')}}</label>
<div class="col-xs-8">

Loading…
Cancel
Save