mirror of
https://gitlab.linphone.org/BC/public/linphone-desktop.git
synced 2026-01-27 16:59:21 +00:00
Meeting List rework, Better fonts, ui fixes
This commit is contained in:
parent
8eb0e5cff9
commit
a031282032
106 changed files with 558 additions and 172 deletions
|
|
@ -79,21 +79,34 @@ add_subdirectory(model)
|
|||
add_subdirectory(view)
|
||||
add_subdirectory(core)
|
||||
|
||||
#fonts.qrc is in data and not in data/font because we want to use 'font' in path and not in prefix.
|
||||
#TODO make prefix working
|
||||
set(_LINPHONEAPP_FONTS_FILES)
|
||||
qt6_add_big_resources(_LINPHONEAPP_FONTS_FILES data/fonts.qrc)
|
||||
|
||||
# Have big_resource.qrc treated as a source file by Qt Creator
|
||||
list(APPEND _LINPHONEAPP_FONTS_FILES data/fonts.qrc)
|
||||
set_property(SOURCE data/fonts.qrc PROPERTY SKIP_AUTORCC ON)
|
||||
|
||||
qt6_add_executable(Linphone
|
||||
${_LINPHONEAPP_SOURCES}
|
||||
${_LINPHONEAPP_FONTS_FILES}
|
||||
)
|
||||
|
||||
set_source_files_properties(${_LINPHONEAPP_QML_SINGLETONS} PROPERTIES QT_QML_SINGLETON_TYPE TRUE)
|
||||
|
||||
|
||||
qt6_add_qml_module(Linphone
|
||||
URI Linphone
|
||||
RESOURCE_PREFIX ""
|
||||
VERSION 1.0
|
||||
QML_FILES ${_LINPHONEAPP_QML_FILES} ${_LINPHONEAPP_QML_SINGLETONS}
|
||||
RESOURCES data/fonts.qrc
|
||||
)
|
||||
|
||||
qt6_add_resources(Linphone "resources" PREFIX "/" FILES ${_LINPHONEAPP_RC_FILES})
|
||||
|
||||
|
||||
################################################################
|
||||
# TARGETS LINKS
|
||||
################################################################
|
||||
|
|
|
|||
|
|
@ -23,7 +23,9 @@
|
|||
#include "App.hpp"
|
||||
|
||||
#include <QCoreApplication>
|
||||
#include <QDirIterator>
|
||||
#include <QFileSelector>
|
||||
#include <QFontDatabase>
|
||||
#include <QGuiApplication>
|
||||
#include <QLibraryInfo>
|
||||
#include <QQmlComponent>
|
||||
|
|
@ -77,6 +79,14 @@ App::App(int &argc, char *argv[])
|
|||
auto ignoreVSync = QSurfaceFormat::defaultFormat();
|
||||
ignoreVSync.setSwapInterval(0);
|
||||
QSurfaceFormat::setDefaultFormat(ignoreVSync);
|
||||
qInfo() << "Loading Fonts";
|
||||
QDirIterator it(":/font/", QDirIterator::Subdirectories);
|
||||
while (it.hasNext()) {
|
||||
QString ttf = it.next();
|
||||
// qDebug() << ttf;
|
||||
auto id = QFontDatabase::addApplicationFont(ttf);
|
||||
}
|
||||
|
||||
//-------------------
|
||||
mLinphoneThread = new Thread(this);
|
||||
init();
|
||||
|
|
|
|||
|
|
@ -57,6 +57,7 @@ ConferenceInfoCore::ConferenceInfoCore(std::shared_ptr<linphone::ConferenceInfo>
|
|||
if (conferenceInfo) {
|
||||
mustBeInLinphoneThread(getClassName());
|
||||
mConferenceInfoModel = Utils::makeQObject_ptr<ConferenceInfoModel>(conferenceInfo);
|
||||
mHaveModel = true;
|
||||
auto confSchedulerModel = mConferenceInfoModel->getConferenceScheduler();
|
||||
if (!confSchedulerModel) {
|
||||
auto confScheduler = CoreModel::getInstance()->getCore()->createConferenceScheduler();
|
||||
|
|
@ -108,7 +109,6 @@ ConferenceInfoCore::ConferenceInfoCore(std::shared_ptr<linphone::ConferenceInfo>
|
|||
auto cleanedClonedAddress = accountAddress->clone();
|
||||
cleanedClonedAddress->clean();
|
||||
mOrganizerAddress = Utils::coreStringToAppString(cleanedClonedAddress->asStringUriOnly());
|
||||
qDebug() << "set organizer address" << mOrganizerAddress;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
@ -126,6 +126,7 @@ ConferenceInfoCore::ConferenceInfoCore(const ConferenceInfoCore &conferenceInfoC
|
|||
mUri = conferenceInfoCore.mUri;
|
||||
mParticipants = conferenceInfoCore.mParticipants;
|
||||
mTimeZoneModel = conferenceInfoCore.mTimeZoneModel;
|
||||
mHaveModel = conferenceInfoCore.mHaveModel;
|
||||
mIsScheduled = conferenceInfoCore.mIsScheduled;
|
||||
mIsEnded = conferenceInfoCore.mIsEnded;
|
||||
mInviteMode = conferenceInfoCore.mInviteMode;
|
||||
|
|
@ -343,6 +344,17 @@ QString ConferenceInfoCore::getUri() const {
|
|||
return mUri;
|
||||
}
|
||||
|
||||
bool ConferenceInfoCore::getHaveModel() const {
|
||||
return mHaveModel;
|
||||
}
|
||||
|
||||
void ConferenceInfoCore::setHaveModel(const bool &haveModel) {
|
||||
if (mHaveModel != haveModel) {
|
||||
mHaveModel = haveModel;
|
||||
emit haveModelChanged();
|
||||
}
|
||||
}
|
||||
|
||||
bool ConferenceInfoCore::isScheduled() const {
|
||||
return mIsScheduled;
|
||||
}
|
||||
|
|
@ -578,6 +590,7 @@ void ConferenceInfoCore::save() {
|
|||
} else qCritical() << "No contact address";
|
||||
} else qCritical() << "No default account";
|
||||
mConferenceInfoModel = Utils::makeQObject_ptr<ConferenceInfoModel>(linphoneConf);
|
||||
setHaveModel(true);
|
||||
// mConferenceInfoModel->createConferenceScheduler();
|
||||
auto confSchedulerModel = mConferenceInfoModel->getConferenceScheduler();
|
||||
if (!confSchedulerModel) {
|
||||
|
|
|
|||
|
|
@ -51,10 +51,13 @@ public:
|
|||
Q_PROPERTY(QString subject READ getSubject WRITE setSubject NOTIFY subjectChanged)
|
||||
Q_PROPERTY(QString description READ getDescription WRITE setDescription NOTIFY descriptionChanged)
|
||||
Q_PROPERTY(QString uri READ getUri NOTIFY uriChanged)
|
||||
|
||||
Q_PROPERTY(bool haveModel READ getHaveModel NOTIFY haveModelChanged)
|
||||
Q_PROPERTY(bool isScheduled READ isScheduled WRITE setIsScheduled NOTIFY isScheduledChanged)
|
||||
Q_PROPERTY(bool isEnded READ isEnded WRITE setIsEnded NOTIFY isEndedChanged)
|
||||
Q_PROPERTY(int inviteMode READ getInviteMode WRITE setInviteMode NOTIFY inviteModeChanged)
|
||||
Q_PROPERTY(int participantCount READ getParticipantCount NOTIFY participantsChanged)
|
||||
|
||||
Q_PROPERTY(QVariantList participants READ getParticipants NOTIFY participantsChanged)
|
||||
Q_PROPERTY(LinphoneEnums::ConferenceInfoState state READ getConferenceInfoState NOTIFY conferenceInfoStateChanged)
|
||||
Q_PROPERTY(LinphoneEnums::ConferenceSchedulerState schedulerState READ getConferenceSchedulerState NOTIFY
|
||||
|
|
@ -82,6 +85,8 @@ public:
|
|||
QString getSubject() const;
|
||||
QString getDescription() const;
|
||||
QString getUri() const;
|
||||
bool getHaveModel() const;
|
||||
void setHaveModel(const bool &haveModel);
|
||||
bool isScheduled() const;
|
||||
void setIsScheduled(const bool &on);
|
||||
bool computeIsEnded() const;
|
||||
|
|
@ -148,6 +153,7 @@ signals:
|
|||
void descriptionChanged();
|
||||
void participantsChanged();
|
||||
void uriChanged();
|
||||
void haveModelChanged();
|
||||
void isScheduledChanged();
|
||||
void isEndedChanged();
|
||||
void inviteModeChanged();
|
||||
|
|
@ -182,6 +188,7 @@ private:
|
|||
LinphoneEnums::ConferenceSchedulerState mConferenceSchedulerState;
|
||||
LinphoneEnums::ConferenceInfoState mConferenceInfoState =
|
||||
LinphoneEnums::ConferenceInfoState::ConferenceInfoStateNew;
|
||||
bool mHaveModel = false;
|
||||
bool mIsScheduled;
|
||||
bool mIsEnded = false;
|
||||
QTimer mCheckEndTimer;
|
||||
|
|
|
|||
|
|
@ -57,6 +57,7 @@ void ConferenceInfoList::setSelf(QSharedPointer<ConferenceInfoList> me) {
|
|||
mustBeInLinphoneThread(getClassName());
|
||||
std::list<std::shared_ptr<linphone::ConferenceInfo>> conferenceInfos =
|
||||
CoreModel::getInstance()->getCore()->getDefaultAccount()->getConferenceInformationList();
|
||||
items->push_back(nullptr); // Add Dummy conference for today
|
||||
for (auto conferenceInfo : conferenceInfos) {
|
||||
auto confInfoCore = build(conferenceInfo);
|
||||
if (confInfoCore) items->push_back(confInfoCore);
|
||||
|
|
@ -64,7 +65,10 @@ void ConferenceInfoList::setSelf(QSharedPointer<ConferenceInfoList> me) {
|
|||
mCoreModelConnection->invokeToCore([this, items]() {
|
||||
mustBeInMainThread(getClassName());
|
||||
resetData();
|
||||
int currentDateIndex = sort(*items);
|
||||
add(*items);
|
||||
updateHaveCurrentDate();
|
||||
setCurrentDateIndex(mHaveCurrentDate ? currentDateIndex + 1 : currentDateIndex);
|
||||
delete items;
|
||||
});
|
||||
});
|
||||
|
|
@ -108,14 +112,50 @@ void ConferenceInfoList::setSelf(QSharedPointer<ConferenceInfoList> me) {
|
|||
emit lUpdate();
|
||||
}
|
||||
|
||||
bool ConferenceInfoList::haveCurrentDate() const {
|
||||
return mHaveCurrentDate;
|
||||
}
|
||||
|
||||
void ConferenceInfoList::setHaveCurrentDate(bool have) {
|
||||
if (mHaveCurrentDate != have) {
|
||||
mHaveCurrentDate = have;
|
||||
emit haveCurrentDateChanged();
|
||||
}
|
||||
}
|
||||
|
||||
void ConferenceInfoList::updateHaveCurrentDate() {
|
||||
auto today = QDateTime::currentDateTimeUtc().date();
|
||||
for (auto item : mList) {
|
||||
auto model = item.objectCast<ConferenceInfoCore>();
|
||||
if (model && model->getDateTimeUtc().date() == today) {
|
||||
setHaveCurrentDate(true);
|
||||
return;
|
||||
}
|
||||
}
|
||||
setHaveCurrentDate(false);
|
||||
}
|
||||
|
||||
int ConferenceInfoList::getCurrentDateIndex() const {
|
||||
return mCurrentDateIndex;
|
||||
}
|
||||
|
||||
void ConferenceInfoList::setCurrentDateIndex(int index) {
|
||||
if (mCurrentDateIndex != index) {
|
||||
mCurrentDateIndex = index;
|
||||
emit currentDateIndexChanged();
|
||||
}
|
||||
}
|
||||
|
||||
QSharedPointer<ConferenceInfoCore>
|
||||
ConferenceInfoList::get(std::shared_ptr<linphone::ConferenceInfo> conferenceInfo) const {
|
||||
auto uri = Utils::coreStringToAppString(conferenceInfo->getUri()->asStringUriOnly());
|
||||
for (auto item : mList) {
|
||||
auto model = item.objectCast<ConferenceInfoCore>();
|
||||
auto confUri = model->getUri();
|
||||
if (confUri == uri) {
|
||||
return model;
|
||||
if (model) {
|
||||
auto confUri = model->getUri();
|
||||
if (confUri == uri) {
|
||||
return model;
|
||||
}
|
||||
}
|
||||
}
|
||||
return nullptr;
|
||||
|
|
@ -144,7 +184,7 @@ ConferenceInfoList::build(const std::shared_ptr<linphone::ConferenceInfo> &confe
|
|||
void ConferenceInfoList::remove(const int &row) {
|
||||
// beginRemoveRows(QModelIndex(), row, row);
|
||||
auto item = mList[row].objectCast<ConferenceInfoCore>();
|
||||
emit item->lDeleteConferenceInfo();
|
||||
if (item) emit item->lDeleteConferenceInfo();
|
||||
// endRemoveRows();
|
||||
}
|
||||
|
||||
|
|
@ -158,10 +198,42 @@ QHash<int, QByteArray> ConferenceInfoList::roleNames() const {
|
|||
QVariant ConferenceInfoList::data(const QModelIndex &index, int role) const {
|
||||
int row = index.row();
|
||||
if (!index.isValid() || row < 0 || row >= mList.count()) return QVariant();
|
||||
if (role == Qt::DisplayRole) {
|
||||
return QVariant::fromValue(new ConferenceInfoGui(mList[row].objectCast<ConferenceInfoCore>()));
|
||||
} else if (role == Qt::DisplayRole + 1) {
|
||||
return Utils::toDateMonthString(mList[row].objectCast<ConferenceInfoCore>()->getDateTimeUtc());
|
||||
auto conferenceInfo = mList[row].objectCast<ConferenceInfoCore>();
|
||||
if (conferenceInfo) {
|
||||
if (role == Qt::DisplayRole) {
|
||||
return QVariant::fromValue(new ConferenceInfoGui(mList[row].objectCast<ConferenceInfoCore>()));
|
||||
} else if (role == Qt::DisplayRole + 1) {
|
||||
return Utils::toDateMonthString(mList[row].objectCast<ConferenceInfoCore>()->getDateTimeUtc());
|
||||
}
|
||||
} else { // Dummy date
|
||||
if (role == Qt::DisplayRole) {
|
||||
return QVariant::fromValue(new ConferenceInfoGui());
|
||||
} else if (role == Qt::DisplayRole + 1) {
|
||||
return Utils::toDateMonthString(QDateTime::currentDateTimeUtc());
|
||||
}
|
||||
}
|
||||
return QVariant();
|
||||
}
|
||||
|
||||
int ConferenceInfoList::sort(QList<QSharedPointer<ConferenceInfoCore>> &listToSort) {
|
||||
auto nowDate = QDateTime(QDate::currentDate(), QTime(0, 0, 0)).toUTC().date();
|
||||
std::sort(listToSort.begin(), listToSort.end(),
|
||||
[nowDate](const QSharedPointer<QObject> &a, const QSharedPointer<QObject> &b) {
|
||||
auto l = a.objectCast<ConferenceInfoCore>();
|
||||
auto r = b.objectCast<ConferenceInfoCore>();
|
||||
if (!l || !r) { // sort on date
|
||||
return !l ? nowDate <= r->getDateTimeUtc().date() : l->getDateTimeUtc().date() < nowDate;
|
||||
} else {
|
||||
return l->getDateTimeUtc() < r->getDateTimeUtc();
|
||||
}
|
||||
});
|
||||
/*
|
||||
int count = 0;
|
||||
for(auto item : listToSort){
|
||||
auto l = item.objectCast<ConferenceInfoCore>();
|
||||
qDebug() << count ++ << (l ? l->getDateTimeUtc() : QDateTime::currentDateTimeUtc());
|
||||
}*/
|
||||
auto it = std::find(listToSort.begin(), listToSort.end(), nullptr);
|
||||
// qDebug() << it - listToSort.begin();
|
||||
return it == listToSort.end() ? -1 : it - listToSort.begin();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -38,6 +38,13 @@ public:
|
|||
~ConferenceInfoList();
|
||||
|
||||
void setSelf(QSharedPointer<ConferenceInfoList> me);
|
||||
|
||||
bool haveCurrentDate()const;
|
||||
void setHaveCurrentDate(bool have);
|
||||
void updateHaveCurrentDate();
|
||||
|
||||
int getCurrentDateIndex() const;
|
||||
void setCurrentDateIndex(int index);
|
||||
|
||||
QSharedPointer<ConferenceInfoCore> get(std::shared_ptr<linphone::ConferenceInfo> conferenceInfo) const;
|
||||
QSharedPointer<ConferenceInfoCore> build(const std::shared_ptr<linphone::ConferenceInfo> &conferenceInfo) const;
|
||||
|
|
@ -47,12 +54,18 @@ public:
|
|||
QHash<int, QByteArray> roleNames() const override;
|
||||
|
||||
virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
|
||||
static int sort(QList<QSharedPointer<ConferenceInfoCore>> &listToSort); // return the index of null item.
|
||||
|
||||
signals:
|
||||
void lUpdate();
|
||||
void addCurrentDateChanged();
|
||||
void haveCurrentDateChanged();
|
||||
void currentDateIndexChanged();
|
||||
|
||||
private:
|
||||
QSharedPointer<SafeConnection<ConferenceInfoList, CoreModel>> mCoreModelConnection;
|
||||
bool mHaveCurrentDate = false;
|
||||
int mCurrentDateIndex = -1;
|
||||
DECLARE_ABSTRACT_OBJECT
|
||||
};
|
||||
#endif // CONFERENCE_INFO_LIST_H_
|
||||
|
|
|
|||
|
|
@ -28,8 +28,19 @@ DEFINE_ABSTRACT_OBJECT(ConferenceInfoProxy)
|
|||
ConferenceInfoProxy::ConferenceInfoProxy(QObject *parent) : SortFilterProxy(parent) {
|
||||
mList = ConferenceInfoList::create();
|
||||
setSourceModel(mList.get());
|
||||
connect(this, &ConferenceInfoProxy::searchTextChanged, [this] { invalidate(); });
|
||||
connect(this, &ConferenceInfoProxy::searchTextChanged, [this] {
|
||||
invalidate();
|
||||
updateCurrentDateIndex();
|
||||
});
|
||||
connect(this, &ConferenceInfoProxy::lUpdate, mList.get(), &ConferenceInfoList::lUpdate);
|
||||
connect(mList.get(), &ConferenceInfoList::haveCurrentDateChanged, [this] {
|
||||
invalidate();
|
||||
updateCurrentDateIndex();
|
||||
});
|
||||
connect(mList.get(), &ConferenceInfoList::haveCurrentDateChanged, this,
|
||||
&ConferenceInfoProxy::haveCurrentDateChanged);
|
||||
connect(mList.get(), &ConferenceInfoList::currentDateIndexChanged, this,
|
||||
&ConferenceInfoProxy::updateCurrentDateIndex);
|
||||
}
|
||||
|
||||
ConferenceInfoProxy::~ConferenceInfoProxy() {
|
||||
|
|
@ -45,31 +56,35 @@ void ConferenceInfoProxy::setSearchText(const QString &search) {
|
|||
emit searchTextChanged();
|
||||
}
|
||||
|
||||
bool ConferenceInfoProxy::haveCurrentDate() const {
|
||||
return mList->haveCurrentDate();
|
||||
}
|
||||
|
||||
int ConferenceInfoProxy::getCurrentDateIndex() const {
|
||||
return mCurrentDateIndex;
|
||||
}
|
||||
|
||||
void ConferenceInfoProxy::updateCurrentDateIndex() {
|
||||
int newIndex = mapFromSource(sourceModel()->index(mList->getCurrentDateIndex(), 0)).row();
|
||||
if (mCurrentDateIndex != newIndex) {
|
||||
mCurrentDateIndex = newIndex;
|
||||
emit currentDateIndexChanged();
|
||||
}
|
||||
}
|
||||
|
||||
bool ConferenceInfoProxy::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const {
|
||||
const ConferenceInfoGui *gui =
|
||||
sourceModel()->data(sourceModel()->index(sourceRow, 0, sourceParent)).value<ConferenceInfoGui *>();
|
||||
if (gui) {
|
||||
auto ciCore = gui->getCore();
|
||||
assert(ciCore);
|
||||
auto ciCore = qobject_cast<ConferenceInfoList *>(sourceModel())->template getAt<ConferenceInfoCore>(sourceRow);
|
||||
if (ciCore) {
|
||||
if (!ciCore->getSubject().contains(mSearchText)) return false;
|
||||
if (ciCore->getDuration() == 0) return false;
|
||||
QDateTime currentDateTime = QDateTime::currentDateTimeUtc();
|
||||
if (mFilterType == 0) {
|
||||
// auto res = ciCore->getEndDateTimeUtc() < currentDateTime;
|
||||
return true;
|
||||
} else if (mFilterType == 1) {
|
||||
auto res = ciCore->getEndDateTimeUtc() >= currentDateTime;
|
||||
return res;
|
||||
// } else if (mFilterType == 2) {
|
||||
// return !Utils::isMe(ciCore->getOrganizer());
|
||||
} else return mFilterType == -1;
|
||||
} else {
|
||||
return !mList->haveCurrentDate();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool ConferenceInfoProxy::lessThan(const QModelIndex &left, const QModelIndex &right) const {
|
||||
auto l = getItemAt<ConferenceInfoList, ConferenceInfoGui>(left.row())->getCore();
|
||||
auto r = getItemAt<ConferenceInfoList, ConferenceInfoGui>(right.row())->getCore();
|
||||
|
||||
return l->getDateTimeUtc() < r->getDateTimeUtc();
|
||||
}
|
||||
|
|
@ -30,6 +30,8 @@ class ConferenceInfoProxy : public SortFilterProxy, public AbstractObject {
|
|||
|
||||
Q_OBJECT
|
||||
Q_PROPERTY(QString searchText READ getSearchText WRITE setSearchText NOTIFY searchTextChanged)
|
||||
Q_PROPERTY(bool haveCurrentDate READ haveCurrentDate NOTIFY haveCurrentDateChanged)
|
||||
Q_PROPERTY(int currentDateIndex READ getCurrentDateIndex NOTIFY currentDateIndexChanged)
|
||||
|
||||
public:
|
||||
ConferenceInfoProxy(QObject *parent = Q_NULLPTR);
|
||||
|
|
@ -37,18 +39,29 @@ public:
|
|||
|
||||
QString getSearchText() const;
|
||||
void setSearchText(const QString &search);
|
||||
|
||||
bool haveCurrentDate() const;
|
||||
|
||||
int getCurrentDateIndex() const;
|
||||
void updateCurrentDateIndex();
|
||||
|
||||
protected:
|
||||
bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const override;
|
||||
bool lessThan(const QModelIndex &left, const QModelIndex &right) const override;
|
||||
// Do not use the sort feature. We cannot retrieve indexes with mapToSource because Qt return -1 for items that are not displayed.
|
||||
// We need it to know where
|
||||
// The workaround is to implement ourself the sort into the List.
|
||||
//bool lessThan(const QModelIndex &left, const QModelIndex &right) const override;
|
||||
|
||||
signals:
|
||||
void searchTextChanged();
|
||||
void haveCurrentDateChanged();
|
||||
void currentDateIndexChanged();
|
||||
void lUpdate();
|
||||
|
||||
private:
|
||||
QString mSearchText;
|
||||
QSharedPointer<ConferenceInfoList> mList;
|
||||
int mCurrentDateIndex = -1;
|
||||
DECLARE_ABSTRACT_OBJECT
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -21,7 +21,6 @@
|
|||
#include "SortFilterProxy.hpp"
|
||||
|
||||
SortFilterProxy::SortFilterProxy(QObject *parent) : QSortFilterProxyModel(parent) {
|
||||
mFilterType = 0;
|
||||
connect(this, &SortFilterProxy::rowsInserted, this, &SortFilterProxy::countChanged);
|
||||
connect(this, &SortFilterProxy::rowsRemoved, this, &SortFilterProxy::countChanged);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ signals:
|
|||
void filterTypeChanged(int filterType);
|
||||
|
||||
protected:
|
||||
int mFilterType;
|
||||
int mFilterType = 0;
|
||||
bool mDeleteSourceModel = false;
|
||||
};
|
||||
|
||||
|
|
|
|||
BIN
Linphone/data/font/NotoColorEmoji_WindowsCompatible.ttf
Normal file
BIN
Linphone/data/font/NotoColorEmoji_WindowsCompatible.ttf
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -1,15 +0,0 @@
|
|||
This package is part of the noto project. Visit
|
||||
google.com/get/noto for more information.
|
||||
|
||||
Built on 2017-04-03 from the following noto repository:
|
||||
-----
|
||||
Repo: noto-fonts
|
||||
Tag: v2017-03-06-phase3-initial
|
||||
Date: 2017-03-06 15:25:38 GMT
|
||||
Commit:60aa0da2ee84b11e78725b4577edc2e80b009d56
|
||||
|
||||
Initial phase 3.
|
||||
|
||||
This is the first release of noto-fonts that includes phase 3 fonts in
|
||||
the hinted/unhinted subdirectories. The new fonts are Armenian,
|
||||
Cherokee, and Hebrew.
|
||||
Binary file not shown.
BIN
Linphone/data/font/Noto_Sans/NotoSans-VariableFont_wdth,wght.ttf
Normal file
BIN
Linphone/data/font/Noto_Sans/NotoSans-VariableFont_wdth,wght.ttf
Normal file
Binary file not shown.
|
|
@ -1,92 +1,93 @@
|
|||
This Font Software is licensed under the SIL Open Font License,
|
||||
Version 1.1.
|
||||
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
http://scripts.sil.org/OFL
|
||||
|
||||
-----------------------------------------------------------
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
-----------------------------------------------------------
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font
|
||||
creation efforts of academic and linguistic communities, and to
|
||||
provide a free and open framework in which fonts may be shared and
|
||||
improved in partnership with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply to
|
||||
any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software
|
||||
components as distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to,
|
||||
deleting, or substituting -- in part or in whole -- any of the
|
||||
components of the Original Version, by changing formats or by porting
|
||||
the Font Software to a new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed,
|
||||
modify, redistribute, and sell modified and unmodified copies of the
|
||||
Font Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components, in
|
||||
Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the
|
||||
corresponding Copyright Holder. This restriction only applies to the
|
||||
primary font name as presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created using
|
||||
the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||
Copyright 2022 The Noto Project Authors (https://github.com/notofonts/latin-greek-cyrillic)
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
https://openfontlicense.org
|
||||
|
||||
|
||||
-----------------------------------------------------------
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
-----------------------------------------------------------
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||
136
Linphone/data/font/Noto_Sans/README.txt
Normal file
136
Linphone/data/font/Noto_Sans/README.txt
Normal file
|
|
@ -0,0 +1,136 @@
|
|||
Noto Sans Variable Font
|
||||
=======================
|
||||
|
||||
This download contains Noto Sans as both variable fonts and static fonts.
|
||||
|
||||
Noto Sans is a variable font with these axes:
|
||||
wdth
|
||||
wght
|
||||
|
||||
This means all the styles are contained in these files:
|
||||
NotoSans-VariableFont_wdth,wght.ttf
|
||||
NotoSans-Italic-VariableFont_wdth,wght.ttf
|
||||
|
||||
If your app fully supports variable fonts, you can now pick intermediate styles
|
||||
that aren’t available as static fonts. Not all apps support variable fonts, and
|
||||
in those cases you can use the static font files for Noto Sans:
|
||||
static/NotoSans_ExtraCondensed-Thin.ttf
|
||||
static/NotoSans_ExtraCondensed-ExtraLight.ttf
|
||||
static/NotoSans_ExtraCondensed-Light.ttf
|
||||
static/NotoSans_ExtraCondensed-Regular.ttf
|
||||
static/NotoSans_ExtraCondensed-Medium.ttf
|
||||
static/NotoSans_ExtraCondensed-SemiBold.ttf
|
||||
static/NotoSans_ExtraCondensed-Bold.ttf
|
||||
static/NotoSans_ExtraCondensed-ExtraBold.ttf
|
||||
static/NotoSans_ExtraCondensed-Black.ttf
|
||||
static/NotoSans_Condensed-Thin.ttf
|
||||
static/NotoSans_Condensed-ExtraLight.ttf
|
||||
static/NotoSans_Condensed-Light.ttf
|
||||
static/NotoSans_Condensed-Regular.ttf
|
||||
static/NotoSans_Condensed-Medium.ttf
|
||||
static/NotoSans_Condensed-SemiBold.ttf
|
||||
static/NotoSans_Condensed-Bold.ttf
|
||||
static/NotoSans_Condensed-ExtraBold.ttf
|
||||
static/NotoSans_Condensed-Black.ttf
|
||||
static/NotoSans_SemiCondensed-Thin.ttf
|
||||
static/NotoSans_SemiCondensed-ExtraLight.ttf
|
||||
static/NotoSans_SemiCondensed-Light.ttf
|
||||
static/NotoSans_SemiCondensed-Regular.ttf
|
||||
static/NotoSans_SemiCondensed-Medium.ttf
|
||||
static/NotoSans_SemiCondensed-SemiBold.ttf
|
||||
static/NotoSans_SemiCondensed-Bold.ttf
|
||||
static/NotoSans_SemiCondensed-ExtraBold.ttf
|
||||
static/NotoSans_SemiCondensed-Black.ttf
|
||||
static/NotoSans-Thin.ttf
|
||||
static/NotoSans-ExtraLight.ttf
|
||||
static/NotoSans-Light.ttf
|
||||
static/NotoSans-Regular.ttf
|
||||
static/NotoSans-Medium.ttf
|
||||
static/NotoSans-SemiBold.ttf
|
||||
static/NotoSans-Bold.ttf
|
||||
static/NotoSans-ExtraBold.ttf
|
||||
static/NotoSans-Black.ttf
|
||||
static/NotoSans_ExtraCondensed-ThinItalic.ttf
|
||||
static/NotoSans_ExtraCondensed-ExtraLightItalic.ttf
|
||||
static/NotoSans_ExtraCondensed-LightItalic.ttf
|
||||
static/NotoSans_ExtraCondensed-Italic.ttf
|
||||
static/NotoSans_ExtraCondensed-MediumItalic.ttf
|
||||
static/NotoSans_ExtraCondensed-SemiBoldItalic.ttf
|
||||
static/NotoSans_ExtraCondensed-BoldItalic.ttf
|
||||
static/NotoSans_ExtraCondensed-ExtraBoldItalic.ttf
|
||||
static/NotoSans_ExtraCondensed-BlackItalic.ttf
|
||||
static/NotoSans_Condensed-ThinItalic.ttf
|
||||
static/NotoSans_Condensed-ExtraLightItalic.ttf
|
||||
static/NotoSans_Condensed-LightItalic.ttf
|
||||
static/NotoSans_Condensed-Italic.ttf
|
||||
static/NotoSans_Condensed-MediumItalic.ttf
|
||||
static/NotoSans_Condensed-SemiBoldItalic.ttf
|
||||
static/NotoSans_Condensed-BoldItalic.ttf
|
||||
static/NotoSans_Condensed-ExtraBoldItalic.ttf
|
||||
static/NotoSans_Condensed-BlackItalic.ttf
|
||||
static/NotoSans_SemiCondensed-ThinItalic.ttf
|
||||
static/NotoSans_SemiCondensed-ExtraLightItalic.ttf
|
||||
static/NotoSans_SemiCondensed-LightItalic.ttf
|
||||
static/NotoSans_SemiCondensed-Italic.ttf
|
||||
static/NotoSans_SemiCondensed-MediumItalic.ttf
|
||||
static/NotoSans_SemiCondensed-SemiBoldItalic.ttf
|
||||
static/NotoSans_SemiCondensed-BoldItalic.ttf
|
||||
static/NotoSans_SemiCondensed-ExtraBoldItalic.ttf
|
||||
static/NotoSans_SemiCondensed-BlackItalic.ttf
|
||||
static/NotoSans-ThinItalic.ttf
|
||||
static/NotoSans-ExtraLightItalic.ttf
|
||||
static/NotoSans-LightItalic.ttf
|
||||
static/NotoSans-Italic.ttf
|
||||
static/NotoSans-MediumItalic.ttf
|
||||
static/NotoSans-SemiBoldItalic.ttf
|
||||
static/NotoSans-BoldItalic.ttf
|
||||
static/NotoSans-ExtraBoldItalic.ttf
|
||||
static/NotoSans-BlackItalic.ttf
|
||||
|
||||
Get started
|
||||
-----------
|
||||
|
||||
1. Install the font files you want to use
|
||||
|
||||
2. Use your app's font picker to view the font family and all the
|
||||
available styles
|
||||
|
||||
Learn more about variable fonts
|
||||
-------------------------------
|
||||
|
||||
https://developers.google.com/web/fundamentals/design-and-ux/typography/variable-fonts
|
||||
https://variablefonts.typenetwork.com
|
||||
https://medium.com/variable-fonts
|
||||
|
||||
In desktop apps
|
||||
|
||||
https://theblog.adobe.com/can-variable-fonts-illustrator-cc
|
||||
https://helpx.adobe.com/nz/photoshop/using/fonts.html#variable_fonts
|
||||
|
||||
Online
|
||||
|
||||
https://developers.google.com/fonts/docs/getting_started
|
||||
https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Fonts/Variable_Fonts_Guide
|
||||
https://developer.microsoft.com/en-us/microsoft-edge/testdrive/demos/variable-fonts
|
||||
|
||||
Installing fonts
|
||||
|
||||
MacOS: https://support.apple.com/en-us/HT201749
|
||||
Linux: https://www.google.com/search?q=how+to+install+a+font+on+gnu%2Blinux
|
||||
Windows: https://support.microsoft.com/en-us/help/314960/how-to-install-or-remove-a-font-in-windows
|
||||
|
||||
Android Apps
|
||||
|
||||
https://developers.google.com/fonts/docs/android
|
||||
https://developer.android.com/guide/topics/ui/look-and-feel/downloadable-fonts
|
||||
|
||||
License
|
||||
-------
|
||||
Please read the full license text (OFL.txt) to understand the permissions,
|
||||
restrictions and requirements for usage, redistribution, and modification.
|
||||
|
||||
You can use them in your products & projects – print or digital,
|
||||
commercial or otherwise.
|
||||
|
||||
This isn't legal advice, please consider consulting a lawyer and see the full
|
||||
license for all details.
|
||||
BIN
Linphone/data/font/Noto_Sans/static/NotoSans-Black.ttf
Normal file
BIN
Linphone/data/font/Noto_Sans/static/NotoSans-Black.ttf
Normal file
Binary file not shown.
BIN
Linphone/data/font/Noto_Sans/static/NotoSans-BlackItalic.ttf
Normal file
BIN
Linphone/data/font/Noto_Sans/static/NotoSans-BlackItalic.ttf
Normal file
Binary file not shown.
BIN
Linphone/data/font/Noto_Sans/static/NotoSans-Bold.ttf
Normal file
BIN
Linphone/data/font/Noto_Sans/static/NotoSans-Bold.ttf
Normal file
Binary file not shown.
BIN
Linphone/data/font/Noto_Sans/static/NotoSans-BoldItalic.ttf
Normal file
BIN
Linphone/data/font/Noto_Sans/static/NotoSans-BoldItalic.ttf
Normal file
Binary file not shown.
BIN
Linphone/data/font/Noto_Sans/static/NotoSans-ExtraBold.ttf
Normal file
BIN
Linphone/data/font/Noto_Sans/static/NotoSans-ExtraBold.ttf
Normal file
Binary file not shown.
BIN
Linphone/data/font/Noto_Sans/static/NotoSans-ExtraBoldItalic.ttf
Normal file
BIN
Linphone/data/font/Noto_Sans/static/NotoSans-ExtraBoldItalic.ttf
Normal file
Binary file not shown.
BIN
Linphone/data/font/Noto_Sans/static/NotoSans-ExtraLight.ttf
Normal file
BIN
Linphone/data/font/Noto_Sans/static/NotoSans-ExtraLight.ttf
Normal file
Binary file not shown.
Binary file not shown.
BIN
Linphone/data/font/Noto_Sans/static/NotoSans-Italic.ttf
Normal file
BIN
Linphone/data/font/Noto_Sans/static/NotoSans-Italic.ttf
Normal file
Binary file not shown.
BIN
Linphone/data/font/Noto_Sans/static/NotoSans-Light.ttf
Normal file
BIN
Linphone/data/font/Noto_Sans/static/NotoSans-Light.ttf
Normal file
Binary file not shown.
BIN
Linphone/data/font/Noto_Sans/static/NotoSans-LightItalic.ttf
Normal file
BIN
Linphone/data/font/Noto_Sans/static/NotoSans-LightItalic.ttf
Normal file
Binary file not shown.
BIN
Linphone/data/font/Noto_Sans/static/NotoSans-Medium.ttf
Normal file
BIN
Linphone/data/font/Noto_Sans/static/NotoSans-Medium.ttf
Normal file
Binary file not shown.
BIN
Linphone/data/font/Noto_Sans/static/NotoSans-MediumItalic.ttf
Normal file
BIN
Linphone/data/font/Noto_Sans/static/NotoSans-MediumItalic.ttf
Normal file
Binary file not shown.
BIN
Linphone/data/font/Noto_Sans/static/NotoSans-Regular.ttf
Normal file
BIN
Linphone/data/font/Noto_Sans/static/NotoSans-Regular.ttf
Normal file
Binary file not shown.
BIN
Linphone/data/font/Noto_Sans/static/NotoSans-SemiBold.ttf
Normal file
BIN
Linphone/data/font/Noto_Sans/static/NotoSans-SemiBold.ttf
Normal file
Binary file not shown.
BIN
Linphone/data/font/Noto_Sans/static/NotoSans-SemiBoldItalic.ttf
Normal file
BIN
Linphone/data/font/Noto_Sans/static/NotoSans-SemiBoldItalic.ttf
Normal file
Binary file not shown.
BIN
Linphone/data/font/Noto_Sans/static/NotoSans-Thin.ttf
Normal file
BIN
Linphone/data/font/Noto_Sans/static/NotoSans-Thin.ttf
Normal file
Binary file not shown.
BIN
Linphone/data/font/Noto_Sans/static/NotoSans-ThinItalic.ttf
Normal file
BIN
Linphone/data/font/Noto_Sans/static/NotoSans-ThinItalic.ttf
Normal file
Binary file not shown.
BIN
Linphone/data/font/Noto_Sans/static/NotoSans_Condensed-Black.ttf
Normal file
BIN
Linphone/data/font/Noto_Sans/static/NotoSans_Condensed-Black.ttf
Normal file
Binary file not shown.
Binary file not shown.
BIN
Linphone/data/font/Noto_Sans/static/NotoSans_Condensed-Bold.ttf
Normal file
BIN
Linphone/data/font/Noto_Sans/static/NotoSans_Condensed-Bold.ttf
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Linphone/data/font/Noto_Sans/static/NotoSans_Condensed-Light.ttf
Normal file
BIN
Linphone/data/font/Noto_Sans/static/NotoSans_Condensed-Light.ttf
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Linphone/data/font/Noto_Sans/static/NotoSans_Condensed-Thin.ttf
Normal file
BIN
Linphone/data/font/Noto_Sans/static/NotoSans_Condensed-Thin.ttf
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
77
Linphone/data/fonts.qrc
Normal file
77
Linphone/data/fonts.qrc
Normal file
|
|
@ -0,0 +1,77 @@
|
|||
<RCC>
|
||||
<qresource prefix="/">
|
||||
<file>font/NotoColorEmoji_WindowsCompatible.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans_SemiCondensed-LightItalic.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans_Condensed-ThinItalic.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans-SemiBoldItalic.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans-Italic.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans-MediumItalic.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans_ExtraCondensed-BoldItalic.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans_Condensed-ExtraBoldItalic.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans_SemiCondensed-BlackItalic.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans_Condensed-MediumItalic.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans_Condensed-BoldItalic.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans_Condensed-ExtraLightItalic.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans_Condensed-Medium.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans_Condensed-SemiBold.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans_SemiCondensed-Black.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans-Medium.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans_Condensed-Bold.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans_SemiCondensed-ExtraBold.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans_SemiCondensed-Regular.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans-SemiBold.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans-ExtraBoldItalic.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans_SemiCondensed-Medium.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans-BlackItalic.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans_SemiCondensed-MediumItalic.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans-BoldItalic.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans_SemiCondensed-SemiBoldItalic.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans_SemiCondensed-ExtraBoldItalic.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans_Condensed-SemiBoldItalic.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans_ExtraCondensed-LightItalic.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans_ExtraCondensed-MediumItalic.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans_ExtraCondensed-ExtraBoldItalic.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans_SemiCondensed-ExtraLightItalic.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans_SemiCondensed-Italic.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans_SemiCondensed-ThinItalic.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans_ExtraCondensed-Italic.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans_ExtraCondensed-SemiBoldItalic.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans_ExtraCondensed-BlackItalic.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans_Condensed-Italic.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans-ExtraLight.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans_SemiCondensed-Thin.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans-Regular.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans_SemiCondensed-Light.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans_Condensed-ExtraBold.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans_SemiCondensed-ExtraLight.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans_Condensed-ExtraLight.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans_SemiCondensed-SemiBold.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans-Thin.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans_SemiCondensed-Bold.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans_ExtraCondensed-ExtraLightItalic.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans_ExtraCondensed-Black.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans-ExtraBold.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans_Condensed-Light.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans_ExtraCondensed-ThinItalic.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans-Black.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans-LightItalic.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans-ThinItalic.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans_SemiCondensed-BoldItalic.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans_ExtraCondensed-SemiBold.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans_ExtraCondensed-Light.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans_Condensed-LightItalic.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans_Condensed-BlackItalic.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans-Bold.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans_ExtraCondensed-ExtraBold.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans_Condensed-Thin.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans_Condensed-Regular.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans_Condensed-Black.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans_ExtraCondensed-Bold.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans-Light.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans_ExtraCondensed-Medium.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans-ExtraLightItalic.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans_ExtraCondensed-Regular.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans_ExtraCondensed-ExtraLight.ttf</file>
|
||||
<file>font/Noto_Sans/static/NotoSans_ExtraCondensed-Thin.ttf</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
|
|
@ -360,7 +360,7 @@ void CallModel::onStateChanged(const std::shared_ptr<linphone::Call> &call,
|
|||
// After UpdatedByRemote, video direction could be changed.
|
||||
auto params = call->getRemoteParams();
|
||||
emit remoteVideoEnabledChanged(params && params->videoEnabled());
|
||||
qWarning() << "CallCameraEnabled:" << call->cameraEnabled();
|
||||
qDebug() << "CallCameraEnabled:" << call->cameraEnabled();
|
||||
auto videoDirection = call->getCurrentParams()->getVideoDirection();
|
||||
emit cameraEnabledChanged(videoDirection == linphone::MediaDirection::SendOnly ||
|
||||
videoDirection == linphone::MediaDirection::SendRecv);
|
||||
|
|
|
|||
|
|
@ -1164,6 +1164,14 @@ QDateTime Utils::createDateTime(const QDate &date, int hour, int min) {
|
|||
return QDateTime(date, time);
|
||||
}
|
||||
|
||||
QDateTime Utils::getCurrentDateTime() {
|
||||
return QDateTime::currentDateTime();
|
||||
}
|
||||
|
||||
QDateTime Utils::getCurrentDateTimeUtc() {
|
||||
return QDateTime::currentDateTimeUtc();
|
||||
}
|
||||
|
||||
int Utils::secsTo(const QString &startTime, const QString &endTime) {
|
||||
QDateTime startDate(QDateTime::fromString(startTime, "hh:mm"));
|
||||
QDateTime endDate(QDateTime::fromString(endTime, "hh:mm"));
|
||||
|
|
|
|||
|
|
@ -95,6 +95,8 @@ public:
|
|||
Q_INVOKABLE static bool isBeforeToday(QDate date);
|
||||
Q_INVOKABLE static bool datesAreEqual(const QDate &a, const QDate &b);
|
||||
Q_INVOKABLE static QDateTime createDateTime(const QDate &date, int hour, int min);
|
||||
Q_INVOKABLE static QDateTime getCurrentDateTime();
|
||||
Q_INVOKABLE static QDateTime getCurrentDateTimeUtc();
|
||||
Q_INVOKABLE static int getYear(const QDate &date);
|
||||
Q_INVOKABLE static int secsTo(const QString &start, const QString &end);
|
||||
Q_INVOKABLE static QDateTime addSecs(QDateTime date, int secs);
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue