refactor: implement new lrc api
- use new lrc models for
- smartlist
- conversation view
- account selector
Change-Id: I0a009d4e9be6f84100f49ba176d853e05364c351
diff --git a/callwidget.h b/callwidget.h
index f77d82e..9fb6178 100644
--- a/callwidget.h
+++ b/callwidget.h
@@ -1,8 +1,9 @@
/**************************************************************************
-* Copyright (C) 2015-2017 by Savoir-faire Linux *
+* 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> *
* *
* 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 *
@@ -29,7 +30,9 @@
#include "navwidget.h"
#include "instantmessagingwidget.h"
+#include "smartlistmodel.h"
+// old LRC
#include "callmodel.h"
#include "video/renderer.h"
#include "video/previewmanager.h"
@@ -37,7 +40,16 @@
#include "categorizedhistorymodel.h"
#include "media/textrecording.h"
-class SmartListDelegate;
+// 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 ImDelegate;
class QPropertyAnimation;
@@ -52,18 +64,22 @@
public:
explicit CallWidget(QWidget* parent = 0);
~CallWidget();
- void atExit();
bool findRingAccount();
public slots:
+ void on_ringContactLineEdit_returnPressed();
+
+public slots:
void settingsButtonClicked();
void showIMOutOfCall(const QModelIndex& nodeIdx);
- void btnComBarVideoClicked();
-
-//UI SLOTS
-public slots:
- void on_ringContactLineEdit_returnPressed();
- inline void on_entered(const QModelIndex& i){if (i.isValid()) highLightedIndex_ = i;}
+ void slotAcceptInviteClicked(const QModelIndex& index);
+ void slotBlockInviteClicked(const QModelIndex& index);
+ void slotIgnoreInviteClicked(const QModelIndex& index);
+ void slotCustomContextMenuRequested(const QPoint & pos);
+ 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 update();
private slots:
void on_acceptButton_clicked();
@@ -82,55 +98,75 @@
void on_pendingCRBackButton_clicked();
private slots:
- void callIncoming(Call* call);
- void callStateChanged(Call* call, Call::State previousState);
- void smartListCurrentChanged(const QModelIndex ¤tIdx, const QModelIndex &previousIdx);
+ void smartListSelectionChanged(const QItemSelection &selected, const QItemSelection &deselected);
void contactReqListCurrentChanged(const QModelIndex ¤tIdx, const QModelIndex &previousIdx);
void slotAccountMessageReceived(const QMap<QString,QString> message,ContactMethod* cm, media::Media::Direction dir);
- void onIncomingMessage(::media::TextRecording* t, ContactMethod* cm);
- void callChangedSlot();
- void contactLineEdit_registeredNameFound(Account *account, NameDirectory::LookupStatus status, const QString& address, const QString& name);
- void searchBtnClicked();
- void selectedAccountChanged(const QModelIndex ¤t, const QModelIndex &previous);
- void on_contactMethodComboBox_currentIndexChanged(int index);
- void on_contactRequestList_clicked(const QModelIndex &index);
+ void onIncomingMessage(const std::string & convUid, uint64_t interactionId, const lrc::api::interaction::Info & interaction);
+ void currentAccountChanged(const QModelIndex ¤t);
private:
- Ui::CallWidget* ui;
- Call* actualCall_;
- Video::Renderer* videoRenderer_;
- CallModel* callModel_;
- int outputVolume_;
- int inputVolume_;
+ void placeCall();
+ void conversationsButtonClicked();
+ void invitationsButtonClicked();
+ void setupOutOfCallIM();
+ void setupSmartListContextMenu(const QPoint &pos);
+ void setupQRCode(QString ringID);
+ void backToWelcomePage();
+ void triggerDeleteContactDialog(ContactMethod *cm, Account *ac);
+
+ // 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();
+ const std::string& selectedAccountId();
+ const std::string& selectedConvUid();
+
QMenu* menu_;
- SmartListDelegate* smartListDelegate_;
- QPersistentModelIndex highLightedIndex_;
+ ConversationItemDelegate* conversationItemDelegate_;
ImDelegate* imDelegate_;
+
QMetaObject::Connection imConnection_;
QMetaObject::Connection imVisibleConnection_;
QMetaObject::Connection callChangedConnection_;
QMetaObject::Connection imClickedConnection_;
QMetaObject::Connection crListSelectionConnection_;
- QPropertyAnimation* pageAnim_;
- QMenu* shareMenu_;
+
+ Ui::CallWidget* ui;
QMovie* miniSpinner_;
constexpr static int qrSize_ = 200;
-private:
- void setActualCall(Call* value);
- void placeCall();
- void setupOutOfCallIM();
- void setupSmartListMenu(const QPoint &pos);
- void slidePage(QWidget* widget, bool toRight = false);
- void callStateToView(Call* value);
- void setupQRCode(QString ringID);
- void searchContactLineEditEntry(const URI &uri);
- bool uriNeedNameLookup(const URI uri_passed);
- void processContactLineEdit();
- static Account* getSelectedAccount();
- static bool shouldDisplayInviteButton(ContactMethod& cm);
- void backToWelcomePage();
- void hideMiniSpinner();
- void triggerDeleteContactDialog(ContactMethod *cm, Account *ac);
+ // lrc
+ Video::Renderer* videoRenderer_;
+ std::string lastConvUid_ {};
+ lrc::api::profile::Type currentTypeFilter_{};
+
+ std::unique_ptr<SmartListModel> smartListModel_;
+ std::unique_ptr<MessageModel> messageModel_;
+ 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_;
+
+
};