linphone-desktop/linphone-app/src/components/content/ContentProxyModel.hpp
Julien Wadel 4532e278ac New chat layout :
- Split content type to be filtered by proxy lists.
- Add a message in notification when receiving a conference invitation.
- Change chat bubbles colors to match mobile application.
- Change date display on messages to remove sections. It allows to be more coherent when sorting messages.
- Change Chat Layout : outgoing messages to right, incoming messages to left.
- Change bubble design to be squared when grouped.
- Group messages on 1 second away from previous (and same sender).
- Add a background color with radius to files in reply messages.
- Make color corners on reply.
- Fix filename to 2 lines in file download icon.
- Add a background color on conference invitations.
- Change conference title from bold to normal on invitations.
- Rework chat message content layout to be used with grids and lists : files are now displayed in grid.
- Remove cyclic dependencies with reply design (which was recursivly linked with ChatContent).
- Fix center layouts that were not bind to the correct one.
- Align pictures to center.
- Fix hidden admin usernames in participant view.
2023-03-03 17:09:25 +01:00

77 lines
2.3 KiB
C++

/*
* Copyright (c) 2021 Belledonne Communications SARL.
*
* This file is part of linphone-desktop
* (see https://www.linphone.org).
*
* 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/>.
*/
#ifndef CONTENT_PROXY_MODEL_H_
#define CONTENT_PROXY_MODEL_H_
#include <linphone++/linphone.hh>
// =============================================================================
#include <QObject>
#include <QDateTime>
#include <QString>
#include <QSortFilterProxyModel>
class ContentListModel;
class ContentModel;
class ChatMessageModel;
class ContentProxyModel : public QSortFilterProxyModel {
Q_OBJECT
public:
ContentProxyModel (QObject *parent = nullptr);
Q_PROPERTY(ChatMessageModel * chatMessageModel READ getChatMessageModel WRITE setChatMessageModel NOTIFY chatMessageModelChanged)
Q_PROPERTY(FilterContentType filter READ getFilter WRITE setFilter NOTIFY filterChanged)
enum FilterContentType {
All,
File,
Text,
Voice,
Conference,
Unknown
};
Q_ENUM(FilterContentType)
ChatMessageModel * getChatMessageModel() const;
void setChatMessageModel(ChatMessageModel * message);
FilterContentType getFilter() const;
void setFilter(const FilterContentType& contentType);
Q_INVOKABLE void setContentListModel(ContentListModel * model);
Q_INVOKABLE void addFile(const QString& path);
Q_INVOKABLE void remove(ContentModel * model);
Q_INVOKABLE void clear();
signals:
void chatMessageModelChanged();
void filterChanged();
protected:
virtual bool filterAcceptsRow (int sourceRow, const QModelIndex &sourceParent) const override;
virtual bool lessThan (const QModelIndex &left, const QModelIndex &right) const override;
std::shared_ptr<ContentListModel> mContents;
FilterContentType mFilter = All;
};
#endif