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
$scope.master = { $scope.master = {
displayName: null, displayName: null,
buddyPicture: null, buddyPicture: null,
message: null,
settings: { settings: {
videoQuality: "high", videoQuality: "high",
stereo: true, stereo: true,
@ -175,7 +176,8 @@ define(['underscore', 'bigscreen', 'moment', 'sjcl', 'webrtc.adapter'], function
// This is the user status. // This is the user status.
var status = { var status = {
displayName: $scope.master.displayName || null, 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)) { if (_.isEqual(status, cache.status)) {
console.log("Status update skipped, as status has not changed.") 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!
display.buddyPicture = status.buddyPicture; display.buddyPicture = status.buddyPicture;
this.updateBuddyPicture(display); this.updateBuddyPicture(display);
// Set display subline. // Set display subline.
display.subLine = data.Ua; this.updateSubline(display, status.message);
// Add to render queue when no element exists. // Add to render queue when no element exists.
if (!scope.element) { if (!scope.element) {
var before = this.tree.add(id, scope); var before = this.tree.add(id, scope);
@ -462,8 +462,8 @@ define(['underscore', 'modernizr', 'avltree', 'text!partials/buddy.html', 'text!
this.queue.push([queueName, id, before]); this.queue.push([queueName, id, before]);
} }
// Update display subline. // Update display subline.
if (data.Ua) { if (status.message) {
display.subLine = data.Ua; this.updateSubline(display, status.message);
} }
// Update display picture. // Update display picture.
display.buddyPicture = status.buddyPicture || null; display.buddyPicture = status.buddyPicture || null;
@ -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) { Buddylist.prototype.onStatus = function(data) {
//console.log("onStatus", data); //console.log("onStatus", data);

4
static/partials/buddy.html

@ -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="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="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> </div>

10
static/partials/buddyactions.html

@ -1,11 +1,11 @@
<div class="buddyhover"> <div class="buddyhover">
<div class="buddyactions active"> <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="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="chat" title="{{_('Start chat')}}"><i class="fa fa-comments-o"></i></a>
</div> </div>
<div class="buddysessions" ng-if="session.count>1"> <div class="buddysessions" ng-if="session.count>1">
<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.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> <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> </ul>
</div> </div>
</div> </div>

113
static/partials/settings.html

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

Loading…
Cancel
Save