=== modified file 'mixxx/src/skin/legacyskinparser.cpp' --- mixxx/src/skin/legacyskinparser.cpp 2012-01-10 16:54:50 +0000 +++ mixxx/src/skin/legacyskinparser.cpp 2012-03-11 00:44:24 +0000 @@ -1003,13 +1003,82 @@ emitOption, state); // Add keyboard shortcut info to tooltip string - QString tooltip = pWidget->toolTip(); - QString shortcut = m_pKeyboard->getKeyboardConfig()->getValueString(configKey); - if (!shortcut.isEmpty() && !tooltip.contains(shortcut, Qt::CaseInsensitive)) { - tooltip.append(QString("\nShortcut: %1").arg(shortcut)); - pWidget->setToolTip(tooltip); + if (connectValueFromWidget) { + // do not add Shortcut string for feedback connections + QString shortcut = m_pKeyboard->getKeyboardConfig()->getValueString(configKey); + addShortcutToToolTip(pWidget, shortcut, QString("")); + + if (qobject_cast(pWidget)) { + // check for "_activate", "_toggle" + ConfigKey subkey; + QString shortcut; + + subkey = configKey; + subkey.item += "_activate"; + shortcut = m_pKeyboard->getKeyboardConfig()->getValueString(subkey); + addShortcutToToolTip(pWidget, shortcut, tr("activate")); + + subkey = configKey; + subkey.item += "_toggle"; + shortcut = m_pKeyboard->getKeyboardConfig()->getValueString(subkey); + addShortcutToToolTip(pWidget, shortcut, tr("toggle")); + } + + + if (qobject_cast(pWidget)) { + // check for "_up", "_down", "_up_small", "_down_small" + ConfigKey subkey; + QString shortcut; + + subkey = configKey; + subkey.item += "_up"; + shortcut = m_pKeyboard->getKeyboardConfig()->getValueString(subkey); + addShortcutToToolTip(pWidget, shortcut, tr("up")); + + subkey = configKey; + subkey.item += "_down"; + shortcut = m_pKeyboard->getKeyboardConfig()->getValueString(subkey); + addShortcutToToolTip(pWidget, shortcut, tr("down")); + + subkey = configKey; + subkey.item += "_up_small"; + shortcut = m_pKeyboard->getKeyboardConfig()->getValueString(subkey); + addShortcutToToolTip(pWidget, shortcut, tr("up small")); + + subkey = configKey; + subkey.item += "_down_small"; + shortcut = m_pKeyboard->getKeyboardConfig()->getValueString(subkey); + addShortcutToToolTip(pWidget, shortcut, tr("down small")); + } } } con = con.nextSibling(); } } + +void LegacySkinParser::addShortcutToToolTip(QWidget* pWidget, const QString& shortcut, const QString& cmd) { + if (shortcut.isEmpty()) { + return; + } + + QString tooltip = pWidget->toolTip(); + + // translate shortcut to native text +#if QT_VERSION >= 0x040700 + QString nativeShortcut = QKeySequence(shortcut, QKeySequence::PortableText).toString(QKeySequence::NativeText); +#else + QString nativeShortcut = QKeySequence::fromString(shortcut, QKeySequence::PortableText); + shortcut = keySec.toString(QKeySequence::NativeText); +#endif + + tooltip += "\n"; + tooltip += tr("Shortcut"); + if (!cmd.isEmpty()) { + tooltip += " "; + tooltip += cmd; + } + tooltip += ": "; + tooltip += nativeShortcut; + pWidget->setToolTip(tooltip); +} + === modified file 'mixxx/src/skin/legacyskinparser.h' --- mixxx/src/skin/legacyskinparser.h 2011-10-24 00:19:55 +0000 +++ mixxx/src/skin/legacyskinparser.h 2012-03-11 00:44:48 +0000 @@ -67,6 +67,7 @@ void setupSize(QDomNode node, QWidget* pWidget); void setupWidget(QDomNode node, QWidget* pWidget); void setupConnections(QDomNode node, QWidget* pWidget); + void addShortcutToToolTip(QWidget* pWidget, const QString& shortcut, const QString& cmd); QString lookupNodeGroup(QDomElement node); static const char* safeChannelString(QString channelStr);