Exemple #1
0
ArtistView::ArtistView(QWidget *parent)
    : View(parent)
    , currentSimilarJob(0)
{
    engine=ContextEngine::create(this);
    refreshAction = ActionCollection::get()->createAction("refreshartist", i18n("Refresh Artist Information"), "view-refresh");
    connect(refreshAction, SIGNAL(triggered()), this, SLOT(refresh()));
    connect(engine, SIGNAL(searchResult(QString,QString)), this, SLOT(searchResponse(QString,QString)));
    connect(Covers::self(), SIGNAL(artistImage(Song,QImage,QString)), SLOT(artistImage(Song,QImage,QString)));
    connect(Covers::self(), SIGNAL(coverUpdated(Song,QImage,QString)), SLOT(artistImageUpdated(Song,QImage,QString)));
    connect(text, SIGNAL(anchorClicked(QUrl)), SLOT(show(QUrl)));
    text->setContextMenuPolicy(Qt::CustomContextMenu);
    connect(text, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(showContextMenu(QPoint)));
    setStandardHeader(i18n("Artist"));
   
    int imageHeight=fontMetrics().height()*14;
    int imageWidth=imageHeight*1.5;
    setPicSize(QSize(imageWidth, imageHeight));
    clear();
    if (constCacheAge>0) {
        clearCache();
        QTimer *timer=new QTimer(this);
        connect(timer, SIGNAL(timeout()), this, SLOT(clearCache()));
        timer->start((int)((constCacheAge/2.0)*1000*24*60*60));
    }
}
Exemple #2
0
TitleWidget::TitleWidget(QWidget *p)
    : QWidget(p)
    , controls(0)
{
    QGridLayout *layout=new QGridLayout(this);
    QVBoxLayout *textLayout=new QVBoxLayout(0);
    image=new QLabel(this);
    mainText=new SqueezedTextLabel(this);
    subText=new SqueezedTextLabel(this);
    QLabel *chevron=new QLabel(QChar(Qt::RightToLeft==layoutDirection() ? 0x203A : 0x2039), this);
    QFont f=mainText->font();
    subText->setFont(Utils::smallFont(f));
    f.setBold(true);
    mainText->setFont(f);
    if (f.pixelSize()>0) {
        f.setPixelSize(f.pixelSize()*2);
    } else {
        f.setPointSizeF(f.pointSizeF()*2);
    }
    f.setBold(false);
    chevron->setFont(f);
    int spacing=Utils::layoutSpacing(this);
    mainText->ensurePolished();
    subText->ensurePolished();
    int size=mainText->sizeHint().height()+subText->sizeHint().height()+spacing;
    if (size<72) {
        size=Icon::stdSize(size);
    }
    size=Utils::scaleForDpi(qMax(size, 48));
    image->setFixedSize(size, size);
    setToolTip(i18n("Click to go back"));
    spacing=qMin(4, spacing-1);
    layout->addItem(new QSpacerItem(spacing, spacing), 0, 0, 2, 1);
    layout->addWidget(chevron, 0, 1, 2, 1);
    layout->addWidget(image, 0, 2, 2, 1);
    textLayout->addWidget(mainText);
    textLayout->addWidget(subText);
    layout->addItem(textLayout, 0, 3, 2, 1);
    mainText->installEventFilter(this);
    subText->installEventFilter(this);
    image->installEventFilter(this);
    installEventFilter(this);
    setAttribute(Qt::WA_Hover);
    connect(Covers::self(), SIGNAL(cover(Song,QImage,QString)), this, SLOT(coverRetrieved(Song,QImage,QString)));
    connect(Covers::self(), SIGNAL(coverUpdated(Song,QImage,QString)), this, SLOT(coverRetrieved(Song,QImage,QString)));
    connect(Covers::self(), SIGNAL(artistImage(Song,QImage,QString)), this, SLOT(coverRetrieved(Song,QImage,QString)));
    layout->setContentsMargins(1, 4, 1, 4);
    layout->setSpacing(spacing);
    textLayout->setMargin(0);
    textLayout->setSpacing(spacing);
    mainText->setAlignment(Qt::AlignBottom);
    subText->setAlignment(Qt::AlignTop);
    image->setAlignment(Qt::AlignCenter);
    chevron->setAlignment(Qt::AlignCenter);
    chevron->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::MinimumExpanding);
}
Exemple #3
0
TitleWidget::TitleWidget(QWidget *p)
    : QWidget(p)
    , controls(0)
{
    QGridLayout *layout=new QGridLayout(this);
    QVBoxLayout *textLayout=new QVBoxLayout(0);
    image=new QLabel(this);
    mainText=new SqueezedTextLabel(this);
    subText=new SqueezedTextLabel(this);
    QLabel *chevron=new QLabel(QChar(Qt::RightToLeft==layoutDirection() ? 0x203A : 0x2039), this);
    QFont f=mainText->font();
    subText->setFont(Utils::smallFont(f));
    mainText->setFont(f);
    if (f.pixelSize()>0) {
        f.setPixelSize(f.pixelSize()*2);
    } else {
        f.setPointSizeF(f.pointSizeF()*2);
    }
    QPalette pal=mainText->palette();
    QColor col(mainText->palette().windowText().color());
    col.setAlphaF(0.5);
    pal.setColor(QPalette::WindowText, col);
    subText->setPalette(pal);
    chevron->setFont(f);
    int spacing=Utils::layoutSpacing(this);
    mainText->ensurePolished();
    subText->ensurePolished();
    int size=mainText->sizeHint().height()+subText->sizeHint().height()+spacing;
    if (size<72) {
        size=Icon::stdSize(size);
    }
    int margin=Utils::scaleForDpi(2);
    int pad=Utils::scaleForDpi(8);
    size=qMax(qMax(size, QFontMetrics(mainText->font()).height()+QFontMetrics(subText->font()).height()+spacing), Utils::scaleForDpi(40))+pad;
    image->setFixedSize(size, size);
    setToolTip(i18n("Click to go back"));
    spacing=qMin(4, spacing-1);
    layout->addItem(new QSpacerItem(spacing, spacing), 0, 0, 2, 1);
    layout->addWidget(chevron, 0, 1, 2, 1);
    layout->addWidget(image, 0, 2, 2, 1);
    textLayout->addWidget(mainText);
    textLayout->addWidget(subText);
    layout->addItem(textLayout, 0, 3, 2, 1);
    mainText->installEventFilter(this);
    subText->installEventFilter(this);
    image->installEventFilter(this);
    installEventFilter(this);
    setAttribute(Qt::WA_Hover);
    connect(Covers::self(), SIGNAL(cover(Song,QImage,QString)), this, SLOT(coverRetrieved(Song,QImage,QString)));
    connect(Covers::self(), SIGNAL(coverUpdated(Song,QImage,QString)), this, SLOT(coverRetrieved(Song,QImage,QString)));
    connect(Covers::self(), SIGNAL(artistImage(Song,QImage,QString)), this, SLOT(coverRetrieved(Song,QImage,QString)));
    layout->setMargin(margin);
    layout->setSpacing(spacing);
    textLayout->setMargin(0);
    textLayout->setSpacing(spacing);
    mainText->setAlignment(Qt::AlignBottom);
    subText->setAlignment(Qt::AlignTop);
    image->setAlignment(Qt::AlignCenter);
    chevron->setAlignment(Qt::AlignCenter);
    chevron->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::MinimumExpanding);
    if (-1==twHeight) {
        ToolButton tb;
        twHeight=qMax((tb.iconSize().height()*2)+pad, size)+(2*margin);
    }
    setFixedHeight(twHeight);
}