QSplashScreen *Application::buildSplashScreen() {
	const QPixmap logoPixmap(":/images/logo.png");
	QDesktopWidget *desktop = QApplication::desktop();
	QRect desktopRect = desktop->availableGeometry();
	QPixmap splashPixmap(desktopRect.width(), desktopRect.height());
	QPainter painter;
	painter.begin(&splashPixmap);
	QLinearGradient backgroundGradient(
		splashPixmap.rect().width() / 2, 0,
		splashPixmap.rect().width() / 2, splashPixmap.rect().height());
    backgroundGradient.setColorAt(0, QColor::fromRgb(40, 50, 57));
    backgroundGradient.setColorAt(1, QColor::fromRgb(19, 25, 29));
    painter.fillRect(splashPixmap.rect(), backgroundGradient);
	QRect logoRect((splashPixmap.width() - logoPixmap.width()) / 2,
	               (splashPixmap.height() - logoPixmap.height()) / 2,
	               logoPixmap.width(),
	               logoPixmap.height());
	painter.drawPixmap(logoRect, logoPixmap);
	painter.end();
	QScopedPointer<QSplashScreen> splashScreen(new QSplashScreen(splashPixmap));
	if (desktopRect.width() > desktopRect.height()) {
		splashScreen->setAttribute(Qt::WA_LockLandscapeOrientation, true);
	} else {
		splashScreen->setAttribute(Qt::WA_LockPortraitOrientation, true);
	}
	return splashScreen.take();
}
Example #2
0
void ControlSlider::paintEvent(QPaintEvent * /* event */)
{
	QPainter painter(this);
	painter.setRenderHint(QPainter::Antialiasing);

	/* draw background */
	QBrush brush(backgroundGradient());
	painter.setBrush(brush);
	painter.setPen(Qt::NoPen);
	painter.drawPath(backgroundPath());

	/* draw handle */
	brush = handleGradient();
	painter.setBrush(brush);
	painter.setPen(Qt::NoPen);
	painter.drawPath(handlePath());
}
Example #3
0
void CustomViewStyle::drawPrimitive(PrimitiveElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget) const
{

//![0]
    switch (element) {
        case (PE_PanelItemViewItem): {
            painter->save();

            QPoint topLeft = option->rect.topLeft();
            QPoint bottomRight = option->rect.topRight();
            QLinearGradient backgroundGradient(topLeft, bottomRight);
            backgroundGradient.setColorAt(0.0, QColor(Qt::yellow).lighter(190));
            backgroundGradient.setColorAt(1.0, Qt::white);
            painter->fillRect(option->rect, QBrush(backgroundGradient));

            painter->restore();
        break;
        }
        default:
            QProxyStyle::drawPrimitive(element, option, painter, widget);
    }
//![0]
}
void NickListDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
    // save
    painter->save();

    QString strNicklistNickColor = Settings::instance()->get("nicklist_nick_color");
    QString strNicklistSelectedNickColor = Settings::instance()->get("nicklist_selected_nick_color");
    QString strNicklistBusyNickColor = Settings::instance()->get("nicklist_busy_nick_color");
    QString strNicklistGradient1Color = Settings::instance()->get("nicklist_gradient_1_color");
    QString strNicklistGradient2Color = Settings::instance()->get("nicklist_gradient_2_color");

    QPen fontPen(QColor(strNicklistNickColor), 1, Qt::SolidLine);
    QPen selectedFontPen(QColor(strNicklistSelectedNickColor), 1, Qt::SolidLine);
    QPen busyPen(QColor(strNicklistBusyNickColor), 1, Qt::SolidLine);
    QColor cUserSexMale = QColor("#71A3FF");
    QColor cUserSexFemale = QColor("#FF49BF");
    QColor cUserSexUnknown = QColor("#999999");
    QColor cGradient1 = QColor(strNicklistGradient1Color);
    QColor cGradient2 = QColor(strNicklistGradient2Color);

    int marginLeft = 3;
    int marginRight = 3;

    bool selected;
    if (option.state & QStyle::State_Selected)
    {
        QLinearGradient backgroundGradient(option.rect.left(), option.rect.top(), option.rect.left(), option.rect.bottom());
        backgroundGradient.setColorAt(0.0, cGradient1);
        backgroundGradient.setColorAt(1.0, cGradient2);
        painter->fillRect(option.rect, QBrush(backgroundGradient));
        painter->setPen(selectedFontPen);
        selected = true;
    }
