aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Input/mad
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/Input/mad')
0 files changed, 0 insertions, 0 deletions
27865f9a5e38> 2019-04-04 21:53:46 +0000 committer trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> 2019-04-04 21:53:46 +0000 fixed build with qt 5.9' href='/qmmp/commit/src/plugins/Ui/skinned/listwidgetdrawer.cpp?id=6e0f34f5f57e47ba9c09be0640db971af2191631'>6e0f34f5f
ea927e2c6
0739de57b
631f5b826



240dee906
35b039d6d
b7d298e25
da552eeaf
e985da53d
c5aca6127
240dee906
35b039d6d

ea927e2c6
b917024aa

631f5b826
















35b039d6d


da552eeaf
b7d298e25
644bca97a
631f5b826









64a0861bc
c5aca6127
631f5b826









c5aca6127




a0683b8a7




240dee906


35b039d6d
64a0861bc
240dee906



e985da53d




240dee906

e985da53d
ea927e2c6



240dee906

9b20171e5
e985da53d
240dee906


e985da53d

35b039d6d
fff010501
240dee906
e985da53d



0739de57b
e985da53d
64a0861bc
0739de57b
e985da53d
64a0861bc
e985da53d
0739de57b
ea927e2c6

0739de57b
ea927e2c6
0739de57b
ea927e2c6

0739de57b
ea927e2c6
49d43b78f
ea927e2c6
49d43b78f


e985da53d
e18b64773
195d573df
f461a94af
1ff234d2e
64a0861bc
1ff234d2e

64a0861bc
1ff234d2e
eb0064e40
6a17e3c8a
eb0064e40
6a17e3c8a
18033cfd3
e18b64773
240dee906

67dcf32f9


d401de1aa
67dcf32f9


0739de57b
631f5b826

















240dee906
631f5b826
968c05fe1
18033cfd3
631f5b826
240dee906
631f5b826

631f5b826
64a0861bc
968c05fe1

631f5b826
9b20171e5
631f5b826
968c05fe1
631f5b826
35b039d6d
631f5b826

968c05fe1
64a0861bc
444c31cf5
35b039d6d
444c31cf5
35b039d6d
444c31cf5

6a17e3c8a
631f5b826



64a0861bc
aa41eab0d
35b039d6d
ea927e2c6
35b039d6d
ea927e2c6


631f5b826


7491dcbef
631f5b826
472956381
7491dcbef
5f9eeae3b

631f5b826
240dee906
631f5b826
b49213987
631f5b826
b49213987

7491dcbef
b49213987



fff010501
b49213987
b753db2ec





b49213987
7491dcbef
64a0861bc
b49213987

18033cfd3
b49213987
7491dcbef
b49213987
7491dcbef
b49213987
64a0861bc
b49213987
7491dcbef
ea927e2c6
b49213987




7491dcbef
b49213987
7491dcbef
b49213987


5f9eeae3b
b49213987
5f9eeae3b


64a0861bc
5f9eeae3b


64a0861bc
5f9eeae3b



64a0861bc


5f9eeae3b




b49213987

5f9eeae3b
b49213987


5f9eeae3b

35b039d6d
968c05fe1
35b039d6d
968c05fe1

b49213987
7491dcbef

b49213987
7491dcbef
b49213987
e985da53d
7491dcbef
e985da53d



fff010501
64a0861bc
b753db2ec





e985da53d
631f5b826
e985da53d

18033cfd3
e985da53d
7491dcbef
e985da53d
7491dcbef
64a0861bc
e985da53d

7491dcbef
631f5b826
e985da53d

64a0861bc
e985da53d


7491dcbef
b49213987
7491dcbef
e985da53d


5f9eeae3b

cbc6570d3
5f9eeae3b

64a0861bc
5f9eeae3b
cbc6570d3
5f9eeae3b
64a0861bc
5f9eeae3b

cbc6570d3
5f9eeae3b
64a0861bc


5f9eeae3b
cbc6570d3
5f9eeae3b
f461a94af
5f9eeae3b
eb0064e40

5f9eeae3b
eb0064e40

f461a94af
5f9eeae3b

35b039d6d
968c05fe1
35b039d6d
968c05fe1

e985da53d
7491dcbef
2c2638796
631f5b826
90496a97f
e258c848d
90496a97f

e258c848d

