Skip to content

Commit

Permalink
VENOM-302: Refactoring
Browse files Browse the repository at this point in the history
* RefactorFriendInfoWidget and CreateGroupchatWidget to mvvm
  • Loading branch information
naxuroqa committed Apr 8, 2018
1 parent 241c23a commit 922b718
Show file tree
Hide file tree
Showing 16 changed files with 274 additions and 143 deletions.
6 changes: 4 additions & 2 deletions src/meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -65,9 +65,7 @@ venom_source = files(
'ui/ContactListRequestEntry.vala',
'ui/ContactListWidget.vala',
'ui/ConversationWindow.vala',
'ui/CreateGroupchatWidget.vala',
'ui/FileTransferWidget.vala',
'ui/FriendInfoWidget.vala',
'ui/FriendRequestWidget.vala',
'ui/NodeWidget.vala',
'ui/PeerEntry.vala',
Expand All @@ -78,12 +76,16 @@ venom_source = files(
'view/AddContactWidget.vala',
'view/ConferenceInfoWidget.vala',
'view/ContactListEntry.vala',
'view/CreateGroupchatWidget.vala',
'view/FileTransferEntry.vala',
'view/FriendInfoWidget.vala',
'view/MessageWidget.vala',
'viewmodel/AddContactViewModel.vala',
'viewmodel/ConferenceInfoViewModel.vala',
'viewmodel/ContactListEntryViewModel.vala',
'viewmodel/CreateGroupchatViewModel.vala',
'viewmodel/FileTransferEntryViewModel.vala',
'viewmodel/FriendInfoViewModel.vala',
'viewmodel/MessageViewModel.vala'
)

Expand Down
8 changes: 7 additions & 1 deletion src/tox/ToxSession.vala
Original file line number Diff line number Diff line change
Expand Up @@ -564,7 +564,13 @@ namespace Venom {
logger.i("creating conference failed: " + e.to_string());
throw new ToxError.GENERIC(e.to_string());
}
conference_set_title_private(conference_number, title);
try {
conference_set_title_private(conference_number, title);
} catch (ToxError e) {
var err_conference_delete = ErrConferenceDelete.OK;
handle.conference_delete(conference_number, ref err_conference_delete);
throw e;
}
conference_listener.on_conference_new(conference_number, title);
}

Expand Down
101 changes: 0 additions & 101 deletions src/ui/FriendInfoWidget.vala

This file was deleted.

