From c91ad788f5c023f41a25d222e6858de3aea07653 Mon Sep 17 00:00:00 2001 From: wurstsalat <mailtrash@posteo.de> Date: Sun, 2 May 2021 15:04:16 +0200 Subject: [PATCH] StartChat: Add filter bar --- gajim/data/gui/start_chat_dialog.ui | 233 ++++++++++++------ .../feather-filter-symbolic.symbolic.png | Bin 0 -> 273 bytes .../feather-filter-symbolic.symbolic.png | Bin 0 -> 485 bytes .../devices/feather-filter-symbolic.svg | 60 +++++ gajim/gtk/start_chat.py | 18 ++ 5 files changed, 232 insertions(+), 79 deletions(-) create mode 100644 gajim/data/icons/hicolor/16x16/devices/feather-filter-symbolic.symbolic.png create mode 100644 gajim/data/icons/hicolor/32x32/devices/feather-filter-symbolic.symbolic.png create mode 100644 gajim/data/icons/hicolor/scalable/devices/feather-filter-symbolic.svg diff --git a/gajim/data/gui/start_chat_dialog.ui b/gajim/data/gui/start_chat_dialog.ui index ea506f68a2..f5fcb2d334 100644 --- a/gajim/data/gui/start_chat_dialog.ui +++ b/gajim/data/gui/start_chat_dialog.ui @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<!-- Generated with glade 3.36.0 --> +<!-- Generated with glade 3.38.2 --> <interface> <requires lib="gtk+" version="3.22"/> <object class="GtkListStore" id="account_store"> @@ -14,24 +14,24 @@ </object> <object class="GtkStack" id="stack"> <property name="visible">True</property> - <property name="can_focus">False</property> + <property name="can-focus">False</property> <signal name="notify::visible-child-name" handler="_on_page_changed" swapped="no"/> <child> <object class="GtkBox"> <property name="visible">True</property> - <property name="can_focus">False</property> + <property name="can-focus">False</property> <property name="orientation">vertical</property> <child> <object class="GtkInfoBar" id="infobar"> <property name="visible">True</property> - <property name="can_focus">False</property> + <property name="can-focus">False</property> <property name="homogeneous">True</property> - <property name="show_close_button">True</property> + <property name="show-close-button">True</property> <signal name="response" handler="_on_infobar_response" swapped="no"/> <child internal-child="action_area"> <object class="GtkButtonBox"> - <property name="can_focus">False</property> - <property name="layout_style">end</property> + <property name="can-focus">False</property> + <property name="layout-style">end</property> <child> <placeholder/> </child> @@ -44,13 +44,13 @@ </child> <child internal-child="content_area"> <object class="GtkBox"> - <property name="can_focus">False</property> + <property name="can-focus">False</property> <property name="spacing">6</property> <child> <object class="GtkImage"> <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="icon_name">dialog-information-symbolic</property> + <property name="can-focus">False</property> + <property name="icon-name">dialog-information-symbolic</property> <property name="icon_size">3</property> </object> <packing> @@ -62,10 +62,10 @@ <child> <object class="GtkLabel"> <property name="visible">True</property> - <property name="can_focus">False</property> + <property name="can-focus">False</property> <property name="label" translatable="yes">Start a new chat, join a group chat or search for new group chats globally. You can also enter an XMPP address.</property> <property name="wrap">True</property> - <property name="max_width_chars">46</property> + <property name="max-width-chars">46</property> <property name="xalign">0</property> </object> <packing> @@ -91,25 +91,26 @@ <child> <object class="GtkBox" id="box"> <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="border_width">18</property> + <property name="can-focus">False</property> + <property name="border-width">18</property> <property name="orientation">vertical</property> <property name="spacing">6</property> <child> <object class="GtkBox"> <property name="visible">True</property> - <property name="can_focus">False</property> + <property name="can-focus">False</property> <property name="spacing">6</property> <child> <object class="GtkSearchEntry" id="search_entry"> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="has_focus">True</property> - <property name="is_focus">True</property> + <property name="can-focus">True</property> + <property name="has-focus">True</property> + <property name="is-focus">True</property> <property name="hexpand">True</property> - <property name="primary_icon_name">edit-find-symbolic</property> - <property name="primary_icon_activatable">False</property> - <property name="primary_icon_sensitive">False</property> + <property name="primary-icon-name">edit-find-symbolic</property> + <property name="primary-icon-activatable">False</property> + <property name="primary-icon-sensitive">False</property> + <property name="placeholder-text" translatable="yes">Search…</property> </object> <packing> <property name="expand">False</property> @@ -117,30 +118,104 @@ <property name="position">0</property> </packing> </child> + <child> + <object class="GtkToggleButton" id="filter_bar_toggle"> + <property name="visible">True</property> + <property name="can-focus">True</property> + <property name="receives-default">True</property> + <property name="tooltip-text" translatable="yes">Filter Chats</property> + <property name="halign">end</property> + <signal name="toggled" handler="_on_filter_bar_toggled" swapped="no"/> + <child> + <object class="GtkImage"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="icon-name">feather-filter-symbolic</property> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> <child> <object class="GtkToggleButton" id="global_search_toggle"> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">True</property> - <property name="tooltip_text" translatable="yes">Global Group Chat Search</property> + <property name="can-focus">True</property> + <property name="receives-default">True</property> + <property name="tooltip-text" translatable="yes">Global Group Chat Search</property> <property name="halign">end</property> <property name="relief">half</property> <signal name="toggled" handler="_on_global_search_toggle" swapped="no"/> <child> <object class="GtkImage"> <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="icon_name">feather-globe-symbolic</property> + <property name="can-focus">False</property> + <property name="icon-name">feather-globe-symbolic</property> </object> </child> </object> <packing> <property name="expand">False</property> <property name="fill">True</property> - <property name="position">1</property> + <property name="position">2</property> </packing> </child> </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkRevealer" id="filter_bar_revealer"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="transition-duration">100</property> + <child> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="halign">center</property> + <child> + <object class="GtkToggleButton" id="filter_chats"> + <property name="label" translatable="yes">Chats</property> + <property name="visible">True</property> + <property name="can-focus">True</property> + <property name="receives-default">True</property> + <property name="active">True</property> + <signal name="toggled" handler="_on_filter_toggled" swapped="no"/> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkToggleButton" id="filter_groupchats"> + <property name="label" translatable="yes">Group Chats</property> + <property name="visible">True</property> + <property name="can-focus">True</property> + <property name="receives-default">True</property> + <property name="active">True</property> + <signal name="toggled" handler="_on_filter_toggled" swapped="no"/> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + <style> + <class name="linked"/> + </style> + </object> + </child> + </object> <packing> <property name="expand">False</property> <property name="fill">True</property> @@ -150,20 +225,20 @@ <child> <object class="GtkScrolledWindow" id="scrolledwindow"> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="hscrollbar_policy">never</property> - <property name="shadow_type">in</property> + <property name="can-focus">True</property> + <property name="hscrollbar-policy">never</property> + <property name="shadow-type">in</property> <child> <object class="GtkViewport"> <property name="visible">True</property> - <property name="can_focus">False</property> + <property name="can-focus">False</property> <child> <object class="GtkListBox" id="listbox"> <property name="name">StartChatListBox</property> <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="selection_mode">browse</property> - <property name="activate_on_single_click">False</property> + <property name="can-focus">False</property> + <property name="selection-mode">browse</property> + <property name="activate-on-single-click">False</property> </object> </child> </object> @@ -190,12 +265,12 @@ <child> <object class="GtkBox"> <property name="visible">True</property> - <property name="can_focus">False</property> + <property name="can-focus">False</property> <property name="orientation">vertical</property> <child> <object class="GtkSpinner" id="spinner"> <property name="visible">True</property> - <property name="can_focus">False</property> + <property name="can-focus">False</property> <property name="halign">center</property> <property name="valign">center</property> <property name="vexpand">True</property> @@ -216,21 +291,21 @@ <child> <object class="GtkBox"> <property name="visible">True</property> - <property name="can_focus">False</property> + <property name="can-focus">False</property> <property name="orientation">vertical</property> <child> <object class="GtkBox"> <property name="visible">True</property> - <property name="can_focus">False</property> + <property name="can-focus">False</property> <property name="orientation">vertical</property> <property name="spacing">12</property> <property name="homogeneous">True</property> <child> <object class="GtkImage"> <property name="visible">True</property> - <property name="can_focus">False</property> + <property name="can-focus">False</property> <property name="valign">end</property> - <property name="icon_name">dialog-error</property> + <property name="icon-name">dialog-error</property> <property name="icon_size">6</property> </object> <packing> @@ -242,7 +317,7 @@ <child> <object class="GtkLabel" id="error_label"> <property name="visible">True</property> - <property name="can_focus">False</property> + <property name="can-focus">False</property> <property name="valign">start</property> <property name="justify">center</property> <property name="wrap">True</property> @@ -267,16 +342,16 @@ <object class="GtkButton"> <property name="label" translatable="yes">_Back</property> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">True</property> + <property name="can-focus">True</property> + <property name="receives-default">True</property> <property name="halign">start</property> - <property name="use_underline">True</property> + <property name="use-underline">True</property> <signal name="clicked" handler="_on_back_clicked" swapped="no"/> </object> <packing> <property name="expand">False</property> <property name="fill">True</property> - <property name="pack_type">end</property> + <property name="pack-type">end</property> <property name="position">1</property> </packing> </child> @@ -292,7 +367,7 @@ <child> <object class="GtkBox" id="info_box"> <property name="visible">True</property> - <property name="can_focus">False</property> + <property name="can-focus">False</property> <property name="orientation">vertical</property> <property name="spacing">6</property> <child> @@ -301,11 +376,11 @@ <child> <object class="GtkBox"> <property name="visible">True</property> - <property name="can_focus">False</property> + <property name="can-focus">False</property> <child> <object class="GtkBox" id="join_box"> <property name="visible">True</property> - <property name="can_focus">False</property> + <property name="can-focus">False</property> <child> <placeholder/> </child> @@ -313,10 +388,10 @@ <object class="GtkButton" id="join_button"> <property name="label" translatable="yes">_Join</property> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">True</property> + <property name="can-focus">True</property> + <property name="receives-default">True</property> <property name="halign">end</property> - <property name="use_underline">True</property> + <property name="use-underline">True</property> <signal name="clicked" handler="_on_join_clicked" swapped="no"/> <style> <class name="suggested-action"/> @@ -325,7 +400,7 @@ <packing> <property name="expand">False</property> <property name="fill">True</property> - <property name="pack_type">end</property> + <property name="pack-type">end</property> <property name="position">1</property> </packing> </child> @@ -336,7 +411,7 @@ <packing> <property name="expand">False</property> <property name="fill">True</property> - <property name="pack_type">end</property> + <property name="pack-type">end</property> <property name="position">1</property> </packing> </child> @@ -344,10 +419,10 @@ <object class="GtkButton"> <property name="label" translatable="yes">_Back</property> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">True</property> + <property name="can-focus">True</property> + <property name="receives-default">True</property> <property name="halign">start</property> - <property name="use_underline">True</property> + <property name="use-underline">True</property> <signal name="clicked" handler="_on_back_clicked" swapped="no"/> </object> <packing> @@ -360,7 +435,7 @@ <packing> <property name="expand">False</property> <property name="fill">True</property> - <property name="pack_type">end</property> + <property name="pack-type">end</property> <property name="position">1</property> </packing> </child> @@ -376,13 +451,13 @@ <child> <object class="GtkBox"> <property name="visible">True</property> - <property name="can_focus">False</property> + <property name="can-focus">False</property> <property name="orientation">vertical</property> <property name="spacing">6</property> <child> <object class="GtkLabel"> <property name="visible">True</property> - <property name="can_focus">False</property> + <property name="can-focus">False</property> <property name="label" translatable="yes">Select Account</property> <property name="justify">center</property> <property name="wrap">True</property> @@ -400,18 +475,18 @@ <child> <object class="GtkScrolledWindow"> <property name="visible">True</property> - <property name="can_focus">True</property> + <property name="can-focus">True</property> <property name="vexpand">True</property> - <property name="hscrollbar_policy">never</property> - <property name="shadow_type">in</property> + <property name="hscrollbar-policy">never</property> + <property name="shadow-type">in</property> <child> <object class="GtkTreeView" id="account_view"> <property name="visible">True</property> - <property name="can_focus">True</property> + <property name="can-focus">True</property> <property name="model">account_store</property> - <property name="headers_visible">False</property> - <property name="enable_search">False</property> - <property name="show_expanders">False</property> + <property name="headers-visible">False</property> + <property name="enable-search">False</property> + <property name="show-expanders">False</property> <signal name="row-activated" handler="_on_select_clicked" swapped="no"/> <child internal-child="selection"> <object class="GtkTreeSelection"/> @@ -454,16 +529,16 @@ <child> <object class="GtkBox"> <property name="visible">True</property> - <property name="can_focus">False</property> + <property name="can-focus">False</property> <property name="homogeneous">True</property> <child> <object class="GtkButton"> <property name="label" translatable="yes">_Back</property> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">True</property> + <property name="can-focus">True</property> + <property name="receives-default">True</property> <property name="halign">start</property> - <property name="use_underline">True</property> + <property name="use-underline">True</property> <signal name="clicked" handler="_on_back_clicked" swapped="no"/> </object> <packing> @@ -476,10 +551,10 @@ <object class="GtkButton"> <property name="label" translatable="yes">_Select</property> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">True</property> + <property name="can-focus">True</property> + <property name="receives-default">True</property> <property name="halign">end</property> - <property name="use_underline">True</property> + <property name="use-underline">True</property> <signal name="clicked" handler="_on_select_clicked" swapped="no"/> <style> <class name="suggested-action"/> @@ -495,7 +570,7 @@ <packing> <property name="expand">False</property> <property name="fill">True</property> - <property name="pack_type">end</property> + <property name="pack-type">end</property> <property name="position">2</property> </packing> </child> @@ -511,7 +586,7 @@ </object> <object class="GtkBox" id="placeholder"> <property name="visible">True</property> - <property name="can_focus">False</property> + <property name="can-focus">False</property> <property name="halign">center</property> <property name="valign">center</property> <property name="orientation">vertical</property> @@ -519,8 +594,8 @@ <child> <object class="GtkImage"> <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="icon_name">avatar-default-symbolic</property> + <property name="can-focus">False</property> + <property name="icon-name">avatar-default-symbolic</property> <property name="icon_size">6</property> <style> <class name="dim-label"/> @@ -535,12 +610,12 @@ <child> <object class="GtkLabel"> <property name="visible">True</property> - <property name="can_focus">False</property> + <property name="can-focus">False</property> <property name="label" translatable="yes">No contacts found You can also type an XMPP address</property> <property name="justify">center</property> <property name="wrap">True</property> - <property name="max_width_chars">35</property> + <property name="max-width-chars">35</property> <style> <class name="dim-label"/> </style> diff --git a/gajim/data/icons/hicolor/16x16/devices/feather-filter-symbolic.symbolic.png b/gajim/data/icons/hicolor/16x16/devices/feather-filter-symbolic.symbolic.png new file mode 100644 index 0000000000000000000000000000000000000000..4f6715659c7757280fe5f16c741c3ce345b5c460 GIT binary patch literal 273 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf<e%_#aSXBO z-Fm?`%PCNV<$=F&E|Z>uz=e{RD!$VuxG8qDZr%Fr6_d`I%c+u?o46HkL~}$sdI;9f zJG#56-akIB;6Xv+xw)2yKlnchI3{qt{)(Q#iHCB@A|K}k#T?gPCH+XU_)Ad7?}t^n z^%swFtrdR6HtmH<ZN*Xkd3|r>KK5=8{<!XlZOy~H?)^u3<b$Tf9&(9!<2$49f!FgR z(jfv5ReeNuFsmG$*|xo)<+h_;?h=)lD+!Hea+_vd|EQ^Fa4Kt(yYS*QZ0Q@>E;T9K Ul1$&&4)ha)r>mdKI;Vst0CQ+=5dZ)H literal 0 HcmV?d00001 diff --git a/gajim/data/icons/hicolor/32x32/devices/feather-filter-symbolic.symbolic.png b/gajim/data/icons/hicolor/32x32/devices/feather-filter-symbolic.symbolic.png new file mode 100644 index 0000000000000000000000000000000000000000..349775bd137eb224efe2a5c05afbeb89282ea729 GIT binary patch literal 485 zcmV<B0UG{^P)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800004b3#c}2nYxW zd<bNS0004;Nkl<ZScUD@J!=$U6b0ZX>n7MJ3W8u0MQwywiwGhXVj=kf0quf~7N)S! zDurSzVk3gKX|2RU>{17j6c$=4N`e-CCS&o=FgK7*c6Q&L#yzksbN8Hk&ffXD{O_13 zzq`1A11<Tk;Waj@!d(<Cf9^o14A33TAKejM>Qk^+8p)aR_#<v(Gm}{d4=`OGFH5KV zXCxiMd-aI!Wip5Rq3;JA?nOL>^+2A_V16z1`-aoI2`=GJDflgoYEYb$#$4bpuJkLs zsZRYBCkHS;hR>nTjiwDA1@S5lHqh?J+n|5a)ExHUMQHK{Q+?<r@ha$E8sawJhn3Lm zX&;)$f&Wg1r|VIC3QceAz+DKuFE}x*d4;p;t9b*n+i)&RS9*b8IG@YB!kqMEEbtvO z;kTKxR+OB%+~yS))gyiu>d!-caa87{cSmKk6zWT%KCz9iCpx=RwxGzw88|?8j021V z3=`luj^ql`1Z(Ph{s$gP`(#xcIcBA$wb#1c3MO&Y)+M&p02QWiT|JSNwgbc<7p2vH bj7Ine!>W*T4pu}E00000NkvXXu0mjfFQe7; literal 0 HcmV?d00001 diff --git a/gajim/data/icons/hicolor/scalable/devices/feather-filter-symbolic.svg b/gajim/data/icons/hicolor/scalable/devices/feather-filter-symbolic.svg new file mode 100644 index 0000000000..edd49d13e5 --- /dev/null +++ b/gajim/data/icons/hicolor/scalable/devices/feather-filter-symbolic.svg @@ -0,0 +1,60 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="24" + height="24" + viewBox="0 0 24 24" + fill="none" + stroke="currentColor" + stroke-width="2" + stroke-linecap="round" + stroke-linejoin="round" + class="feather feather-filter" + version="1.1" + id="svg4" + sodipodi:docname="feather-filter-symbolic.svg" + inkscape:version="1.0.2 (e86c870879, 2021-01-15, custom)"> + <metadata + id="metadata10"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs8" /> + <sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1920" + inkscape:window-height="998" + id="namedview6" + showgrid="false" + inkscape:zoom="34.291667" + inkscape:cx="12" + inkscape:cy="12" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="svg4" /> + <path + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate;stop-color:#000000;stop-opacity:1;opacity:1" + d="M 2 2 A 1.0001 1.0001 0 0 0 1.2363281 3.6464844 L 9 12.826172 L 9 19 A 1.0001 1.0001 0 0 0 9.5527344 19.894531 L 13.552734 21.894531 A 1.0001 1.0001 0 0 0 15 21 L 15 12.826172 L 22.763672 3.6464844 A 1.0001 1.0001 0 0 0 22 2 L 2 2 z M 4.15625 4 L 19.84375 4 L 13.236328 11.814453 A 1.0001 1.0001 0 0 0 13 12.460938 L 13 19.382812 L 11 18.382812 L 11 12.460938 A 1.0001 1.0001 0 0 0 10.763672 11.814453 L 4.15625 4 z " + id="polygon2" /> +</svg> diff --git a/gajim/gtk/start_chat.py b/gajim/gtk/start_chat.py index 7227b9c04d..b947e151d9 100644 --- a/gajim/gtk/start_chat.py +++ b/gajim/gtk/start_chat.py @@ -283,6 +283,13 @@ def _on_infobar_response(self, _widget, response): self._ui.infobar.set_revealed(False) app.settings.set('show_help_start_chat', False) + def _on_filter_bar_toggled(self, toggle_button): + active = toggle_button.get_active() + self._ui.filter_bar_revealer.set_reveal_child(active) + + def _on_filter_toggled(self, _toggle_button): + self._ui.listbox.invalidate_filter() + def _start_new_chat(self, row): if row.new: try: @@ -406,6 +413,8 @@ def _on_global_search_toggle(self, button): self._ui.search_entry.grab_focus() image_style_context = button.get_children()[0].get_style_context() if button.get_active(): + self._ui.filter_bar_toggle.set_active(False) + self._ui.filter_bar_toggle.set_sensitive(False) image_style_context.add_class('selected-color') self._set_listbox(self._global_search_listbox) if self._ui.search_entry.get_text(): @@ -413,6 +422,7 @@ def _on_global_search_toggle(self, button): self._remove_new_jid_row() self._ui.listbox.invalidate_filter() else: + self._ui.filter_bar_toggle.set_sensitive(True) self._ui.search_entry.set_text('') image_style_context.remove_class('selected-color') self._set_listbox(self._ui.listbox) @@ -495,6 +505,14 @@ def _filter_func(self, row, _user_data): search_text = self._ui.search_entry.get_text().lower() search_text_list = search_text.split() row_text = row.get_search_text().lower() + + show_chats = self._ui.filter_chats.get_active() + show_groupchats = self._ui.filter_groupchats.get_active() + if row.groupchat and not show_groupchats: + return False + if not row.groupchat and not show_chats: + return False + for text in search_text_list: if text not in row_text: GLib.timeout_add(50, self.select_first_row) -- GitLab