Skip to content
Snippets Groups Projects
Select Git revision
  • 0066be49b90396114442104c9247f6c9974c5c23
  • master default
  • windows_ci_static
  • c_link
  • cpack
  • windows_ci
  • cert_pk_id
  • proxy_push_result
  • cnode_put_id
  • update-windows-build
  • proxy
  • resubscribe_on_token_change
  • actions
  • client_mode
  • llhttp
  • search_node_add
  • crypto_aes_gcm_argon2
  • ios_notifications
  • log_fmt
  • v2asio
  • fix-msvc
  • v3.4.0
  • v3.3.1
  • v3.3.1rc1
  • v3.3.1rc2
  • v3.3.0
  • v3.2.0
  • v3.1.11
  • v3.1.10
  • v3.1.9
  • v3.1.8.2
  • v3.1.8.1
  • v3.1.8
  • v3.1.7
  • v3.1.6
  • v3.1.5
  • v3.1.4
  • v3.1.3
  • v3.1.2
  • v3.1
  • v3.0.1
41 results

pingpong.py

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    imdelegate.cpp 3.68 KiB
    /***************************************************************************
     * Copyright (C) 2015 by Savoir-Faire Linux                                *
     * Author: Edric Ladent Milaret <edric.ladent-milaret@savoirfairelinux.com>*
     *                                                                         *
     * This program is free software; you can redistribute it and/or modify    *
     * it under the terms of the GNU General Public License as published by    *
     * the Free Software Foundation; either version 3 of the License, or       *
     * (at your option) any later version.                                     *
     *                                                                         *
     * This program is distributed in the hope that it will be useful,         *
     * but WITHOUT ANY WARRANTY; without even the implied warranty of          *
     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           *
     * GNU General Public License for more details.                            *
     *                                                                         *
     * You should have received a copy of the GNU General Public License       *
     * along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
     **************************************************************************/
    
    #include "imdelegate.h"
    
    #include "media/text.h"
    #include "media/textrecording.h"
    
    ImDelegate::ImDelegate(QObject *parent)
        : QStyledItemDelegate(parent), showDate_(false), showAuthor_(false)
    {}
    
    void ImDelegate::setDisplayOptions(ImDelegate::DisplayOptions opt)
    {
        qDebug() << opt;
        showAuthor_ = opt & DisplayOptions::AUTHOR;
        showDate_ = opt & DisplayOptions::DATE;
    }
    
    void
    ImDelegate::paint(QPainter *painter,
                      const QStyleOptionViewItem &option,
                      const QModelIndex &index) const
    {
        QStyleOptionViewItemV4 opt = option;
        initStyleOption(&opt, index);
    
        if (index.isValid()) {
    
            auto msg = index.model()->data(index, Qt::DisplayRole).toString();
            opt.text = "";
            QStyle *style = opt.widget ? opt.widget->style() : QApplication::style();
            style->drawControl(QStyle::CE_ItemViewItem, &opt, painter, opt.widget);
            auto rect = opt.rect;
            QPalette::ColorGroup cg = opt.state & QStyle::State_Enabled
                    ? QPalette::Normal : QPalette::Disabled;
            if (cg == QPalette::Normal && !(opt.state & QStyle::State_Active))
                cg = QPalette::Inactive;
            painter->setPen(opt.palette.color(cg, QPalette::Text));
            painter->setOpacity(1.0);
            auto dir = index.model()->data(
                        index,
                        static_cast<int>(Media::TextRecording::Role::Direction))
                    .value<Media::Media::Direction>() == Media::Media::Direction::IN
                    ? Qt::AlignLeft : Qt::AlignRight;
    
            if (showAuthor_) {
                auto author = index.model()->
                        data(index,
                             static_cast<int>(Media::TextRecording::Role::AuthorDisplayname)).toString();
                msg = QString("(%1) %2").arg(author, msg);
            }
            if (showDate_) {
                auto formattedDate = index.model()->
                        data(index,
                             static_cast<int>(Media::TextRecording::Role::FormattedDate)).toString();
                msg = QString("[%1] %2").arg(formattedDate, msg);
            }
            painter->drawText(QRect(rect.left(), rect.top(), rect.width(), rect.height()),
                              dir, msg);
        }
    }
    
    QSize
    ImDelegate::sizeHint(const QStyleOptionViewItem &option,
                         const QModelIndex &index) const
    {
        QSize result = QStyledItemDelegate::sizeHint(option, index);
        result.setHeight(result.height());
        return result;
    }