diff -r cce62ebc198e -r 93c594350b9a radioapp/radioapplication/src/testwindow_win32.cpp --- a/radioapp/radioapplication/src/testwindow_win32.cpp Tue Aug 31 15:15:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,353 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -// System includes -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -// User includes -#include "testwindow_win32.h" -#include "radioapplication.h" -#include "radiologger.h" -#include "radio_global.h" -#include "radioenginewrapper_win32_p.h" - -const int WINDOW_WIDTH = 360; -const int WINDOW_HEIGHT = 640; -const int TOOLBAR_HEIGHT = 120; -const int WINDOW_EXTRA_WIDTH = 5; - -const QString KBtnDisconnectHeadset = "Disconnect Headset"; -const QString KBtnConnectHeadset = "Connect Headset"; - -const QString KBtnGoOffline = "Go Offline"; -const QString KBtnGoOnline = "Go Online"; - -struct Song -{ - const char* mArtist; - const char* mTitle; -}; - -const Song KRecognizedSongs[] = { - { "Red Hot Chili Peppers", "Under The Bridge" }, - { "Queens Of The Stone Age", "No One Knows" }, - { "The Presidents of the United States of America", "Dune Buggy" }, - { "System of a Down", "Aerials" }, - { "The White Stripes", "Seven Nation Army" }, - { "Alice In Chains", "When The Sun Rose Again" }, - { "Bullet For My Valentine", "Tears Don't Fall" } -}; -const int KSongsCount = sizeof( KRecognizedSongs ) / sizeof( KRecognizedSongs[0] ); - -/*! - * - */ -Win32Window::Win32Window() : - QWidget( 0 ), - mOrientationButton( new QPushButton( "Change Orientation", this ) ), - mVolUpButton( new QPushButton( "Volume Up", this ) ), - mVolDownButton( new QPushButton( "Volume Down", this ) ), - mAddSongButton( new QPushButton( "Add Song", this ) ), - mClearSongButton( new QPushButton( "Clear Song", this ) ), - mHeadsetButton( new QPushButton( KBtnDisconnectHeadset, this ) ), - mHeadsetConnected( true ), - mOfflineButton( new QPushButton( KBtnGoOffline, this ) ), - mThemeBox( new QComboBox( this ) ), - mToolbarLayout( 0 ), - mVolume( 5 ), - mRadioWindow( 0 ), - mOrientation( Qt::Vertical ), - mSongIndex( 0 ) -{ - mThemeBox->setEditable( false ); - initThemes(); - - Radio::connect( mOrientationButton, SIGNAL(clicked()), this, SLOT(changeOrientation()) ); - Radio::connect( mVolUpButton, SIGNAL(clicked()), this, SLOT(volumeUp()) ); - Radio::connect( mVolDownButton, SIGNAL(clicked()), this, SLOT(volumeDown()) ); - Radio::connect( mHeadsetButton, SIGNAL(clicked()), this, SLOT(toggleHeadsetStatus()) ); - Radio::connect( mAddSongButton, SIGNAL(clicked()), this, SLOT(addSong()) ); - Radio::connect( mClearSongButton, SIGNAL(clicked()), this, SLOT(clearSong()) ); - Radio::connect( mOfflineButton, SIGNAL(clicked()), this, SLOT(toggleOffline()) ); - Radio::connect( mThemeBox, SIGNAL(activated(QString)), this, SLOT(changeTheme(QString)) ); - - QTimer::singleShot( 0, this, SLOT(updateWindowSize()) ); -} - -/*! - * - */ -Win32Window::~Win32Window() -{ -} - -/*! - * - */ -void Win32Window::addHbWindow( HbMainWindow* radioWindow ) -{ - mRadioWindow = radioWindow; - mOrientation = mRadioWindow->orientation(); - updateWindowSize(); - - QVBoxLayout* layout = new QVBoxLayout( this ); - layout->setMargin( 5 ); - layout->setSpacing( 5 ); - - mToolbarLayout = new QGridLayout( this ); - mToolbarLayout->setHorizontalSpacing( 5 ); - mToolbarLayout->setVerticalSpacing( 5 ); - - mToolbarLayout->addWidget( mOrientationButton, 0, 0 ); - mToolbarLayout->addWidget( mVolUpButton, 0, 1 ); - mToolbarLayout->addWidget( mVolDownButton, 1, 1 ); - mToolbarLayout->addWidget( mHeadsetButton, 1, 0 ); - mToolbarLayout->addWidget( mAddSongButton, 2, 0 ); - mToolbarLayout->addWidget( mClearSongButton, 2, 1 ); - mToolbarLayout->addWidget( mOfflineButton, 3, 0 ); - - QGridLayout* themeLayout = new QGridLayout( this ); - themeLayout->addWidget( new QLabel( "Theme:", this ), 0, 0 ); - themeLayout->addWidget( mThemeBox, 0, 1 ); - themeLayout->setColumnStretch( 1, 2 ); - - mToolbarLayout->addLayout( themeLayout, 3, 1 ); - mToolbarLayout->setColumnStretch( 0, 1 ); - mToolbarLayout->setColumnStretch( 1, 1 ); - - layout->addItem( mToolbarLayout ); - layout->addWidget( radioWindow ); - - setLayout( layout ); -} - -/*! - * - */ -void Win32Window::init() -{ - RadioEngineWrapperPrivate* wrapper = RadioEngineWrapperPrivate::instance(); - if ( wrapper ) { - QString error = wrapper->dataParsingError(); - if ( !error.isEmpty() ) { - QMessageBox msg( QMessageBox::Warning, "Unable to parse radio settings", error, QMessageBox::Ok ); - msg.exec(); - } - - if ( wrapper->isOffline() ) { - mOfflineButton->setText( KBtnGoOnline ); - } - } - updateWindowSize(); -} - -/*! - * Private slot - */ -void Win32Window::changeOrientation() -{ - if ( mOrientation == Qt::Horizontal ) { - mOrientation = Qt::Vertical; - } else { - mOrientation = Qt::Horizontal; - } - - mRadioWindow->setOrientation( mOrientation ); - updateWindowSize(); -} - -/*! - * Private slot - */ -void Win32Window::volumeUp() -{ - if ( ++mVolume > MAXIMUM_VOLUME_LEVEL ) { - mVolume = MAXIMUM_VOLUME_LEVEL; - } - RadioEngineWrapperPrivate::instance()->setVolume( mVolume ); -} - -/*! - * Private slot - */ -void Win32Window::volumeDown() -{ - if ( --mVolume < 0 ) { - mVolume = 0; - } - RadioEngineWrapperPrivate::instance()->setVolume( mVolume ); -} - -/*! - * Private slot - */ -void Win32Window::toggleHeadsetStatus() -{ - mHeadsetConnected = !mHeadsetConnected; - if ( mHeadsetConnected ) { - mHeadsetButton->setText( KBtnDisconnectHeadset ); - } else { - mHeadsetButton->setText( KBtnConnectHeadset ); - } - RadioEngineWrapperPrivate::instance()->setHeadsetStatus( mHeadsetConnected ); -} - -/*! - * Private slot - */ -void Win32Window::updateWindowSize() -{ - if ( mOrientation == Qt::Horizontal ) { - resize( WINDOW_HEIGHT + WINDOW_EXTRA_WIDTH, WINDOW_WIDTH + TOOLBAR_HEIGHT ); - } else { - resize( WINDOW_WIDTH + WINDOW_EXTRA_WIDTH, WINDOW_HEIGHT + TOOLBAR_HEIGHT ); - } -} - -/*! - * Private slot - */ -void Win32Window::addSong() -{ - Song song = KRecognizedSongs[mSongIndex++]; - mSongIndex %= KSongsCount; - - RadioEngineWrapperPrivate::instance()->addSong( song.mArtist, song.mTitle ); -} - -/*! - * Private slot - */ -void Win32Window::clearSong() -{ - RadioEngineWrapperPrivate::instance()->clearSong(); -} - -/*! - * Private slot - */ -void Win32Window::toggleOffline() -{ - bool offline = !RadioEngineWrapperPrivate::instance()->isOffline(); - RadioEngineWrapperPrivate::instance()->setOffline( offline ); - if ( offline ) { - mOfflineButton->setText( KBtnGoOnline ); - } else { - mOfflineButton->setText( KBtnGoOffline ); - } -} - -/*! - * Private slot - */ -void Win32Window::changeTheme( const QString& theme ) -{ - LOG_FORMAT( "Changing to theme %s", GETSTRING( theme ) ); - QLocalSocket socket; - socket.connectToServer( "hbthemeserver" ); - if ( socket.waitForConnected( 3000 ) ) { - QByteArray outputByteArray; - QDataStream outputDataStream( &outputByteArray, QIODevice::WriteOnly ); - outputDataStream << 4; // EThemeSelection from HbThemeServerRequest in hbthemecommon_p.h - outputDataStream << theme; - socket.write( outputByteArray ); - socket.flush(); - } -} - -/*! - * - */ -void Win32Window::initThemes() -{ - QStringList themeList; - foreach ( const QString& themeRootPath, themeRootPaths() ) { - QDir dir( themeRootPath ) ; - QStringList list = dir.entryList( QDir::AllDirs | QDir::NoDotAndDotDot, QDir::Name ); - - if ( list.contains( "themes", Qt::CaseSensitive ) ) { - QDir root = themeRootPath; - dir.setPath( root.path() + "/themes/icons/" ); - QStringList iconthemeslist = dir.entryList( QDir::AllDirs | QDir::NoDotAndDotDot, QDir::Name ); - foreach ( QString themefolder, iconthemeslist ) { - QDir iconThemePath( root.path() + "/themes/icons/" + themefolder ); - if ( iconThemePath.exists( "index.theme" ) ) { - QSettings iniSetting( iconThemePath.path() + "/index.theme", QSettings::IniFormat ); - iniSetting.beginGroup( "Icon Theme" ); - QString hidden = iniSetting.value( "Hidden" ).toString(); - QString name = iniSetting.value( "Name" ).toString(); - iniSetting.endGroup(); - if ( (hidden == "true") || ( hidden == "" ) || ( name != themefolder ) ) { - iconthemeslist.removeOne( themefolder ); - } - } - else { - iconthemeslist.removeOne( themefolder ); - } - - } - - themeList.append( iconthemeslist ); - } - } - - if ( themeList.count() == 0 ) { - themeList.insert( 0, "hbdefault" ); //adding one default entry - mThemeBox->setEnabled( false ); - } - - mThemeBox->setModel( new QStringListModel( themeList, mThemeBox ) ); - - for ( int i = 0; i < themeList.count(); ++i ) { - QString theme = themeList.at( i ); - if ( theme == HbInstance::instance()->theme()->name() ) { - mThemeBox->setCurrentIndex( i ); - } - } -} - -/*! - * - */ -QStringList Win32Window::themeRootPaths() -{ - QStringList rootDirs; - QString envDir = qgetenv( "HB_THEMES_DIR" ); - if ( !envDir.isEmpty() ) { - rootDirs << envDir; - } - - QString resourcesDir = HB_RESOURCES_DIR; - if ( resourcesDir.isEmpty() ) { - resourcesDir = "/hb_dev/src/hbcore/resources"; - } - rootDirs << resourcesDir; - - return rootDirs; -}