← Back to team overview

openlp-core team mailing list archive

[Merge] lp:~manndarryl/openlp/blank-logo into lp:openlp

 

Darryl Mann has proposed merging lp:~manndarryl/openlp/blank-logo into lp:openlp.

Requested reviews:
  OpenLP Core (openlp-core)

For more details, see:
https://code.launchpad.net/~manndarryl/openlp/blank-logo/+merge/239909

Add a Blank to Logo feature. This uses the default image from the settings->advanced section.
-- 
https://code.launchpad.net/~manndarryl/openlp/blank-logo/+merge/239909
Your team OpenLP Core is requested to review the proposed merge of lp:~manndarryl/openlp/blank-logo into lp:openlp.
=== modified file 'openlp/core/common/settings.py'
--- openlp/core/common/settings.py	2014-10-14 07:52:59 +0000
+++ openlp/core/common/settings.py	2014-10-28 20:52:28 +0000
@@ -267,6 +267,7 @@
         'shortcuts/settingsExportItem': [],
         'shortcuts/songUsageReport': [],
         'shortcuts/songImportItem': [],
+        'shortcuts/logoScreen': [QtGui.QKeySequence('L')],
         'shortcuts/themeScreen': [QtGui.QKeySequence('T')],
         'shortcuts/toolsReindexItem': [],
         'shortcuts/toolsFindDuplicates': [],

=== modified file 'openlp/core/lib/htmlbuilder.py'
--- openlp/core/lib/htmlbuilder.py	2014-07-21 06:37:41 +0000
+++ openlp/core/lib/htmlbuilder.py	2014-10-28 20:52:28 +0000
@@ -57,6 +57,14 @@
             background-color: black;
             display: none;
         }
+        #logo {
+            z-index: 7;
+            background-image: none;
+            background-color: black;
+            background-repeat: no-repeat;
+            background-position: center center;
+            display: none;
+        }
         #bgimage {
             z-index: 1;
         }
@@ -300,19 +308,33 @@
                     img.style.display = 'block';
             }
 
