diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2017-04-29 15:56:34 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2017-04-29 15:56:34 +0000 |
| commit | 538f8bb01b872a1c555e3127bc8791579d854290 (patch) | |
| tree | 71c5f1236f01b2d7d3b1c9e375bd78861e6f81b6 /src/plugins/General/statusicon/statusicon.cpp | |
| parent | 2e6fa0a1453066f1560270466797b2161d7851c4 (diff) | |
| download | qmmp-538f8bb01b872a1c555e3127bc8791579d854290.tar.gz qmmp-538f8bb01b872a1c555e3127bc8791579d854290.tar.bz2 qmmp-538f8bb01b872a1c555e3127bc8791579d854290.zip | |
system tray: refactoring
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@7135 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/General/statusicon/statusicon.cpp')
| -rw-r--r-- | src/plugins/General/statusicon/statusicon.cpp | 44 |
1 files changed, 29 insertions, 15 deletions
diff --git a/src/plugins/General/statusicon/statusicon.cpp b/src/plugins/General/statusicon/statusicon.cpp index 2ce580bd9..bd075bd8e 100644 --- a/src/plugins/General/statusicon/statusicon.cpp +++ b/src/plugins/General/statusicon/statusicon.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2008-2015 by Ilya Kotov * + * Copyright (C) 2008-2017 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -46,16 +46,19 @@ StatusIcon::StatusIcon(QObject *parent) : QObject(parent) m_messageDelay = settings.value("message_delay", 2000).toInt(); m_hideToTray = settings.value("hide_on_close", false).toBool(); m_useStandardIcons = settings.value("use_standard_icons",false).toBool(); - m_tooltip = settings.value("show_tooltip",true).toBool(); - m_formatter.setPattern("%p%if(%p&%t, - ,)%t"); + m_showToolTip = settings.value("show_tooltip",true).toBool(); + m_splitFileName = settings.value("split_file_name",true).toBool(); #ifdef Q_WS_X11 - m_tray->showNiceToolTip(m_tooltip); + m_toolTipTemplate = settings.value("tooltip_template", DEFAULT_TEMPLATE).toString(); +#else + m_toolTipTemplate = "%p%if(%p&%t, - ,)%t"; #endif + m_toolTipFormatter.setPattern(m_toolTipTemplate); + m_messageFormatter.setPattern("%p%if(%p&%t, - ,)%t"); if(m_useStandardIcons) m_tray->setIcon(QApplication::style ()->standardIcon(QStyle::SP_MediaStop)); else m_tray->setIcon(QIcon(":/tray_stop.png")); - m_tray->show(); settings.endGroup(); //actions m_menu = new QMenu(); @@ -73,6 +76,7 @@ StatusIcon::StatusIcon(QObject *parent) : QObject(parent) m_menu->addSeparator(); m_menu->addAction(tr("Exit"), UiHelper::instance(), SLOT(exit())); m_tray->setContextMenu(m_menu); + m_tray->show(); connect (m_core, SIGNAL(metaDataChanged ()), SLOT(showMetaData())); connect (m_core, SIGNAL(stateChanged (Qmmp::State)), SLOT(setState(Qmmp::State))); setState(m_core->state()); //update state @@ -111,9 +115,8 @@ void StatusIcon::setState(Qmmp::State state) m_tray->setIcon(QApplication::style ()->standardIcon(QStyle::SP_MediaStop)); else m_tray->setIcon (QIcon(":/tray_stop.png")); -#ifndef Q_WS_X11 - m_tray->setToolTip(""); -#endif + if(m_showToolTip) + m_tray->setToolTip(tr("Stopped")); break; } } @@ -121,22 +124,33 @@ void StatusIcon::setState(Qmmp::State state) void StatusIcon::showMetaData() { - QString message = m_formatter.format(m_core->metaData()); + QMap<Qmmp::MetaData, QString> meta = m_core->metaData(); + if(m_splitFileName && meta[Qmmp::TITLE].isEmpty() && !meta[Qmmp::URL].contains("://")) + { + QString name = QFileInfo(meta[Qmmp::URL]).completeBaseName(); + if(name.contains("-")) + { + meta[Qmmp::TITLE] = name.section('-',1,1).trimmed(); + if(meta[Qmmp::ARTIST].isEmpty()) + meta[Qmmp::ARTIST] = name.section('-',0,0).trimmed(); + } + } + + QString message = m_messageFormatter.format(meta, m_core->totalTime() / 1000); if (message.isEmpty()) - message = m_core->metaData(Qmmp::URL).section('/',-1); + message = meta[Qmmp::URL].section('/',-1); if (m_showMessage) m_tray->showMessage (tr("Now Playing"), message, QSystemTrayIcon::Information, m_messageDelay); -#ifndef Q_WS_X11 - if(m_tooltip) + + if(m_showToolTip) { - QString message = m_formatter.format(m_core->metaData()); + message = m_toolTipFormatter.format(meta, m_core->totalTime() / 1000); if(message.isEmpty()) - message = m_core->metaData(Qmmp::URL).section('/',-1); + message = meta[Qmmp::URL].section('/',-1); m_tray->setToolTip(message); } -#endif } void StatusIcon::trayActivated(QSystemTrayIcon::ActivationReason reason) |
