aboutsummaryrefslogtreecommitdiff
path: root/src/skin.cpp
diff options
context:
space:
mode:
authorvovanec <vovanec@90c681e8-e032-0410-971d-27865f9a5e38>2008-02-07 13:36:34 +0000
committervovanec <vovanec@90c681e8-e032-0410-971d-27865f9a5e38>2008-02-07 13:36:34 +0000
commit06d1877811fa6aa97dddc0e03bcde4e766928c87 (patch)
treec25462d0e58c3d58c728664440412bf4f16a49ec /src/skin.cpp
parent3f6b60f23c44a8ba8dd97ca6f41a16e2af7ef2f7 (diff)
downloadqmmp-06d1877811fa6aa97dddc0e03bcde4e766928c87.tar.gz
qmmp-06d1877811fa6aa97dddc0e03bcde4e766928c87.tar.bz2
qmmp-06d1877811fa6aa97dddc0e03bcde4e766928c87.zip
new directory structure
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@232 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/skin.cpp')
-rw-r--r--src/skin.cpp771
1 files changed, 0 insertions, 771 deletions
diff --git a/src/skin.cpp b/src/skin.cpp
deleted file mode 100644
index 8bb4a63ad..000000000
--- a/src/skin.cpp
+++ /dev/null
@@ -1,771 +0,0 @@
-/***************************************************************************
- * Copyright (C) 2007 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., *
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
- ***************************************************************************/
-#include <QCoreApplication>
-#include <QDir>
-#include <QSettings>
-#include <QPainter>
-#include <QPolygon>
-#include <QImage>
-
-#include "skin.h"
-
-Skin *Skin::pointer = 0;
-
-Skin *Skin::getPointer()
-{
- if ( !pointer )
- pointer = new Skin();
- return pointer;
-}
-
-QPixmap Skin::getPixmap ( const QString& name, QDir dir )
-{
- dir.setFilter ( QDir::Files | QDir::Hidden | QDir::NoSymLinks );
- QFileInfoList f = dir.entryInfoList();
- for ( int j = 0; j < f.size(); ++j )
- {
- QFileInfo fileInfo = f.at ( j );
- QString fn = fileInfo.fileName().toLower();
- if ( fn.section ( ".",0,0 ) == name )
- {
- return QPixmap ( fileInfo.filePath() );
- }
- }
- return QPixmap();
-}
-
-Skin::Skin ( QObject *parent )
- : QObject ( parent )
-{
- pointer = this;
- QSettings settings(QDir::homePath()+"/.qmmp/qmmprc", QSettings::IniFormat);
- QString path = settings.value("skin_path","").toString();
- if (path.isEmpty() || !QDir(path).exists ())
- path = ":/default";
- setSkin (QDir::cleanPath(path));
- /* skin directory */
- QDir skinDir(QDir::homePath()+"/.qmmp");
- skinDir.mkdir ("skins");
-}
-
-
-Skin::~Skin()
-{}
-
-void Skin::setSkin ( const QString& path )
-{
- QSettings settings(QDir::homePath()+"/.qmmp/qmmprc", QSettings::IniFormat);
- settings.setValue("skin_path",path);
-
- qDebug ( path.toAscii() ); //TODO don't clear lists
- m_skin_dir = QDir ( path );
-
- m_pledit_txt.clear();
- loadPLEdit();
- loadMain();
- buttons.clear();
- loadButtons();
- loadShufRep();
- titlebar.clear();
- loadTitleBar();
- loadPosBar();
- m_numbers.clear();
- loadNumbers();
- m_pl_parts.clear();
- loadPlayList();
- m_eq_parts.clear();
- loadEq_ex();
- m_eq_bar.clear();
- m_eq_spline.clear();
- loadEqMain();
- m_vis_colors.clear();
- loadVisColor();
- loadLetters();
- loadMonoSter();
- loadVolume();
- loadBalance();
- loadRegion();
- loadColors();
-
- emit skinChanged();
-}
-
-void Skin::loadMain()
-{
- QPixmap *pixmap = getPixmap ("main");
- if (!pixmap)
- pixmap = getDummyPixmap("main");
-
- m_main = pixmap->copy ( 0,0,275,116 );
- delete pixmap;
-}
-
-void Skin::loadButtons()
-{
-
- QPixmap *pixmap = getPixmap ("cbuttons");
-
- if (!pixmap)
- pixmap = getDummyPixmap("cbuttons");
-
- buttons[BT_PREVIOUS_N] = pixmap->copy ( 0, 0,23,18 );
- buttons[BT_PREVIOUS_P] = pixmap->copy ( 0,18,23,18 );
-
- buttons[BT_PLAY_N] = pixmap->copy ( 23, 0,23,18 );
- buttons[BT_PLAY_P] = pixmap->copy ( 23,18,23,18 );
-
- buttons[BT_PAUSE_N] = pixmap->copy ( 46, 0,23,18 );
- buttons[BT_PAUSE_P] = pixmap->copy ( 46,18,23,18 );
-
- buttons[BT_STOP_N] = pixmap->copy ( 69, 0,23,18 );
- buttons[BT_STOP_P] = pixmap->copy ( 69,18,23,18 );
-
- buttons[BT_NEXT_N] = pixmap->copy ( 92, 0,22,18 );
- buttons[BT_NEXT_P] = pixmap->copy ( 92,16,22,18 );
-
- buttons[BT_EJECT_N] = pixmap->copy ( 114, 0,22,16 );
- buttons[BT_EJECT_P] = pixmap->copy ( 114,16,22,16 );
- delete pixmap;
-
-}
-
-void Skin::loadTitleBar()
-{
-
- QPixmap *pixmap = getPixmap ("titlebar");
-
- if (!pixmap)
- pixmap = getDummyPixmap("titlebar");
-
- buttons[BT_MENU_N] = pixmap->copy ( 0,0,9,9 );
- buttons[BT_MENU_P] = pixmap->copy ( 0,9,9,9 );
- buttons[BT_MINIMIZE_N] = pixmap->copy ( 9,0,9,9 );
- buttons[BT_MINIMIZE_P] = pixmap->copy ( 9,9,9,9 );
- buttons[BT_CLOSE_N] = pixmap->copy ( 18,0,9,9 );
- buttons[BT_CLOSE_P] = pixmap->copy ( 18,9,9,9 );
- buttons[BT_SHADE1_N] = pixmap->copy ( 0,18,9,9 );
- buttons[BT_SHADE1_P] = pixmap->copy ( 9,18,9,9 );
- buttons[BT_SHADE2_N] = pixmap->copy ( 0,27,9,9 );
- buttons[BT_SHADE2_P] = pixmap->copy ( 9,27,9,9 );
- titlebar[TITLEBAR_A] = pixmap->copy ( 27, 0,275,14 );
- titlebar[TITLEBAR_I] = pixmap->copy ( 27,15,275,14 );
- titlebar[TITLEBAR_SHADED_A] = pixmap->copy ( 27,29,275,14 );
- titlebar[TITLEBAR_SHADED_I] = pixmap->copy ( 27,42,275,14 );
- delete pixmap;
-
-}
-
-void Skin::loadPosBar()
-{
-
- QPixmap *pixmap = getPixmap ("posbar");
-
- if (!pixmap)
- pixmap = getDummyPixmap("posbar");
-
- if (pixmap->width() > 249)
- {
- buttons[BT_POSBAR_N] = pixmap->copy ( 248,0,29, pixmap->height());
- buttons[BT_POSBAR_P] = pixmap->copy ( 278,0,29, pixmap->height());
- }
- else
- {
- QPixmap dummy(29, pixmap->height());
- dummy.fill(Qt::transparent);
- buttons[BT_POSBAR_N] = dummy;
- buttons[BT_POSBAR_P] = dummy;
- }
- posbar = pixmap->copy ( 0,0,248,pixmap->height() );
- delete pixmap;
-
-}
-
-void Skin::loadNumbers()
-{
- QPixmap *pixmap = getPixmap ( "numbers" );
- if ( !pixmap )
- {
- pixmap = getPixmap ( "nums_ex" );
- }
- for ( uint i = 0; i < 10; i++ )
- {
- m_numbers << pixmap->copy ( i*9, 0, 9, 13 );
- }
- if (pixmap->width() > 107)
- {
- m_numbers << pixmap->copy(99, 0, 9,13 );
- }
- else
- { // We didn't find "-" symbol. So we have to extract it from "2".
- // Winamp uses this method too.
- QPixmap pix = pixmap->copy(90,0,9,13);
- QPixmap minus = pixmap->copy(18,6,9,1);
- QPainter paint(&pix);
- paint.drawPixmap(0,6, minus);
- m_numbers << pix;
- }
- delete pixmap;
-}
-
-void Skin::loadPlayList()
-{
-
- QPixmap *pixmap = getPixmap ("pledit");
-
- if (!pixmap)
- pixmap = getDummyPixmap("pledit");
-
- m_pl_parts[PL_CORNER_UL_A] = pixmap->copy ( 0,0,25,20 );
- m_pl_parts[PL_CORNER_UL_I] = pixmap->copy ( 0,21,25,20 );
-
- m_pl_parts[PL_CORNER_UR_A] = pixmap->copy ( 153,0,25,20 );
- m_pl_parts[PL_CORNER_UR_I] = pixmap->copy ( 153,21,25,20 );
-
- m_pl_parts[PL_TITLEBAR_A] = pixmap->copy ( 26,0,100,20 );
- m_pl_parts[PL_TITLEBAR_I] = pixmap->copy ( 26,21,100,20 );
-
- m_pl_parts[PL_TFILL1_A] = pixmap->copy ( 127,0,25,20 );
- m_pl_parts[PL_TFILL1_I] = pixmap->copy ( 127,21,25,20 );
-
- //m_pl_parts[PL_TFILL2_A] = pixmap->copy();//FIXME: �����
- //m_pl_parts[PL_TFILL2_I] = pixmap->copy();
-
- m_pl_parts[PL_LFILL] = pixmap->copy ( 0,42,12,29 );
- m_pl_parts[PL_RFILL] = pixmap->copy ( 31,42,20,29 ); //???
-
- m_pl_parts[PL_LSBAR] = pixmap->copy ( 0,72,125,38 );
- m_pl_parts[PL_RSBAR] = pixmap->copy ( 126,72,150,38 );
- m_pl_parts[PL_SFILL1] = pixmap->copy ( 179,0,25,38 );
- m_pl_parts[PL_SFILL2] = pixmap->copy ( 250,21,75,38 );
- m_pl_parts[PL_TITLEBAR_SHADED1_A] = pixmap->copy ( 99,42,50,14 );
- m_pl_parts[PL_TITLEBAR_SHADED1_I] = pixmap->copy ( 99,57,50,14 );
- m_pl_parts[PL_TITLEBAR_SHADED2] = pixmap->copy ( 72,42,25,14 );
- m_pl_parts[PL_TFILL_SHADED] = pixmap->copy ( 72,57,25,14 );
-
- m_pl_parts[PL_CONTROL] = pixmap->copy(129,94,60,8);
-
- buttons[PL_BT_ADD] = pixmap->copy ( 11,80,25,18 );
- buttons[PL_BT_SUB] = pixmap->copy ( 40,80,25,18 );
- buttons[PL_BT_SEL] = pixmap->copy ( 70,80,25,18 );
- buttons[PL_BT_SORT] = pixmap->copy ( 99,80,25,18 );
- buttons[PL_BT_LST] = pixmap->copy(229, 80, 25, 18);
- buttons[PL_BT_SCROLL_N] = pixmap->copy ( 52,53,8,18 );
- buttons[PL_BT_SCROLL_P] = pixmap->copy ( 61,53,8,18 );
-
- buttons[PL_BT_CLOSE_N] = pixmap->copy (167,3,9,9);
- buttons[PL_BT_CLOSE_P] = pixmap->copy (52,42,9,9);
- buttons[PL_BT_SHADE1_N] = pixmap->copy (158,3,9,9);
- buttons[PL_BT_SHADE1_P] = pixmap->copy (62,42,9,9);
- buttons[PL_BT_SHADE2_N] = pixmap->copy (129,45,9,9);
- buttons[PL_BT_SHADE2_P] = pixmap->copy (150,42,9,9);
-
-}
-
-QPixmap *Skin::getPixmap ( const QString& name )
-{
- m_skin_dir.setFilter ( QDir::Files | QDir::Hidden | QDir::NoSymLinks );
- QFileInfoList f = m_skin_dir.entryInfoList();
- for ( int j = 0; j < f.size(); ++j )
- {
- QFileInfo fileInfo = f.at ( j );
- QString fn = fileInfo.fileName().toLower();
- if ( fn.section ( ".",0,0 ) == name )
- {
- return new QPixmap ( fileInfo.filePath() );
- }
- }
- return 0;
-}
-
-void Skin::loadPLEdit()
-{
- m_skin_dir.setFilter ( QDir::Files | QDir::Hidden | QDir::NoSymLinks );
- QString path;
- QFileInfoList list = m_skin_dir.entryInfoList();
- for ( int i = 0; i < list.size(); ++i )
- {
- QFileInfo fileInfo = list.at ( i );
- if ( fileInfo.fileName().toLower() == "pledit.txt" )
- {
- path = fileInfo.filePath ();
- break;
- }
- }
-
- if ( path.isNull () )
- {
- qDebug ( "Skin: Cannot find pledit.txt" );
- return;
- }
-
-
- QFile file ( path );
-
- if ( !file.open ( QIODevice::ReadOnly | QIODevice::Text ) )
- return;
-
- while ( !file.atEnd () )
- {
- QByteArray line = file.readLine ();
- QList<QByteArray> l = line.split ( '=' );
- if ( l.count () == 2 )
- {
- m_pledit_txt[l[0].toLower () ] = l[1].trimmed();
- }
- else if ( line.length() == 0 )
- {
- break;
- }
- }
-
-}
-
-void Skin::loadEqMain()
-{
- QPixmap *pixmap = getPixmap ("eqmain");
-
- if (!pixmap)
- pixmap = getDummyPixmap("eqmain");
-
- m_eq_parts[ EQ_MAIN ] = pixmap->copy ( 0,0,275,116 );
- m_eq_parts[ EQ_TITLEBAR_A ] = pixmap->copy ( 0,134,275,14 );
- m_eq_parts[ EQ_TITLEBAR_I ] = pixmap->copy ( 0,149,275,14 );
- m_eq_parts[ EQ_GRAPH ] = pixmap->copy ( 0,294,113,19 );
- for ( int i = 0; i < 14; ++i )
- {
- m_eq_bar << pixmap->copy ( 13 + i*15,164,14,63 );
- }
- for ( int i = 0; i < 14; ++i )
- {
- m_eq_bar << pixmap->copy ( 13 + i*15,229,14,63 );
- }
- buttons[ EQ_BT_BAR_N ] = pixmap->copy ( 0,164,11,11 );
- buttons[ EQ_BT_BAR_P ] = pixmap->copy ( 0,164+12,11,11 );
-
- buttons[ EQ_BT_ON_N ] = pixmap->copy ( 69,119,28,12 );
- buttons[ EQ_BT_ON_P ] = pixmap->copy ( 128,119,28,12 );
- buttons[ EQ_BT_OFF_N ] = pixmap->copy ( 10, 119,28,12 );
- buttons[ EQ_BT_OFF_P ] = pixmap->copy ( 187,119,28,12 );
-
- buttons[ EQ_BT_PRESETS_N ] = pixmap->copy ( 224,164,44,12 );
- buttons[ EQ_BT_PRESETS_P ] = pixmap->copy ( 224,176,44,12 );
-
- buttons[ EQ_BT_AUTO_1_N ] = pixmap->copy ( 94,119,33,12 );
- buttons[ EQ_BT_AUTO_1_P ] = pixmap->copy ( 153,119,33,12 );
- buttons[ EQ_BT_AUTO_0_N ] = pixmap->copy ( 35, 119,33,12 );
- buttons[ EQ_BT_AUTO_0_P ] = pixmap->copy ( 212,119,33,12 );
-
- buttons[ EQ_BT_CLOSE_N ] = pixmap->copy ( 0,116,9,9 );
- buttons[ EQ_BT_CLOSE_P ] = pixmap->copy ( 0,125,9,9 );
- buttons[ EQ_BT_SHADE1_N ] = pixmap->copy ( 254,137,9,9 );
-
- for ( int i = 0; i < 19; ++i )
- {
- m_eq_spline << pixmap->copy ( 115, 294+i, 1, 1 );
- }
- delete pixmap;
-
-}
-
-void Skin::loadEq_ex()
-{
- QPixmap *pixmap = getPixmap ("eq_ex");
-
- if (!pixmap)
- pixmap = getDummyPixmap("eq_ex");
-
- buttons[ EQ_BT_SHADE1_P ] = pixmap->copy (1,38,9,9);
- buttons[ EQ_BT_SHADE2_N ] = pixmap->copy (254,3,9,9);
- buttons[ EQ_BT_SHADE2_P ] = pixmap->copy (1,47,9,9);
- m_eq_parts[ EQ_TITLEBAR_SHADED_A ] = pixmap->copy(0,0,275,14);
- m_eq_parts[ EQ_TITLEBAR_SHADED_I ] = pixmap->copy(0,15,275,14);
- m_eq_parts[ EQ_VOLUME1 ] = pixmap->copy(1,30,3,8);
- m_eq_parts[ EQ_VOLUME2 ] = pixmap->copy(4,30,3,8);
- m_eq_parts[ EQ_VOLUME3 ] = pixmap->copy(7,30,3,8);
- m_eq_parts[ EQ_BALANCE1 ] = pixmap->copy(11,30,3,8);
- m_eq_parts[ EQ_BALANCE2 ] = pixmap->copy(14,30,3,8);
- m_eq_parts[ EQ_BALANCE3 ] = pixmap->copy(17,30,3,8);
-
- delete pixmap;
-}
-
-void Skin::loadVisColor()
-{
- //QList <QColor> colors;
- m_skin_dir.setFilter ( QDir::Files | QDir::Hidden | QDir::NoSymLinks );
- QString path;
- QFileInfoList list = m_skin_dir.entryInfoList();
- for ( int i = 0; i < list.size(); ++i )
- {
- QFileInfo fileInfo = list.at ( i );
- if ( fileInfo.fileName().toLower() == "viscolor.txt" )
- {
- path = fileInfo.filePath ();
- break;
- }
- }
-
- if ( path.isNull () )
- {
- qDebug ( "Skin: Cannot find viscolor.txt" );
- return;
- }
-
-
- QFile file ( path );
-
- if ( !file.open ( QIODevice::ReadOnly | QIODevice::Text ) )
- return;
-
- int j = 0;
- while ( !file.atEnd () && j<24 )
- {
- j++;
- QByteArray line = file.readLine ();
- QString tmp = QString::fromAscii ( line );
- tmp = tmp.trimmed ();
- int i = tmp.indexOf ( "//" );
- if ( i>0 )
- tmp.truncate ( tmp.indexOf ( "//" ) );
- QStringList list = tmp.split ( "," );
- if ( list.count () >= 3 )
- {
- //colors
- int r = list.at ( 0 ).toInt();
- int g = list.at ( 1 ).toInt();
- int b = list.at ( 2 ).toInt();
- m_vis_colors << QColor ( r,g,b );
- }
- else if ( line.length() == 0 )
- {
- break;
- }
- }
- if (m_vis_colors.size() < 24)
- {
- qWarning ( "Skin: cannot parse viscolor.txt" );
- while (m_vis_colors.size() < 24)
- m_vis_colors << QColor (0,0,0);
- }
-}
-
-void Skin::loadShufRep()
-{
- QPixmap *pixmap = getPixmap ("shufrep");
-
- if (!pixmap)
- pixmap = getDummyPixmap("shufrep");
-
- buttons[ BT_EQ_ON_N ] = pixmap->copy ( 0,73,23,12 );
- buttons[ BT_EQ_ON_P ] = pixmap->copy ( 46,73,23,12 );
- buttons[ BT_EQ_OFF_N ] = pixmap->copy ( 0,61,23,12 );
- buttons[ BT_EQ_OFF_P ] = pixmap->copy ( 46,61,23,12 );
-
- buttons[ BT_PL_ON_N ] = pixmap->copy ( 23,73,23,12 );
- buttons[ BT_PL_ON_P ] = pixmap->copy ( 69,73,23,12 );
- buttons[ BT_PL_OFF_N ] = pixmap->copy ( 23,61,23,12 );
- buttons[ BT_PL_OFF_P ] = pixmap->copy ( 69,61,23,12 );
-
- //buttons[ BT_PL_CLOSE_N ] = pixmap->copy ();
- //buttons[ BT_PL_CLOSE_P ] = pixmap->copy ();
-
- buttons[REPEAT_ON_N] = pixmap->copy ( 0,30, 28, 15 );
- buttons[REPEAT_ON_P] = pixmap->copy ( 0,45, 28, 15 );
-
- buttons[REPEAT_OFF_N] = pixmap->copy ( 0, 0,28,15 );
- buttons[REPEAT_OFF_P] = pixmap->copy ( 0,15,28,15 );
-
- buttons[SHUFFLE_ON_N] = pixmap->copy ( 28,30,46,15 );
- buttons[SHUFFLE_ON_P] = pixmap->copy ( 28,45,46,15 );
-
- buttons[SHUFFLE_OFF_N] = pixmap->copy ( 28, 0,46,15 );
- buttons[SHUFFLE_OFF_P] = pixmap->copy ( 28,15,46,15 );
-
- delete pixmap;
-
-}
-
-void Skin::loadLetters( void )
-{
- QPixmap *img = getPixmap("text");
-
- if (!img)
- img = getDummyPixmap("text");
-
- QList<QList<QPixmap> > ( letters );
- for ( int i = 0; i < 3; i++ )
- {
- QList<QPixmap> ( l );
- for ( int j = 0; j < 31; j++ )
- {
- l.append ( img->copy ( j*5, i*6, 5, 6 ) );
- }
- letters.append ( l );
- }
-
- delete img;
-
-
- /* alphabet */
- for ( uint i = 97; i < 123; i++ )
- {
- m_letters.insert(i, letters[0][i-97]);
- }
-
- /* digits */
- for ( uint i = 0; i <= 9; i++ )
- {
- m_letters.insert ( i+48, letters[1][i] );
- }
-
- /* special characters */
- m_letters.insert('"', letters[0][27]);
- m_letters.insert('@', letters[0][28]);
- m_letters.insert(':', letters[1][12]);
- m_letters.insert('(', letters[1][13]);
- m_letters.insert(')', letters[1][14]);
- m_letters.insert('-', letters[1][15]);
- m_letters.insert('\'', letters[1][16]);
- m_letters.insert('`', letters[1][16]);
- m_letters.insert('!', letters[1][17]);
- m_letters.insert('_', letters[1][18]);
- m_letters.insert('+', letters[1][19]);
- m_letters.insert('\\', letters[1][20]);
- m_letters.insert('/', letters[1][21]);
- m_letters.insert('[', letters[1][22]);
- m_letters.insert(']', letters[1][23]);
- m_letters.insert('^', letters[1][24]);
- m_letters.insert('&', letters[1][25]);
- m_letters.insert('%', letters[1][26]);
- m_letters.insert('.', letters[1][27]);
- m_letters.insert(',', letters[1][27]);
- m_letters.insert('=', letters[1][28]);
- m_letters.insert('$', letters[1][29]);
- m_letters.insert('#', letters[1][30]);
-
- m_letters.insert(229, letters[2][0]);
- m_letters.insert(246, letters[2][1]);
- m_letters.insert(228, letters[2][2]);
- m_letters.insert('?', letters[2][3]);
- m_letters.insert('*', letters[2][4]);
- m_letters.insert(' ', letters[2][5]);
-
- /* text background */
- //m_items->insert (TEXTBG, letters[2][6]);
-}
-
-void Skin::loadMonoSter()
-{
- QPixmap *pixmap = getPixmap("monoster");
-
- if (!pixmap)
- pixmap = getDummyPixmap("monoster");
-
- m_ms_parts.clear();
- m_ms_parts[ MONO_A ] = pixmap->copy ( 29,0,27,12 );
- m_ms_parts[ MONO_I ] = pixmap->copy ( 29,12,27,12 );
- m_ms_parts[ STEREO_A ] = pixmap->copy ( 0,0,27,12 );
- m_ms_parts[ STEREO_I ] = pixmap->copy ( 0,12,27,12 );
-
- delete pixmap;
-
- m_parts.clear();
- QPainter paint;
- pixmap = getPixmap("playpaus");
-
- if (!pixmap)
- pixmap = getDummyPixmap("playpaus");
-
- QPixmap part(11, 9);
- paint.begin(&part);
- paint.drawPixmap (0, 0, 3, 9, *pixmap, 36, 0, 3, 9);
- paint.drawPixmap (3, 0, 8, 9, *pixmap, 1, 0, 8, 9);
- paint.end();
- m_parts [PLAY] = part.copy();
-
- part = QPixmap(11, 9);
- paint.begin(&part);
- paint.drawPixmap (0, 0, 2, 9, *pixmap, 27, 0, 2, 9);
- paint.drawPixmap (2, 0, 9, 9, *pixmap, 9, 0, 9, 9);
- paint.end();
- m_parts [PAUSE] = part.copy();
-
- part = QPixmap(11, 9);
- paint.begin(&part);
- paint.drawPixmap (0, 0, 2, 9, *pixmap, 27, 0, 2, 9);
- paint.drawPixmap (2, 0, 9, 9, *pixmap, 18, 0, 9, 9);
- paint.end();
- m_parts [STOP] = part.copy();
-
- delete pixmap;
-}
-
-void Skin::loadVolume()
-{
- QPixmap *pixmap = getPixmap("volume");
-
- if (!pixmap)
- pixmap = getDummyPixmap("volume");
-
- m_volume.clear();
- for (int i = 0; i < 28; ++i)
- m_volume.append(pixmap->copy ( 0,i*15,66,13 ));
- if (pixmap->height() > 425)
- {
- buttons [BT_VOL_N] = pixmap->copy (15,422,14, pixmap->height() - 422);
- buttons [BT_VOL_P] = pixmap->copy (0, 422,14, pixmap->height() - 422);
- }
- else
- {
- buttons [BT_VOL_N] = QPixmap();
- buttons [BT_VOL_P] = QPixmap();
- }
- delete pixmap;
-}
-
-void Skin::loadBalance()
-{
- QPixmap *pixmap = getPixmap ( "balance" );
- if (!pixmap)
- pixmap = getPixmap ( "volume" );
-
- if (!pixmap)
- pixmap = getDummyPixmap("balance");
-
- m_balance.clear();
- for (int i = 0; i < 28; ++i)
- m_balance.append(pixmap->copy ( 9,i*15,38,13 ));
- if (pixmap->height() > 427)
- {
- buttons [BT_BAL_N] = pixmap->copy (15, 422,14,pixmap->height()-422);
- buttons [BT_BAL_P] = pixmap->copy (0,422,14,pixmap->height()-422);
- }
- else
- {
- buttons [BT_BAL_N] = QPixmap();
- buttons [BT_BAL_P] = QPixmap();
- }
- delete pixmap;
-}
-
-void Skin::loadRegion()
-{
- m_mwRegion = QRegion();
- m_plRegion = QRegion();
- m_skin_dir.setFilter ( QDir::Files | QDir::Hidden | QDir::NoSymLinks );
- QString path;
- QFileInfoList list = m_skin_dir.entryInfoList();
- for ( int i = 0; i < list.size(); ++i )
- {
- QFileInfo fileInfo = list.at ( i );
- if ( fileInfo.fileName().toLower() == "region.txt" )
- {
- path = fileInfo.filePath ();
- break;
- }
- }
-
- if ( path.isNull () )
- {
- qDebug ( "Skin: cannot find region.txt. Transparenty disabled" );
- return;
- }
- m_mwRegion = createRegion(path, "Normal");
- m_plRegion = createRegion(path, "Equalizer");
-}
-
-QRegion Skin::createRegion(const QString &path, const QString &key)
-{
- QRegion region;
- QSettings settings(path, QSettings::IniFormat);
- QStringList numPoints = settings.value(key+"/NumPoints").toStringList();
- QStringList value = settings.value(key+"/PointList").toStringList();
- QStringList numbers;
- foreach(QString str, value)
- numbers << str.split(" ", QString::SkipEmptyParts);
-
- QList <QRegion> regions;
-
- QList<QString>::iterator n;
- n = numbers.begin();
- for (int i = 0; i < numPoints.size(); ++i)
- {
- QList <int> lp;
- for (int j = 0; j < numPoints.at(i).toInt()*2; j++)
- {
- lp << n->toInt();
- n ++;
- }
- QVector<QPoint> points;
-
- for (int l = 0; l < lp.size(); l+=2)
- {
- points << QPoint(lp.at(l), lp.at(l+1));
- }
- region = region.united(QRegion(QPolygon(points)));
- }
- return region;
-}
-
-QPixmap * Skin::getDummyPixmap(const QString& name)
-{
- QDir dir (":/default");
- dir.setFilter ( QDir::Files | QDir::Hidden | QDir::NoSymLinks );
- QFileInfoList f = dir.entryInfoList();
- for ( int j = 0; j < f.size(); ++j )
- {
- QFileInfo fileInfo = f.at ( j );
- QString fn = fileInfo.fileName().toLower();
- if ( fn.section ( ".",0,0 ) == name )
- {
- return new QPixmap ( fileInfo.filePath() );
- }
- }
- qFatal("Skin:: default skin corrupted");
- return 0;
-}
-
-void Skin::loadColors()
-{
- //extract color from image
- QPixmap pix = m_letters['*'];
- QImage img = pix.toImage();
- img = img.convertToFormat(QImage::Format_Indexed8);
-
- QPixmap pix2 = m_letters[' '];
- QImage img2 = pix2.toImage();
- img2 = img2.convertToFormat(QImage::Format_Indexed8);
- QVector<QRgb> c1 = img.colorTable ();
- QVector<QRgb> c2 = img2.colorTable ();
- //qDebug("%d -- %d", img.numColors (), img2.numColors ());
- QColor color;
- color.setNamedColor(getPLValue("normal"));
-
- for (int i = 0; i < c1.size(); ++i)
- {
- if (c2.indexOf(c1[i]) == -1)
- {
- if(img.numColors () == img2.numColors () + 1)
- color = QColor(c1[i]);
- break;
- }
- }
- m_scroller_color = color;
-}