Fix history titles.

Add an object displayer for javascript variables.
Fix ICS expansion design.
Click on ICS will expand it instead of calling it.
Fix ICS Uri.
This commit is contained in:
Julien Wadel 2022-06-30 15:09:14 +02:00
parent c8458433e9
commit 235b5bda7c
16 changed files with 143 additions and 82 deletions

View file

@ -4,8 +4,8 @@
height="80"
version="1.1"
id="svg12"
sodipodi:docname="menu_imdn_info_custom.svg"
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
sodipodi:docname="menu_info_custom.svg"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
@ -25,13 +25,13 @@
inkscape:cx="-18.281787"
inkscape:cy="4.6735395"
inkscape:window-width="1920"
inkscape:window-height="1131"
inkscape:window-x="0"
inkscape:window-height="1043"
inkscape:window-x="1920"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg12" />
<g
transform="matrix(2.6666662,0,0,2.6666642,21.333333,21.333329)"
transform="matrix(5.3333333,0,0,5.3333293,2.6666667,2.6666647)"
fill="none"
fill-rule="evenodd"
id="g10">

Before

Width:  |  Height:  |  Size: 2 KiB

After

Width:  |  Height:  |  Size: 2 KiB

View file

@ -153,7 +153,7 @@ QString ConferenceInfoModel::displayNamesToString()const{
QString ConferenceInfoModel::getUri() const{
auto address = mConferenceInfo->getUri();
return address->isValid() && !address->getDomain().empty() ? QString::fromStdString(address->asString()) : "";
return address->isValid() && !address->getDomain().empty() ? QString::fromStdString(address->asStringUriOnly()) : "";
}
bool ConferenceInfoModel::isScheduled() const{

View file

@ -53,10 +53,11 @@ static inline void fillCallStartEntry (QVariantMap &dest, const shared_ptr<linph
dest["isOutgoing"] = callLog->getDir() == linphone::Call::Dir::Outgoing;
dest["status"] = static_cast<HistoryModel::CallStatus>(callLog->getStatus());
dest["isStart"] = true;
if(callLog->wasConference()) {
if(callLog->getConferenceInfo())
dest["title"] = QString::fromStdString(callLog->getConferenceInfo()->getSubject());
}else
dest["sipAddress"] = Utils::coreStringToAppString(callLog->getRemoteAddress()->asString());
dest["sipAddress"] = Utils::coreStringToAppString(callLog->getRemoteAddress()->asString());
dest["callId"] = Utils::coreStringToAppString(callLog->getCallId());
dest["wasConference"] = callLog->wasConference();
}
static inline void fillCallEndEntry (QVariantMap &dest, const shared_ptr<linphone::CallLog> &callLog) {
@ -65,11 +66,11 @@ static inline void fillCallEndEntry (QVariantMap &dest, const shared_ptr<linphon
dest["isOutgoing"] = callLog->getDir() == linphone::Call::Dir::Outgoing;
dest["status"] = static_cast<HistoryModel::CallStatus>(callLog->getStatus());
dest["isStart"] = false;
if(callLog->wasConference()) {
if(callLog->getConferenceInfo())
dest["title"] = QString::fromStdString(callLog->getConferenceInfo()->getSubject());
}else
dest["sipAddress"] = Utils::coreStringToAppString(callLog->getRemoteAddress()->asString());
dest["sipAddress"] = Utils::coreStringToAppString(callLog->getRemoteAddress()->asString());
dest["callId"] = Utils::coreStringToAppString(callLog->getCallId());
dest["wasConference"] = callLog->wasConference();
}
// -----------------------------------------------------------------------------
@ -159,7 +160,11 @@ void HistoryModel::setSipAddresses () {
qInfo() << QStringLiteral("HistoryModel loaded in %3 milliseconds.").arg(timer.elapsed());
}
void HistoryModel::reload(){
beginResetModel();
setSipAddresses();
endResetModel();
}
// -----------------------------------------------------------------------------
void HistoryModel::removeEntry (int id) {

View file

@ -72,6 +72,8 @@ public:
void removeAllEntries ();
void resetMessageCount ();
Q_INVOKABLE void reload();
signals:
void allEntriesRemoved ();

View file

@ -132,7 +132,9 @@ bool HistoryProxyModel::filterAcceptsRow (int sourceRow, const QModelIndex &) co
void HistoryProxyModel::reload () {
mMaxDisplayedEntries = EntriesChunkSize;
static_cast<HistoryModelFilter *>(sourceModel())->setSourceModel(CoreManager::getInstance()->getHistoryModel());
auto model = CoreManager::getInstance()->getHistoryModel();
//model->reload();
static_cast<HistoryModelFilter *>(sourceModel())->setSourceModel(model);
}
void HistoryProxyModel::resetMessageCount(){
auto model = CoreManager::getInstance()->getHistoryModel();

View file

@ -45,6 +45,8 @@ public:
Q_INVOKABLE void resetMessageCount();
Q_INVOKABLE void reload();
signals:
void moreEntriesLoaded (int n);
@ -56,8 +58,6 @@ protected:
private:
void reload ();
void handleIsActiveChanged (QWindow *window);
int mMaxDisplayedEntries = EntriesChunkSize;

View file

@ -9,7 +9,7 @@ import Common.Styles 1.0
Controls.Menu {
id: menu
property var menuStyle : MenuStyle.normal
width: menuStyle.width ? menuStyle.width : parent.width
background: Rectangle {
implicitWidth: menu.width
color: menuStyle.color

View file

@ -14,7 +14,7 @@ import Common.Styles 1.0
Controls.MenuItem {
id: button
property alias iconMenu : iconArea.icon
property alias iconSizeMenu : iconArea.iconSize
property alias iconSizeMenu: iconArea.iconSize
property alias iconOverwriteColorMenu: iconArea.overwriteColor
property alias iconLayoutDirection : rowArea.layoutDirection
property var menuItemStyle : MenuItemStyle.normal
@ -40,22 +40,27 @@ Controls.MenuItem {
}
contentItem:RowLayout{
id:rowArea
spacing:15
Icon{
id: iconArea
visible: icon
width: icon?iconSize:0
spacing:10
Item{
Layout.fillHeight: true
Layout.preferredWidth: iconArea.icon?height/rowText.lineCount:0
Layout.leftMargin:(iconLayoutDirection == Qt.LeftToRight ? menuItemStyle.leftMargin : 0)
Layout.rightMargin:(iconLayoutDirection == Qt.LeftToRight ? 0 : menuItemStyle.rightMargin)
overwriteColor: button.enabled
? (button.down
? menuItemStyle.text.color.pressed
: (
button.hovered
? menuItemStyle.text.color.hovered
: menuItemStyle.text.color.normal
))
: menuItemStyle.text.color.disabled
Icon{
id: iconArea
visible: icon
anchors.centerIn: parent
iconSize: rowText.contentHeight/rowText.lineCount + 2
overwriteColor: button.enabled
? (button.down
? menuItemStyle.text.color.pressed
: (
button.hovered
? menuItemStyle.text.color.hovered
: menuItemStyle.text.color.normal
))
: menuItemStyle.text.color.disabled
}
}
Text {
id:rowText
@ -81,13 +86,8 @@ Controls.MenuItem {
}
text: button.text
//leftPadding: menuItemStyle.leftPadding
//rightPadding: menuItemStyle.rightPadding
horizontalAlignment: Text.AlignLeft
verticalAlignment: Text.AlignVCenter
//anchors.top: parent.top
//anchors.bottom : parent.bottom
}
}

View file

@ -35,6 +35,7 @@ QtObject {
property string icon : 'delete_custom'
}
property QtObject info: QtObject {
property int iconSize: 20
property string icon : 'menu_info_custom'
}
property QtObject devices: QtObject {

View file

@ -26,7 +26,7 @@ Loader{
property ContentModel contentModel
property ConferenceInfoModel conferenceInfoModel: contentModel ? contentModel.conferenceInfoModel : null
property int maxWidth : parent.width
property int fitHeight: active && item ? item.fitHeight + ChatCalendarMessageStyle.topMargin+ChatCalendarMessageStyle.bottomMargin + (isExpanded? 200 : 0): 0
property int fitHeight: active && item ? item.fitHeight + (isExpanded? 200 : 0): 0
property int fitWidth: active && item ? maxWidth/2 + ChatCalendarMessageStyle.widthMargin*2 : 0
property bool containsMouse: false
property int gotoButtonMode: -1 //-1: hide, 0:goto, 1:MoreInfo
@ -55,19 +55,21 @@ Loader{
clip: false
hoverEnabled: true
onClicked: CallsListModel.prepareConferenceCall(mainItem.conferenceInfoModel)
onClicked: mainItem.expandToggle()
onHoveredChanged: mainItem.containsMouse = loadedItem.containsMouse
ColumnLayout{
id: layout
property int fitHeight: Layout.minimumHeight
property int fitHeight: dateRow.implicitHeight + title.implicitHeight + participantsRow.implicitHeight +expandedDescription.implicitHeight
property int fitWidth: Layout.minimumWidth
anchors.fill: parent
spacing: 0
RowLayout {
id: dateRow
Layout.fillWidth: true
Layout.preferredWidth: parent.width // Need this because fillWidth is not enough...
//Layout.preferredWidth: parent.width // Need this because fillWidth is not enough...
Layout.preferredHeight: ChatCalendarMessageStyle.lineHeight
Layout.alignment: Qt.AlignTop
Layout.topMargin: 5
spacing: 10
RowLayout {
@ -76,28 +78,36 @@ Loader{
Layout.preferredHeight: ChatCalendarMessageStyle.lineHeight
Layout.leftMargin: 5
spacing: ChatCalendarMessageStyle.schedule.spacing
Icon{
icon: ChatCalendarMessageStyle.schedule.icon
iconSize: ChatCalendarMessageStyle.schedule.iconSize
overwriteColor: ChatCalendarMessageStyle.schedule.color
Item{
Layout.preferredHeight: ChatCalendarMessageStyle.lineHeight
Layout.preferredWidth: ChatCalendarMessageStyle.schedule.iconSize
clip: false
Icon{
anchors.centerIn: parent
icon: ChatCalendarMessageStyle.schedule.icon
iconSize: ChatCalendarMessageStyle.schedule.iconSize
overwriteColor: ChatCalendarMessageStyle.schedule.color
}
}
Text {
id: conferenceTime
Layout.fillWidth: true
Layout.preferredHeight: ChatCalendarMessageStyle.lineHeight
Layout.minimumWidth: implicitWidth
verticalAlignment: Qt.AlignVCenter
color: ChatCalendarMessageStyle.schedule.color
elide: Text.ElideRight
font.pointSize: ChatCalendarMessageStyle.schedule.pointSize
text: Qt.formatDateTime(mainItem.conferenceInfoModel.dateTime, 'hh:mm')
+ (mainItem.conferenceInfoModel.duration > 0 ? ' (' +Utils.formatDuration(mainItem.conferenceInfoModel.duration * 60) + ')'
: '')
: '')
}
}
Text{
Layout.fillWidth: true
Layout.preferredHeight: ChatCalendarMessageStyle.lineHeight
Layout.rightMargin: 15
horizontalAlignment: Qt.AlignRight
verticalAlignment: Qt.AlignVCenter
@ -111,8 +121,10 @@ Loader{
Text{
id: title
Layout.fillWidth: true
Layout.preferredHeight: ChatCalendarMessageStyle.lineHeight
Layout.alignment: Qt.AlignTop
Layout.leftMargin: 10
Layout.alignment: Qt.AlignRight
elide: Text.ElideRight
color: ChatCalendarMessageStyle.subject.color
font.pointSize: ChatCalendarMessageStyle.subject.pointSize
@ -123,22 +135,31 @@ Loader{
id: participantsRow
Layout.fillWidth: true
Layout.fillHeight: true
Layout.minimumHeight: mainItem.isExpanded ? expandedParticipantsList.minimumHeight : ChatCalendarMessageStyle.participants.iconSize
Layout.minimumHeight: mainItem.isExpanded ? expandedParticipantsList.minimumHeight : ChatCalendarMessageStyle.lineHeight
Layout.alignment: Qt.AlignTop
Layout.leftMargin: 5
Layout.rightMargin: 15
Layout.rightMargin: 10
spacing: ChatCalendarMessageStyle.participants.spacing
Icon{
Item{
Layout.preferredHeight: ChatCalendarMessageStyle.lineHeight
Layout.preferredWidth: ChatCalendarMessageStyle.participants.iconSize
Layout.alignment: Qt.AlignTop
icon: ChatCalendarMessageStyle.participants.icon
iconSize: ChatCalendarMessageStyle.participants.iconSize
overwriteColor: ChatCalendarMessageStyle.participants.color
clip: false
Icon{
anchors.centerIn: parent
icon: ChatCalendarMessageStyle.participants.icon
iconSize: ChatCalendarMessageStyle.participants.iconSize
overwriteColor: ChatCalendarMessageStyle.participants.color
}
}
Text {
id: participantsList
Layout.fillWidth: true
Layout.preferredHeight: ChatCalendarMessageStyle.lineHeight
Layout.alignment: Qt.AlignTop
visible: !mainItem.isExpanded
color: ChatCalendarMessageStyle.participants.color
elide: Text.ElideRight
@ -150,6 +171,7 @@ Loader{
property int minimumHeight: Math.min( count * ChatCalendarMessageStyle.lineHeight, layout.height/(descriptionTitle.visible?3:2))
Layout.fillWidth: true
Layout.minimumHeight: minimumHeight
Layout.alignment: Qt.AlignTop
spacing: 0
visible: mainItem.isExpanded
onVisibleChanged: model= mainItem.conferenceInfoModel.getParticipants()
@ -160,36 +182,50 @@ Loader{
height: ChatCalendarMessageStyle.lineHeight
Text{
id: displayName
height: ChatCalendarMessageStyle.lineHeight
text: modelData.displayName
color: ChatCalendarMessageStyle.description.color
font.pointSize: ChatCalendarMessageStyle.description.pointSize
color: ChatCalendarMessageStyle.participants.color
font.pointSize: ChatCalendarMessageStyle.participants.pointSize
elide: Text.ElideRight
}
Text{
height: ChatCalendarMessageStyle.lineHeight
width: expandedParticipantsList.contentWidth - displayName.width - parent.spacing // parent.width is not enough. Force width
text: '('+modelData.address+')'
color: ChatCalendarMessageStyle.description.color
font.pointSize: ChatCalendarMessageStyle.description.pointSize
color: ChatCalendarMessageStyle.participants.color
font.pointSize: ChatCalendarMessageStyle.participants.pointSize
elide: Text.ElideRight
}
}
}
ActionButton{
visible: mainItem.gotoButtonMode >= 0
Layout.alignment: Qt.AlignTop
Layout.preferredHeight: iconSize
Layout.preferredWidth: height
isCustom: true
colorSet: mainItem.gotoButtonMode == 0 ? ChatCalendarMessageStyle.gotoButton : ChatCalendarMessageStyle.infoButton
backgroundRadius: width/2
toggled: mainItem.isExpanded
onClicked: mainItem.expandToggle()
Item{
Layout.preferredWidth: expandButton.iconSize
Layout.preferredHeight: ChatCalendarMessageStyle.lineHeight
Layout.alignment: Qt.AlignTop | Qt.AlignRight
ActionButton{
id: expandButton
visible: mainItem.gotoButtonMode >= 0
anchors.centerIn: parent
anchors.verticalCenter: parent.verticalCenter
isCustom: true
colorSet: mainItem.gotoButtonMode == 0 ? ChatCalendarMessageStyle.gotoButton : ChatCalendarMessageStyle.infoButton
iconSize: ChatCalendarMessageStyle.lineHeight
backgroundRadius: width/2
toggled: mainItem.isExpanded
onClicked: mainItem.expandToggle()
}
}
}
Item{
Layout.fillHeight: true
Layout.minimumHeight: 0
}
ColumnLayout{
id: expandedDescription
Layout.fillWidth: true
Layout.fillHeight: true
Layout.alignment: Qt.AlignTop
Layout.topMargin: 5
visible: mainItem.isExpanded
spacing: 0
@ -211,6 +247,7 @@ Loader{
Layout.fillWidth: true
Layout.fillHeight: true
Layout.leftMargin: 10
Layout.rightMargin: 10
padding: 0
color: 'transparent'
readOnly: true
@ -221,10 +258,6 @@ Loader{
text: mainItem.conferenceInfoModel.description
}
Item{
Layout.fillHeight: true
Layout.fillWidth: true
}
Text{
id: linkTitle
Layout.fillWidth: true
@ -240,18 +273,18 @@ Loader{
Layout.fillWidth: true
Layout.fillHeight: true
Layout.leftMargin: 10
Layout.rightMargin: 60
Layout.rightMargin: 10
spacing: 10
TextField{
id: uriField
readOnly: true
Layout.fillWidth: true
Layout.preferredHeight: ChatCalendarMessageStyle.copyLinkButton.iconSize
textFieldStyle: TextFieldStyle.flatInverse
text: mainItem.conferenceInfoModel.uri
}
ActionButton{
iconSize: uriField.height
isCustom: true
colorSet: ChatCalendarMessageStyle.copyLinkButton
backgroundRadius: width/2
@ -270,6 +303,7 @@ Loader{
Layout.fillWidth: true
}
TextButtonC{
addHeight: 20
//: 'Join' : Action button to join the conference.
text: qsTr('icsJoinButton').toUpperCase()
onClicked: CallsListModel.prepareConferenceCall(mainItem.conferenceInfoModel)

View file

@ -127,6 +127,10 @@ Row {
height: parent.height
text: mainItem.translation ? qsTr(mainItem.translation) +' - ' : ' - '
verticalAlignment: Text.AlignVCenter
MouseArea{
anchors.fill:parent
onClicked: entryClicked($historyEntry)
}
}
Text {
color: HistoryStyle.entry.event.text.color
@ -134,12 +138,16 @@ Row {
bold: true
pointSize: HistoryStyle.entry.event.text.pointSize
}
height: parent.height
text: _sipAddressObserver ? ( $historyEntry.sipAddress ? UtilsCpp.getDisplayName(_sipAddressObserver.peerAddress) : _sipAddressObserver) : ''
height: parent.height
text: $historyEntry.title
? $historyEntry.title
: _sipAddressObserver
? ( UtilsCpp.getDisplayName(_sipAddressObserver.peerAddress || $historyEntry.sipAddress) || _sipAddressObserver)
: ''
verticalAlignment: Text.AlignVCenter
MouseArea{
anchors.fill:parent
onClicked:entryClicked($historyEntry)
onClicked: entryClicked($historyEntry)
}
}
ActionButton {

View file

@ -7,6 +7,7 @@ import Linphone 1.0
import Linphone.Styles 1.0
import 'History.js' as Logic
import 'qrc:/ui/scripts/Utils/utils.js' as Utils
// =============================================================================

View file

@ -85,7 +85,7 @@ QtObject {
property color foregroundUpdatingColor : ColorsList.addImageColor(sectionName+'_'+name+'_f_c', icon, 's_p_b_fg').color
}
property QtObject infoButton: QtObject{
property int iconSize: 35
property int iconSize: 30
property string name : 'info'
property string icon : 'menu_info_custom'
property color backgroundNormalColor : ColorsList.addImageColor(sectionName+'_'+name+'_b_n', icon, 'me_n_b_bg').color
@ -104,7 +104,7 @@ QtObject {
property int width: 220
}
property QtObject copyLinkButton: QtObject{
property int iconSize: 20
property int iconSize: 40
property string name : 'copy'
property string icon : 'menu_copy_text_custom'
property color backgroundNormalColor : ColorsList.addImageColor(sectionName+'_'+name+'_b_n', icon, 's_n_b_bg').color

View file

@ -779,4 +779,12 @@ function openCodecOnlineInstallerDialog (window, codecInfo, cb) {
cb(window)
}
})
}
function printObject(o) {
var out = '';
for (var p in o) {
out += p + ': ' + o[p] + '\n';
}
return out;
}

View file

@ -160,7 +160,7 @@ Item{
id: calendarGrid
property bool expanded : false //anchors.fill: parent
cellWidth: width/2
cellHeight: expanded ? 450 : 100
cellHeight: expanded ? 460 : 90
model: $modelData
height: cellHeight * Math.floor( (count+1) / 2)
width: mainItem.width - 20

View file

@ -395,7 +395,7 @@ ColumnLayout {
//: 'Group information' : Item menu to get information about the chat room
text: qsTr('conversationMenuGroupInformations')
iconMenu: MenuItemStyle.info.icon
iconSizeMenu: 40
//iconSizeMenu: 40
menuItemStyle : MenuItemStyle.aux2
visible: conversationMenu.showGroupInfo
onTriggered: {