Browse Source

Improved styles, added non-retina icons

master
Igor Zhukov 10 years ago
parent
commit
8aa10dfadc
  1. 48
      app/css/app.css
  2. BIN
      app/img/icons/CheckIn_Recent.png
  3. BIN
      app/img/icons/IconsetW_1x.png
  4. BIN
      app/img/icons/Location_Active.png
  5. 8
      app/index.html
  6. 4
      app/js/app.js
  7. 6
      app/js/directives.js
  8. 2
      app/partials/im.html
  9. 37
      app/vendor/jquery.emojiarea/jquery.emojiarea.js

48
app/css/app.css

@ -10,6 +10,7 @@ html {
/*background-size: 248px 382px;*/ /*background-size: 248px 382px;*/
} }
body { body {
color: #000;
background: none; background: none;
font: 12px/18px "Lucida Grande", "Lucida Sans Unicode", Arial, Helvetica, Verdana, sans-serif; font: 12px/18px "Lucida Grande", "Lucida Sans Unicode", Arial, Helvetica, Verdana, sans-serif;
/*-webkit-font-smoothing: antialiased;*/ /*-webkit-font-smoothing: antialiased;*/
@ -23,6 +24,9 @@ body.non_osx,
font: 13px/18px Tahoma, sans-serif, Arial, Helvetica; font: 13px/18px Tahoma, sans-serif, Arial, Helvetica;
font-weight: normal; font-weight: normal;
} }
h1, h2, h3, h4, h5 {
color: #222;
}
.non_osx h4 { .non_osx h4 {
font-size: 17px; font-size: 17px;
} }
@ -214,6 +218,7 @@ fieldset[disabled] .btn-tg.active {
margin: 0 18px; margin: 0 18px;
} }
.modal-title { .modal-title {
color: #222;
font-weight: bold; font-weight: bold;
font-size: 17px; font-size: 17px;
line-height: 1.4; line-height: 1.4;
@ -398,6 +403,10 @@ fieldset[disabled] .btn-tg.active {
margin-bottom: 0; margin-bottom: 0;
margin: 0; margin: 0;
} }
.is_1x .im_dialogs_search_field {
background-image: url(../img/icons/IconsetW_1x.png);
}
.im_dialogs_search_field:focus, .im_dialogs_search_field:focus,
.im_dialogs_search_field:active { .im_dialogs_search_field:active {
background-color: #FFF; background-color: #FFF;
@ -415,6 +424,9 @@ fieldset[disabled] .btn-tg.active {
background-size: 42px 280px; background-size: 42px 280px;
opacity: 0.6; opacity: 0.6;
} }
.is_1x .im_dialogs_search_clear {
background-image: url(../img/icons/IconsetW_1x.png);
}
.im_dialogs_search_clear:hover { .im_dialogs_search_clear:hover {
opacity: 1; opacity: 1;
} }
@ -427,6 +439,9 @@ fieldset[disabled] .btn-tg.active {
padding: 0 19px 0 12px; padding: 0 19px 0 12px;
outline: none ! important; outline: none ! important;
} }
.im_dialogs_scrollable_wrap .im_dialog_wrap {
margin-top: 0;
}
.im_dialogs_scrollable_wrap a.im_dialog { .im_dialogs_scrollable_wrap a.im_dialog {
clear: both; clear: both;
overflow: hidden; overflow: hidden;
@ -440,10 +455,10 @@ fieldset[disabled] .btn-tg.active {
} }
.im_dialogs_scrollable_wrap .active a.im_dialog { .im_dialogs_scrollable_wrap .active a.im_dialog {
border-radius: 2px; border-radius: 2px;
background-color: #5785A5; background-color: #6490b1;
} }
.im_dialogs_scrollable_wrap .active a.im_dialog:hover { .im_dialogs_scrollable_wrap .active a.im_dialog:hover {
background-color: #5785A5; background-color: #6490b1;
} }
.im_dialogs_scrollable_wrap a.im_dialog .icon, .im_dialogs_scrollable_wrap a.im_dialog .icon,
@ -481,10 +496,14 @@ a.im_dialog:hover .im_dialog_message_text {
} }
.im_dialog_peer { .im_dialog_peer {
color: #222;
font-weight: bold; font-weight: bold;
margin-top: 2px; margin-top: 2px;
margin-bottom: 2px; margin-bottom: 2px;
} }
.active .im_dialog_peer {
color: #FFF;
}
.im_dialog_badge { .im_dialog_badge {
background: #75BB72; background: #75BB72;
@ -570,7 +589,6 @@ a.im_dialog:hover .im_dialog_message_text {
padding: 10px 4px 0; padding: 10px 4px 0;
} }
.im_history_panel_title h4 { .im_history_panel_title h4 {
color: #333333;
margin-bottom: 7px; margin-bottom: 7px;
font-size: 17px; font-size: 17px;
} }
@ -759,7 +777,7 @@ div.im_message_video_thumb {
width: 10px; width: 10px;
height: 14px; height: 14px;
background: url(../img/icons/Location_Active.png) 0 0 no-repeat; background: url(../img/icons/Location_Active.png?1) 0 0 no-repeat;
background-size: 10px 14px; background-size: 10px 14px;
} }
@ -786,6 +804,9 @@ div.im_message_video_thumb {
border-radius: 3px; border-radius: 3px;
margin-right: 10px; margin-right: 10px;
} }
.is_1x .icon-document {
background-image: url(../img/icons/IconsetW_1x.png);
}
.im_message_document_info { .im_message_document_info {
float: left; float: left;
@ -800,7 +821,7 @@ div.im_message_video_thumb {
} }
.im_message_document_name { .im_message_document_name {
color: #000; color: #222;
display: inline-block; display: inline-block;
font-weight: bold; font-weight: bold;
max-width: 200px; max-width: 200px;
@ -911,8 +932,7 @@ div.im_message_video_thumb {
} }
.im_message_date { .im_message_date {
color: #adadad; color: #adadad;
font-size: 0.9em; font-size: 0.8em;
/*font-size: 0.8em;*/
} }
div.im_message_author, div.im_message_author,
div.im_message_body { div.im_message_body {
@ -1015,6 +1035,9 @@ textarea.im_message_field {
background-size: 42px 280px; background-size: 42px 280px;
opacity: 0.8; opacity: 0.8;
} }
.is_1x .icon-paperclip {
background-image: url(../img/icons/IconsetW_1x.png);
}
.im_attach:hover .icon-paperclip { .im_attach:hover .icon-paperclip {
opacity: 1; opacity: 1;
} }
@ -1041,6 +1064,9 @@ textarea.im_message_field {
background-size: 42px 280px; background-size: 42px 280px;
opacity: 0.8; opacity: 0.8;
} }
.is_1x .icon-emoji {
background-image: url(../img/icons/IconsetW_1x.png);
}
.im_emoji_btn:hover .icon-emoji { .im_emoji_btn:hover .icon-emoji {
opacity: 1; opacity: 1;
} }
@ -1086,6 +1112,9 @@ textarea.im_message_field {
background-size: 42px 280px; background-size: 42px 280px;
opacity: 0.8; opacity: 0.8;
} }
.is_1x .icon-camera {
background-image: url(../img/icons/IconsetW_1x.png);
}
.im_media_attach:hover .icon-camera { .im_media_attach:hover .icon-camera {
opacity: 1; opacity: 1;
} }
@ -1332,6 +1361,9 @@ img.img_fullsize {
height: 7px; height: 7px;
margin: 0 83px; margin: 0 83px;
} }
.is_1x .emoji-menu-tail {
background-image: url(../img/icons/IconsetW_1x.png);
}
.emoji-menu .nano > .pane { .emoji-menu .nano > .pane {
@ -1394,4 +1426,4 @@ img.img_fullsize {
margin: 30px auto 10px; margin: 30px auto 10px;
} }
} }