90496a97f
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
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
                                                                            
                                                                            
                                                                            























                                                                             



                                           
                                              
 



                                    
                          
                           
                            
                           
                           
                     
                       

                                       
                  

                              
















                                                                     


                                                                                         
                                                                       
                                                                          
                                                                                      









                                                      
                                                    
                                                









                                                                  




                                       




                                         


                                                      
                                                  
                                                                                           



                           




                                                       

                                                     
                                         



                                                                

                                         
                                                                               
                                                                                                  


               

                                
                                              
                                                                        
 



                                                                                     
 
                                                    
                                                                                            
 
                                       
                                                                                                       
     
 

                                                                                            
 
                                                           
     

                                                                                                               
     
                                     
     
                                                                                                           


               
                                                
     
                                 
                                                                     
         
                                                                                                                 

                                                                                               
                                                                                                                                
         
            
         
                                                                                                          
         
                              
     

 


                                                                               
                                 


                                        
                                                                            

















                                                                                            
                                                                                     
 
                                                                 
                                                          
 
                             

                              
           
                                                                                   

                            
 
                                              
 
                                           
 
                              

           
                                                             
                                                                                    
                                                                                      
                                                      
         
                                                                               

                                                                                                  
         



                                                   
                                                                                    
                                                 
                                                      
         
                                                                               


                                                                                                 


     
                                                                                 
 
                                                          
                                                     

                                 
 
                             
 
           
     

                                               
         



                                                                                            
                                                                
                                                              





                                                                                       
             
 
                                                               

                                                                                        
 
                                           
 
                                                        
             
                                                       
                                                                
                                
             
 




                                                            
         
                                      
         


                                                                                            
                                                                                         
 


                                                                  
                                                                                                                     


                                                                        
                                                                                            



                                                                              


                                                                                                                      




                                                               

                                                   
                                                                     


                                             

                                    
                                                                                                                         
                 
                                                                                       

                                                                                       
             

         
        
     
                                              
                                    
         



                                                                                            
                                                                
                                                                                                     





                                                                                       
             
 

                                                                                        
 
                                               
 
                                                        
             
                                                                

                                                       
             
 

                                           
                                                                           


                                                            
         
                                       
         


                                                                                            

                                                                                         
                                                                  

                                             
                                                                                                                                     
                 
                                                                        
                 
                                                                                                            

                                                              
                    
                 


                                                                                                                      
                 
 
                                                               
 
                              

                                                   
                                                                     

                                             
 

                                    
                                                                                                                         
                 
                                                                                       

                                                                                       
             
         
     
 
 
                                                                                                    

                               

                                                                              
 
/***************************************************************************
 *   Copyright (C) 2015-2019 by Ilya Kotov                                 *
 *   forkotov02@ya.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 <QSettings>
#include <QPainter>
#include <QApplication>
#include <qmmp/qmmp.h>
#include "skin.h"
#include "listwidgetdrawer.h"

#if QT_VERSION < QT_VERSION_CHECK(5, 11, 0)
#define horizontalAdvance width
#endif

// |= number=|=row1=|=row2=|=extra= duration=|

ListWidgetDrawer::ListWidgetDrawer()
{
    m_skin = Skin::instance();
    m_update = false;
    m_show_anchor = false;
    m_show_numbers = false;
    m_align_numbers = false;
    m_show_lengths = false;
    m_single_column = true;
    m_row_height = 0;
    m_number_width = 0;
    m_show_splitters = false;
    m_alternate_splitter_color = false;
    m_padding = 0;
    m_metrics = nullptr;
    m_extra_metrics = nullptr;
    readSettings();
    loadColors();
}

ListWidgetDrawer::~ListWidgetDrawer()
{
    if(m_metrics)
        delete m_metrics;
    if(m_extra_metrics)
        delete m_extra_metrics;
}

void ListWidgetDrawer::readSettings()
{
    QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
    settings.beginGroup("Skinned");
    m_show_anchor = settings.value("pl_show_anchor", false).toBool();
    m_show_numbers = settings.value ("pl_show_numbers", true).toBool();
    m_show_splitters = settings.value("pl_show_splitters", true).toBool();
    m_alternate_splitter_color = settings.value("pl_alt_splitter_color", false).toBool();
    m_show_lengths = settings.value ("pl_show_lengths", true).toBool();
    m_align_numbers = settings.value ("pl_align_numbers", false).toBool();
    m_font.fromString(settings.value ("pl_font", qApp->font().toString()).toString());
    m_extra_font = m_font;
    m_extra_font.setPointSize(m_font.pointSize() - 1);
    if (m_update)
    {
        delete m_metrics;
        delete m_extra_metrics;
    }
    m_update = true;
    m_metrics = new QFontMetrics(m_font);
    m_extra_metrics = new QFontMetrics(m_extra_font);
    m_padding = m_metrics->horizontalAdvance("9")/2;
    m_row_height = m_metrics->lineSpacing() + 1;
}

void ListWidgetDrawer::loadColors()
{
    m_normal.setNamedColor(m_skin->getPLValue("normal"));
    m_current.setNamedColor(m_skin->getPLValue("current"));
    m_normal_bg.setNamedColor(m_skin->getPLValue("normalbg"));
    m_selected_bg.setNamedColor(m_skin->getPLValue("selectedbg"));
}

int ListWidgetDrawer::rowHeight() const
{
    return m_row_height;
}

int ListWidgetDrawer::numberWidth() const
{
    return m_number_width;
}

void ListWidgetDrawer::calculateNumberWidth(int count)
{
    //song numbers width
    if(m_show_numbers && m_align_numbers && count)
        m_number_width = m_metrics->horizontalAdvance("9") * QString::number(count).size();
    else
        m_number_width = 0;
}

void ListWidgetDrawer::setSingleColumnMode(int enabled)
{
    m_single_column = enabled;
}

void ListWidgetDrawer::prepareRow(ListWidgetRow *row)
{
    if(m_number_width && m_single_column)
        row->numberColumnWidth = m_number_width + 2 * m_padding;
    else
        row->numberColumnWidth = 0;

    if(row->flags & ListWidgetRow::GROUP)
    {
        row->titles[0] = m_metrics->elidedText (row->titles[0], Qt::ElideRight,
                                            row->rect.width() - row->numberColumnWidth - 12 - 70);
        return;
    }

    if(row->titles.count() == 1)
    {
        if(m_show_numbers && !m_align_numbers)