aboutsummaryrefslogtreecommitdiff
path: root/src/qmmpui/qmmpuiplugincache_p.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/qmmpui/qmmpuiplugincache_p.h')
0 files changed, 0 insertions, 0 deletions
umebar.cpp?h=main&id=2d622fd9bcb8da9dd3f3206e296cd6a701fc9d12'>2d622fd9b
2d622fd9b


2d622fd9b


97c98d9d5
2d622fd9b
ecc137abe
2d622fd9b

11b7655bb
2d622fd9b


11b7655bb
2d622fd9b

2d622fd9b




013ee07b5
2d622fd9b
97c98d9d5
2d622fd9b

09d1eb079
2d622fd9b


97c98d9d5

09d1eb079
97c98d9d5
2d622fd9b
2d622fd9b










97c98d9d5
2d622fd9b









11b7655bb

b5b5d2e48
09d1eb079
2d622fd9b






11b7655bb
2d622fd9b




11b7655bb
2d622fd9b



97c98d9d5
11b7655bb
26da2f9c1
2d622fd9b



97c98d9d5
2d622fd9b











97c98d9d5
2d622fd9b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
                                                                            
                                                                            














                                                                            
                                                                            




                                                                             


                       


                      
                                                            
 
                              

                                                                     
                     


                        
                

 




                                               
                    
                       
                                                       

                                 
                             


        

                                                                                             
                             
                             
                                      










                                               
                                                   









                                               

                     
                    
                          






                               
                




                               
                



                            
                                           
                
                                                   



                                  
                                                                                      











                                                                      
                                                                                 
 
/***************************************************************************
 *   Copyright (C) 2006-2013 by Ilya Kotov                                 *
 *   forkotov02@hotmail.ru                                                 *
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 *   This program is distributed in the hope that it will be useful,       *
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 *   GNU General Public License for more details.                          *
 *                                                                         *
 *   You should have received a copy of the GNU General Public License     *
 *   along with this program; if not, write to the                         *
 *   Free Software Foundation, Inc.,                                       *
 *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.         *
 ***************************************************************************/

#include <QMouseEvent>
#include <QPainter>
#include <math.h>
#include "skin.h"
#include "button.h"
#include "mainwindow.h"
#include "volumebar.h"


VolumeBar::VolumeBar(QWidget *parent) : PixmapWidget(parent)
{
    m_skin = Skin::instance();
    connect(m_skin, SIGNAL(skinChanged()), this, SLOT(updateSkin()));
    setPixmap(m_skin->getVolumeBar(0));
    m_moving = false;
    m_min = 0;
    m_max = 100;
    m_old = m_value = 0;
    draw(false);
}

VolumeBar::~VolumeBar()
{}

void VolumeBar::mousePressEvent(QMouseEvent *e)
{
    m_moving = true;
    press_pos = e->x();
    if(m_pos<e->x() && e->x()<m_pos+11*m_skin->ratio())
    {
        press_pos = e->x()-m_pos;
        emit sliderPressed();
    }
    else
    {
        m_value = convert(qMax(qMin(width()-18*m_skin->ratio(),e->x()-6*m_skin->ratio()),0));
        press_pos = 6*m_skin->ratio();
        emit sliderPressed();
        if (m_value != m_old)
            emit sliderMoved(m_value);
    }
    draw();
}

void VolumeBar::mouseMoveEvent (QMouseEvent *e)
{
    if(m_moving)
    {
        int po = e->x();
        po = po - press_pos;

        if(0<=po && po<=width()-18*m_skin->ratio())
        {
            m_value = convert(po);
            draw();
            emit sliderMoved(m_value);
        }
    }
}

void VolumeBar::mouseReleaseEvent(QMouseEvent*)
{
    m_moving = false;
    draw(false);
    m_old = m_value;
    emit sliderReleased();
}

void VolumeBar::setValue(int v)
{
    if (m_moving || m_max == 0)
        return;
    m_value = v;
    draw(false);
}

void VolumeBar::setMax(int max)
{
    m_max = max;
    draw(false);
}

void VolumeBar::updateSkin()
{
    resize(m_skin->getVolumeBar(0).size());
    draw(false);
    setCursor(m_skin->getCursor(Skin::CUR_VOLBAL));
}

void VolumeBar::draw(bool pressed)
{
    int p=int(ceil(double(m_value-m_min)*(width()-18*m_skin->ratio())/(m_max-m_min)));
    m_pixmap = m_skin->getVolumeBar(27*(m_value-m_min)/(m_max-m_min));
    QPainter paint(&m_pixmap);
    if(pressed)
        paint.drawPixmap(p,1,m_skin->getButton(Skin::BT_VOL_P));
    else
        paint.drawPixmap(p,1,m_skin->getButton(Skin::BT_VOL_N));
    setPixmap(m_pixmap);
    m_pos = p;
}

int VolumeBar::convert(int p)
{
    return int(ceil(double(m_max-m_min)*(p)/(width()-18*m_skin->ratio())+m_min));
}