/
callwidget.h
168 lines (146 loc) · 6.43 KB
/
callwidget.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
/**************************************************************************
* Copyright (C) 2015-2018 by Savoir-faire Linux *
* Author: Edric Ladent Milaret <edric.ladent-milaret@savoirfairelinux.com>*
* Author: Anthony Léonard <anthony.leonard@savoirfairelinux.com> *
* Author: Olivier Soldano <olivier.soldano@savoirfairelinux.com> *
* Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com> *
* Author: Isa Nanic <isa.nanic@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/>. *
**************************************************************************/
#pragma once
#include <QWidget>
#include <QVector>
#include <QString>
#include <QMenu>
#include <QItemSelection>
#include <QMovie>
#include "navwidget.h"
#include "smartlistmodel.h"
// old LRC
#include "callmodel.h"
#include "video/renderer.h"
#include "video/previewmanager.h"
#include "accountmodel.h"
#include "categorizedhistorymodel.h"
#include "media/textrecording.h"
// new LRC
#include "globalinstances.h"
#include "api/newaccountmodel.h"
#include "api/conversationmodel.h"
#include "api/account.h"
#include "api/contact.h"
#include "api/contactmodel.h"
#include "api/newcallmodel.h"
class ConversationItemDelegate;
class QPropertyAnimation;
namespace Ui {
class CallWidget;
}
class CallWidget : public NavWidget
{
Q_OBJECT
public:
explicit CallWidget(QWidget* parent = 0);
~CallWidget();
int getLeftPanelWidth();
// NavWidget
virtual void navigated(bool to);
virtual void updateCustomUI();
public slots:
void on_ringContactLineEdit_returnPressed();
public slots:
void settingsButtonClicked();
void showIMOutOfCall(const QModelIndex& nodeIdx);
void slotAcceptInviteClicked(const QModelIndex& index);
void slotBlockInviteClicked(const QModelIndex& index);
void slotIgnoreInviteClicked(const QModelIndex& index);
void slotCustomContextMenuRequested(const QPoint & pos);
void slotAccountChanged(int index);
void slotShowCallView(const std::string & accountId, const lrc::api::conversation::Info & convInfo);
void slotShowIncomingCallView(const std::string & accountId, const lrc::api::conversation::Info & convInfo);
void slotShowChatView(const std::string & accountId, const lrc::api::conversation::Info & convInfo);
void slotToggleFullScreenClicked();
void slotVideoViewDestroyed(const std::string& callid);
void update();
private slots:
void on_acceptButton_clicked();
void on_refuseButton_clicked();
void on_cancelButton_clicked();
void on_smartList_doubleClicked(const QModelIndex& index);
void on_ringContactLineEdit_textChanged(const QString& text);
void on_imBackButton_clicked();
void on_sendContactRequestButton_clicked();
void on_smartList_clicked(const QModelIndex &index);
void on_qrButton_toggled(bool checked);
void on_shareButton_clicked();
void on_btnAudioCall_clicked();
void on_btnVideoCall_clicked();
private slots:
void smartListSelectionChanged(const QItemSelection &selected, const QItemSelection &deselected);
void onIncomingMessage(const std::string & convUid, uint64_t interactionId, const lrc::api::interaction::Info & interaction);
private:
void placeCall();
void conversationsButtonClicked();
void invitationsButtonClicked();
void setupSmartListContextMenu(const QPoint &pos);
void setupQRCode(QString ringID);
void backToWelcomePage();
// lrc
void selectConversation(const QModelIndex& index);
bool selectConversation(const lrc::api::conversation::Info& item,
lrc::api::ConversationModel& convModel);
void deselectConversation();
bool connectConversationModel();
void updateConversationView(const std::string& convUid);
void showConversationView();
void selectSmartlistItem(const std::string& convUid);
QImage imageForConv(const std::string & convUid);
void processContactLineEdit();
void hideMiniSpinner();
void updateConversationForNewContact(const std::string& convUid);
void updateSmartList();
void setSelectedAccount(const std::string & accountId);
void setConversationFilter(const QString& filter);
void setConversationFilter(lrc::api::profile::Type filter);
void updateConversationsFilterWidget();
void updateComboBox();
const std::string& selectedAccountId();
const std::string& selectedConvUid();
QMenu* menu_;
Ui::CallWidget* ui;
QMovie* miniSpinner_;
constexpr static int qrSize_ = 200;
// lrc
Video::Renderer* videoRenderer_;
std::string lastConvUid_ {};
lrc::api::profile::Type currentTypeFilter_{};
std::unique_ptr<SmartListModel> smartListModel_;
QMetaObject::Connection imConnection_;
QMetaObject::Connection imVisibleConnection_;
QMetaObject::Connection callChangedConnection_;
QMetaObject::Connection imClickedConnection_;
QMetaObject::Connection crListSelectionConnection_;
QMetaObject::Connection modelSortedConnection_;
QMetaObject::Connection modelUpdatedConnection_;
QMetaObject::Connection filterChangedConnection_;
QMetaObject::Connection newConversationConnection_;
QMetaObject::Connection conversationRemovedConnection_;
QMetaObject::Connection newInteractionConnection_;
QMetaObject::Connection interactionStatusUpdatedConnection_;
QMetaObject::Connection conversationClearedConnection;
QMetaObject::Connection selectedCallChanged_;
QMetaObject::Connection smartlistSelectionConnection_;
QMetaObject::Connection interactionRemovedConnection_;
};