#include "browser.h"
 #include "albumview.h"
 #include "artistview.h"
 #include "photoview.h"
 #include "songview.h"
 #include "qdocumentgallery.h"
 #include <QtGui>
 Browser::Browser(QWidget *parent, Qt::WindowFlags flags)
     : QMainWindow(parent, flags)
     , gallery(0)
     , stack(0)
     , artistView(0)
     , albumArtistView(0)
     , albumView(0)
     , songView(0)
     , photoView(0)
 {
     gallery = new QDocumentGallery;
     artistView = new ArtistView(QDocumentGallery::Artist, gallery);
     connect(artistView, SIGNAL(showAlbums(QVariant,QString)),
             this, SLOT(showAlbums(QVariant,QString)));
     connect(artistView, SIGNAL(showSongs(QVariant,QString)),
             this, SLOT(showSongs(QVariant,QString)));
     albumArtistView = new ArtistView(QDocumentGallery::AlbumArtist, gallery);
     connect(albumArtistView, SIGNAL(showAlbums(QVariant,QString)),
             this, SLOT(showAlbums(QVariant,QString)));
     connect(albumArtistView, SIGNAL(showSongs(QVariant,QString)),
             this, SLOT(showSongs(QVariant,QString)));
     albumView = new AlbumView(gallery);
     connect(albumView, SIGNAL(showSongs(QVariant,QString)),
             this, SLOT(showSongs(QVariant,QString)));
     songView = new SongView(gallery);
     photoView = new PhotoView(gallery);
     stack = new QStackedWidget;
     stack->addWidget(artistView);
     stack->addWidget(albumArtistView);
     stack->addWidget(albumView);
     stack->addWidget(songView);
     stack->addWidget(photoView);
     menuBar()->addAction(tr("Artists"), this, SLOT(showArtists()));
     menuBar()->addAction(tr("Album Artists"), this, SLOT(showAlbumArtists()));
     menuBar()->addAction(tr("Albums"), this, SLOT(showAlbums()));
     menuBar()->addAction(tr("Songs"), this, SLOT(showSongs()));
     menuBar()->addAction(tr("Photos"), this, SLOT(showPhotos()));
     setCentralWidget(stack);
 #ifdef Q_WS_MAEMO_5
     setAttribute(Qt::WA_Maemo5StackedWindow);
 #endif
 }
 Browser::~Browser()
 {
 }
 void Browser::showArtists()
 {
     showView(artistView, tr("Artists"));
 }
 void Browser::showArtists(const QVariant &containerId, const QString &title)
 {
 #ifdef Q_WS_MAEMO_5
     ArtistView *artistView = new ArtistView(QDocumentGallery::Artist, gallery);
     connect(artistView, SIGNAL(showAlbums(QVariant,QString)),
             this, SLOT(showAlbums(QVariant,QString)));
     connect(artistView, SIGNAL(showSongs(QVariant,QString)),
             this, SLOT(showSongs(QVariant,QString)));
 #endif
     showView(artistView, containerId, title);
 }
 void Browser::showAlbumArtists()
 {
     showView(albumArtistView, tr("Album Artists"));
 }
 void Browser::showAlbumArtists(const QVariant &containerId, const QString &title)
 {
 #ifdef Q_WS_MAEMO_5
     ArtistView *albumArtistView = new ArtistView(QDocumentGallery::AlbumArtist, gallery);
     connect(albumArtistView, SIGNAL(showAlbums(QVariant,QString)),
             this, SLOT(showAlbums(QVariant,QString)));
     connect(albumArtistView, SIGNAL(showSongs(QVariant,QString)),
             this, SLOT(showSongs(QVariant,QString)));
 #endif
     showView(albumArtistView, containerId, title);
 }
 void Browser::showAlbums()
 {
     showView(albumView, tr("Albums"));
 }
 void Browser::showAlbums(const QVariant &containerId, const QString &title)
 {
 #ifdef Q_WS_MAEMO_5
     AlbumView *albumView = new AlbumView(gallery);
     connect(albumView, SIGNAL(showSongs(QVariant,QString)),
             this, SLOT(showSongs(QVariant,QString)));
 #endif
     showView(albumView, containerId, title);
 }
 void Browser::showSongs()
 {
     showView(songView, tr("Songs"));
 }
 void Browser::showSongs(const QVariant &containerId, const QString &title)
 {
 #ifdef Q_WS_MAEMO_5
     SongView *songView = new SongView(gallery);
 #endif
     showView(songView, containerId, title);
 }
 void Browser::showPhotos()
 {
     showView(photoView, tr("Photos"));
 }
 void Browser::showPhotos(const QVariant &containerId, const QString &title)
 {
 #ifdef Q_WS_MAEMO_5
     PhotoView *photoView = new PhotoView(gallery);
 #endif
     showView(photoView, containerId, title);
 }
 void Browser::showView(GalleryView *view, const QString &title)
 {
     view->showChildren(QVariant());
     stack->setCurrentWidget(view);
     setWindowTitle(title);
 }
 void Browser::showView(GalleryView *view, const QVariant &containerId, const QString &title)
 {
     view->showChildren(containerId);
 #ifdef Q_WS_MAEMO_5
     QWidget *parent = qobject_cast<QWidget *>(sender());
     if (parent)
         view->setParent(parent->window(), Qt::Window);
     view->setAttribute(Qt::WA_Maemo5StackedWindow);
     view->setAttribute(Qt::WA_DeleteOnClose);
     view->setWindowTitle(title);
     view->show();
 #else
     stack->setCurrentWidget(view);
     setWindowTitle(title);
 #endif
 }