+            function set_blank_logo(color, image){
+                if(typeof color === 'undefined')
+                    color = '#000000';
+                if(typeof image === 'undefined')
+                    image = '';
+                document.getElementById('logo').style.backgroundColor = color;
+                document.getElementById('logo').style.backgroundImage = "url('"+image+"')";
+            }
+
             function show_blank(state){
+                var logo = 'none';
                 var black = 'none';
                 var lyrics = '';
                 switch(state){
                     case 'theme':
                         lyrics = 'hidden';
                         break;
+                    case 'logo':
+                        logo = 'block';
+                        break;
                     case 'black':
                         black = 'block';
                         break;
                     case 'desktop':
                         break;
                 }
+                document.getElementById('logo').style.display = logo;
                 document.getElementById('black').style.display = black;
                 document.getElementById('lyricsmain').style.visibility = lyrics;
                 document.getElementById('image').style.visibility = lyrics;
@@ -391,6 +413,7 @@
         <div class="lyricstable"><div id="lyricsmain" style="opacity:1" class="lyricscell lyricsmain"></div></div>
         <div id="footer" class="footer"></div>
         <div id="black" class="size"></div>
+        <div id="logo" class="size"></div>
         </body>
         </html>
 """
@@ -431,6 +454,14 @@
     background-color: black;
     display: none;
 }
+#logo {
+    z-index: 7;
+    background-image: none;
+    background-color: black;
+    background-repeat: no-repeat;
+    background-position: center center;
+    display: none;
+}
 #bgimage {
     z-index: 1;
 }
@@ -466,19 +497,33 @@
             img.style.display = 'block';
     }
 
+    function set_blank_logo(color, image){
+        if(typeof color === 'undefined')
+            color = '#000000';
+        if(typeof image === 'undefined')
+            image = '';
+        document.getElementById('logo').style.backgroundColor = color;
+        document.getElementById('logo').style.backgroundImage = "url('"+image+"')";
+    }
+
     function show_blank(state){
+        var logo = 'none';
         var black = 'none';
         var lyrics = '';
         switch(state){
             case 'theme':
                 lyrics = 'hidden';
                 break;
+            case 'logo':
+                logo = 'block';
+                break;
             case 'black':
                 black = 'block';
                 break;
             case 'desktop':
                 break;
         }
+        document.getElementById('logo').style.display = logo;
         document.getElementById('black').style.display = black;
         document.getElementById('lyricsmain').style.visibility = lyrics;
         document.getElementById('image').style.visibility = lyrics;
@@ -550,6 +595,7 @@
 <div class="lyricstable"><div id="lyricsmain" style="opacity:1" class="lyricscell lyricsmain"></div></div>
 <div id="footer" class="footer"></div>
 <div id="black" class="size"></div>
+<div id="logo" class="size"></div>
 </body>
 </html>
 """

=== modified file 'openlp/core/resources.py'
--- openlp/core/resources.py	2014-09-05 20:15:44 +0000
+++ openlp/core/resources.py	2014-10-28 20:52:28 +0000
@@ -76944,6 +76944,57 @@
 \x9b\xfc\x8b\x0a\x04\x36\x0b\x91\x40\xaa\x9b\x96\x7a\xa2\x23\xcc\
 \x94\x59\x40\x16\x25\x00\xf8\x0f\x80\xa0\xff\x98\xbb\x5a\x5b\x51\
 \x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\
+\x00\x00\x03\x0d\
+\x89\
+\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
+\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1f\xf3\xff\x61\
+\x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\
+\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0d\xd7\x00\x00\x0d\xd7\
+\x01\x42\x28\x9b\x78\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\
+\x74\x77\x61\x72\x65\x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\
+\x70\x65\x2e\x6f\x72\x67\x9b\xee\x3c\x1a\x00\x00\x02\x8a\x49\x44\
+\x41\x54\x38\x8d\x65\x92\x4f\x48\x54\x51\x14\xc6\x7f\xf7\xfd\x19\
+\xe7\xcd\x64\x33\xd3\x38\x86\xcb\x42\x09\x09\xa4\x02\xdb\xd4\x32\
+\xdd\xe4\x22\x12\x04\x57\x16\x61\x2b\x31\x71\x1f\x35\x81\xb4\x2d\
+\xc8\x5d\x0b\xd1\x20\x30\xa5\x4d\x20\xb4\x12\x74\x21\x19\xb5\xd2\
+\x10\x5c\xe8\x2a\x49\x9d\x79\xea\x38\xf7\xcd\x7b\xf7\xbd\xdb\x62\
+\x9a\xd7\x88\x07\x2e\xf7\x72\xef\x39\xdf\xf9\xce\x77\x3f\xb1\xb4\
+\xb4\x34\x92\xcf\xe7\xdf\x38\x8e\x93\x35\x0c\x03\x21\x44\xbc\x1a\
+\xa1\xb5\x8e\xf7\x28\x8a\xd0\x5a\xe3\x79\x9e\xbb\xbf\xbf\x3f\x21\
+\xd6\xd6\xd6\xca\x1f\xe6\xe6\xb2\xa5\x93\x2a\x89\x44\x02\xbb\xc5\
+\xc6\xb6\x12\xd8\x96\x89\x61\x18\x00\x44\x51\x84\x52\x21\x4a\x29\
+\xfc\x20\xc0\xf7\x7d\x72\x17\x52\x3c\x7e\xfc\xc8\xb5\x52\xa9\x54\
+\x76\x6f\x6f\x8f\x4f\x0b\x0b\x00\x48\x29\x91\x52\xa2\xc3\x10\xcf\
+\xf7\xe3\x3b\xcf\xf3\xe2\x33\xc0\xcb\xa9\xd7\xa4\x52\xa9\xac\xd5\
+\xe8\xd0\xfc\xe8\x2d\x2f\x73\xba\xbe\xce\xd1\xd3\x41\x26\xb7\x26\
+\x63\x16\x61\x18\x32\x9a\x1b\xa5\x33\xea\x24\x0a\x02\x00\x2c\xad\
+\x35\x4a\xa9\xb8\x58\x9e\x9e\x52\x7e\xfe\x9c\x60\x67\x07\xb7\xbf\
+\x87\x95\xe3\x15\x9a\x63\xa0\x65\x80\xce\x64\x27\xa1\xaa\x03\x18\
+\x5a\x6b\x34\x3a\x66\x70\x32\x3b\x8b\xbf\xb9\x89\xae\x56\xf9\xf5\
+\xf0\x23\x14\xe7\x60\xeb\xd6\x19\x10\x29\x65\x2c\xac\xa1\xb5\x26\
+\x99\x4c\xd6\x69\x1e\x1d\xe1\x4e\x4d\xc5\x89\x77\xdc\x2f\xf4\x6c\
+\x26\xe0\x7d\x91\x73\x21\xea\xbf\x62\x69\xad\x29\x95\x4a\x48\x29\
+\x11\xe9\x34\xf9\xd5\x55\x5c\xd7\xe3\x5e\x3f\x1c\x57\x4c\x7c\x12\
+\x74\x84\x9a\xe9\xc2\x67\x84\x00\xab\x66\xd5\x59\x54\xeb\x23\x1b\
+\x00\x4a\x85\x75\xf1\x82\x00\x71\xf1\x22\xc9\x42\x2b\x4f\xc6\x5b\
+\x68\xc9\x3a\xe4\xdb\x05\xe3\x63\x35\xf2\xe6\x25\x9c\x9a\x83\x8d\
+\x8d\x94\x12\xa5\x14\x42\x08\x2c\x80\x20\xf0\xff\x8b\xf8\x6f\x1f\
+\x1e\x8e\xb8\x7f\xdf\xc5\x34\x05\xb5\x5a\xf5\xcc\xfc\x00\xc1\x3f\
+\x11\x2d\x29\xa5\x7b\xe5\xca\xd5\x6c\xff\xc0\x03\x2c\xcb\xc0\x36\
+\x6d\x6c\xcb\xc4\xb2\x4c\x4c\xc3\x44\x20\x50\x91\x42\xa9\x90\x20\
+\x6c\x98\x49\x71\xf3\xfa\x35\xa4\x94\xae\x98\x99\x99\x19\xe9\xed\
+\xed\x7d\x93\xcb\xe5\xb2\x8d\x2e\xcd\x96\x05\x68\xb6\x78\x23\x2a\
+\x95\x13\x77\x7d\xfd\xfb\x84\x68\x24\x9d\x11\x58\x08\x63\x7a\x7a\
+\x7a\x2c\x93\xc9\xbc\xf5\x7d\x9f\xdd\xdd\xdd\x67\xc5\x62\xf1\x9d\
+\xd6\x3a\x3a\x97\xdb\x0c\xb0\xb8\xb8\x78\xa3\xab\xab\xeb\x95\x61\
+\x18\xb7\xa3\x28\x6a\x2f\x97\xcb\xc2\xf7\x7d\x5a\x5b\x5b\xb5\xe3\
+\x38\x7f\x80\x6f\xdb\xdb\xdb\x2f\x06\x07\x07\x7f\x36\x6a\xac\x66\
+\x34\x29\xe5\x5d\xdb\xb6\xfb\xd2\xe9\x74\x52\x29\x15\xfb\xc3\xb6\
+\x6d\x61\x9a\xe6\xe5\x4a\xa5\xd2\x57\xad\x56\xbf\x02\x31\xc0\x19\
+\x06\x42\x08\x51\x28\x14\x3a\x86\x86\x86\x6e\x75\x77\x77\x77\xb5\
+\xb5\xb5\x65\x00\x0e\x0f\x0f\xdd\x8d\x8d\x8d\xed\xf9\xf9\xf9\x1f\
+\x07\x07\x07\xbf\x75\x53\xd1\x5f\x37\x7f\x5c\x0f\x9c\xe1\xef\xfb\
+\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\
 \x00\x00\x03\x2f\
 \x89\
 \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
@@ -85428,6 +85479,10 @@
 \x09\xc3\x0b\x87\
 \x00\x73\
 \x00\x6c\x00\x69\x00\x64\x00\x65\x00\x5f\x00\x63\x00\x6c\x00\x6f\x00\x73\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\
+\x00\x0e\
+\x00\x57\x2d\xa7\
+\x00\x73\
+\x00\x6c\x00\x69\x00\x64\x00\x65\x00\x5f\x00\x6c\x00\x6f\x00\x67\x00\x6f\x00\x2e\x00\x70\x00\x6e\x00\x67\
 \x00\x0f\
 \x07\x63\x6a\x27\
 \x00\x73\
@@ -85669,17 +85724,17 @@
 
 qt_resource_struct = b"\
 \x00\x00\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x01\
-\x00\x00\x00\xf8\x00\x02\x00\x00\x00\x06\x00\x00\x00\x94\
-\x00\x00\x00\x00\x00\x02\x00\x00\x00\x04\x00\x00\x00\x90\
-\x00\x00\x00\xb4\x00\x02\x00\x00\x00\x09\x00\x00\x00\x87\
-\x00\x00\x00\xd6\x00\x02\x00\x00\x00\x14\x00\x00\x00\x73\
-\x00\x00\x00\x3e\x00\x02\x00\x00\x00\x02\x00\x00\x00\x71\
-\x00\x00\x00\x14\x00\x02\x00\x00\x00\x02\x00\x00\x00\x6f\
-\x00\x00\x01\x18\x00\x02\x00\x00\x00\x05\x00\x00\x00\x6a\
-\x00\x00\x01\x06\x00\x02\x00\x00\x00\x02\x00\x00\x00\x68\
-\x00\x00\x01\x52\x00\x02\x00\x00\x00\x09\x00\x00\x00\x5f\
-\x00\x00\x00\xe6\x00\x02\x00\x00\x00\x03\x00\x00\x00\x5c\
-\x00\x00\x00\x8c\x00\x02\x00\x00\x00\x0a\x00\x00\x00\x52\
+\x00\x00\x00\xf8\x00\x02\x00\x00\x00\x06\x00\x00\x00\x95\
+\x00\x00\x00\x00\x00\x02\x00\x00\x00\x04\x00\x00\x00\x91\
+\x00\x00\x00\xb4\x00\x02\x00\x00\x00\x09\x00\x00\x00\x88\
+\x00\x00\x00\xd6\x00\x02\x00\x00\x00\x14\x00\x00\x00\x74\
+\x00\x00\x00\x3e\x00\x02\x00\x00\x00\x02\x00\x00\x00\x72\
+\x00\x00\x00\x14\x00\x02\x00\x00\x00\x02\x00\x00\x00\x70\
+\x00\x00\x01\x18\x00\x02\x00\x00\x00\x05\x00\x00\x00\x6b\
+\x00\x00\x01\x06\x00\x02\x00\x00\x00\x02\x00\x00\x00\x69\
+\x00\x00\x01\x52\x00\x02\x00\x00\x00\x09\x00\x00\x00\x60\
+\x00\x00\x00\xe6\x00\x02\x00\x00\x00\x03\x00\x00\x00\x5d\
+\x00\x00\x00\x8c\x00\x02\x00\x00\x00\x0b\x00\x00\x00\x52\
 \x00\x00\x00\xc4\x00\x02\x00\x00\x00\x03\x00\x00\x00\x4f\
 \x00\x00\x00\x2c\x00\x02\x00\x00\x00\x10\x00\x00\x00\x3f\
 \x00\x00\x00\x62\x00\x02\x00\x00\x00\x03\x00\x00\x00\x3c\
@@ -85696,25 +85751,25 @@
 \x00\x00\x04\x10\x00\x00\x00\x00\x00\x01\x00\x03\x5e\xe2\
 \x00\x00\x04\xd0\x00\x00\x00\x00\x00\x01\x00\x0d\xe2\x6a\
 \x00\x00\x03\xe0\x00\x00\x00\x00\x00\x01\x00\x02\xc4\x8b\
-\x00\x00\x12\x0a\x00\x00\x00\x00\x00\x01\x00\x14\x34\x70\
-\x00\x00\x12\x86\x00\x00\x00\x00\x00\x01\x00\x14\x3e\x37\
-\x00\x00\x11\xe4\x00\x00\x00\x00\x00\x01\x00\x14\x31\x96\
-\x00\x00\x11\x6a\x00\x00\x00\x00\x00\x01\x00\x14\x29\x7e\
-\x00\x00\x13\xc6\x00\x00\x00\x00\x00\x01\x00\x14\x57\x05\
-\x00\x00\x11\xba\x00\x00\x00\x00\x00\x01\x00\x14\x2e\xf8\
-\x00\x00\x12\x5c\x00\x00\x00\x00\x00\x01\x00\x14\x3b\x52\
-\x00\x00\x11\x08\x00\x00\x00\x00\x00\x01\x00\x14\x22\x64\
-\x00\x00\x13\x02\x00\x00\x00\x00\x00\x01\x00\x14\x48\x5b\
-\x00\x00\x13\x7a\x00\x00\x00\x00\x00\x01\x00\x14\x50\x7f\
-\x00\x00\x12\xae\x00\x00\x00\x00\x00\x01\x00\x14\x41\xab\
-\x00\x00\x13\xa0\x00\x00\x00\x00\x00\x01\x00\x14\x54\x31\
-\x00\x00\x11\x40\x00\x00\x00\x00\x00\x01\x00\x14\x27\x06\
-\x00\x00\x13\x50\x00\x00\x00\x00\x00\x01\x00\x14\x4d\xfd\
-\x00\x00\x11\x96\x00\x00\x00\x00\x00\x01\x00\x14\x2c\xb1\
-\x00\x00\x12\x30\x00\x00\x00\x00\x00\x01\x00\x14\x36\xa7\
-\x00\x00\x10\xe4\x00\x00\x00\x00\x00\x01\x00\x14\x1f\x67\
-\x00\x00\x13\x2a\x00\x00\x00\x00\x00\x01\x00\x14\x4a\x6e\
-\x00\x00\x12\xdc\x00\x00\x00\x00\x00\x01\x00\x14\x46\x44\
+\x00\x00\x12\x2c\x00\x00\x00\x00\x00\x01\x00\x14\x37\x81\
+\x00\x00\x12\xa8\x00\x00\x00\x00\x00\x01\x00\x14\x41\x48\
+\x00\x00\x12\x06\x00\x00\x00\x00\x00\x01\x00\x14\x34\xa7\
+\x00\x00\x11\x8c\x00\x00\x00\x00\x00\x01\x00\x14\x2c\x8f\
+\x00\x00\x13\xe8\x00\x00\x00\x00\x00\x01\x00\x14\x5a\x16\
+\x00\x00\x11\xdc\x00\x00\x00\x00\x00\x01\x00\x14\x32\x09\
+\x00\x00\x12\x7e\x00\x00\x00\x00\x00\x01\x00\x14\x3e\x63\
+\x00\x00\x11\x2a\x00\x00\x00\x00\x00\x01\x00\x14\x25\x75\
+\x00\x00\x13\x24\x00\x00\x00\x00\x00\x01\x00\x14\x4b\x6c\
+\x00\x00\x13\x9c\x00\x00\x00\x00\x00\x01\x00\x14\x53\x90\
+\x00\x00\x12\xd0\x00\x00\x00\x00\x00\x01\x00\x14\x44\xbc\
+\x00\x00\x13\xc2\x00\x00\x00\x00\x00\x01\x00\x14\x57\x42\
+\x00\x00\x11\x62\x00\x00\x00\x00\x00\x01\x00\x14\x2a\x17\
+\x00\x00\x13\x72\x00\x00\x00\x00\x00\x01\x00\x14\x51\x0e\
+\x00\x00\x11\xb8\x00\x00\x00\x00\x00\x01\x00\x14\x2f\xc2\
+\x00\x00\x12\x52\x00\x00\x00\x00\x00\x01\x00\x14\x39\xb8\
+\x00\x00\x11\x06\x00\x00\x00\x00\x00\x01\x00\x14\x22\x78\
+\x00\x00\x13\x4c\x00\x00\x00\x00\x00\x01\x00\x14\x4d\x7f\
+\x00\x00\x12\xfe\x00\x00\x00\x00\x00\x01\x00\x14\x49\x55\
 \x00\x00\x03\x8a\x00\x00\x00\x00\x00\x01\x00\x00\x21\x92\
 \x00\x00\x0d\xa4\x00\x00\x00\x00\x00\x01\x00\x12\xa0\xdf\
 \x00\x00\x0e\x24\x00\x00\x00\x00\x00\x01\x00\x12\xa7\xa5\
@@ -85727,38 +85782,39 @@
 \x00\x00\x01\x80\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
 \x00\x00\x01\xe6\x00\x00\x00\x00\x00\x01\x00\x00\x05\xe6\
 \x00\x00\x01\xb2\x00\x00\x00\x00\x00\x01\x00\x00\x02\xfe\
-\x00\x00\x10\x34\x00\x00\x00\x00\x00\x01\x00\x12\xc5\xbe\
-\x00\x00\x10\x5e\x00\x00\x00\x00\x00\x01\x00\x12\xcb\x28\
-\x00\x00\x10\x8e\x00\x00\x00\x00\x00\x01\x00\x13\x39\xb1\
-\x00\x00\x10\xae\x00\x00\x00\x00\x00\x01\x00\x13\x40\x62\
-\x00\x00\x14\x8c\x00\x00\x00\x00\x00\x01\x00\x14\x64\xcc\
-\x00\x00\x14\x32\x00\x00\x00\x00\x00\x01\x00\x14\x5f\xcb\
-\x00\x00\x16\xa8\x00\x00\x00\x00\x00\x01\x00\x14\x8e\xd1\
-\x00\x00\x15\x32\x00\x00\x00\x00\x00\x01\x00\x14\x6c\xd6\
-\x00\x00\x14\xce\x00\x00\x00\x00\x00\x01\x00\x14\x68\x1f\
-\x00\x00\x14\x58\x00\x00\x00\x00\x00\x01\x00\x14\x62\xfc\
-\x00\x00\x15\xfa\x00\x00\x00\x00\x00\x01\x00\x14\x7f\xac\
-\x00\x00\x15\x98\x00\x00\x00\x00\x00\x01\x00\x14\x77\x7c\
-\x00\x00\x16\xce\x00\x00\x00\x00\x00\x01\x00\x14\x91\xb3\
-\x00\x00\x16\x74\x00\x00\x00\x00\x00\x01\x00\x14\x8a\xf4\
-\x00\x00\x15\xc4\x00\x00\x00\x00\x00\x01\x00\x14\x7c\x88\
-\x00\x00\x17\x00\x00\x00\x00\x00\x00\x01\x00\x14\x95\x70\
-\x00\x00\x16\x1c\x00\x00\x00\x00\x00\x01\x00\x14\x84\x1b\
-\x00\x00\x15\x60\x00\x00\x00\x00\x00\x01\x00\x14\x75\x06\
-\x00\x00\x16\x4a\x00\x00\x00\x00\x00\x01\x00\x14\x88\x6c\
-\x00\x00\x14\xfc\x00\x00\x00\x00\x00\x01\x00\x14\x6a\x26\
+\x00\x00\x10\x56\x00\x00\x00\x00\x00\x01\x00\x12\xc8\xcf\
+\x00\x00\x10\x80\x00\x00\x00\x00\x00\x01\x00\x12\xce\x39\
+\x00\x00\x10\xb0\x00\x00\x00\x00\x00\x01\x00\x13\x3c\xc2\
+\x00\x00\x10\xd0\x00\x00\x00\x00\x00\x01\x00\x13\x43\x73\
+\x00\x00\x14\xae\x00\x00\x00\x00\x00\x01\x00\x14\x67\xdd\
+\x00\x00\x14\x54\x00\x00\x00\x00\x00\x01\x00\x14\x62\xdc\
+\x00\x00\x16\xca\x00\x00\x00\x00\x00\x01\x00\x14\x91\xe2\
+\x00\x00\x15\x54\x00\x00\x00\x00\x00\x01\x00\x14\x6f\xe7\
+\x00\x00\x14\xf0\x00\x00\x00\x00\x00\x01\x00\x14\x6b\x30\
+\x00\x00\x14\x7a\x00\x00\x00\x00\x00\x01\x00\x14\x66\x0d\
+\x00\x00\x16\x1c\x00\x00\x00\x00\x00\x01\x00\x14\x82\xbd\
+\x00\x00\x15\xba\x00\x00\x00\x00\x00\x01\x00\x14\x7a\x8d\
+\x00\x00\x16\xf0\x00\x00\x00\x00\x00\x01\x00\x14\x94\xc4\
+\x00\x00\x16\x96\x00\x00\x00\x00\x00\x01\x00\x14\x8e\x05\
+\x00\x00\x15\xe6\x00\x00\x00\x00\x00\x01\x00\x14\x7f\x99\
+\x00\x00\x17\x22\x00\x00\x00\x00\x00\x01\x00\x14\x98\x81\
+\x00\x00\x16\x3e\x00\x00\x00\x00\x00\x01\x00\x14\x87\x2c\
+\x00\x00\x15\x82\x00\x00\x00\x00\x00\x01\x00\x14\x78\x17\
+\x00\x00\x16\x6c\x00\x00\x00\x00\x00\x01\x00\x14\x8b\x7d\
+\x00\x00\x15\x1e\x00\x00\x00\x00\x00\x01\x00\x14\x6d\x37\
 \x00\x00\x0b\x5c\x00\x00\x00\x00\x00\x01\x00\x12\x39\xc2\
 \x00\x00\x0b\x7c\x00\x00\x00\x00\x00\x01\x00\x12\x3d\x9f\
 \x00\x00\x0b\x36\x00\x00\x00\x00\x00\x01\x00\x12\x37\x24\
+\x00\x00\x0f\x8c\x00\x00\x00\x00\x00\x01\x00\x12\xbb\xce\
 \x00\x00\x0f\x12\x00\x00\x00\x00\x00\x01\x00\x12\xb4\x8c\
-\x00\x00\x0f\xb0\x00\x00\x00\x00\x00\x01\x00\x12\xbf\x01\
-\x00\x00\x10\x0a\x00\x00\x00\x00\x00\x01\x00\x12\xc3\xba\
+\x00\x00\x0f\xd2\x00\x00\x00\x00\x00\x01\x00\x12\xc2\x12\
+\x00\x00\x10\x2c\x00\x00\x00\x00\x00\x01\x00\x12\xc6\xcb\
 \x00\x00\x0e\xa8\x00\x00\x00\x00\x00\x01\x00\x12\xb0\x9c\
-\x00\x00\x0f\x8c\x00\x00\x00\x00\x00\x01\x00\x12\xbb\xce\
+\x00\x00\x0f\xae\x00\x00\x00\x00\x00\x01\x00\x12\xbe\xdf\
 \x00\x00\x0e\xdc\x00\x00\x00\x00\x00\x01\x00\x12\xb2\x93\
 \x00\x00\x0f\x46\x00\x00\x00\x00\x00\x01\x00\x12\xb6\x8a\
 \x00\x00\x0f\x68\x00\x00\x00\x00\x00\x01\x00\x12\xb8\x9d\
-\x00\x00\x0f\xe6\x00\x00\x00\x00\x00\x01\x00\x12\xc0\xe9\
+\x00\x00\x10\x08\x00\x00\x00\x00\x00\x01\x00\x12\xc3\xfa\
 \x00\x00\x0e\x80\x00\x00\x00\x00\x00\x01\x00\x12\xad\xe0\
 \x00\x00\x07\xb4\x00\x00\x00\x00\x00\x01\x00\x11\xea\x6a\
 \x00\x00\x07\xda\x00\x00\x00\x00\x00\x01\x00\x11\xec\xce\
@@ -85779,10 +85835,10 @@
 \x00\x00\x05\x48\x00\x00\x00\x00\x00\x01\x00\x10\x8b\x3f\
 \x00\x00\x05\xe2\x00\x00\x00\x00\x00\x01\x00\x10\x91\x58\
 \x00\x00\x05\xb0\x00\x00\x00\x00\x00\x01\x00\x10\x8f\x90\
-\x00\x00\x17\x24\x00\x00\x00\x00\x00\x01\x00\x14\x99\x23\
-\x00\x00\x17\x58\x00\x00\x00\x00\x00\x01\x00\x14\x9b\xf3\
-\x00\x00\x13\xee\x00\x00\x00\x00\x00\x01\x00\x14\x5a\x4a\
-\x00\x00\x14\x12\x00\x00\x00\x00\x00\x01\x00\x14\x5d\x48\
+\x00\x00\x17\x46\x00\x00\x00\x00\x00\x01\x00\x14\x9c\x34\
+\x00\x00\x17\x7a\x00\x00\x00\x00\x00\x01\x00\x14\x9f\x04\
+\x00\x00\x14\x10\x00\x00\x00\x00\x00\x01\x00\x14\x5d\x5b\
+\x00\x00\x14\x34\x00\x00\x00\x00\x00\x01\x00\x14\x60\x59\
 \x00\x00\x08\x32\x00\x00\x00\x00\x00\x01\x00\x11\xf7\xfd\
 \x00\x00\x09\x10\x00\x00\x00\x00\x00\x01\x00\x12\x08\x4d\
 \x00\x00\x0b\x16\x00\x00\x00\x00\x00\x01\x00\x12\x33\x31\
@@ -85812,10 +85868,10 @@
 \x00\x00\x0d\x04\x00\x00\x00\x00\x00\x01\x00\x12\x92\xf4\
 \x00\x00\x0b\x9e\x00\x00\x00\x00\x00\x01\x00\x12\x40\xd9\
 \x00\x00\x0c\x66\x00\x00\x00\x00\x00\x01\x00\x12\x7d\xad\
-\x00\x00\x17\x88\x00\x00\x00\x00\x00\x01\x00\x14\x9e\xec\
-\x00\x00\x17\xea\x00\x00\x00\x00\x00\x01\x00\x14\xa5\x62\
-\x00\x00\x17\xbc\x00\x00\x00\x00\x00\x01\x00\x14\xa2\x4e\
-\x00\x00\x18\x12\x00\x00\x00\x00\x00\x01\x00\x14\xa8\x00\
+\x00\x00\x17\xaa\x00\x00\x00\x00\x00\x01\x00\x14\xa1\xfd\
+\x00\x00\x18\x0c\x00\x00\x00\x00\x00\x01\x00\x14\xa8\x73\
+\x00\x00\x17\xde\x00\x00\x00\x00\x00\x01\x00\x14\xa5\x5f\
+\x00\x00\x18\x34\x00\x00\x00\x00\x00\x01\x00\x14\xab\x11\
 \x00\x00\x06\xf8\x00\x00\x00\x00\x00\x01\x00\x10\xd6\x04\
 \x00\x00\x06\x98\x00\x00\x00\x00\x00\x01\x00\x10\xa6\xc4\
 \x00\x00\x06\x68\x00\x00\x00\x00\x00\x01\x00\x10\x9c\x30\

=== modified file 'openlp/core/ui/__init__.py'
--- openlp/core/ui/__init__.py	2014-02-27 21:39:44 +0000
+++ openlp/core/ui/__init__.py	2014-10-28 20:52:28 +0000
@@ -49,6 +49,7 @@
     Blank = 1
     Theme = 2
     Screen = 3
+    Logo = 4
 
 
 class AlertLocation(object):

=== modified file 'openlp/core/ui/maindisplay.py'
--- openlp/core/ui/maindisplay.py	2014-08-27 23:18:06 +0000
+++ openlp/core/ui/maindisplay.py	2014-10-28 20:52:28 +0000
@@ -129,6 +129,9 @@
         self.override = {}
         self.retranslateUi()
         self.media_object = None
+        self.default_color = None
+        self.default_image = None
+        self.default_image_bytes = None
         if self.is_live:
             self.audio_player = AudioPlayer(self)
         else:
@@ -168,7 +171,7 @@
             self.setStyleSheet("QGraphicsView {background: transparent; border: 0px;}")
         else:
             self.setAttribute(QtCore.Qt.WA_NoSystemBackground, False)
-            self.setStyleSheet("QGraphicsView {}")
+            self.setStyleSheet("QGraphicsView {border: 0px;}")
         self.setAttribute(QtCore.Qt.WA_TranslucentBackground, enabled)
         self.repaint()
 
@@ -194,30 +197,59 @@
         self.setVisible(False)
         Display.setup(self)
         if self.is_live:
-            # Build the initial frame.
-            background_color = QtGui.QColor()
-            background_color.setNamedColor(Settings().value('advanced/default color'))
-            if not background_color.isValid():
-                background_color = QtCore.Qt.white
-            image_file = Settings().value('advanced/default image')
-            splash_image = QtGui.QImage(image_file)
-            self.initial_fame = QtGui.QImage(
-                self.screen['size'].width(),
-                self.screen['size'].height(),
-                QtGui.QImage.Format_ARGB32_Premultiplied)
-            painter_image = QtGui.QPainter()
-            painter_image.begin(self.initial_fame)
-            painter_image.fillRect(self.initial_fame.rect(), background_color)
-            painter_image.drawImage(
-                (self.screen['size'].width() - splash_image.width()) // 2,
-                (self.screen['size'].height() - splash_image.height()) // 2,
-                splash_image)
-            service_item = ServiceItem()
-            service_item.bg_image_bytes = image_to_byte(self.initial_fame)
-            self.web_view.setHtml(build_html(service_item, self.screen, self.is_live, None,
-                                  plugins=self.plugin_manager.plugins))
+            # Set initial frame.
+            self.update_default_frame()
+            self.update_blank_logo()
             self._hide_mouse()
 
+    def update_default_frame(self, image_bytes=None):
+        if image_bytes == None:
+            image_bytes = self.get_default_image_bytes()
+        service_item = ServiceItem()
+        service_item.bg_image_bytes = image_bytes
+        self.web_view.setHtml(build_html(service_item, self.screen, self.is_live, None,
+                              plugins=self.plugin_manager.plugins))
+
+    def get_default_image_bytes(self):
+        # Build the initial frame.
+        self.default_image = Settings().value('advanced/default image')
+        self.default_color = Settings().value('advanced/default color')
+        background_color = QtGui.QColor()
+        background_color.setNamedColor(self.default_color)
+        if not background_color.isValid():
+            background_color = QtCore.Qt.white
+        splash_image = QtGui.QImage(self.default_image)
+        self.initial_fame = QtGui.QImage(
+            self.screen['size'].width(),
+            self.screen['size'].height(),
+            QtGui.QImage.Format_ARGB32_Premultiplied)
+        painter_image = QtGui.QPainter()
+        painter_image.begin(self.initial_fame)
+        painter_image.fillRect(self.initial_fame.rect(), background_color)
+        painter_image.drawImage(
+            (self.screen['size'].width() - splash_image.width()) // 2,
+            (self.screen['size'].height() - splash_image.height()) // 2,
+            splash_image)
+        self.default_image_bytes = image_to_byte(self.initial_fame)
+        return self.default_image_bytes
+
+    def update_blank_logo(self, image_bytes=None):
+        image = ''
+        color = Settings().value('advanced/default color')
+        if image_bytes == None:
+            if self.default_color == color and \
+               self.default_image == Settings().value('advanced/default image'):
+                image_bytes = self.default_image_bytes
+        if image_bytes == None:
+            image_bytes = self.get_default_image_bytes()
+            if image_bytes and self.initial_fame:
+                self.update_default_frame(image_bytes)
+        if image_bytes:
+            image = 'data:image/png;base64,%s' % image_bytes
+        else:
+            self.default_image_bytes = None
+        self.frame.evaluateJavaScript('set_blank_logo("%s", "%s");' % (color, image))
+
     def text(self, slide, animate=True):
         """
         Add the slide text from slideController
@@ -427,8 +459,10 @@
         if mode == HideMode.Screen:
             self.frame.evaluateJavaScript('show_blank("desktop");')
             self.setVisible(False)
-        elif mode == HideMode.Blank or self.initial_fame:
+        elif mode == HideMode.Blank:
             self.frame.evaluateJavaScript('show_blank("black");')
+        elif mode == HideMode.Logo or self.initial_fame:
+            self.frame.evaluateJavaScript('show_blank("logo");')
         else:
             self.frame.evaluateJavaScript('show_blank("theme");')
         if mode != HideMode.Screen:

=== modified file 'openlp/core/ui/slidecontroller.py'
--- openlp/core/ui/slidecontroller.py	2014-10-28 18:36:54 +0000
+++ openlp/core/ui/slidecontroller.py	2014-10-28 20:52:28 +0000
@@ -69,12 +69,14 @@
 ]
 WIDE_MENU = [
     'blank_screen_button',
+    'logo_screen_button',
     'theme_screen_button',
     'desktop_screen_button'
 ]
 
 NON_TEXT_MENU = [
     'blank_screen_button',
+    'logo_screen_button',
     'desktop_screen_button'
 ]
 
@@ -209,6 +211,11 @@
                                               icon=':/slides/slide_blank.png',
                                               checked=False, can_shortcuts=True, category=self.category,
                                               triggers=self.on_blank_display)
+            self.logo_screen = create_action(self, 'logoScreen',
+                                             text=translate('OpenLP.SlideController', 'Blank to Logo'),
+                                             icon=':/slides/slide_logo.png',
+                                             checked=False, can_shortcuts=True, category=self.category,
+                                             triggers=self.on_logo_display)
             self.theme_screen = create_action(self, 'themeScreen',
                                               text=translate('OpenLP.SlideController', 'Blank to Theme'),
                                               icon=':/slides/slide_theme.png',
@@ -221,6 +228,7 @@
                                                 triggers=self.on_hide_display)
             self.hide_menu.setDefaultAction(self.blank_screen)
             self.hide_menu.menu().addAction(self.blank_screen)
+            self.hide_menu.menu().addAction(self.logo_screen)
             self.hide_menu.menu().addAction(self.theme_screen)
             self.hide_menu.menu().addAction(self.desktop_screen)
             # Wide menu of display control buttons.
@@ -228,6 +236,10 @@
             self.blank_screen_button.setObjectName('blank_screen_button')
             self.toolbar.add_toolbar_widget(self.blank_screen_button)
             self.blank_screen_button.setDefaultAction(self.blank_screen)
+            self.logo_screen_button = QtGui.QToolButton(self.toolbar)
+            self.logo_screen_button.setObjectName('logo_screen_button')
+            self.toolbar.add_toolbar_widget(self.logo_screen_button)
+            self.logo_screen_button.setDefaultAction(self.logo_screen)
             self.theme_screen_button = QtGui.QToolButton(self.toolbar)
             self.theme_screen_button.setObjectName('theme_screen_button')
             self.toolbar.add_toolbar_widget(self.theme_screen_button)
@@ -502,6 +514,8 @@
         """
         if action == 'blank' or action == 'hide':
             self.on_blank_display(True)
+        elif action == 'logo':
+            self.on_logo_display(True)
         elif action == 'theme':
             self.on_theme_display(True)
         elif action == 'desktop':
@@ -510,6 +524,7 @@
             self.on_blank_display(False)
             self.on_theme_display(False)
             self.on_hide_display(False)
+            self.on_logo_display(False)
 
     def service_previous(self, field=None):
         """
@@ -888,6 +903,8 @@
             # Order done to handle initial conversion
             if display_type == 'themed':
                 self.on_theme_display(True)
+            elif display_type == 'logo' :
+                self.on_logo_display(True)
             elif display_type == 'hidden':
                 self.on_hide_display(True)
             elif display_type == 'blanked':
@@ -920,6 +937,7 @@
         self.log_debug('on_blank_display %s' % checked)
         self.hide_menu.setDefaultAction(self.blank_screen)
         self.blank_screen.setChecked(checked)
+        self.logo_screen.setChecked(False)
         self.theme_screen.setChecked(False)
         self.desktop_screen.setChecked(False)
         if checked:
@@ -930,6 +948,31 @@
         self.update_preview()
         self.on_toggle_loop()
 
+    def on_logo_display(self, checked=None):
+        """
+        Handle the Theme screen button
+
+        :param checked: the new state of the of the widget
+        """
+        if self.display.initial_fame:
+            checked = True
+        elif checked is None:
+            checked = self.logo_screen.isChecked()
+        self.log_debug('on_logo_display %s' % checked)
+        self.hide_menu.setDefaultAction(self.logo_screen)
+        self.blank_screen.setChecked(False)
+        self.theme_screen.setChecked(False)
+        self.logo_screen.setChecked(checked)
+        self.desktop_screen.setChecked(False)
+        if checked:
+            self.display.update_blank_logo()
+            Settings().setValue(self.main_window.general_settings_section + '/screen blank', 'logo')
+        else:
+            Settings().remove(self.main_window.general_settings_section + '/screen blank')
+        self.blank_plugin()
+        self.update_preview()
+        self.on_toggle_loop()
+
     def on_theme_display(self, checked=None):
         """
         Handle the Theme screen button
@@ -941,6 +984,7 @@
         self.log_debug('on_theme_display %s' % checked)
         self.hide_menu.setDefaultAction(self.theme_screen)
         self.blank_screen.setChecked(False)
+        self.logo_screen.setChecked(False)
         self.theme_screen.setChecked(checked)
         self.desktop_screen.setChecked(False)
         if checked:
@@ -962,6 +1006,7 @@
         self.log_debug('on_hide_display %s' % checked)
         self.hide_menu.setDefaultAction(self.desktop_screen)
         self.blank_screen.setChecked(False)
+        self.logo_screen.setChecked(False)
         self.theme_screen.setChecked(False)
         self.desktop_screen.setChecked(checked)
         if checked:
@@ -1312,6 +1357,8 @@
         hide_mode = self.hide_mode()
         if hide_mode == HideMode.Blank:
             self.on_blank_display(True)
+        elif hide_mode == HideMode.Logo:
+            self.on_logo_display(True)
         elif hide_mode == HideMode.Theme:
             self.on_theme_display(True)
         elif hide_mode == HideMode.Screen:
@@ -1327,6 +1374,8 @@
             return None
         elif self.blank_screen.isChecked():
             return HideMode.Blank
+        elif self.logo_screen.isChecked():
+            return HideMode.Logo
         elif self.theme_screen.isChecked():
             return HideMode.Theme
         elif self.desktop_screen.isChecked():

=== modified file 'openlp/plugins/presentations/lib/messagelistener.py'
--- openlp/plugins/presentations/lib/messagelistener.py	2014-10-21 21:06:02 +0000
+++ openlp/plugins/presentations/lib/messagelistener.py	2014-10-28 20:52:28 +0000
@@ -78,6 +78,8 @@
             if hide_mode == HideMode.Screen:
                 Registry().execute('live_display_hide', HideMode.Screen)
                 self.stop()
+            elif hide_mode == HideMode.Logo:
+                self.blank(hide_mode)
             elif hide_mode == HideMode.Theme:
                 self.blank(hide_mode)
             elif hide_mode == HideMode.Blank:
@@ -239,7 +241,13 @@
                 return
             if not self.doc.is_active():
                 return
-            Registry().execute('live_display_hide', HideMode.Theme)
+            Registry().execute('live_display_hide', hide_mode)
+        elif hide_mode == HideMode.Logo:
+            if not self.doc.is_loaded():
+                return
+            if not self.doc.is_active():
+                return
+            Registry().execute('live_display_hide', hide_mode)
         elif hide_mode == HideMode.Blank:
             if not self.activate():
                 return

=== modified file 'resources/images/openlp-2.qrc'
--- resources/images/openlp-2.qrc	2014-09-05 20:15:44 +0000
+++ resources/images/openlp-2.qrc	2014-10-28 20:52:28 +0000
@@ -69,6 +69,7 @@
     <file>slide_next.png</file>
     <file>slide_blank.png</file>
     <file>slide_desktop.png</file>
+    <file>slide_logo.png</file>
     <file>slide_theme.png</file>
     <file>slide_previous.png</file>
     <file>media_playback_start.png</file>

=== added file 'resources/images/slide_logo.png'
Binary files resources/images/slide_logo.png	1970-01-01 00:00:00 +0000 and resources/images/slide_logo.png	2014-10-28 20:52:28 +0000 differ
=== modified file 'tests/functional/openlp_core_lib/test_htmlbuilder.py'
--- tests/functional/openlp_core_lib/test_htmlbuilder.py	2014-07-24 21:57:16 +0000
+++ tests/functional/openlp_core_lib/test_htmlbuilder.py	2014-10-28 20:52:28 +0000
@@ -41,6 +41,14 @@
     background-color: black;
     display: none;
 }
