From bc6a115358931e7111a4c0a3efb2055af64dbcc0 Mon Sep 17 00:00:00 2001 From: trialuser02 Date: Fri, 5 Mar 2010 21:09:08 +0000 Subject: fixed popup widget git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@1601 90c681e8-e032-0410-971d-27865f9a5e38 --- src/ui/forms/popupsettings.ui | 197 +++++++++++++++++++++----------------- src/ui/images/images.qrc | 1 + src/ui/images/ui_no_cover.png | Bin 0 -> 4170 bytes src/ui/listwidget.cpp | 41 ++++---- src/ui/listwidget.h | 2 +- src/ui/popupsettings.cpp | 6 +- src/ui/popupwidget.cpp | 80 ++++++++++------ src/ui/popupwidget.h | 15 ++- src/ui/translations/qmmp_cs.ts | 55 ++++++----- src/ui/translations/qmmp_de.ts | 55 ++++++----- src/ui/translations/qmmp_hu.ts | 55 ++++++----- src/ui/translations/qmmp_it.ts | 55 ++++++----- src/ui/translations/qmmp_lt.ts | 53 +++++----- src/ui/translations/qmmp_pl_PL.ts | 55 ++++++----- src/ui/translations/qmmp_pt_BR.ts | 53 +++++----- src/ui/translations/qmmp_ru.ts | 55 ++++++----- src/ui/translations/qmmp_tr.ts | 55 ++++++----- src/ui/translations/qmmp_uk_UA.ts | 55 ++++++----- src/ui/translations/qmmp_zh_CN.ts | 55 ++++++----- src/ui/translations/qmmp_zh_TW.ts | 55 ++++++----- 20 files changed, 580 insertions(+), 418 deletions(-) create mode 100644 src/ui/images/ui_no_cover.png diff --git a/src/ui/forms/popupsettings.ui b/src/ui/forms/popupsettings.ui index 7a2517299..c59db2b72 100644 --- a/src/ui/forms/popupsettings.ui +++ b/src/ui/forms/popupsettings.ui @@ -6,8 +6,8 @@ 0 0 - 292 - 300 + 277 + 335 @@ -23,7 +23,74 @@ 6 - + + + + Template + + + + + + + 0 + 0 + + + + + + + + Qt::Horizontal + + + + 138 + 20 + + + + + + + + Reset + + + + + + + Insert + + + + + + + + + + Show cover + + + + + + + 0 + + + + + + + Cover size: + + + + 32 @@ -42,21 +109,14 @@ - - - - 0 - - - - + Transparency: - + 90 @@ -66,7 +126,7 @@ - + @@ -75,91 +135,48 @@ - 0 + 0 - - - - - - Qt::Horizontal - - - - 131 - 31 - - - - - - - - - 0 - 0 - - - - QDialogButtonBox::Cancel|QDialogButtonBox::Ok - - - - - - - + + - Cover size: + Delay: - - - - Template + + + + 20 + + + 7000 + + + 500 + + + + + + + + 0 + 0 + + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + ms - - - - - - 0 - 0 - - - - - - - - Qt::Horizontal - - - - 138 - 20 - - - - - - - - Reset - - - - - - - Insert - - - - diff --git a/src/ui/images/images.qrc b/src/ui/images/images.qrc index 3095a730d..910bf9b3c 100644 --- a/src/ui/images/images.qrc +++ b/src/ui/images/images.qrc @@ -8,5 +8,6 @@ network.png logo-qmmp.png replaygain.png + ui_no_cover.png diff --git a/src/ui/images/ui_no_cover.png b/src/ui/images/ui_no_cover.png new file mode 100644 index 000000000..ac8c587e3 Binary files /dev/null and b/src/ui/images/ui_no_cover.png differ diff --git a/src/ui/listwidget.cpp b/src/ui/listwidget.cpp index 0c04cc211..c4d905195 100644 --- a/src/ui/listwidget.cpp +++ b/src/ui/listwidget.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2006-2009 by Ilya Kotov * + * Copyright (C) 2006-2010 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -246,19 +246,24 @@ void ListWidget::wheelEvent (QWheelEvent *e) bool ListWidget::event (QEvent *e) { - if(e->type() == QEvent::ToolTip) + if(m_popupWidget) { - QHelpEvent *helpEvent = (QHelpEvent *) e; - int row = rowAt(helpEvent->y()); - if(row < 0) - return QWidget::event(e); - e->accept(); - if(m_popupWidget) - m_popupWidget->popup(m_model->item(row), helpEvent->globalPos() + QPoint(15,10)); - return TRUE; + if(e->type() == QEvent::ToolTip) + { + QHelpEvent *helpEvent = (QHelpEvent *) e; + int row = rowAt(helpEvent->y()); + if(row < 0) + { + m_popupWidget->deactivate(); + return QWidget::event(e); + } + e->accept(); + m_popupWidget->prepare(m_model->item(row), helpEvent->globalPos()); + return TRUE; + } + else if(e->type() == QEvent::Leave) + m_popupWidget->deactivate(); } - else if(e->type() == QEvent::Leave && m_popupWidget) - m_popupWidget->hide(); return QWidget::event(e); } @@ -411,7 +416,7 @@ void ListWidget::mouseMoveEvent(QMouseEvent *e) return; if (row + 1 == m_first + m_rows && m_scroll_direction == DOWN) - (m_first + m_rows < m_model->count() ) ? m_first ++ : m_first; + (m_first + m_rows < m_model->count()) ? m_first ++ : m_first; else if (row == m_first && m_scroll_direction == TOP) (m_first > 0) ? m_first -- : 0; @@ -421,8 +426,12 @@ void ListWidget::mouseMoveEvent(QMouseEvent *e) m_pressed_row = row; } } - else if(e->buttons() == Qt::NoButton && m_popupWidget && m_popupWidget->isVisible()) - m_popupWidget->move(e->globalPos() + QPoint(15,10)); + else if(m_popupWidget) + { + int row = rowAt(e->y()); + if(row < 0 || m_popupWidget->item() != m_model->item(row)) + m_popupWidget->deactivate(); + } } void ListWidget::mouseReleaseEvent(QMouseEvent *e) @@ -445,7 +454,7 @@ int ListWidget::rowAt(int y) const if (y <= 14 && y >= 2 && m_model->count()) return m_first; - for (int i = 0; i < qMin(m_rows, m_model->count() - m_first) - 1; ++i ) + for (int i = 0; i < qMin(m_rows, m_model->count() - m_first) - 1; ++i) { if ((y >= 14 + i * m_metrics->ascent ()) && (y <= 14 + (i+1) * m_metrics->ascent())) return m_first + i + 1; diff --git a/src/ui/listwidget.h b/src/ui/listwidget.h index d17b380c2..47c137fbe 100644 --- a/src/ui/listwidget.h +++ b/src/ui/listwidget.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2006-2009 by Ilya Kotov * + * Copyright (C) 2006-2010 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * diff --git a/src/ui/popupsettings.cpp b/src/ui/popupsettings.cpp index ceb9ad34d..e11f00457 100644 --- a/src/ui/popupsettings.cpp +++ b/src/ui/popupsettings.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2009 by Ilya Kotov * + * Copyright (C) 2009-2010 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -33,6 +33,8 @@ PopupSettings::PopupSettings(QWidget *parent) ui.transparencySlider->setValue(100 - settings.value("popup_opacity", 1.0).toDouble()*100); ui.coverSizeSlider->setValue(settings.value ("popup_cover_size", 48).toInt()); ui.textEdit->setPlainText(settings.value ("popup_template", DEFAULT_TEMPLATE).toString()); + ui.delaySpinBox->setValue(settings.value("popup_delay", 2500).toInt()); + ui.coverCheckBox->setChecked(settings.value("popup_show_cover",TRUE).toBool()); settings.endGroup(); createMenu(); } @@ -48,6 +50,8 @@ void PopupSettings::accept() settings.setValue("popup_opacity", 1.0 - (double)ui.transparencySlider->value()/100); settings.setValue("popup_cover_size", ui.coverSizeSlider->value()); settings.setValue("popup_template", ui.textEdit->toPlainText()); + settings.setValue("popup_delay", ui.delaySpinBox->value()); + settings.setValue("popup_show_cover", ui.coverCheckBox->isChecked()); settings.endGroup(); QDialog::accept(); } diff --git a/src/ui/popupwidget.cpp b/src/ui/popupwidget.cpp index 6d44e0b84..f63d4a5a1 100644 --- a/src/ui/popupwidget.cpp +++ b/src/ui/popupwidget.cpp @@ -34,17 +34,14 @@ using namespace PlayListPopup; PopupWidget::PopupWidget(QWidget *parent) - : QFrame(parent) + : QWidget(parent) { - setWindowFlags(Qt::X11BypassWindowManagerHint | - Qt::WindowStaysOnTopHint | Qt::Dialog | Qt::FramelessWindowHint); - setFrameStyle(QFrame::Box | QFrame::Plain); + setWindowFlags(Qt::X11BypassWindowManagerHint | Qt::Dialog); + //setFrameStyle(QFrame::Box | QFrame::Plain); setAttribute(Qt::WA_QuitOnClose, FALSE); - m_lastItem = 0; + m_item = 0; QHBoxLayout *hlayout = new QHBoxLayout(this); //layout m_pixlabel = new QLabel(this); - m_pixlabel->setPixmap(QPixmap(":/32x32/qmmp.png")); - m_pixlabel->setFixedSize(32,32); hlayout->addWidget(m_pixlabel); m_label1 = new QLabel(this); @@ -56,12 +53,19 @@ PopupWidget::PopupWidget(QWidget *parent) setWindowOpacity(settings.value("popup_opacity", 1.0).toDouble()); m_coverSize = settings.value("popup_cover_size", 48).toInt(); m_template = settings.value("popup_template",DEFAULT_TEMPLATE).toString(); + int delay = settings.value("popup_delay", 2500).toInt(); + bool show_cover = settings.value("popup_show_cover",TRUE).toBool(); settings.endGroup(); //timer m_timer = new QTimer(this); - m_timer->setInterval(10000); + m_timer->setInterval(delay); m_timer->setSingleShot (TRUE); - connect(m_timer, SIGNAL(timeout ()), SLOT(hide())); + if(show_cover) + connect(m_timer, SIGNAL(timeout ()), SLOT(loadCover())); + else + m_pixlabel->hide(); + connect(m_timer, SIGNAL(timeout ()), SLOT(show())); + setMouseTracking(TRUE); } PopupWidget::~PopupWidget() @@ -69,40 +73,54 @@ PopupWidget::~PopupWidget() void PopupWidget::mousePressEvent (QMouseEvent *) { - deleteLater(); + hide(); +} + +void PopupWidget::mouseMoveEvent (QMouseEvent *) +{ + hide(); } -void PopupWidget::popup(PlayListItem *item, QPoint pos) +void PopupWidget::prepare(PlayListItem *item, QPoint pos) { - if(m_lastItem == item) + pos += QPoint(15,10); + + m_item = item; + hide(); + if(!item) { - show(); - m_timer->start(); + m_timer->stop(); return; } - m_timer->stop(); - m_lastItem = item; move(pos); QString title = m_template; MetaDataFormatter f(title); title = f.parse(item); - m_label1->setText(title); - - QPixmap pix = MetaDataManager::instance()->getCover(item->url()); - if(!pix.isNull()) - { - m_pixlabel->setFixedSize(m_coverSize,m_coverSize); - m_pixlabel->setPixmap(pix.scaled(m_coverSize,m_coverSize)); - } - else - { - m_pixlabel->setPixmap(QPixmap(":/notifier_icon.png")); - m_pixlabel->setFixedSize(32,32); - } qApp->processEvents(); - resize(sizeHint()); + updateGeometry (); qApp->processEvents(); - show(); m_timer->start(); } + +void PopupWidget::deactivate() +{ + m_timer->stop(); + hide(); +} + +PlayListItem *PopupWidget::item() +{ + return m_item; +} + +void PopupWidget::loadCover() +{ + if(!m_item) + return; + QPixmap pix = MetaDataManager::instance()->getCover(m_item->url()); + if(pix.isNull()) + pix = QPixmap(":/ui_no_cover.png"); + m_pixlabel->setFixedSize(m_coverSize,m_coverSize); + m_pixlabel->setPixmap(pix.scaled(m_coverSize,m_coverSize)); +} diff --git a/src/ui/popupwidget.h b/src/ui/popupwidget.h index c88ee3176..5e630313e 100644 --- a/src/ui/popupwidget.h +++ b/src/ui/popupwidget.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2008-2009 by Ilya Kotov * + * Copyright (C) 2008-2010 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -21,7 +21,6 @@ #define POPUPWIDGET_H #include -#include #define DEFAULT_TEMPLATE "%if(%t,%t,%f)\n%if(%p,
%p,)\n%if(%a,
%a,)" @@ -33,7 +32,7 @@ namespace PlayListPopup { /** @author Ilya Kotov */ -class PopupWidget : public QFrame +class PopupWidget : public QWidget { Q_OBJECT public: @@ -41,10 +40,16 @@ public: ~PopupWidget(); - void popup(PlayListItem *item, QPoint pos); + void prepare(PlayListItem *item, QPoint pos); + void deactivate(); + PlayListItem *item(); protected: virtual void mousePressEvent (QMouseEvent *); + virtual void mouseMoveEvent (QMouseEvent *); + +private slots: + void loadCover(); private: QTimer *m_timer; @@ -53,7 +58,7 @@ private: QString m_template; uint m_pos; int m_coverSize; - PlayListItem *m_lastItem; + PlayListItem *m_item; }; } diff --git a/src/ui/translations/qmmp_cs.ts b/src/ui/translations/qmmp_cs.ts index 95321a994..54c0d7e8f 100644 --- a/src/ui/translations/qmmp_cs.ts +++ b/src/ui/translations/qmmp_cs.ts @@ -1441,103 +1441,112 @@ Nastavení informací ve vyskakovacím okně - - - 0 - 0 + + Show cover + - + Transparency: Průhlednost: - + + Delay: + + + + + ms + + + + Cover size: Velikost obalu: - + Template Šablona - + Reset Původní - + Insert Vložit - + Artist Umělec - + Album Album - + Title Název - + Track number Číslo stopy - + Two-digit track number Dvoumístné číslo stopy - + Genre Žánr - + Comment Poznámka - + Composer Skladatel - + Duration Délka - + Disc number Číslo disku - + File name Název souboru - + File path Cesta k souboru - + Year Rok - + Condition Stav diff --git a/src/ui/translations/qmmp_de.ts b/src/ui/translations/qmmp_de.ts index eda6a772e..5d97122f7 100644 --- a/src/ui/translations/qmmp_de.ts +++ b/src/ui/translations/qmmp_de.ts @@ -1441,103 +1441,112 @@ - - - 0 - 0 + + Show cover + - + Transparency: Transparenz: - + + Delay: + + + + + ms + + + + Cover size: Cover-Größe: - + Template Vorlage - + Reset Zurücksetzen - + Insert Einfügen - + Artist Interpret - + Album Album - + Title Titel - + Track number Stücknummer - + Two-digit track number Zweistellige Stücknummer - + Genre Genre - + Comment Kommentar - + Composer Komponist - + Duration Abspieldauer - + Disc number CD-Nummer - + File name Dateiname - + File path Dateipfad - + Year Jahr - + Condition Zustand diff --git a/src/ui/translations/qmmp_hu.ts b/src/ui/translations/qmmp_hu.ts index 70a010475..5e4b5ed9e 100644 --- a/src/ui/translations/qmmp_hu.ts +++ b/src/ui/translations/qmmp_hu.ts @@ -1441,103 +1441,112 @@ - - - 0 - 0 + + Show cover + - + Transparency: - + + Delay: + + + + + ms + + + + Cover size: - + Template - + Reset - + Insert - + Artist Előadó - + Album Album - + Title Cím - + Track number - + Two-digit track number - + Genre Műfaj - + Comment Megjegyzés - + Composer - + Duration - + Disc number - + File name - + File path - + Year Év - + Condition diff --git a/src/ui/translations/qmmp_it.ts b/src/ui/translations/qmmp_it.ts index d6ca74c03..3e55d649e 100644 --- a/src/ui/translations/qmmp_it.ts +++ b/src/ui/translations/qmmp_it.ts @@ -1441,103 +1441,112 @@ Popup delle impostazioni - - - 0 - 0 + + Show cover + - + Transparency: Trasparenza: - + + Delay: + + + + + ms + + + + Cover size: Dimensione copertina: - + Template Modello - + Reset Azzera - + Insert Inserisci - + Artist Interprete - + Album Album - + Title Titolo - + Track number Traccia n° - + Two-digit track number Traccia n° a due cifre - + Genre Genere - + Comment Commento - + Composer Compositore - + Duration Durata - + Disc number Disco n° - + File name Nome file - + File path Percorso file - + Year Anno - + Condition Condizione diff --git a/src/ui/translations/qmmp_lt.ts b/src/ui/translations/qmmp_lt.ts index 977039bb1..9d384505b 100644 --- a/src/ui/translations/qmmp_lt.ts +++ b/src/ui/translations/qmmp_lt.ts @@ -1442,103 +1442,112 @@ Iššokančios informacijos nustatymai - - - 0 + + Show cover - + Transparency: Permatomumas - + + Delay: + + + + + ms + + + + Cover size: Nuotraukos dydis - + Template Šablonas - + Reset Ištrinti - + Insert Įtraukti - + Artist Atlikėjas - + Album Albumas - + Title Pavadinimas - + Track number Takelio numeris - + Two-digit track number Dviejų skaičių takelio numeris - + Genre Žanras - + Comment Komentaras - + Composer Autorius - + Duration Ilgis - + Disc number Disko numeris - + File name Bylos pavadinimas - + File path Bylos kelias - + Year Metai - + Condition Būklė diff --git a/src/ui/translations/qmmp_pl_PL.ts b/src/ui/translations/qmmp_pl_PL.ts index cbb7d1153..71bb36763 100644 --- a/src/ui/translations/qmmp_pl_PL.ts +++ b/src/ui/translations/qmmp_pl_PL.ts @@ -1441,103 +1441,112 @@ Ustawienia informacji Popup - - - 0 - 0 + + Show cover + - + Transparency: Przezroczystość: - + + Delay: + + + + + ms + + + + Cover size: Rozmiar okładki: - + Template Szablon - + Reset Przywróć - + Insert Wstaw - + Artist Artysta - + Album Album - + Title Tytuł - + Track number Numer utworu - + Two-digit track number Dwuznakowy numer utworu - + Genre Gatunek - + Comment Komentarz - + Composer Kompozytor - + Duration Długość - + Disc number Numer albumu - + File name Nazwa pliku - + File path Lokalizacja - + Year Rok - + Condition Warunek diff --git a/src/ui/translations/qmmp_pt_BR.ts b/src/ui/translations/qmmp_pt_BR.ts index 49b8827f0..fc70514be 100644 --- a/src/ui/translations/qmmp_pt_BR.ts +++ b/src/ui/translations/qmmp_pt_BR.ts @@ -1441,103 +1441,112 @@ - - - 0 + + Show cover - + Transparency: - + + Delay: + + + + + ms + + + + Cover size: - + Template - + Reset - + Insert - + Artist Artista - + Album Álbum - + Title Título - + Track number - + Two-digit track number - + Genre Gênero - + Comment Comentário - + Composer - + Duration - + Disc number - + File name - + File path - + Year Ano - + Condition diff --git a/src/ui/translations/qmmp_ru.ts b/src/ui/translations/qmmp_ru.ts index 6df48129b..441f7ce46 100644 --- a/src/ui/translations/qmmp_ru.ts +++ b/src/ui/translations/qmmp_ru.ts @@ -1441,103 +1441,112 @@ Настройки всплывающей информации - - - 0 - 0 + + Show cover + Показывать обложку - + Transparency: Прозрачность: - + + Delay: + Задержка: + + + + ms + мс + + + Cover size: Размер обложки: - + Template Шаблон - + Reset Сброс - + Insert Вставить - + Artist Исполнитель - + Album Альбом - + Title Название - + Track number Номер трека - + Two-digit track number 2-x разрядный номер трека - + Genre Жанр - + Comment Комментарий - + Composer Композитор - + Duration Длительность - + Disc number Номер диска - + File name Имя файла - + File path Путь к файлу - + Year Год - + Condition Условие diff --git a/src/ui/translations/qmmp_tr.ts b/src/ui/translations/qmmp_tr.ts index ee4ac5e51..26daf1319 100644 --- a/src/ui/translations/qmmp_tr.ts +++ b/src/ui/translations/qmmp_tr.ts @@ -1441,103 +1441,112 @@ - - - 0 - 0 + + Show cover + - + Transparency: - + + Delay: + + + + + ms + + + + Cover size: - + Template - + Reset - + Insert - + Artist Sanatçı - + Album Albüm - + Title Başlık - + Track number - + Two-digit track number - + Genre Tarz - + Comment Yorum - + Composer - + Duration - + Disc number - + File name - + File path - + Year Yıl - + Condition diff --git a/src/ui/translations/qmmp_uk_UA.ts b/src/ui/translations/qmmp_uk_UA.ts index 845d20896..2e4e31626 100644 --- a/src/ui/translations/qmmp_uk_UA.ts +++ b/src/ui/translations/qmmp_uk_UA.ts @@ -1441,103 +1441,112 @@ Налаштування спливаючої інформації - - - 0 - + + Show cover + - + Transparency: Прозорість: - + + Delay: + + + + + ms + + + + Cover size: Розмір обкладинки: - + Template Шаблон - + Reset Скинути - + Insert Вставити - + Artist Виконавець - + Album Альбом - + Title Назва - + Track number Номер треку - + Two-digit track number 2- розрядний номер трека - + Genre Жанр - + Comment Коментар - + Composer Композитор - + Duration Тривалість - + Disc number Номер диску - + File name Ім'я файлу - + File path Шлях файлу - + Year Рік - + Condition Умова diff --git a/src/ui/translations/qmmp_zh_CN.ts b/src/ui/translations/qmmp_zh_CN.ts index 94b1834d7..661614aaa 100644 --- a/src/ui/translations/qmmp_zh_CN.ts +++ b/src/ui/translations/qmmp_zh_CN.ts @@ -1441,103 +1441,112 @@ - - - 0 - 0 + + Show cover + - + Transparency: - + + Delay: + + + + + ms + + + + Cover size: - + Template - + Reset - + Insert - + Artist 艺术家 - + Album 专辑 - + Title 标题 - + Track number - + Two-digit track number - + Genre 流派 - + Comment 备注 - + Composer - + Duration - + Disc number - + File name - + File path - + Year 年代 - + Condition diff --git a/src/ui/translations/qmmp_zh_TW.ts b/src/ui/translations/qmmp_zh_TW.ts index 119e3591b..e5c8cd47b 100644 --- a/src/ui/translations/qmmp_zh_TW.ts +++ b/src/ui/translations/qmmp_zh_TW.ts @@ -1441,103 +1441,112 @@ - - - 0 - 0 + + Show cover + - + Transparency: - + + Delay: + + + + + ms + + + + Cover size: - + Template - + Reset - + Insert - + Artist 藝術家 - + Album 專輯 - + Title 標題 - + Track number - + Two-digit track number - + Genre 流派 - + Comment 備註 - + Composer - + Duration - + Disc number - + File name - + File path - + Year 年代 - + Condition -- cgit v1.2.3-13-gbd6f