BIN
app/img/icons/CheckIn_Recent.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 518 B

BIN
app/img/icons/IconsetW_1x.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

BIN
app/img/icons/Location_Active.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 574 B

After

Width:  |  Height:  |  Size: 3.2 KiB

8
app/index.html

@ -7,7 +7,7 @@
<link rel="stylesheet" href="vendor/angular/angular-csp.css"/> <link rel="stylesheet" href="vendor/angular/angular-csp.css"/>
<link rel="stylesheet" href="vendor/bootstrap/css/bootstrap.css"/> <link rel="stylesheet" href="vendor/bootstrap/css/bootstrap.css"/>
<link rel="stylesheet" href="vendor/jquery.nanoscroller/nanoscroller.css"/> <link rel="stylesheet" href="vendor/jquery.nanoscroller/nanoscroller.css"/>
<link rel="stylesheet" href="css/app.css?15"/> <link rel="stylesheet" href="css/app.css?16"/>
<link rel="icon" href="favicon.ico" type="image/x-icon" /> <link rel="icon" href="favicon.ico" type="image/x-icon" />
<meta property="og:title" content="Webogram"> <meta property="og:title" content="Webogram">
@ -34,7 +34,7 @@
<script type="text/javascript" src="vendor/console-polyfill/console-polyfill.js?1"></script> <script type="text/javascript" src="vendor/console-polyfill/console-polyfill.js?1"></script>
<script type="text/javascript" src="vendor/jquery/jquery.min.js"></script> <script type="text/javascript" src="vendor/jquery/jquery.min.js"></script>
<script type="text/javascript" src="vendor/jquery.nanoscroller/nanoscroller.js"></script> <script type="text/javascript" src="vendor/jquery.nanoscroller/nanoscroller.js"></script>
<script type="text/javascript" src="vendor/jquery.emojiarea/jquery.emojiarea.js?2"></script> <script type="text/javascript" src="vendor/jquery.emojiarea/jquery.emojiarea.js?3"></script>
<script type="text/javascript" src="vendor/angular/angular.js?1"></script> <script type="text/javascript" src="vendor/angular/angular.js?1"></script>
<script type="text/javascript" src="vendor/angular/angular-route.js?1"></script> <script type="text/javascript" src="vendor/angular/angular-route.js?1"></script>
@ -51,11 +51,11 @@
<script type="text/javascript" src="js/lib/mtproto.js?17"></script> <script type="text/javascript" src="js/lib/mtproto.js?17"></script>
<script type="text/javascript" src="js/util.js"></script> <script type="text/javascript" src="js/util.js"></script>
<script type="text/javascript" src="js/app.js?11"></script> <script type="text/javascript" src="js/app.js?12"></script>
<script type="text/javascript" src="js/services.js?13"></script> <script type="text/javascript" src="js/services.js?13"></script>
<script type="text/javascript" src="js/controllers.js?20"></script> <script type="text/javascript" src="js/controllers.js?20"></script>
<script type="text/javascript" src="js/filters.js?3"></script> <script type="text/javascript" src="js/filters.js?3"></script>
<script type="text/javascript" src="js/directives.js?13"></script> <script type="text/javascript" src="js/directives.js?14"></script>
</body> </body>
</html> </html>