/*
#ifndef Q_OS_WIN
    else if (option.state & QStyle::State_MouseOver)
    {
        painter->fillRect(option.rect, option.palette.highlight());
        painter->setPen(selectedFontPen);
        selected = true;
    }
#endif
*/
    else
    {
        painter->setPen(fontPen);
        selected = false;
    }

    QString nick = index.data(Qt::DisplayRole).toString();
    QString modes = index.data(NickListModesRole).toString();
    QString userAvatar = index.data(NickListAvatarUrlRole).toString();
    QChar userSex = index.data(NickListSexRole).toChar();
    QString channel = index.data(NickListChannelRole).toString();

    bool busy = false;
    bool statusIcons = true;

    QList<QIcon> icons;
    if (modes.contains(FLAG_BUSY)) { busy = true; }
    if ((modes.contains(FLAG_CAM_PRIV)) && (channel.at(0) == '^')) { icons << QIcon(":/images/privcam.png"); }
    if (modes.contains(FLAG_CAM_PUB)) { icons << QIcon(":/images/pubcam.png"); }
    if (modes.contains(FLAG_VOICE)) { icons << QIcon(":/images/voice.png"); }
    if (modes.contains(FLAG_SCREENER)) { icons << QIcon(":/images/screener.png"); }
    if (modes.contains(FLAG_MOD)) { icons << QIcon(":/images/mod.png"); }
    if (modes.contains(FLAG_HALFOP)) { icons << QIcon(":/images/halfop.png"); }
    if (modes.contains(FLAG_OP)) { icons << QIcon(":/images/op.png"); }
    if (modes.contains(FLAG_OWNER)) { icons << QIcon(":/images/owner.png"); }

    if (modes.contains(FLAG_DEV)) { icons << QIcon(":/images/dev.png"); }
    else if (modes.contains(FLAG_BOT)) { icons << QIcon(":/images/bot.png"); }
    else if (modes.contains(FLAG_ADMIN)) { icons << QIcon(":/images/admin.png"); }

    // avatar
    if (Themes::instance()->isCurrentWithNicklistAvatar())
    {
        // is valid avatar
        if (userAvatar.isEmpty())
        {
            if (nick.at(0) == '~')
                userAvatar = Avatar::instance()->getEmptyUnregisteredUserAvatar();
            else
                userAvatar = Avatar::instance()->getEmptyRegisteredUserAvatar();
        }
        else
            userAvatar = Avatar::instance()->getAvatarPath(userAvatar);

        QIcon avatar(userAvatar);

        int x = option.rect.left();
        int y = option.rect.top();
        int w = 35;
        int h = 35;
        avatar.paint(painter, x, y, w, h);
    }

    // sex
    if ((nick.at(0) != '~') && (Themes::instance()->isCurrentWithNicklistAvatar()))
    {
        if (userSex == USER_SEX_MALE || userSex == USER_SEX_FEMALE)
        {
            QColor cSexColor;

            if (userSex == USER_SEX_MALE) cSexColor = cUserSexMale;
            else if (userSex == USER_SEX_FEMALE) cSexColor = cUserSexFemale;
            else cSexColor = cUserSexUnknown;

            QRect rect = option.rect;

            int x = rect.x()+35+2;
            int y = rect.top()+1;
            int w = 2;
            int h = 35-2;
        
            painter->fillRect(x, y, w, h, cSexColor);
        }
    }

    // nick
    if (Themes::instance()->isCurrentWithNicklistAvatar())
    {
        QRect rect = option.rect;

        // with avatars
        if ((busy) && (!selected)) painter->setPen(busyPen); // gray

        QFont font = option.font;
        font.setWeight(busy ? QFont::Light : QFont::Normal);
        font.setItalic(busy ? true : false);
        painter->setFont(font);

        if (nick.at(0) != '~') rect.setX(rect.x()+35+5+5);
        else rect.setX(rect.x()+35+5);
        painter->drawText(rect, Qt::AlignVCenter | Qt::AlignLeft, nick);
    }
    else
    {
        QRect rect = option.rect;
        rect.setX(rect.x() + marginLeft);

        // without avatars
        if ((busy) && (!selected)) painter->setPen(busyPen); // gray

        QFont font = option.font;
        font.setWeight(busy ? QFont::Light : QFont::Normal);
        font.setItalic(busy ? true : false);
        painter->setFont(font);

        painter->drawText(rect, Qt::AlignVCenter | Qt::AlignLeft, nick);
    }

    // status icons
    if (statusIcons)
    {
        QRect rect = option.rect;
        rect.setX(rect.right() - marginRight);

        foreach (const QIcon &icon, icons)
        {
            rect.setX(rect.x() - 16);
            icon.paint(painter, rect, Qt::AlignVCenter | Qt::AlignAbsolute, QIcon::Normal, QIcon::On);
        }
    }