Commit 1944bb03 authored by Sébastien Blin's avatar Sébastien Blin

misc: remove filteredConversation

Change-Id: Id436aff76499258244cd1ce88149fa85d8d6601a
parent aa09e0c5
......@@ -109,8 +109,6 @@ render_contact_photo(G_GNUC_UNUSED GtkTreeViewColumn *tree_column,
{
// Get active conversation
auto path = gtk_tree_model_get_path(model, iter);
auto row = std::atoi(gtk_tree_path_to_string(path));
if (row == -1) return;
auto priv = CONVERSATIONS_VIEW_GET_PRIVATE(self);
if (!priv) return;
gchar *uid;
......@@ -150,7 +148,7 @@ render_contact_photo(G_GNUC_UNUSED GtkTreeViewColumn *tree_column,
}
catch (const std::exception&)
{
g_warning("Can't get conversation at row %i", row);
g_warning("Can't get conversation %s", uid);
}
g_free(uid);
......@@ -330,15 +328,15 @@ update_conversation(ConversationsView *self, const std::string& uid) {
iterIsCorrect = gtk_tree_model_iter_nth_child (model, &iter, nullptr, idx);
if (!iterIsCorrect)
break;
gchar *ringId;
gchar *uid;
gtk_tree_model_get (model, &iter,
0 /* col# */, &ringId /* data */,
0 /* col# */, &uid /* data */,
-1);
if(std::string(ringId) == uid) {
if(std::string(uid) == uid) {
// Get informations
auto conversation = (*priv->accountInfo_)->conversationModel->filteredConversation(idx);
auto conversation = (*priv->accountInfo_)->conversationModel->getConversationForUID(uid);
if (conversation.participants.empty()) {
g_free(ringId);
g_free(uid);
return;
}
auto contactUri = conversation.participants.front();
......@@ -357,10 +355,10 @@ update_conversation(ConversationsView *self, const std::string& uid) {
4 /* col # */ , qUtf8Printable(contactInfo.profileInfo.avatar) /* celldata */,
5 /* col # */ , qUtf8Printable(lastMessage) /* celldata */,
-1 /* end */);
g_free(ringId);
g_free(uid);
return;
}
g_free(ringId);
g_free(uid);
idx++;
}
}
......@@ -431,16 +429,25 @@ create_and_fill_model(ConversationsView *self)
static void
call_conversation(GtkTreeView *self,
GtkTreePath *path,
G_GNUC_UNUSED GtkTreePath *path,
G_GNUC_UNUSED GtkTreeViewColumn *column,
G_GNUC_UNUSED gpointer user_data)
{
auto row = std::atoi(gtk_tree_path_to_string(path));
if (row == -1) return;
auto priv = CONVERSATIONS_VIEW_GET_PRIVATE(self);
if (!priv) return;
auto conversation = (*priv->accountInfo_)->conversationModel->filteredConversation(row);
(*priv->accountInfo_)->conversationModel->placeCall(conversation.uid);
GtkTreeIter iter;
GtkTreeModel *model = nullptr;
gchar *uid = nullptr;
auto selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(self));
if (!gtk_tree_selection_get_selected(selection, &model, &iter)) return;
gtk_tree_model_get(model, &iter,
0, &uid,
-1);
(*priv->accountInfo_)->conversationModel->placeCall(uid);
g_free(uid);
}
static void
......@@ -916,10 +923,10 @@ conversations_view_select_conversation(ConversationsView *self, const std::strin
}
}
int
std::string
conversations_view_get_current_selected(ConversationsView *self)
{
g_return_val_if_fail(IS_CONVERSATIONS_VIEW(self), -1);
g_return_val_if_fail(IS_CONVERSATIONS_VIEW(self), "");
/* we always drag the selected row */
auto selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(self));
......@@ -927,11 +934,16 @@ conversations_view_get_current_selected(ConversationsView *self)
GtkTreeIter iter;
if (gtk_tree_selection_get_selected(selection, &model, &iter)) {
auto path = gtk_tree_model_get_path(model, &iter);
auto idx = gtk_tree_path_get_indices(path);
return idx[0];
gchar* uid;
gtk_tree_model_get(model, &iter,
0, &uid,
-1);
if (!uid) return {};
std::string result = uid;
g_free(uid);
return result;
}
return -1;
return {};
}
void
......
......@@ -35,10 +35,10 @@ G_BEGIN_DECLS
typedef struct _ConversationsView ConversationsView;
typedef struct _ConversationsViewClass ConversationsViewClass;
GType conversations_view_get_type (void) G_GNUC_CONST;
GtkWidget *conversations_view_new (AccountInfoPointer const & accountInfo);
void conversations_view_select_conversation (ConversationsView *self, const std::string& uid);
int conversations_view_get_current_selected(ConversationsView *self);
void conversations_view_set_theme(ConversationsView *self, bool darkTheme);
GType conversations_view_get_type (void) G_GNUC_CONST;
GtkWidget *conversations_view_new (AccountInfoPointer const & accountInfo);
void conversations_view_select_conversation (ConversationsView *self, const std::string& uid);
std::string conversations_view_get_current_selected(ConversationsView *self);
void conversations_view_set_theme(ConversationsView *self, bool darkTheme);
G_END_DECLS
......@@ -328,7 +328,7 @@ public:
void enterSettingsView();
void leaveSettingsView();
int getCurrentUid();
std::string getCurrentUid();
void forCurrentConversation(const std::function<void(const lrc::api::conversation::Info&)>& func);
bool showOkCancelDialog(const std::string& title, const std::string& text);
......@@ -716,7 +716,7 @@ on_search_entry_activated(MainWindow* self)
// Select the first conversation of the list
auto& conversationModel = priv->cpp->accountInfo_->conversationModel;
auto conversations = conversationModel->allFilteredConversations();
auto conversations = conversationModel->getAllSearchResults();
const gchar *text = gtk_entry_get_text(GTK_ENTRY(priv->search_entry));
......@@ -1857,7 +1857,7 @@ CppImpl::leaveSettingsView()
}
}
int
std::string
CppImpl::getCurrentUid()
{
const auto &treeview = gtk_notebook_get_current_page(
......@@ -1871,9 +1871,9 @@ void
CppImpl::forCurrentConversation(const std::function<void(const lrc::api::conversation::Info&)>& func)
{
const auto current = getCurrentUid();
if (current == -1) return;
if (current.empty()) return;
try {
auto conversation = accountInfo_->conversationModel->filteredConversation(current);
auto conversation = accountInfo_->conversationModel->getConversationForUID(current.c_str());
if (conversation.participants.empty()) return;
func(conversation);
} catch (...) {
......@@ -2732,9 +2732,9 @@ main_window_accept_call(MainWindow *win)
// Select the first conversation of the list
auto current = priv->cpp->getCurrentUid();
if (current == -1) return;
if (current.empty()) return;
try {
auto conversation = priv->cpp->accountInfo_->conversationModel->filteredConversation(current);
auto conversation = priv->cpp->accountInfo_->conversationModel->getConversationForUID(current.c_str());
if (conversation.participants.empty()) return;
auto contactUri = conversation.participants.at(0);
auto contact = priv->cpp->accountInfo_->contactModel->getContact(contactUri);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment