Center-align tooltips, fix QML, italicize unknown
authorShane Synan <digitalcircuit36939@gmail.com>
Tue, 14 Jun 2016 14:16:08 +0000 (10:16 -0400)
committerManuel Nickschas <sputnick@quassel-irc.org>
Mon, 5 Sep 2016 19:50:51 +0000 (21:50 +0200)
Center-align the "No information available" and "Not active" tooltip
messages to keep them consistent with the centered table layouts.

Fix and simplify tooltip QML formatting.

Use italics when displaying an unknown away message.  This avoids
clashing with someone having the literal away message "(unknown)"

Resolves GH-214.

src/client/networkmodel.cpp

index bba2175..599b710 100644 (file)
@@ -76,7 +76,7 @@ QVariant NetworkItem::data(int column, int role) const
 
 QString NetworkItem::escapeHTML(const QString &string, bool useNonbreakingSpaces)
 {
-    // QString.replace() doesn't guarentee the source string will remain constant.
+    // QString.replace() doesn't guarantee the source string will remain constant.
     // Use a local variable to avoid compiler errors.
 #if QT_VERSION < 0x050000
     QString formattedString = Qt::escape(string);
@@ -522,8 +522,7 @@ QString QueryBufferItem::toolTip(int column) const
     Q_UNUSED(column);
     QString strTooltip;
     QTextStream tooltip( &strTooltip, QIODevice::WriteOnly );
-    tooltip << "<qt><style>.bold { font-weight: bold; }</style>"
-            << "<style>.italic { font-style: italic; }</style>";
+    tooltip << "<qt><style>.bold { font-weight: bold; } .italic { font-style: italic; }</style>";
 
     // Keep track of whether or not information has been added
     bool infoAdded = false;
@@ -552,11 +551,13 @@ QString QueryBufferItem::toolTip(int column) const
 
         tooltip << "<table cellspacing='5' cellpadding='0'>";
         if (_ircUser->isAway()) {
-            QString awayMessage(tr("(unknown)"));
-            if(!_ircUser->awayMessage().isEmpty()) {
-                awayMessage = _ircUser->awayMessage();
+            QString awayMessageHTML = QString("<p class='italic'>%1</p>").arg(tr("Unknown"));
+
+            // If away message is known, replace with the escaped message.
+            if (!_ircUser->awayMessage().isEmpty()) {
+                awayMessageHTML = NetworkItem::escapeHTML(_ircUser->awayMessage());
             }
-            addRow(NetworkItem::escapeHTML(tr("Away message"), true), NetworkItem::escapeHTML(awayMessage), true);
+            addRow(NetworkItem::escapeHTML(tr("Away message"), true), awayMessageHTML, true);
         }
         addRow(tr("Realname"),
                NetworkItem::escapeHTML(_ircUser->realName()),
@@ -629,7 +630,7 @@ QString QueryBufferItem::toolTip(int column) const
 
     // If no further information found, offer an explanatory message
     if (!infoAdded)
-        tooltip << "<p class='italic'>" << tr("No information available") << "</p>";
+        tooltip << "<p class='italic' align='center'>" << tr("No information available") << "</p>";
 
     tooltip << "</qt>";
     return strTooltip;
@@ -690,8 +691,7 @@ QString ChannelBufferItem::toolTip(int column) const
     Q_UNUSED(column);
     QString strTooltip;
     QTextStream tooltip( &strTooltip, QIODevice::WriteOnly );
-    tooltip << "<qt><style>.bold { font-weight: bold; }</style>"
-            << "<qt><style>.italic { font-style: italic; }</style>";
+    tooltip << "<qt><style>.bold { font-weight: bold; } .italic { font-style: italic; }</style>";
 
     // Function to add a row to the tooltip table
     auto addRow = [&](const QString& key, const QString& value, bool condition) {
@@ -726,7 +726,7 @@ QString ChannelBufferItem::toolTip(int column) const
 
         tooltip << "</table>";
     } else {
-        tooltip << "<p class='italic'>" << tr("Not active, double-click to join") << "</p>";
+        tooltip << "<p class='italic' align='center'>" << tr("Not active, double-click to join") << "</p>";
     }
 
     tooltip << "</qt>";
@@ -1076,8 +1076,7 @@ QString IrcUserItem::toolTip(int column) const
     Q_UNUSED(column);
     QString strTooltip;
     QTextStream tooltip( &strTooltip, QIODevice::WriteOnly );
-    tooltip << "<qt><style>.bold { font-weight: bold; }</style>"
-            << "<style>.italic { font-style: italic; }</style>";
+    tooltip << "<qt><style>.bold { font-weight: bold; } .italic { font-style: italic; }</style>";
 
     // Keep track of whether or not information has been added
     bool infoAdded = false;
@@ -1103,11 +1102,13 @@ QString IrcUserItem::toolTip(int column) const
            NetworkItem::escapeHTML(channelModes()),
            !channelModes().isEmpty());
     if (_ircUser->isAway()) {
-        QString awayMessage(tr("(unknown)"));
-        if(!_ircUser->awayMessage().isEmpty()) {
-            awayMessage = _ircUser->awayMessage();
+        QString awayMessageHTML = QString("<p class='italic'>%1</p>").arg(tr("Unknown"));
+
+        // If away message is known, replace with the escaped message.
+        if (!_ircUser->awayMessage().isEmpty()) {
+            awayMessageHTML = NetworkItem::escapeHTML(_ircUser->awayMessage());
         }
-        addRow(NetworkItem::escapeHTML(tr("Away message"), true), NetworkItem::escapeHTML(awayMessage), true);
+        addRow(NetworkItem::escapeHTML(tr("Away message"), true), awayMessageHTML, true);
     }
     addRow(tr("Realname"),
            NetworkItem::escapeHTML(_ircUser->realName()),
@@ -1180,7 +1181,7 @@ QString IrcUserItem::toolTip(int column) const
 
     // If no further information found, offer an explanatory message
     if (!infoAdded)
-        tooltip << "<p class='italic'>" << tr("No information available") << "</p>";
+        tooltip << "<p class='italic' align='center'>" << tr("No information available") << "</p>";
 
     tooltip << "</qt>";
     return strTooltip;