Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#176 Le 02/10/2009, à 19:03

jajaX

Re : KDE SC 4.4 est là !

je verrais à l'usage mais je pense qu'il passera à la trappe effectivement...


@+
jajaX
Asus X93SM-YZ157V / Asus X93SM-YZ065V sous KDE Neon
ASUS K95VB sous Kubuntu 22.04 Jammy Jellyfish (64 bits) / ACER Aspire 5612 WLMI sous Kubuntu 18.04 Bionic Beaver (32 bits)

Hors ligne

#177 Le 02/10/2009, à 19:05

h4l

Re : KDE SC 4.4 est là !

Seren a écrit :

( Perso j'ai la moité des lib gnome installé avec KDE, je m'en porte très bien...)

Oui sauf que ça fait un peu pollution pour rien... ça ne ralenti en principe pas spécialement le système...


H4L --- Plus Vite, Mieux, Moins Cher! Comment s'appelle-t-il? Linux (youtube)
UbuntuDDE 20.04
Chrome
Intel Core 2 duo 4500 & Nvidia 750TI & 16Go de RAM

Hors ligne

#178 Le 04/10/2009, à 04:20

Emralegna

Hors ligne

#179 Le 06/10/2009, à 14:38

Snake046

Re : KDE SC 4.4 est là !

Du nouveau au sujet de Gluon :
http://dridk.blogspot.com/2009/10/gluon-first-technical-preview.html
Gluon est donc pratiquement prêt à l'usage : ce qui manque pour le moment, une documentation complète (archi-important), et un "Gluon Creator" (du luxe, que demander de plus) ?
Bien sûr si le logiciel n'est pas forcément terminé, nous n'en sommes visiblement pas loin.

En outre, Gluon sait ce qui lui fera du bien : les développeurs sont en train de s'arranger pour que Gluon compile sous Windows. Ils essayeront ensuite également de se débrouiller pour que son unique dépendance devienne Qt (ainsi les développeurs Windows ne seront pas obligé de demander l'installation de KDE).

En gros, tout ce que nous voyons pour Gluon devient réalité : ce framework pourrait bien s'étendre largement et faciliter le travail des développeurs de jeux vidéo OpenSource (ou uniquement compatible linux).


Aucun message n'est caché dans cette signature.

Hors ligne

#180 Le 07/10/2009, à 10:08

moi1392

Re : KDE SC 4.4 est là !

nouvelle évolution du device notifier pour kde 4.4 : http://aseigo.blogspot.com/2009/10/device-notifier-work-for-44.html

il y a une petite vidéo à la fin smile le changement n'est pas énorme, mais il est le bienvenu je trouve smile

pour l'instant c'est dans kdereview, et ça devrait remplacer le notifier actuel dans quelques semaines (normalement 2 ou 3 semaines)

Hors ligne

#181 Le 07/10/2009, à 10:24

Luckynow

Re : KDE SC 4.4 est là !

Des news du côté du support de vpnc ?
Et de google calendar par akonadi + kontact ?

Hors ligne

#182 Le 07/10/2009, à 10:30

moi1392

Re : KDE SC 4.4 est là !

google calendar est censé déjà être supporté, il y a des tutos sur le net sur comment faire.

Hors ligne

#183 Le 07/10/2009, à 10:44

playmobill

Re : KDE SC 4.4 est là !

Ce qui semble intéressant avec la future version du device manager, c'est la possibilité de monter un périphérique sans avoir à ouvrir Dolphin ou un autre logiciel.


Passer à Linux n’est pas un défi, c’est juste un choix.

Hors ligne

#184 Le 07/10/2009, à 11:24

Nirgalksi

Re : KDE SC 4.4 est là !

Ce device manager est chez kde-look et donc deja installable
Et c'est vrai que c'est bien plus pratique que l'ancien

Hors ligne

#185 Le 07/10/2009, à 11:31

MakoSol

Re : KDE SC 4.4 est là !

c'est pas le même, mais il en reprend certaines fonctions; lis les commentaires de l'article pour en savoir plus


site sur des logiciels libres/gratuits pour Windows, outils de géomatique et Linux : http://makosol.free.fr/

Hors ligne

#186 Le 07/10/2009, à 11:31

Emralegna

Re : KDE SC 4.4 est là !

Quelqu'un peut me dire s'il arrive à compiler ce lecteur multimédia prometteur où si l'erreur Phonon: No such file or directory malgré les paquets de développement ne vient que de chez moi ?

Hors ligne

#187 Le 07/10/2009, à 11:37

Nirgalksi

Re : KDE SC 4.4 est là !

MakoSol a écrit :

c'est pas le même, mais il en reprend certaines fonctions; lis les commentaires de l'article pour en savoir plus

merci pour la précision, j vais y jeter un œil plus attentif alors

Hors ligne

#188 Le 07/10/2009, à 11:39

Heliox

Re : KDE SC 4.4 est là !

Au fait, niveau rippage de CD audio, on fait comment sous KDE4 ? Je trouve pas d'équivalent à SoundJuicer de Gnome : SoundKonverter est toujours pas porté et Kaudiocreator est porté mais bug un peu...

Vous avez des idées ?

#189 Le 07/10/2009, à 11:42

moi1392

Re : KDE SC 4.4 est là !

rippage de CD audio

le kio audiocd:/ est ton ami wink sinon k3b le fait aussi.

si l'erreur Phonon: No such file or directory

copie moi l'erreur en entier, avec les lignes autour, et je te dirai qui tu es... et ce qu'il te manque tongue

Hors ligne

#190 Le 07/10/2009, à 11:44

Heliox

Re : KDE SC 4.4 est là !

moi1392 a écrit :

le kio audiocd:/ est ton ami wink sinon k3b le fait aussi.

Ah, je ne connaissais pas, je vais voir et essayer tout ça, merci wink

#191 Le 07/10/2009, à 11:49

moi1392

Re : KDE SC 4.4 est là !

dans dolphin, tu cliques sur ton CD, ou alors dans dolhin/konqueror, tu tapes "audiocd:/" dans la barre d'adresse.

tu verras s'afficher ton album avec des dossier flac/mp3/ogg, tu ouvres le dossier qui te plait, et tu copies les chansons que tu veux sur ton disque dur, ça les encode et les tag à la volée si tu es connecté au net.

par contre, c'est assez lent, même si ça reste très utilisable pour un seul CD, k3b est bien plus rapide si tu dois faire de l'extraction de masse.

Dernière modification par moi1392 (Le 07/10/2009, à 11:49)

Hors ligne

#192 Le 07/10/2009, à 11:50

Emralegna

Re : KDE SC 4.4 est là !

moi1392 a écrit :

si l'erreur Phonon: No such file or directory

copie moi l'erreur en entier, avec les lignes autour, et je te dirai qui tu es... et ce qu'il te manque tongue

J'aurais dû y penser. hmm

make   
[  0%] Built target bangarang_automoc
[  4%] Building CXX object CMakeFiles/bangarang.dir/bangarang_automoc.o
In file included from /home/emralegna/builds/bangarang/build/moc_playlist.cpp:10,
                 from /home/emralegna/builds/bangarang/build/bangarang_automoc.cpp:5:
/home/emralegna/builds/bangarang/build/../platform/playlist.h:5:18: error: Phonon: No such file or directory
In file included from /home/emralegna/builds/bangarang/build/moc_playlist.cpp:10,                           
                 from /home/emralegna/builds/bangarang/build/bangarang_automoc.cpp:5:                       
/home/emralegna/builds/bangarang/build/../platform/playlist.h:17: error: ‘Phonon’ has not been declared     
/home/emralegna/builds/bangarang/build/../platform/playlist.h:17: error: expected ‘,’ or ‘...’ before ‘*’ token
/home/emralegna/builds/bangarang/build/../platform/playlist.h:52: error: ‘Phonon’ has not been declared        
/home/emralegna/builds/bangarang/build/../platform/playlist.h:52: error: ISO C++ forbids declaration of ‘MediaObject’ with no type
/home/emralegna/builds/bangarang/build/../platform/playlist.h:52: error: expected ‘;’ before ‘*’ token                            
/home/emralegna/builds/bangarang/build/../platform/playlist.h:53: error: ‘Phonon’ has not been declared                           
/home/emralegna/builds/bangarang/build/../platform/playlist.h:53: error: ISO C++ forbids declaration of ‘MediaController’ with no type
/home/emralegna/builds/bangarang/build/../platform/playlist.h:53: error: expected ‘;’ before ‘*’ token                                
/home/emralegna/builds/bangarang/build/../platform/playlist.h:60: error: expected ‘,’ or ‘...’ before ‘::’ token                      
/home/emralegna/builds/bangarang/build/../platform/playlist.h:60: error: ISO C++ forbids declaration of ‘Phonon’ with no type         
In file included from /home/emralegna/builds/bangarang/build/bangarang_automoc.cpp:5:                                                 
/home/emralegna/builds/bangarang/build/moc_playlist.cpp: In member function ‘virtual int Playlist::qt_metacall(QMetaObject::Call, int, void**)’:
/home/emralegna/builds/bangarang/build/moc_playlist.cpp:78: error: ISO C++ forbids declaration of ‘type name’ with no type                      
/home/emralegna/builds/bangarang/build/moc_playlist.cpp:78: error: expected `>' before ‘Phonon’                                                 
/home/emralegna/builds/bangarang/build/moc_playlist.cpp:78: error: expected `(' before ‘Phonon’                                                 
/home/emralegna/builds/bangarang/build/moc_playlist.cpp:78: error: ‘Phonon’ has not been declared                                               
/home/emralegna/builds/bangarang/build/moc_playlist.cpp:78: error: expected primary-expression before ‘)’ token                                 
In file included from /home/emralegna/builds/bangarang/build/moc_mainwindow.cpp:10,                                                             
                 from /home/emralegna/builds/bangarang/build/bangarang_automoc.cpp:8:                                                           
/home/emralegna/builds/bangarang/build/../mainwindow.h: At global scope:                                                                        
/home/emralegna/builds/bangarang/build/../mainwindow.h:56: error: ‘Phonon’ has not been declared                                                
/home/emralegna/builds/bangarang/build/../mainwindow.h:56: error: ISO C++ forbids declaration of ‘VideoPlayer’ with no type                     
/home/emralegna/builds/bangarang/build/../mainwindow.h:56: error: expected ‘;’ before ‘*’ token                                                 
/home/emralegna/builds/bangarang/build/../mainwindow.h:60: error: ‘Phonon’ has not been declared                                                
/home/emralegna/builds/bangarang/build/../mainwindow.h:60: error: ISO C++ forbids declaration of ‘VideoWidget’ with no type                     
/home/emralegna/builds/bangarang/build/../mainwindow.h:60: error: expected ‘;’ before ‘*’ token                                                 
/home/emralegna/builds/bangarang/build/../mainwindow.h:61: error: ‘Phonon’ has not been declared                                                
/home/emralegna/builds/bangarang/build/../mainwindow.h:61: error: ISO C++ forbids declaration of ‘AudioOutput’ with no type                     
/home/emralegna/builds/bangarang/build/../mainwindow.h:61: error: expected ‘;’ before ‘*’ token                                                 
/home/emralegna/builds/bangarang/build/../mainwindow.h:62: error: ‘Phonon’ has not been declared                                                
/home/emralegna/builds/bangarang/build/../mainwindow.h:62: error: ISO C++ forbids declaration of ‘MediaObject’ with no type                     
/home/emralegna/builds/bangarang/build/../mainwindow.h:62: error: expected ‘;’ before ‘*’ token                                                 
/home/emralegna/builds/bangarang/build/../mainwindow.h:63: error: ‘Phonon’ has not been declared                                                
/home/emralegna/builds/bangarang/build/../mainwindow.h:63: error: ISO C++ forbids declaration of ‘MediaController’ with no type                 
/home/emralegna/builds/bangarang/build/../mainwindow.h:63: error: expected ‘;’ before ‘*’ token                                                 
/home/emralegna/builds/bangarang/build/../mainwindow.h:105: error: ‘Phonon’ has not been declared                                               
/home/emralegna/builds/bangarang/build/../mainwindow.h:105: error: expected ‘,’ or ‘...’ before ‘newstate’                                      
In file included from /home/emralegna/builds/bangarang/build/bangarang_automoc.cpp:8:                                                           
/home/emralegna/builds/bangarang/build/moc_mainwindow.cpp: In member function ‘virtual int MainWindow::qt_metacall(QMetaObject::Call, int, void**)’:
/home/emralegna/builds/bangarang/build/moc_mainwindow.cpp:141: error: expected type-specifier before ‘Phonon’                                       
/home/emralegna/builds/bangarang/build/moc_mainwindow.cpp:141: error: expected `>' before ‘Phonon’                                                  
/home/emralegna/builds/bangarang/build/moc_mainwindow.cpp:141: error: expected `(' before ‘Phonon’                                                  
/home/emralegna/builds/bangarang/build/moc_mainwindow.cpp:141: error: ‘Phonon’ has not been declared                                                
/home/emralegna/builds/bangarang/build/moc_mainwindow.cpp:141: error: expected primary-expression before ‘)’ token                                  
/home/emralegna/builds/bangarang/build/moc_mainwindow.cpp:141: error: expected type-specifier before ‘Phonon’                                       
/home/emralegna/builds/bangarang/build/moc_mainwindow.cpp:141: error: expected `>' before ‘Phonon’                                                  
/home/emralegna/builds/bangarang/build/moc_mainwindow.cpp:141: error: expected `(' before ‘Phonon’                                                  
/home/emralegna/builds/bangarang/build/moc_mainwindow.cpp:141: error: ‘Phonon’ has not been declared                                                
/home/emralegna/builds/bangarang/build/moc_mainwindow.cpp:141: error: expected primary-expression before ‘)’ token                                  
/home/emralegna/builds/bangarang/build/moc_mainwindow.cpp:141: error: expected `)' before ‘;’ token                                                 
In file included from /home/emralegna/builds/bangarang/build/moc_cdlistengine.cpp:10,                                                               
                 from /home/emralegna/builds/bangarang/build/bangarang_automoc.cpp:10:
/home/emralegna/builds/bangarang/build/../platform/cdlistengine.h: At global scope:
/home/emralegna/builds/bangarang/build/../platform/cdlistengine.h:44: error: ‘Phonon’ has not been declared
/home/emralegna/builds/bangarang/build/../platform/cdlistengine.h:44: error: ISO C++ forbids declaration of ‘MediaObject’ with no type
/home/emralegna/builds/bangarang/build/../platform/cdlistengine.h:44: error: expected ‘;’ before ‘*’ token
/home/emralegna/builds/bangarang/build/../platform/cdlistengine.h:48: error: ‘Phonon’ has not been declared
/home/emralegna/builds/bangarang/build/../platform/cdlistengine.h:48: error: expected ‘,’ or ‘...’ before ‘newState’
In file included from /home/emralegna/builds/bangarang/build/bangarang_automoc.cpp:10:
/home/emralegna/builds/bangarang/build/moc_cdlistengine.cpp: In member function ‘virtual int CDListEngine::qt_metacall(QMetaObject::Call, int, void**)’:
/home/emralegna/builds/bangarang/build/moc_cdlistengine.cpp:73: error: expected type-specifier before ‘Phonon’
/home/emralegna/builds/bangarang/build/moc_cdlistengine.cpp:73: error: expected `>' before ‘Phonon’
/home/emralegna/builds/bangarang/build/moc_cdlistengine.cpp:73: error: expected `(' before ‘Phonon’
/home/emralegna/builds/bangarang/build/moc_cdlistengine.cpp:73: error: ‘Phonon’ has not been declared
/home/emralegna/builds/bangarang/build/moc_cdlistengine.cpp:73: error: expected primary-expression before ‘)’ token
/home/emralegna/builds/bangarang/build/moc_cdlistengine.cpp:73: error: expected type-specifier before ‘Phonon’
/home/emralegna/builds/bangarang/build/moc_cdlistengine.cpp:73: error: expected `>' before ‘Phonon’
/home/emralegna/builds/bangarang/build/moc_cdlistengine.cpp:73: error: expected `(' before ‘Phonon’
/home/emralegna/builds/bangarang/build/moc_cdlistengine.cpp:73: error: ‘Phonon’ has not been declared
/home/emralegna/builds/bangarang/build/moc_cdlistengine.cpp:73: error: expected primary-expression before ‘)’ token
/home/emralegna/builds/bangarang/build/moc_cdlistengine.cpp:73: error: expected `)' before ‘;’ token
In file included from /home/emralegna/builds/bangarang/build/moc_dvdlistengine.cpp:10,
                 from /home/emralegna/builds/bangarang/build/bangarang_automoc.cpp:12:
/home/emralegna/builds/bangarang/build/../platform/dvdlistengine.h: At global scope:
/home/emralegna/builds/bangarang/build/../platform/dvdlistengine.h:44: error: ‘Phonon’ has not been declared
/home/emralegna/builds/bangarang/build/../platform/dvdlistengine.h:44: error: ISO C++ forbids declaration of ‘MediaObject’ with no type
/home/emralegna/builds/bangarang/build/../platform/dvdlistengine.h:44: error: expected ‘;’ before ‘*’ token
/home/emralegna/builds/bangarang/build/../platform/dvdlistengine.h:48: error: ‘Phonon’ has not been declared
/home/emralegna/builds/bangarang/build/../platform/dvdlistengine.h:48: error: expected ‘,’ or ‘...’ before ‘newState’
In file included from /home/emralegna/builds/bangarang/build/bangarang_automoc.cpp:12:
/home/emralegna/builds/bangarang/build/moc_dvdlistengine.cpp: In member function ‘virtual int DVDListEngine::qt_metacall(QMetaObject::Call, int, void**)’:
/home/emralegna/builds/bangarang/build/moc_dvdlistengine.cpp:73: error: expected type-specifier before ‘Phonon’
/home/emralegna/builds/bangarang/build/moc_dvdlistengine.cpp:73: error: expected `>' before ‘Phonon’
/home/emralegna/builds/bangarang/build/moc_dvdlistengine.cpp:73: error: expected `(' before ‘Phonon’
/home/emralegna/builds/bangarang/build/moc_dvdlistengine.cpp:73: error: ‘Phonon’ has not been declared
/home/emralegna/builds/bangarang/build/moc_dvdlistengine.cpp:73: error: expected primary-expression before ‘)’ token
/home/emralegna/builds/bangarang/build/moc_dvdlistengine.cpp:73: error: expected type-specifier before ‘Phonon’
/home/emralegna/builds/bangarang/build/moc_dvdlistengine.cpp:73: error: expected `>' before ‘Phonon’
/home/emralegna/builds/bangarang/build/moc_dvdlistengine.cpp:73: error: expected `(' before ‘Phonon’
/home/emralegna/builds/bangarang/build/moc_dvdlistengine.cpp:73: error: ‘Phonon’ has not been declared
/home/emralegna/builds/bangarang/build/moc_dvdlistengine.cpp:73: error: expected primary-expression before ‘)’ token
/home/emralegna/builds/bangarang/build/moc_dvdlistengine.cpp:73: error: expected `)' before ‘;’ token
make[2]: *** [CMakeFiles/bangarang.dir/bangarang_automoc.o] Error 1
make[1]: *** [CMakeFiles/bangarang.dir/all] Error 2
make: *** [all] Error 2

Voilà ; merci d'avance !

Hors ligne

#193 Le 07/10/2009, à 11:52

moi1392

Re : KDE SC 4.4 est là !

ce fichier : /home/emralegna/builds/bangarang/build/../platform/playlist.h ligne 5, y'a quoi ?  normalement, une directive "#include <Phonon>" c'est ça ?

Hors ligne

#194 Le 07/10/2009, à 11:57

Emralegna

Re : KDE SC 4.4 est là !

Elle y est bien oui.

playlist.h :

#ifndef PLAYLIST_H
#define PLAYLIST_H

#include <QObject>
#include <Phonon>

class MediaItemModel;
class MediaItem;

class Playlist : public QObject
{
    Q_OBJECT
    
    public:
        enum Mode { Normal = 0, Shuffle = 1};
        enum Model { PlaylistModel = 0, QueueModel = 1};
        Playlist(QObject * parent, Phonon::MediaObject * mediaObject);
        ~Playlist();
        MediaItemModel * playlistModel();
        MediaItemModel * queueModel();
        MediaItemModel * nowPlayingModel();
        void start();
        void playItemAt(int row, int model = 0);
        void playNext();
        void playPrevious();
        void stop();
        void playMediaList(QList<MediaItem> mediaList);
        void addMediaList(QList<MediaItem> mediaList);
        void addMediaItem(MediaItem mediaItem);
        void removeMediaItemAt(int row);
        void clearPlaylist();
        void setMode(int mode);
        int mode();
        void shuffle();
        void orderByPlaylist();
        void addToQueue();
        void setRepeat(bool repeat);
        void buildQueueFrom(int playlistRow);
        
    private:
        QObject * m_parent;
        MediaItemModel * m_currentPlaylist;
        MediaItemModel * m_nowPlaying;
        MediaItemModel * m_queue;
        int m_mode;
        int m_repeat;
        int m_queueDepth;
        int m_oldPlaylistLength;
        QList<int> m_playlistIndices;
        QList<int> m_playlistIndicesHistory;
        QList<QString> m_playlistUrlHistory;
        Phonon::MediaObject * m_mediaObject;
        Phonon::MediaController * m_mediaController;
        bool playWhenPlaylistChanges;
        bool m_playlistFinished;
        void createUrlHistoryFromIndices();
        void updateNowPlaying();
        
    private slots:
        void currentSourceChanged(const Phonon::MediaSource & newSource);
        void titleChanged(int newTitle);
        void playlistChanged();
        void queueNextPlaylistItem();
        void confirmPlaylistFinished();
        
    Q_SIGNALS:
        void playlistFinished();
        
};
#endif // PLAYLIST_H

playlist.cpp

#include "playlist.h"
#include "mediaitemmodel.h"
#include "utilities.h"
#include "mediavocabulary.h"
#include <time.h>
#include <KUrl>
#include <KIcon>
#include <nepomuk/resource.h>
#include <nepomuk/variant.h>
#include <Soprano/Vocabulary/Xesam>
#include <Soprano/Vocabulary/RDF>
#include <Soprano/Vocabulary/XMLSchema>


Playlist::Playlist(QObject * parent, Phonon::MediaObject * mediaObject) : QObject(parent) 
{
    m_parent = parent;
    m_mediaObject = mediaObject;
    m_mediaController = new Phonon::MediaController(m_mediaObject);
    m_currentPlaylist = new MediaItemModel(this);
    m_nowPlaying = new MediaItemModel(this);
    m_queue = new MediaItemModel(this);   
    playWhenPlaylistChanges = false;
    m_mode = Playlist::Normal;
    m_repeat = false;
    m_queueDepth = 10;
    m_playlistFinished = false;
    
    connect(m_mediaObject, SIGNAL(aboutToFinish()), this, SLOT(queueNextPlaylistItem()));
    connect(m_mediaObject, SIGNAL(finished()), this, SLOT(confirmPlaylistFinished()));
    connect(m_mediaObject, SIGNAL(currentSourceChanged (const Phonon::MediaSource & )), this, SLOT(currentSourceChanged(const Phonon::MediaSource & )));
    connect(m_mediaController, SIGNAL(titleChanged (int)), this, SLOT(titleChanged(int)));
    connect(m_currentPlaylist, SIGNAL(mediaListChanged()), this, SLOT(playlistChanged()));
    
}

Playlist::~Playlist()
{
    delete m_currentPlaylist;
    delete m_nowPlaying;
    delete m_queue;
    //delete m_mediaController;
}

MediaItemModel * Playlist::playlistModel()
{
    return m_currentPlaylist;
}

MediaItemModel * Playlist::queueModel()
{
    return m_queue;
}

MediaItemModel * Playlist::nowPlayingModel()
{
    return m_nowPlaying;
}

//----------------------------------------
//--- Primary playback control methods ---
//----------------------------------------
void Playlist::playItemAt(int row, int model)
{
    MediaItem nextMediaItem;
    if (model == Playlist::PlaylistModel) {
        //Get media item from playlist
        nextMediaItem = m_currentPlaylist->mediaItemAt(row);
        nextMediaItem.playlistIndex = row;
        nextMediaItem.nowPlaying = true;
        
        //Play media Item
        m_mediaObject->clearQueue();
        if (nextMediaItem.fields["audioType"].toString() == "CD Track") {
            m_nowPlaying->loadMediaItem(nextMediaItem, true);
            m_mediaObject->setCurrentSource(Phonon::Cd);
            m_mediaController->setAutoplayTitles(false);
            m_mediaController->setCurrentTitle(nextMediaItem.fields["trackNumber"].toInt());
        } else if (nextMediaItem.fields["videoType"].toString() == "DVD Title") {
            m_nowPlaying->loadMediaItem(nextMediaItem, true);
            m_mediaObject->setCurrentSource(Phonon::Dvd);
            m_mediaController->setAutoplayTitles(false);
            m_mediaController->setCurrentTitle(nextMediaItem.fields["trackNumber"].toInt());
        } else {
            // - Get album artwork
            MediaItem itemWithArtwork = nextMediaItem;
            QPixmap artwork = Utilities::getArtworkFromTag(nextMediaItem.url);
            if (!artwork.isNull()) {
                itemWithArtwork.artwork = KIcon(artwork);
            }
            m_nowPlaying->loadMediaItem(itemWithArtwork, true);
            m_mediaObject->setCurrentSource(Phonon::MediaSource(QUrl(nextMediaItem.url)));
        }
        m_mediaObject->play();
        m_playlistFinished = false;
        
        //Update Queue Model
        if (m_mode == Playlist::Normal) {
            //Just build a new queue from the specified row
            buildQueueFrom(row);
        } else if (m_mode == Playlist::Shuffle) {
            if (m_playlistIndicesHistory.indexOf(row) == -1) {
                //If item has not yet played move it to the front
                if (m_queue->rowOfUrl(nextMediaItem.url) != -1) {
                    QList<MediaItem> queueMediaList = m_queue->mediaList();
                    queueMediaList.move(m_queue->rowOfUrl(nextMediaItem.url), 0);
                    m_queue->clearMediaListData();
                    m_queue->loadMediaList(queueMediaList, true);
                } else {
                    QList<MediaItem> queueMediaList = m_queue->mediaList();
                    queueMediaList.insert(0, nextMediaItem);
                    if (queueMediaList.count() > m_queueDepth) {
                        queueMediaList.removeLast();
                    }
                    m_queue->clearMediaListData();
                    m_queue->loadMediaList(queueMediaList, true);
                }
            } else {
                //If item has already played remove from history and place at front of queue
                m_playlistIndicesHistory.removeAt(m_playlistIndicesHistory.indexOf(row));
                m_playlistUrlHistory.removeAt(m_playlistIndicesHistory.indexOf(row));
                QList<MediaItem> queueMediaList = m_queue->mediaList();
                queueMediaList.insert(0, nextMediaItem);
                queueMediaList.removeLast();
                m_queue->clearMediaListData();
                m_queue->loadMediaList(queueMediaList, true);
            }    
        }
        
        /*//Get row of previously playing item
        int oldItemRow = -1;
        if (m_nowPlaying->rowCount() > 0) {
            oldItemRow = m_nowPlaying->mediaItemAt(0).playlistIndex;
        }
        
        //Update Now Playing view
        m_nowPlaying->clearMediaListData();
        // - Get album artwork
        QPixmap artwork = Utilities::getArtworkFromTag(nextMediaItem.url);
        if (!artwork.isNull()) {
            nextMediaItem.artwork = KIcon(artwork);
        }
        m_nowPlaying->loadMediaItem(nextMediaItem, true);
        
        //Refresh playlist to show currently playing item
        m_currentPlaylist->item(row,0)->setData(true, MediaItem::NowPlayingRole);
        if ((oldItemRow != -1) && (oldItemRow != row) && (oldItemRow < m_currentPlaylist->rowCount())) {
            m_currentPlaylist->item(oldItemRow, 0)->setData(false, MediaItem::NowPlayingRole);
        }*/
        
    } else if (model == Playlist::QueueModel) {
        //Get media item from queue list
        nextMediaItem = m_queue->mediaItemAt(row);
        nextMediaItem.nowPlaying = true;
        
        //Play media Item
        m_mediaObject->clearQueue();
        if (nextMediaItem.fields["audioType"].toString() == "CD Track") {
            m_nowPlaying->loadMediaItem(nextMediaItem, true);
            m_mediaObject->setCurrentSource(Phonon::Cd);
            m_mediaController->setAutoplayTitles(false);
            m_mediaController->setCurrentTitle(nextMediaItem.fields["trackNumber"].toInt());
        } else if (nextMediaItem.fields["videoType"].toString() == "DVD Title") {
            m_nowPlaying->loadMediaItem(nextMediaItem, true);
            m_mediaObject->setCurrentSource(Phonon::Dvd);
            m_mediaController->setAutoplayTitles(false);
            m_mediaController->setCurrentTitle(nextMediaItem.fields["trackNumber"].toInt());
        } else {
            // - Get album artwork
            QPixmap artwork = Utilities::getArtworkFromTag(nextMediaItem.url);
            if (!artwork.isNull()) {
                nextMediaItem.artwork = KIcon(artwork);
            }
            m_nowPlaying->loadMediaItem(nextMediaItem, true);
            m_mediaObject->setCurrentSource(Phonon::MediaSource(QUrl(nextMediaItem.url)));
        }
        m_mediaObject->play();
        m_playlistFinished = false;
        
        //Update Queue Model
        if (m_mode == Playlist::Normal) {
            //Just build a new queue from the row of the item in the playlist
            buildQueueFrom(nextMediaItem.playlistIndex);
        } else if (m_mode == Playlist::Shuffle) {
            if (row > 0) {
                //Move item to front of queue
                QList<MediaItem> queueMediaList = m_queue->mediaList();
                queueMediaList.move(row, 0);
                m_queue->clearMediaListData();
                m_queue->loadMediaList(queueMediaList, true);
            }
        }
        
        /*//Get row of previously playing item
        int oldItemRow = -1;
        if (m_nowPlaying->rowCount() > 0) {
            oldItemRow = m_nowPlaying->mediaItemAt(0).playlistIndex;
        }
        
        //Update Now Playing view
        m_nowPlaying->clearMediaListData();       
        // - Get album artwork
        QPixmap artwork = Utilities::getArtworkFromTag(nextMediaItem.url);
        if (!artwork.isNull()) {
            nextMediaItem.artwork = KIcon(artwork);
        }
        m_nowPlaying->loadMediaItem(nextMediaItem, true);

        //Refresh playlist model to ensure views get updated
        int row = m_nowPlaying->mediaItemAt(0).playlistIndex;
        if (row >= 0) m_currentPlaylist->item(row,0)->setData(true, MediaItem::NowPlayingRole);
        if (oldItemRow != row and oldItemRow >= 0 and oldItemRow < m_currentPlaylist->rowCount()) {
            m_currentPlaylist->item(oldItemRow, 0)->setData(false, MediaItem::NowPlayingRole);
        }*/
    }
    
    
}

void Playlist::playNext()
{
    addToQueue();
    if (m_queue->rowCount() > 1) {
        m_queue->removeMediaItemAt(0);
        playItemAt(0, Playlist::QueueModel);
    }
}

void Playlist::playPrevious()
{
    if (m_playlistIndicesHistory.count() > 0) {
        int previousRow = m_playlistIndicesHistory.last();
        int oldItemRow = m_nowPlaying->mediaItemAt(0).playlistIndex;
        m_nowPlaying->removeMediaItemAt(0);
        if (oldItemRow != previousRow && oldItemRow >= 0 and oldItemRow < m_currentPlaylist->rowCount()) {
            //Cycle through true and false to ensure data change forces update
            m_currentPlaylist->item(oldItemRow,0)->setData(true, MediaItem::NowPlayingRole);
            m_currentPlaylist->item(oldItemRow,0)->setData(false, MediaItem::NowPlayingRole);
        }
        playItemAt(previousRow, Playlist::PlaylistModel);
    }
}

void Playlist::start()
{
    m_playlistIndices.clear();
    m_playlistIndicesHistory.clear();
    m_playlistUrlHistory.clear();
    for (int i = 0; i < m_currentPlaylist->rowCount(); ++i) {
        m_playlistIndices.append(i);
    }
    if (m_mode == Playlist::Normal) {
        orderByPlaylist();
    } else if (m_mode == Playlist::Shuffle) {
        shuffle();
    }
    playItemAt(0, Playlist::QueueModel);
}

void Playlist::stop()
{
}

void Playlist::playMediaList(QList<MediaItem> mediaList)
{
    //Clear playlist
    clearPlaylist();
    
    
    //Load playlist with all media items
    //Note: Because playlist loads asynchronously we have to
    //wait for signal from playlist model that loading is 
    //complete (playlistChanged) before starting playback
    // - hence the use of playWhenPlaylistChanges.
    playWhenPlaylistChanges = true;
    m_currentPlaylist->loadSources(mediaList); 
    
}

//----------------------------------------
//--- Playlist data control methods ---
//----------------------------------------

void Playlist::addMediaList(QList<MediaItem> mediaList)
{
    int startingRow = m_currentPlaylist->rowCount();
    for (int i = 0; i < mediaList.count(); ++i) {
        m_currentPlaylist->loadMediaItem(mediaList.at(i), true);
        m_playlistIndices.append(startingRow + i);
    }
}

void Playlist::addMediaItem(MediaItem mediaItem)
{
    int startingRow = m_currentPlaylist->rowCount();
    m_currentPlaylist->loadMediaItem(mediaItem, true);
    m_playlistIndices.append(startingRow);
}

void Playlist::removeMediaItemAt(int row)
{
    int foundAt = m_playlistIndices.indexOf(row);
    if (foundAt != -1) {
        m_playlistIndices.removeAt(foundAt);
    }
    foundAt = m_queue->rowOfUrl(m_currentPlaylist->mediaItemAt(row).url);
    if (foundAt != -1) {
        m_queue->removeMediaItemAt(foundAt);
    }
    foundAt = m_playlistIndicesHistory.indexOf(row);
    if (foundAt != -1) {
        m_playlistIndicesHistory.removeAt(foundAt);
        m_playlistUrlHistory.removeAt(foundAt);
    }
    m_currentPlaylist->removeMediaItemAt(row);
}

void Playlist::clearPlaylist()
{
    m_currentPlaylist->clearMediaListData();
    m_queue->clearMediaListData();
    m_nowPlaying->clearMediaListData();
    m_playlistIndices.clear();
    m_playlistIndicesHistory.clear();
    m_playlistUrlHistory.clear();
    m_mediaObject->stop();
}

void Playlist::setMode(int mode)
{
    if (mode <= 1) {
        m_mode = mode;
        m_queue->clearMediaListData();
        m_playlistIndices.clear();
        m_playlistIndicesHistory.clear();
        m_playlistUrlHistory.clear();
        if (m_currentPlaylist->rowCount() > 0) {
            int oldItemRow = -1;
            if (m_nowPlaying->rowCount() > 0) {
                oldItemRow = m_nowPlaying->mediaItemAt(0).playlistIndex;
                m_nowPlaying->removeMediaItemAt(0);
            }
            if (oldItemRow >= 0 and oldItemRow < m_currentPlaylist->rowCount()) {
                //Cycle through true and false to ensure data change forces update
                m_currentPlaylist->item(oldItemRow,0)->setData(true, MediaItem::NowPlayingRole);
                m_currentPlaylist->item(oldItemRow,0)->setData(false, MediaItem::NowPlayingRole);
            }
            for (int i = 0; i < m_currentPlaylist->rowCount(); ++i) {
                m_playlistIndices.append(i);
            }
            if (m_mode == Playlist::Normal) {
                orderByPlaylist();
            } else if (m_mode == Playlist::Shuffle) {
                shuffle();
            }
            if (m_mediaObject->state() == Phonon::PlayingState) {
                playItemAt(0, Playlist::QueueModel);
            } else {
                m_mediaObject->stop();
            }
        }
    }
}

int Playlist::mode()
{
    return m_mode;
}

void Playlist::setRepeat(bool repeat)
{
    m_repeat = repeat;
}


//----------------------------------------
//--- Media Object/Controller SLOTS    ---
//----------------------------------------

void Playlist::queueNextPlaylistItem() // connected to MediaObject::aboutToFinish()
{
    //NOTE:This is the handler for the aboutToFinish signal from the mediaObject.
    //The aboutToFinish signal is only emitted when setAutoplayTitles is false.
    //i.e. This slot is only called when the next mediaItem is not the next title
    // on a disc (a different title or a new url).
    
    addToQueue();
    if (m_queue->rowCount() == 1) {
        //Playlist is finished
        m_playlistFinished = true;        
    }
    if (m_queue->rowCount() > 1) {
        m_queue->removeMediaItemAt(0);
        //Load next queued item
        MediaItem nextMediaItem = m_queue->mediaItemAt(0);
        if (nextMediaItem.fields["audioType"].toString() == "CD Track") {
            QList<Phonon::MediaSource> queue;
            queue << Phonon::MediaSource(Phonon::Cd);
            m_mediaObject->setQueue(queue);
        } else if (nextMediaItem.fields["videoType"].toString() == "DVD Title") {
            QList<Phonon::MediaSource> queue;
            queue << Phonon::MediaSource(Phonon::Dvd);
            m_mediaObject->setQueue(queue);
        } else {
            QPixmap artwork = Utilities::getArtworkFromTag(nextMediaItem.url);
            if (!artwork.isNull()) {
                nextMediaItem.artwork = KIcon(artwork);
            }
            QList<QUrl> queue;
            queue << QUrl(nextMediaItem.url);
            m_mediaObject->setQueue(queue);
        }
        m_nowPlaying->loadMediaItem(nextMediaItem);
    }
    
}

void Playlist::currentSourceChanged(const Phonon::MediaSource & newSource) //connected to MediaObject::currentSourceChanged
{
    //Check next mediaItem to decide how to setAutoplayTitles
    if ((newSource.discType() == Phonon::Cd) || (newSource.discType() == Phonon::Dvd)){
        if (m_queue->rowCount() > 1) {
            if ((m_queue->mediaItemAt(1).url.startsWith("CDTRACK")) || (m_queue->mediaItemAt(1).url.startsWith("DVDTRACK"))) {
                if (m_queue->mediaItemAt(1).fields["trackNumber"].toInt() == m_mediaController->currentTitle() + 1) {
                   m_mediaController->setAutoplayTitles(true);
                } else {
                   m_mediaController->setAutoplayTitles(false);
                }
            }
        }
    } 
    if (newSource.discType() == Phonon::NoDisc) {
        updateNowPlaying();
    }
}

void Playlist::titleChanged(int newTitle) //connected to MediaController::titleChanged
{
    //TODO:Confirm that titleChanged signal is not emitted for first track on cd
    if ((m_queue->rowCount() > 1)) {
        MediaItem mediaItem = m_queue->mediaItemAt(1);
        if (mediaItem.fields["trackNumber"].toInt() == newTitle) {
            m_queue->removeMediaItemAt(0);
            m_nowPlaying->loadMediaItem(mediaItem);
        }
    }
    updateNowPlaying();
}

void Playlist::confirmPlaylistFinished() //connected to MediaObject::finished()
{
    if (m_playlistFinished) {
        //Refresh playlist model to ensure views get updated
        int row = -1;
        if (m_nowPlaying->rowCount() > 0) {
            row = m_nowPlaying->mediaItemAt(0).playlistIndex;
        }
        if ((row >= 0) && (row < m_currentPlaylist->rowCount())) {
            m_currentPlaylist->item(row,0)->setData(true, MediaItem::NowPlayingRole);
            m_currentPlaylist->item(row,0)->setData(false, MediaItem::NowPlayingRole);
        }
        
        //Clear nowPlaying and queue and emit playlistFinished
        m_nowPlaying->removeMediaItemAt(0);
        m_queue->removeMediaItemAt(0);
        emit playlistFinished();
    }
}

//--------------------------------
//--- MediaItemModel SLOTS     ---
//--------------------------------
void Playlist::playlistChanged()
{
    if (playWhenPlaylistChanges && m_currentPlaylist->rowCount() > 0) {
        //Start playing with clean playlist, queue and history
        start();
        playWhenPlaylistChanges = false;
    } else if (m_currentPlaylist->rowCount() > 0){
        //if playlist mode is normal (sequential)
        // - rebuild history to just before currently playing/paused url
        // - rebuild queue from currently playing item to queue depth
        // - rebuild playlist indices using remaining items
        if (m_mode == Playlist::Normal) {
            int currentRow = 0;
            if ((m_mediaObject->state() == Phonon::PlayingState) || (m_mediaObject->state() == Phonon::PausedState)) {
                //Starting with the currently playing item, check to see if item
                //is in the new playlist. If not continue through the existing queue
                //until an item is found in the playlist.
                for (int i = 0; i < m_queue->rowCount(); i++) {
                    QString url = m_queue->mediaItemAt(i).url;
                    currentRow = m_currentPlaylist->rowOfUrl(url);
                    if (currentRow != -1) {
                        break;
                    }
                }
            } else {
                currentRow = 0;
            }
            buildQueueFrom(currentRow);
        } else {
            //if playlist mode is shuffle
            // - remove from history any items NOT in the current playlistChanged
            // - remove from queue any items NOT in the current playlistChanged
            // - rebuild playlist indices using remaining items
            // - add items to queu to fill queue depth
            QList<QString> oldPlaylistUrlHistory = m_playlistUrlHistory;
            m_playlistIndicesHistory.clear();
            m_playlistUrlHistory.clear();
            for (int i = 0; i < oldPlaylistUrlHistory.count(); i++) {
                int rowOfUrl = m_currentPlaylist->rowOfUrl(oldPlaylistUrlHistory.at(i));
                if (rowOfUrl != -1) {
                    m_playlistIndicesHistory.append(rowOfUrl);
                    m_playlistUrlHistory.append(oldPlaylistUrlHistory.at(i));
                }
            }
            
            QList<MediaItem> newQueueMediaList;
            for (int i = 0; i < m_queue->rowCount(); i++) {
                MediaItem mediaItem = m_queue->mediaItemAt(i);
                QString urlToSearch = mediaItem.url;
                int rowOfUrl = m_currentPlaylist->rowOfUrl(urlToSearch);
                if (rowOfUrl != -1) {
                    newQueueMediaList.append(mediaItem);
                }
            }
            m_queue->clearMediaListData();
            m_queue->loadMediaList(newQueueMediaList);
            
            m_playlistIndices.clear();
            for (int i = 0; i < m_currentPlaylist->rowCount(); i++) {
                if (m_playlistIndicesHistory.indexOf(i) == -1) {
                    MediaItem mediaItem = m_queue->mediaItemAt(i);
                    QString urlToSearch = mediaItem.url;
                    int rowOfUrl = m_queue->rowOfUrl(urlToSearch);
                    if (rowOfUrl == -1) {
                        m_playlistIndices.append(rowOfUrl);
                    }
                }
            }
            
            for (int i = m_queue->rowCount(); i < m_queueDepth; i++) {
                addToQueue();
            }
            
        }
        
        //if currently playing url is not at front of queueMediaList
        // stop playing and play item at front of queue
        if ((m_mediaObject->state() == Phonon::PlayingState) || (m_mediaObject->state() == Phonon::PausedState)) {
            QString currentUrl;
            if (m_mediaObject->currentSource().discType() == Phonon::Cd) {
                currentUrl = QString("CDTRACK%1").arg(m_mediaController->currentTitle());
            } else if (m_mediaObject->currentSource().discType() == Phonon::Dvd) {
                currentUrl = QString("DVDTRACK%1").arg(m_mediaController->currentTitle());
            } else {
                currentUrl = m_mediaObject->currentSource().url().toString();
            }
            if (currentUrl != m_queue->mediaItemAt(0).url) {
                m_mediaObject->stop();
                playItemAt(0, Playlist::QueueModel);
            }
        }
    }
}

//--------------------------------
//--- Private Methods          ---
//--------------------------------

void Playlist::updateNowPlaying()
{
    //ACTUALLY UPDATE THE NOW PLAYING VIEW HERE!
    //THIS SHOULD BE THE ONLY PLACE THAT UPDATES THE NOW PLAYING VIEW!
    
    //Get row of previously playing item and add to history
    MediaItem mediaItem = m_nowPlaying->mediaItemAt(0);
    bool itemIsMedia = false;
    if ((mediaItem.type == "Audio") || (mediaItem.type == "Video") || (mediaItem.type == "Image")) {
        itemIsMedia = true;
    }
    
    bool itemIsStale = true;
    if (itemIsMedia) {
        if ((mediaItem.fields["audioType"].toString() == "CD Track") || (mediaItem.fields["videoType"].toString() == "DVD Title")) {
            if (mediaItem.fields["trackNumber"].toInt() == m_mediaController->currentTitle()) {
                itemIsStale = false;
            }
        } else {
            if (QUrl(mediaItem.url) == m_mediaObject->currentSource().url()) {
                itemIsStale = false;
            }
        }
    }
        
    int oldItemRow = -1;
    if (itemIsStale) {
        if (itemIsMedia) {
            oldItemRow = m_nowPlaying->mediaItemAt(0).playlistIndex;
            m_playlistIndicesHistory.append(oldItemRow);
            m_playlistUrlHistory.append(m_currentPlaylist->mediaItemAt(oldItemRow).url);
        }
        //Update Now Playing view
        m_nowPlaying->removeMediaItemAt(0, true); //remove old now playing item
    }
    
    //Refresh playlist model to ensure views get updated
    int row = -1;
    if (m_nowPlaying->rowCount() > 0) {
        row = m_nowPlaying->mediaItemAt(0).playlistIndex;
    }
    if ((row >= 0) && (row < m_currentPlaylist->rowCount())) {
        m_currentPlaylist->item(row,0)->setData(false, MediaItem::NowPlayingRole);
        m_currentPlaylist->item(row,0)->setData(true, MediaItem::NowPlayingRole);
    }
    if (oldItemRow != row && oldItemRow >= 0 and oldItemRow < m_currentPlaylist->rowCount()) {
        //Cycle through true and false to ensure data change forces update
        m_currentPlaylist->item(oldItemRow,0)->setData(true, MediaItem::NowPlayingRole);
        m_currentPlaylist->item(oldItemRow,0)->setData(false, MediaItem::NowPlayingRole);
    }
    
    if (m_mediaObject->currentSource().discType() == Phonon::Cd) {
        //m_mediaController->setCurrentTitle(m_nowPlaying->mediaItemAt(0).fields["trackNumber"].toInt());
    } else if (m_mediaObject->currentSource().discType() == Phonon::Dvd) {
        //m_mediaController->setCurrentTitle(m_nowPlaying->mediaItemAt(0).fields["trackNumber"].toInt());
    } else {
        //Update last played date and play count
        MediaVocabulary mediaVocabulary = MediaVocabulary();
        Nepomuk::Resource res(m_nowPlaying->mediaItemAt(0).url);
        if (res.exists()) {
            res.setProperty(mediaVocabulary.lastPlayed(), Nepomuk::Variant(QDateTime::currentDateTime()));
            int playCount = res.property(mediaVocabulary.playCount()).toInt();
            playCount = playCount + 1;
            res.setProperty(mediaVocabulary.playCount(), Nepomuk::Variant(playCount));        
        }
    }
}

void Playlist::shuffle()
{
    m_queue->clearMediaListData();
    srand((unsigned)time(0));
    for (int i = 0; i < qMin(m_queueDepth, m_currentPlaylist->rowCount()); ++i) {
        addToQueue();
    }
}

void Playlist::orderByPlaylist()
{
    m_queue->clearMediaListData();
    for (int i = 0; i < qMin(m_queueDepth, m_currentPlaylist->rowCount()); ++i) {
        addToQueue();
    }
}

void Playlist::addToQueue()
{
    if ((m_playlistIndices.count() == 0) && (m_repeat)) {
        for (int i = 0; i < m_currentPlaylist->rowCount(); ++i) {
            m_playlistIndices.append(i);
        }
    }
    if (m_playlistIndices.count() > 0) {
        if (m_mode == Playlist::Normal) {
            int nextIndex = m_playlistIndices.takeAt(0);
            MediaItem nextMediaItem = m_currentPlaylist->mediaItemAt(nextIndex);
            nextMediaItem.playlistIndex = nextIndex;
            m_queue->loadMediaItem(nextMediaItem);
        } else if (m_mode == Playlist::Shuffle) {
            int nextIndex = m_playlistIndices.takeAt(rand()%m_playlistIndices.count());
            MediaItem nextMediaItem = m_currentPlaylist->mediaItemAt(nextIndex);
            nextMediaItem.playlistIndex = nextIndex;
            m_queue->loadMediaItem(nextMediaItem);
        }
    }
}

void Playlist::buildQueueFrom(int playlistRow)
{
    if (playlistRow < m_currentPlaylist->rowCount()) {
        m_playlistIndices.clear();
        m_playlistIndicesHistory.clear();
        m_playlistUrlHistory.clear();
        m_queue->clearMediaListData();
        for (int i = 0; i < playlistRow; ++i) {
            m_playlistIndicesHistory.append(i);
            m_playlistUrlHistory.append(m_currentPlaylist->mediaItemAt(i).url);
        }
        createUrlHistoryFromIndices();
        int lastRowOfQueue = 0;
        for (int j = playlistRow; j < qMin(playlistRow + m_queueDepth, m_currentPlaylist->rowCount()); ++j) {
            MediaItem nextMediaItem = m_currentPlaylist->mediaItemAt(j);
            nextMediaItem.playlistIndex = j;
            m_queue->loadMediaItem(nextMediaItem);
            lastRowOfQueue = j;
        }
        for (int k = lastRowOfQueue + 1; k < m_currentPlaylist->rowCount(); ++k) {
            m_playlistIndices.append(k);
        }
    }   
}

void Playlist::createUrlHistoryFromIndices()
{
    m_playlistUrlHistory.clear();
    for (int i = 0; i < m_playlistIndicesHistory.count(); i++) {
        m_playlistUrlHistory.append(m_currentPlaylist->mediaItemAt(m_playlistIndicesHistory.at(i)).url);
    }
}

Hors ligne

#195 Le 07/10/2009, à 11:59

moi1392

Re : KDE SC 4.4 est là !

bon, après vérification, y'a pas d'include "Phonon" qui existe, essais de remplacer ça par #include <Phonon/MediaObject> et/ou #include <Phonon/VideoPlayer>

et vérifie bien que les fichiers /usr/include/KDE/Phonon/VideoWidget et/ou /usr/include/KDE/Phonon/MediaObject existent, sinon installe libphonon-dev

PS: c'est pas dit que les deux #include que je t'ai mis suffisent. mais si tu as d'autres erreurs, tu peux les poster ou t'amuser à trouver l'include qui manque wink

Dernière modification par moi1392 (Le 07/10/2009, à 12:00)

Hors ligne

#196 Le 07/10/2009, à 12:02

Emralegna

Re : KDE SC 4.4 est là !

Merci, je vais tenter. wink

Hors ligne

#197 Le 07/10/2009, à 13:22

PhilippeP

Re : KDE SC 4.4 est là !

moi1392 a écrit :

dans dolphin, tu cliques sur ton CD, ou alors dans dolhin/konqueror, tu tapes "audiocd:/" dans la barre d'adresse.

tu verras s'afficher ton album avec des dossier flac/mp3/ogg, tu ouvres le dossier qui te plait, et tu copies les chansons que tu veux sur ton disque dur, ça les encode et les tag à la volée si tu es connecté au net.

par contre, c'est assez lent, même si ça reste très utilisable pour un seul CD, k3b est bien plus rapide si tu dois faire de l'extraction de masse.

C'est KDE qui fait cela ??? Ahhhj bon , j'étais tout étonné de voir du FLAC et du Ogg sur mon CD commercial :-) je comprends mieux ...


Attention, je suis loin d'être un Goubunturou ...
Il m'arrive de me tromper (si si...)
Desktop Kubuntu 12.04 KDE 4.9 SC - Lenovo Ideapad S10 3T Kubuntu 12.04 KDE 4.8 SC

Hors ligne

#198 Le 07/10/2009, à 14:40

moi1392

Re : KDE SC 4.4 est là !

oui c'est kde tongue par contre, moi qui compile à la main, j'ai plus le mp3, faudrait que je vois pourquoi (j'ai bien lame installé). Vous l'avez encore vous ou il a été complètement viré ?

edit : en même temps tu penses bien qu'un truc utile et pratique pour l'utilisateur ne peux pas venir de ces abrutis de l'industrie de la musique (ni même des autres...)

Dernière modification par moi1392 (Le 07/10/2009, à 14:49)

Hors ligne

#199 Le 07/10/2009, à 16:10

Snake046

Re : KDE SC 4.4 est là !

Du nouveau à propos de KGet.

Il supporte maintenant le téléchargement multi-source (reste à voir comment ça s'agence), avec beaucoup de fonctionnalité autour de ce nouveau centre (comme changer en live les sources, tout ça).

En outre (et je suis content je l'avais proposé sur le Brainstorm KDE il y a de cela pas mal de temps), il vérifie maintenant pour chaque nouveau téléchargement l'existence d'un fichier "urlDuFichier.md5" et, quand le md5 existe, vérifie ensuite la validité du fichier et re-télécharge certaines parties ou le fichier entier si celui-ci est invalide.

KGet pourrait bien enfin devenir un utilitaire serviable et agréable pour quiconque télécharge (jusque là, Konqueror et KTorrent s'acquitent bien mieux de la tâche). Ne manque plus que la gestion d'une vitesse maximale de téléchargement choisie par l'utilisateur géré de façon intuitive et accessible rapidement... et KGet deviendra sans aucun doute un logiciel digne de la grandeur de KDE.


Aucun message n'est caché dans cette signature.

Hors ligne

#200 Le 07/10/2009, à 17:19

Heliox

Re : KDE SC 4.4 est là !

Ahh !! un des utilitaires les plus pratiques de KDE4, au fait c'est prévu qu'il supporte un jour la segmentation de fichiers pour accélérer le téléchargement de gros fichiers ? (genre DownThemAll pour Firefox)



Et une autre question bête : Mon processeur peut calibrer sa fréquence d'horloge soit à 1GHz ou 2.4GHz (soit tout ou rien), et le passage de 1->2.4Ghz à cause d'une tache lourde ralentit le système et provoque des lags (graphiques et audios), sous GNome il y avait un petit applet qui permettait de contrôler tout ça manuellement me permettant d'anticiper ces-dits lags, mais je ne retrouve rien de comparable sous KDE4, j'ai essayé différents plasmoïdes mais aucun n'effectue ce que je veux... Si vous avez des idées, merci d'avance big_smile