4
app/js/app.js

@ -11,10 +11,12 @@ window._testMode = location.search.indexOf('test=1') > 0;
window._debugMode = location.search.indexOf('debug=1') > 0; window._debugMode = location.search.indexOf('debug=1') > 0;
window._osX = (navigator.platform || '').toLowerCase().indexOf('mac') != -1 || window._osX = (navigator.platform || '').toLowerCase().indexOf('mac') != -1 ||
(navigator.userAgent || '').toLowerCase().indexOf('mac') != -1; (navigator.userAgent || '').toLowerCase().indexOf('mac') != -1;
window._retina = window.devicePixelRatio > 1;
if (!window._osX) { if (!window._osX) {
$('body').addClass('non_osx'); $('body').addClass('non_osx');
} }
$('body').addClass(window._retina ? 'is_2x' : 'is_1x');
// Declare app level module which depends on filters, and services // Declare app level module which depends on filters, and services
angular.module('myApp', [ angular.module('myApp', [
@ -55,7 +57,7 @@ config(['$locationProvider', '$routeProvider', '$compileProvider', function($loc
// $locationProvider.html5Mode(true); // $locationProvider.html5Mode(true);
$routeProvider.when('/', {templateUrl: 'partials/welcome.html?2', controller: 'AppWelcomeController'}); $routeProvider.when('/', {templateUrl: 'partials/welcome.html?2', controller: 'AppWelcomeController'});
$routeProvider.when('/login', {templateUrl: 'partials/login.html?3', controller: 'AppLoginController'}); $routeProvider.when('/login', {templateUrl: 'partials/login.html?3', controller: 'AppLoginController'});
$routeProvider.when('/im', {templateUrl: 'partials/im.html?8', controller: 'AppIMController', reloadOnSearch: false}); $routeProvider.when('/im', {templateUrl: 'partials/im.html?9', controller: 'AppIMController', reloadOnSearch: false});
$routeProvider.otherwise({redirectTo: '/'}); $routeProvider.otherwise({redirectTo: '/'});
}]); }]);

6
app/js/directives.js

@ -201,8 +201,10 @@ angular.module('myApp.directives', ['myApp.filters'])
scope.$on('ui_editor_change', function (e, data) { scope.$on('ui_editor_change', function (e, data) {
if (data.start) { if (data.start) {
$(sendFormWrap1).css({height: $(sendFormWrap).height()}); if (!$(sendPanelWrap).hasClass('im_panel_fixed_bottom')) {
$(sendPanelWrap).addClass('im_panel_fixed_bottom'); $(sendFormWrap1).css({height: $(sendFormWrap).height()});
$(sendPanelWrap).addClass('im_panel_fixed_bottom');
}
} else { } else {
$(sendFormWrap1).css({height: 'auto'}); $(sendFormWrap1).css({height: 'auto'});
$(sendPanelWrap).removeClass('im_panel_fixed_bottom'); $(sendPanelWrap).removeClass('im_panel_fixed_bottom');

2
app/partials/im.html

@ -13,7 +13,7 @@
<div class="im_dialogs_wrap nano"> <div class="im_dialogs_wrap nano">
<div class="im_dialogs_scrollable_wrap content"> <div class="im_dialogs_scrollable_wrap content">
<ul class="nav nav-pills nav-stacked"> <ul class="nav nav-pills nav-stacked">
<li my-dialog dialog-message="dialogMessage" ng-repeat="dialogMessage in dialogs | filter:searchQuery" ng-class="{active: curDialog.peerID == dialogMessage.peerID}"></li> <li class="im_dialog_wrap" my-dialog dialog-message="dialogMessage" ng-repeat="dialogMessage in dialogs | filter:searchQuery" ng-class="{active: curDialog.peerID == dialogMessage.peerID}"></li>
</ul> </ul>
</div> </div>
</div> </div>

37
app/vendor/jquery.emojiarea/jquery.emojiarea.js vendored

@ -254,7 +254,13 @@
this.$editor = $('<div>').addClass('emoji-wysiwyg-editor'); this.$editor = $('<div>').addClass('emoji-wysiwyg-editor');
this.$editor.text($textarea.val()); this.$editor.text($textarea.val());
this.$editor.attr({contenteditable: 'true'}); this.$editor.attr({contenteditable: 'true'});
this.$editor.on('blur keyup paste', function(e) { return self.onChange.apply(self, [e]); }); /*! MODIFICATION START
Following code was modified by Igor Zhukov, in order to improve rich text paste
*/
this.$editor.on('paste', function(e) { return self.onPaste.apply(self, [e]); });
this.$editor.on('blur keyup', function(e) { return self.onChange.apply(self, [e]); });
/*! MODIFICATION END */
this.$editor.on('mousedown focus', function() { document.execCommand('enableObjectResizing', false, false); }); this.$editor.on('mousedown focus', function() { document.execCommand('enableObjectResizing', false, false); });
this.$editor.on('blur', function() { document.execCommand('enableObjectResizing', true, true); }); this.$editor.on('blur', function() { document.execCommand('enableObjectResizing', true, true); });
@ -278,19 +284,24 @@
}); });
}; };
/*! MODIFICATION START
Following code was modified by Igor Zhukov, in order to improve rich text paste
*/
EmojiArea_WYSIWYG.prototype.onPaste = function(e) {
var text = (e.originalEvent || e).clipboardData.getData('text/plain'),
self = this;
setTimeout(function () {
self.onChange();
}, 0);
if (text.length) {
document.execCommand('insertText', false, text);
return cancelEvent(e);
}
return true;
}
/*! MODIFICATION END */
EmojiArea_WYSIWYG.prototype.onChange = function(e) { EmojiArea_WYSIWYG.prototype.onChange = function(e) {
if (e && e.type == 'paste') {
var text = (e.originalEvent || e).clipboardData.getData('text/plain'),
self = this;
setTimeout(function () {
self.onChange();
}, 0);
if (text.length) {
document.execCommand('insertText', false, text);
return cancelEvent(e);
}
return true;
}
this.$textarea.val(this.val()).trigger('change'); this.$textarea.val(this.val()).trigger('change');
}; };

Loading…
Cancel
Save