From fc75b7cd788d5afd973bf2cc6e7af15050c5de00 Mon Sep 17 00:00:00 2001 From: trialuser02 Date: Mon, 11 Jan 2010 10:52:54 +0000 Subject: improved cover manager git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@1497 90c681e8-e032-0410-971d-27865f9a5e38 --- src/plugins/General/covermanager/coverwidget.cpp | 67 ++++++++++++++++++++++-- 1 file changed, 64 insertions(+), 3 deletions(-) (limited to 'src/plugins/General/covermanager/coverwidget.cpp') diff --git a/src/plugins/General/covermanager/coverwidget.cpp b/src/plugins/General/covermanager/coverwidget.cpp index 56f2b0436..f6fd62b91 100644 --- a/src/plugins/General/covermanager/coverwidget.cpp +++ b/src/plugins/General/covermanager/coverwidget.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 * @@ -19,8 +19,13 @@ ***************************************************************************/ #include #include +#include #include - +#include +#include +#include +#include +#include #include "coverwidget.h" CoverWidget::CoverWidget(QWidget *parent) @@ -28,6 +33,32 @@ CoverWidget::CoverWidget(QWidget *parent) { setWindowFlags(Qt::Window); setAttribute(Qt::WA_DeleteOnClose, TRUE); + m_menu = new QMenu(this); + m_menu->addAction(tr("&Save As..."), this, SLOT(saveAs()), tr("Ctrl+S")); + QMenu *sizeMenu = m_menu->addMenu(tr("Size")); + QActionGroup *sizeGroup = new QActionGroup(this); + sizeGroup->addAction(tr("Actual Size"))->setData(0); + sizeGroup->addAction(tr("128x128"))->setData(128); + sizeGroup->addAction(tr("256x256"))->setData(256); + sizeGroup->addAction(tr("512x512"))->setData(512); + sizeGroup->addAction(tr("1024x1024"))->setData(1024); + sizeMenu->addActions(sizeGroup->actions()); + connect(sizeMenu, SIGNAL(triggered (QAction *)), SLOT(processResizeAction(QAction *))); + m_menu->addAction(tr("&Close"), this, SLOT(close()), tr("Alt+F4")); + addActions(m_menu->actions()); + m_size = 0; + //settings + QSettings settings(Qmmp::configFile(), QSettings::IniFormat); + m_size = settings.value("CoverManager/size", 0).toInt(); + foreach(QAction *a, sizeMenu->actions ()) + { + a->setCheckable(TRUE); + if(a->data().toInt() == m_size) + { + a->setChecked(TRUE); + processResizeAction(a); + } + } } CoverWidget::~CoverWidget() @@ -36,12 +67,42 @@ CoverWidget::~CoverWidget() void CoverWidget::setPixmap(const QPixmap &pixmap) { m_pixmap = pixmap; + if(m_size == 0) + resize(m_pixmap.size()); update(); } -void CoverWidget::paintEvent (QPaintEvent *p) +void CoverWidget::paintEvent(QPaintEvent *p) { QPainter paint(this); if(!m_pixmap.isNull()) paint.drawPixmap(0,0, m_pixmap.scaled(p->rect().size())); } + +void CoverWidget::mousePressEvent(QMouseEvent *e) +{ + if(e->button() == Qt::RightButton) + m_menu->exec(e->globalPos()); +} + +void CoverWidget::saveAs() +{ + QString path = FileDialog::getSaveFileName(this, tr("Save Cover As"), + QDir::homePath() + "/cover.jpg", + tr("Images") +" (*.png *.jpg)"); + + if (!path.isEmpty()) + m_pixmap.save(path); +} + +void CoverWidget::processResizeAction(QAction *action) +{ + m_size = action->data().toInt(); + if(m_size == 0) + resize(m_pixmap.size()); + else + resize(m_size, m_size); + update(); + QSettings settings(Qmmp::configFile(), QSettings::IniFormat); + settings.setValue("CoverManager/size", m_size); +} -- cgit v1.2.3-13-gbd6f