aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/General
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/General')
-rw-r--r--src/plugins/General/statusicon/qmmptrayicon.cpp34
-rw-r--r--src/plugins/General/statusicon/qmmptrayicon.h9
-rw-r--r--src/plugins/General/statusicon/settingsdialog.cpp52
-rw-r--r--src/plugins/General/statusicon/settingsdialog.h6
-rw-r--r--src/plugins/General/statusicon/statusicon.cpp44
-rw-r--r--src/plugins/General/statusicon/statusicon.h13
-rw-r--r--src/plugins/General/statusicon/statusiconpopupwidget.cpp35
-rw-r--r--src/plugins/General/statusicon/statusiconpopupwidget.h14
8 files changed, 104 insertions, 103 deletions
diff --git a/src/plugins/General/statusicon/qmmptrayicon.cpp b/src/plugins/General/statusicon/qmmptrayicon.cpp
index 89e13ce8d..4479323e6 100644
--- a/src/plugins/General/statusicon/qmmptrayicon.cpp
+++ b/src/plugins/General/statusicon/qmmptrayicon.cpp
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2008-2016 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 *
@@ -21,7 +21,7 @@
#include <QEvent>
#include <QWheelEvent>
#include <QMouseEvent>
-
+#include <QApplication>
#include <qmmp/soundcore.h>
#include "qmmptrayicon.h"
@@ -32,25 +32,28 @@
QmmpTrayIcon::QmmpTrayIcon(QObject *parent)
: QSystemTrayIcon(parent)
-{
-#ifdef Q_WS_X11
- m_showNiceToolTip = false;
-#endif
-}
+{}
QmmpTrayIcon::~QmmpTrayIcon()
{
}
-#ifdef Q_WS_X11
-void QmmpTrayIcon::showNiceToolTip(bool value)
+
+void QmmpTrayIcon::setToolTip(const QString &tip)
{
- m_showNiceToolTip = value;
+#ifdef Q_WS_X11
+ m_message = tip;
+ if(m_popupWidget)
+ showToolTip();
+#else
+ QSystemTrayIcon::setToolTip(tip);
+#endif
}
+#ifdef Q_WS_X11
bool QmmpTrayIcon::event(QEvent *e)
{
- if (e->type() == QEvent::Wheel )
+ if (e->type() == QEvent::Wheel)
{
wheelEvent((QWheelEvent *) e);
e->accept();
@@ -72,13 +75,10 @@ void QmmpTrayIcon::wheelEvent(QWheelEvent *e)
void QmmpTrayIcon::showToolTip()
{
- if(m_showNiceToolTip)
+ if(m_popupWidget.isNull())
{
- if(m_PopupWidget.isNull())
- {
- m_PopupWidget = new StatusIconPopupWidget();
- }
- m_PopupWidget->showInfo(geometry().x(),geometry().y());
+ m_popupWidget = new StatusIconPopupWidget();
}
+ m_popupWidget->showInfo(geometry().x(),geometry().y(), m_message);
}
#endif
diff --git a/src/plugins/General/statusicon/qmmptrayicon.h b/src/plugins/General/statusicon/qmmptrayicon.h
index 37cabd967..4c0eb1415 100644
--- a/src/plugins/General/statusicon/qmmptrayicon.h
+++ b/src/plugins/General/statusicon/qmmptrayicon.h
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2008-2013 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 *
@@ -39,15 +39,16 @@ public:
QmmpTrayIcon(QObject *parent = 0);
~QmmpTrayIcon();
-#ifdef Q_WS_X11
- void showNiceToolTip(bool value);
+ void setToolTip(const QString &tip);
+#ifdef Q_WS_X11
private:
bool event(QEvent *e);
void wheelEvent(QWheelEvent *e);
void showToolTip();
bool m_showNiceToolTip;
- QPointer<StatusIconPopupWidget> m_PopupWidget;
+ QPointer<StatusIconPopupWidget> m_popupWidget;
+ QString m_message;
#endif
};
diff --git a/src/plugins/General/statusicon/settingsdialog.cpp b/src/plugins/General/statusicon/settingsdialog.cpp
index 73bec4e00..8bc8ac2e3 100644
--- a/src/plugins/General/statusicon/settingsdialog.cpp
+++ b/src/plugins/General/statusicon/settingsdialog.cpp
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2009-2013 by Ilya Kotov *
+ * Copyright (C) 2009-2017 by Ilya Kotov *
* forkotov02@hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -22,32 +22,32 @@
#include <qmmpui/templateeditor.h>
#include <qmmp/qmmp.h>
#include "statusiconpopupwidget.h"
+#include "statusicon.h"
#include "settingsdialog.h"
SettingsDialog::SettingsDialog(QWidget *parent)
: QDialog(parent)
{
- ui.setupUi(this);
+ m_ui.setupUi(this);
QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
settings.beginGroup("Tray");
- ui.messageGroupBox->setChecked(settings.value("show_message",true).toBool());
- ui.messageDelaySpinBox->setValue(settings.value("message_delay", 2000).toInt());
- ui.niceTooltipGroupBox->setChecked(settings.value("show_tooltip", true).toBool());
+ m_ui.messageGroupBox->setChecked(settings.value("show_message",true).toBool());
+ m_ui.messageDelaySpinBox->setValue(settings.value("message_delay", 2000).toInt());
+ m_ui.niceTooltipGroupBox->setChecked(settings.value("show_tooltip", true).toBool());
#ifdef Q_WS_X11
- ui.niceTooltipDelaySpinBox->setValue(settings.value("tooltip_delay",2000).toInt());
- ui.transparencySlider->setValue(settings.value("tooltip_transparency",0).toInt());
- ui.coverSizeSlider->setValue(settings.value("tooltip_cover_size", 100).toInt());
- ui.progressCheckBox->setChecked(settings.value("tooltip_progress",true).toBool());
- ui.niceTooltipSplitCheckBox->setChecked(settings.value("split_file_name",true).toBool());
+ m_ui.niceTooltipDelaySpinBox->setValue(settings.value("tooltip_delay",2000).toInt());
+ m_ui.transparencySlider->setValue(settings.value("tooltip_transparency",0).toInt());
+ m_ui.coverSizeSlider->setValue(settings.value("tooltip_cover_size", 100).toInt());
+ m_ui.progressCheckBox->setChecked(settings.value("tooltip_progress",true).toBool());
+ m_ui.niceTooltipSplitCheckBox->setChecked(settings.value("split_file_name",true).toBool());
#else
- ui.niceTooltipDelaySpinBox->setEnabled(false);
- ui.transparencySlider->setEnabled(false);
- ui.coverSizeSlider->setEnabled(false);
- ui.progressCheckBox->setEnabled(false);
- ui.niceTooltipSplitCheckBox->setEnabled(false);
- ui.templateButton->setEnabled(false);
+ m_ui.niceTooltipDelaySpinBox->setEnabled(false);
+ m_ui.transparencySlider->setEnabled(false);
+ m_ui.coverSizeSlider->setEnabled(false);
+ m_ui.progressCheckBox->setEnabled(false);
+ m_ui.templateButton->setEnabled(false);
#endif
- ui.standardIconsCheckBox->setChecked(settings.value("use_standard_icons",false).toBool());
+ m_ui.standardIconsCheckBox->setChecked(settings.value("use_standard_icons",false).toBool());
m_template = settings.value("tooltip_template", DEFAULT_TEMPLATE).toString();
settings.endGroup();
}
@@ -59,16 +59,16 @@ void SettingsDialog::accept()
{
QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
settings.beginGroup("Tray");
- settings.setValue("show_message", ui.messageGroupBox->isChecked());
- settings.setValue("message_delay", ui.messageDelaySpinBox->value());
- settings.setValue("use_standard_icons", ui.standardIconsCheckBox->isChecked());
- settings.setValue("show_tooltip", ui.niceTooltipGroupBox->isChecked());
+ settings.setValue("show_message", m_ui.messageGroupBox->isChecked());
+ settings.setValue("message_delay", m_ui.messageDelaySpinBox->value());
+ settings.setValue("use_standard_icons", m_ui.standardIconsCheckBox->isChecked());
+ settings.setValue("show_tooltip", m_ui.niceTooltipGroupBox->isChecked());
+ settings.setValue("split_file_name", m_ui.niceTooltipSplitCheckBox->isChecked());
#ifdef Q_WS_X11
- settings.setValue("split_file_name", ui.niceTooltipSplitCheckBox->isChecked());
- settings.setValue("tooltip_delay", ui.niceTooltipDelaySpinBox->value());
- settings.setValue("tooltip_transparency", ui.transparencySlider->value());
- settings.setValue("tooltip_cover_size", ui.coverSizeSlider->value());
- settings.setValue("tooltip_progress", ui.progressCheckBox->isChecked());
+ settings.setValue("tooltip_delay", m_ui.niceTooltipDelaySpinBox->value());
+ settings.setValue("tooltip_transparency", m_ui.transparencySlider->value());
+ settings.setValue("tooltip_cover_size", m_ui.coverSizeSlider->value());
+ settings.setValue("tooltip_progress", m_ui.progressCheckBox->isChecked());
#endif
settings.setValue("tooltip_template", m_template);
settings.endGroup();
diff --git a/src/plugins/General/statusicon/settingsdialog.h b/src/plugins/General/statusicon/settingsdialog.h
index 4ba6271f2..f2cdecb16 100644
--- a/src/plugins/General/statusicon/settingsdialog.h
+++ b/src/plugins/General/statusicon/settingsdialog.h
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2008-2013 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 *
@@ -21,8 +21,6 @@
#define SETTINGSDIALOG_H
#include <QDialog>
-
-
#include "ui_settingsdialog.h"
/**
@@ -43,7 +41,7 @@ private slots:
void on_templateButton_clicked();
private:
- Ui::SettingsDialog ui;
+ Ui::SettingsDialog m_ui;
QString m_template;
};
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)
diff --git a/src/plugins/General/statusicon/statusicon.h b/src/plugins/General/statusicon/statusicon.h
index 36281cdef..1edac5d82 100644
--- a/src/plugins/General/statusicon/statusicon.h
+++ b/src/plugins/General/statusicon/statusicon.h
@@ -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 *
@@ -26,16 +26,16 @@
#include <qmmpui/metadataformatter.h>
#include "qmmptrayicon.h"
+#define DEFAULT_TEMPLATE "<b>%if(%t,%t,%f)</b>\n%if(%p,<br>%p,)\n%if(%a,<br>%a,)\n%if(%l,<br><b>%l</b>,)"
+
class SoundCore;
class MediaPlayer;
class QEvent;
class QMenu;
-
/**
@author Ilya Kotov <forkotov02@hotmail.ru>
*/
-
class StatusIcon : public QObject
{
Q_OBJECT
@@ -54,12 +54,15 @@ private:
bool m_showMessage;
bool m_hideToTray;
bool m_useStandardIcons;
- bool m_tooltip;
+ bool m_showToolTip;
+ QString m_toolTipTemplate;
int m_messageDelay;
SoundCore *m_core;
MediaPlayer *m_player;
QMenu *m_menu;
- MetaDataFormatter m_formatter;
+ MetaDataFormatter m_messageFormatter;
+ MetaDataFormatter m_toolTipFormatter;
+ bool m_splitFileName;
};
#endif
diff --git a/src/plugins/General/statusicon/statusiconpopupwidget.cpp b/src/plugins/General/statusicon/statusiconpopupwidget.cpp
index 1b057c817..2f7b80ac0 100644
--- a/src/plugins/General/statusicon/statusiconpopupwidget.cpp
+++ b/src/plugins/General/statusicon/statusiconpopupwidget.cpp
@@ -21,6 +21,9 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
***************************************************************************/
+#include <QtGlobal>
+#ifdef Q_WS_X11
+
#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QLabel>
@@ -70,9 +73,7 @@ StatusIconPopupWidget::StatusIconPopupWidget(QWidget * parent)
m_bar->setMinimumWidth(110);
connect(m_timer,SIGNAL(timeout()),SLOT(deleteLater()));
- connect(SoundCore::instance(),SIGNAL(metaDataChanged()),this,SLOT(updateMetaData()));
connect(SoundCore::instance(),SIGNAL(elapsedChanged(qint64)),this,SLOT(updateTime(qint64)));
- connect(SoundCore::instance(),SIGNAL(stateChanged(Qmmp::State)),this,SLOT(updateMetaData()));
QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
settings.beginGroup("Tray");
@@ -80,9 +81,7 @@ StatusIconPopupWidget::StatusIconPopupWidget(QWidget * parent)
setWindowOpacity(1.0 - settings.value("tooltip_transparency",0).toInt()/100.0);
int size = settings.value("tooltip_cover_size",100).toInt();
m_cover->setFixedSize(size,size);
- m_splitFileName = settings.value("split_file_name",true).toBool();
m_showProgress = settings.value("tooltip_progress",true).toBool();
- m_template = settings.value("tooltip_template", DEFAULT_TEMPLATE).toString();
settings.endGroup();
}
@@ -95,29 +94,13 @@ void StatusIconPopupWidget::mousePressEvent(QMouseEvent *)
deleteLater();
}
-void StatusIconPopupWidget::updateMetaData()
+void StatusIconPopupWidget::updateMetaData(const QString &message)
{
m_timer->stop();
SoundCore *core = SoundCore::instance();
+ m_textLabel->setText(message);
if(core->state() == Qmmp::Playing || core->state() == Qmmp::Paused)
{
- QString title = m_template;
- SoundCore *core = SoundCore::instance();
- QMap<Qmmp::MetaData, QString> meta = 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();
- }
- }
-
- MetaDataFormatter f(title);
- title = f.format(core->metaData(), core->totalTime()/1000);
- m_textLabel->setText(title);
QPixmap cover = MetaDataManager::instance()->getCover(core->metaData(Qmmp::URL));
m_cover->show();
m_bar->show();
@@ -132,8 +115,8 @@ void StatusIconPopupWidget::updateMetaData()
{
m_cover->hide();
m_bar->hide();
- m_textLabel->setText(tr("Stopped"));
}
+ m_textLabel->setText(message);
qApp->processEvents();
resize(sizeHint());
qApp->processEvents();
@@ -172,12 +155,12 @@ void StatusIconPopupWidget::updatePosition(int trayx, int trayy)
return;
}
-void StatusIconPopupWidget::showInfo(int x, int y)
+void StatusIconPopupWidget::showInfo(int x, int y, const QString &message)
{
m_timer->stop();
m_lastTrayX = x;
m_lastTrayY = y;
- updateMetaData();
+ updateMetaData(message);
qApp->processEvents();
updatePosition(x,y);
qApp->processEvents();
@@ -192,3 +175,5 @@ QString TimeBar::text() const
{
return QString("%1:%2").arg(value()/60,2,10,QChar('0')).arg(value()%60,2,10,QChar('0'));
}
+
+#endif
diff --git a/src/plugins/General/statusicon/statusiconpopupwidget.h b/src/plugins/General/statusicon/statusiconpopupwidget.h
index 766904f4a..aef0d470f 100644
--- a/src/plugins/General/statusicon/statusiconpopupwidget.h
+++ b/src/plugins/General/statusicon/statusiconpopupwidget.h
@@ -2,7 +2,7 @@
* Copyright (C) 2009 by Artur Guzik *
* a.guzik88@gmail.com *
* *
- * Copyright (C) 2009-2012 by Ilya Kotov *
+ * Copyright (C) 2009-2017 by Ilya Kotov *
* forkotov02@hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -24,8 +24,8 @@
#ifndef STATUSICONPOPUPWIDGET_H
#define STATUSICONPOPUPWIDGET_H
-#define DEFAULT_TEMPLATE "<b>%if(%t,%t,%f)</b>\n%if(%p,<br>%p,)\n%if(%a,<br>%a,)\n%if(%l,<br><b>%l</b>,)"
-
+#include <QtGlobal>
+#ifdef Q_WS_X11
#include <QFrame>
#include <QWidget>
#include <QProgressBar>
@@ -46,28 +46,27 @@ public:
StatusIconPopupWidget(QWidget * parent = 0);
~StatusIconPopupWidget();
- void showInfo(int x, int y); //x,y are tray icon position
+ void showInfo(int x, int y, const QString &message); //x,y are tray icon position
protected:
virtual void mousePressEvent(QMouseEvent *);
private slots:
void updatePosition(int trayx, int trayy);
- void updateMetaData();
void updateTime(qint64 elapsed);
private:
+ void updateMetaData(const QString &message);
QLabel *m_textLabel;
QHBoxLayout *m_hLayout;
QVBoxLayout *m_vLayout;
QTimer *m_timer;
- CoverWidget * m_cover;
+ CoverWidget *m_cover;
QString m_totalTime;
QSpacerItem *m_spacer;
QProgressBar *m_bar;
int m_lastTrayX;
int m_lastTrayY;
- int m_splitFileName;
QString m_template;
bool m_showProgress;
};
@@ -80,5 +79,6 @@ public:
virtual QString text() const;
};
+#endif
#endif // STATUSICONPOPUPWIDGET_H