+#logo {
+    z-index: 7;
+    background-image: none;
+    background-color: black;
+    background-repeat: no-repeat;
+    background-position: center center;
+    display: none;
+}
 #bgimage {
     z-index: 1;
 }
@@ -76,19 +84,33 @@
             img.style.display = 'block';
     }
 
+    function set_blank_logo(color, image){
+        if(typeof color === 'undefined')
+            color = '#000000';
+        if(typeof image === 'undefined')
+            image = '';
+        document.getElementById('logo').style.backgroundColor = color;
+        document.getElementById('logo').style.backgroundImage = "url('"+image+"')";
+    }
+
     function show_blank(state){
+        var logo = 'none';
         var black = 'none';
         var lyrics = '';
         switch(state){
             case 'theme':
                 lyrics = 'hidden';
                 break;
+            case 'logo':
+                logo = 'block';
+                break;
             case 'black':
                 black = 'block';
                 break;
             case 'desktop':
                 break;
         }
+        document.getElementById('logo').style.display = logo;
         document.getElementById('black').style.display = black;
         document.getElementById('lyricsmain').style.visibility = lyrics;
         document.getElementById('image').style.visibility = lyrics;
@@ -160,6 +182,7 @@
 <div class="lyricstable"><div id="lyricsmain" style="opacity:1" class="lyricscell lyricsmain"></div></div>
 <div id="footer" class="footer"></div>
 <div id="black" class="size"></div>
+<div id="logo" class="size"></div>
 </body>
 </html>
 """

=== modified file 'tests/functional/openlp_core_ui/test_maindisplay.py'
--- tests/functional/openlp_core_ui/test_maindisplay.py	2014-05-07 23:52:51 +0000
+++ tests/functional/openlp_core_ui/test_maindisplay.py	2014-10-28 20:52:28 +0000
@@ -97,7 +97,7 @@
         self.assertFalse(main_display.autoFillBackground(),
                          'MainDisplay instance should be without background auto fill')
         self.assertTrue(main_display.testAttribute(QtCore.Qt.WA_TranslucentBackground),
-                        'MainDisplay hasnt translucent background')
+                        'MainDisplay should have translucent background')
 
         # WHEN: We disable transparency
         main_display.set_transparency(False)
@@ -106,4 +106,4 @@
         self.assertEqual('QGraphicsView {}', main_display.styleSheet(),
                          'MainDisplay instance should not be transparent')
         self.assertFalse(main_display.testAttribute(QtCore.Qt.WA_TranslucentBackground),
-                         'MainDisplay hasnt translucent background')
+                         'MainDisplay should have translucent background')


Follow ups