35 changes: 29 additions & 6 deletions src/ui/create_groupchat_widget.ui
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.20.2 -->
<!-- Generated with glade 3.20.4 -->
<interface domain="venom">
<requires lib="gtk+" version="3.20"/>
<template class="VenomCreateGroupchatWidget" parent="GtkBox">
Expand Down Expand Up @@ -94,6 +94,28 @@
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkRevealer" id="title_error_content">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkLabel" id="title_error">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label">title_error</property>
<property name="xalign">0</property>
<attributes>
<attribute name="style" value="italic"/>
</attributes>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
Expand All @@ -108,7 +130,7 @@
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
<property name="position">3</property>
</packing>
</child>
</object>
Expand Down Expand Up @@ -149,8 +171,8 @@
<property name="can_focus">False</property>
<property name="homogeneous">True</property>
<child>
<object class="GtkRadioButton" id="type">
<property name="label" translatable="yes">text</property>
<object class="GtkRadioButton" id="type_text">
<property name="label" translatable="yes">Text</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
Expand All @@ -164,13 +186,14 @@
</packing>
</child>
<child>
<object class="GtkRadioButton">
<property name="label" translatable="yes">video</property>
<object class="GtkRadioButton" id="type_av">
<property name="label" translatable="yes">Speech</property>
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="draw_indicator">False</property>
<property name="group">type_text</property>
</object>
<packing>
<property name="expand">False</property>
Expand Down
3 changes: 2 additions & 1 deletion src/ui/friend_info_widget.ui
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.20.2 -->
<!-- Generated with glade 3.20.4 -->
<interface domain="venom">
<requires lib="gtk+" version="3.20"/>
<template class="VenomFriendInfoWidget" parent="GtkBox">
Expand Down Expand Up @@ -304,6 +304,7 @@
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="text">alias</property>
<property name="secondary_icon_name">edit-clear-all-symbolic</property>
</object>
<packing>
<property name="expand">False</property>
Expand Down
1 change: 0 additions & 1 deletion src/view/ConferenceInfoWidget.vala
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@
namespace Venom {
[GtkTemplate(ui = "/im/tox/venom/ui/conference_info_widget.ui")]
public class ConferenceInfoWidget : Gtk.Box {

[GtkChild] private Gtk.Entry title;
[GtkChild] private Gtk.ListBox peers;
[GtkChild] private Gtk.Button apply;
Expand Down
8 changes: 4 additions & 4 deletions src/view/ContactListEntry.vala
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/*
* ContactListEntry.vala
*
* Copyright (C) 2018 Venom authors and contributors
* Copyright (C) 2018 Venom authors and contributors
*
* This file is part of Venom.
*
Expand All @@ -26,14 +26,14 @@ namespace Venom {

[GtkTemplate(ui = "/im/tox/venom/ui/contact_list_entry.ui")]
public class ContactListEntry : Gtk.ListBoxRow, IContactListEntry {
private ILogger logger;
private ContactListEntryViewModel view_model;

[GtkChild] private Gtk.Label contact_name;
[GtkChild] private Gtk.Label contact_status;
[GtkChild] private Gtk.Image contact_image;
[GtkChild] private Gtk.Image status_image;

private ILogger logger;
private ContactListEntryViewModel view_model;

public ContactListEntry(ILogger logger, IContact contact) {
logger.d("ContactListEntry created.");
this.logger = logger;
Expand Down
50 changes: 50 additions & 0 deletions src/view/CreateGroupchatWidget.vala
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
/*
* CreateGroupchatWidget.vala
*
* Copyright (C) 2013-2018 Venom authors and contributors
*
* This file is part of Venom.
*
* Venom 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.
*
* Venom 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 Venom. If not, see <http://www.gnu.org/licenses/>.
*/

namespace Venom {
[GtkTemplate(ui = "/im/tox/venom/ui/create_groupchat_widget.ui")]
public class CreateGroupchatWidget : Gtk.Box {
[GtkChild] private Gtk.Entry title;
[GtkChild] private Gtk.RadioButton type_text;
[GtkChild] private Gtk.Button create;
[GtkChild] private Gtk.Revealer title_error_content;
[GtkChild] private Gtk.Label title_error;

private ILogger logger;
private CreateGroupchatViewModel view_model;

public CreateGroupchatWidget(ILogger logger, CreateGroupchatWidgetListener listener) {
logger.d("CreateGroupChatWidget created.");
this.logger = logger;
this.view_model = new CreateGroupchatViewModel(logger, listener);

title.bind_property("text", view_model, "title", GLib.BindingFlags.SYNC_CREATE | GLib.BindingFlags.BIDIRECTIONAL);
view_model.bind_property("title-error", title_error, "label", GLib.BindingFlags.SYNC_CREATE);
view_model.bind_property("title-error-visible", title_error_content, "reveal-child", GLib.BindingFlags.SYNC_CREATE);
//FIXME type binding
create.clicked.connect(view_model.on_create);
}

~CreateGroupchatWidget() {
logger.d("CreateGroupChatWidget destroyed.");
}
}
}
6 changes: 3 additions & 3 deletions src/view/FileTransferEntry.vala
Original file line number Diff line number Diff line change
Expand Up @@ -22,16 +22,16 @@
namespace Venom {
[GtkTemplate(ui = "/im/tox/venom/ui/file_transfer_entry.ui")]
public class FileTransferEntry : Gtk.ListBoxRow {
private ILogger logger;
private FileTransferEntryViewModel view_model;

[GtkChild] private Gtk.Label description;
[GtkChild] private Gtk.ProgressBar progress;
[GtkChild] private Gtk.Button open_file;
[GtkChild] private Gtk.Button resume_transfer;
[GtkChild] private Gtk.Button pause_transfer;
[GtkChild] private Gtk.Button delete_transfer;

private ILogger logger;
private FileTransferEntryViewModel view_model;

public FileTransferEntry(ILogger logger, FileTransfer file_transfer) {
logger.d("FileTransferEntry created.");

Expand Down

0 comments on commit 922b718

Please sign in to comment.