#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
}