From 35f5014272f4591e4cc1af8b4566647ea6cf785a Mon Sep 17 00:00:00 2001 From: moguno Date: Wed, 11 May 2016 22:03:48 +0900 Subject: [PATCH] =?UTF-8?q?Gdk::SubPartsQuote=E3=81=AE=E3=81=84=E3=81=84?= =?UTF-8?q?=E6=84=9F=E3=81=98=E3=81=AE=E3=83=A1=E3=82=BD=E3=83=83=E3=83=89?= =?UTF-8?q?=E3=82=92SubPartsMessage=E3=81=AB=E7=A7=BB=E6=A4=8D=E3=81=97?= =?UTF-8?q?=E3=81=9F=E3=80=82=20show=5Fheader=3F()=20show=5Ficon=3F()=20sh?= =?UTF-8?q?ow=5Fedge=3F()=20render=5Foutline()=E3=80=81render=5Fbadge()?= =?UTF-8?q?=EF=BC=88=E7=A7=BB=E6=A4=8D=EF=BC=86edge=5Ftype()=E3=83=A1?= =?UTF-8?q?=E3=82=BD=E3=83=83=E3=83=89=E3=82=92=E3=82=AA=E3=83=BC=E3=83=90?= =?UTF-8?q?=E3=83=BC=E3=83=A9=E3=82=A4=E3=83=89=E3=81=97=E3=81=A6=E6=9E=A0?= =?UTF-8?q?=E3=82=BF=E3=82=A4=E3=83=97=E3=82=92=E9=81=B8=E6=8A=9E=E5=87=BA?= =?UTF-8?q?=E6=9D=A5=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB=E3=81=97=E3=81=9F?= =?UTF-8?q?=E3=80=82=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/mui/cairo_replyviewer.rb | 32 +------------- core/mui/cairo_sub_parts_message_base.rb | 75 ++++++++++++++++++++++++-------- core/mui/cairo_sub_parts_quote.rb | 36 +-------------- 3 files changed, 62 insertions(+), 81 deletions(-) diff --git a/core/mui/cairo_replyviewer.rb b/core/mui/cairo_replyviewer.rb index c45c15a..5ed3d48 100644 --- a/core/mui/cairo_replyviewer.rb +++ b/core/mui/cairo_replyviewer.rb @@ -34,14 +34,6 @@ class Gdk::ReplyViewer < Gdk::SubPartsMessageBase def main_text_font(message) Pango::FontDescription.new(UserConfig[:reply_text_font]) end - def header_left_content(*args) - if show_header? - super end end - - def header_right_content(*args) - if show_header? - super end end - def icon_size if show_icon? if UserConfig[:reply_icon_size] @@ -52,28 +44,8 @@ class Gdk::ReplyViewer < Gdk::SubPartsMessageBase def text_max_line_count(message) UserConfig[:reply_text_max_line_count] || super end - def render_outline(message, context, base_y) - unless show_edge? - @edge = 2 - return end - @edge = 8 - case UserConfig[:reply_edge] - when :floating - render_outline_floating(message, context, base_y) - when :solid - render_outline_solid(message, context, base_y) - when :flat - render_outline_flat(message, context, base_y) end end - - def render_badge(message, context) - return unless show_edge? - case UserConfig[:reply_edge] - when :floating - render_badge_floating(message, context) - when :solid - render_badge_solid(message, context) - when :flat - render_badge_flat(message, context) end end + def edge_type + UserConfig[:reply_edge] end def show_header? (UserConfig[:reply_present_policy] || []).include?(:header) end diff --git a/core/mui/cairo_sub_parts_message_base.rb b/core/mui/cairo_sub_parts_message_base.rb index d1083f9..6b30825 100644 --- a/core/mui/cairo_sub_parts_message_base.rb +++ b/core/mui/cairo_sub_parts_message_base.rb @@ -13,6 +13,24 @@ そして、以下のドキュメントを参考に、必要なメソッドを class Gdk::SubPartsMessageBase < Gdk::SubParts DEFAULT_ICON_SIZE = 32 + # ヘッダを表示するか? + # ==== Return + # [TrueClass] 表示する場合true + def show_header? + true end + + # アイコンを表示するか? + # ==== Return + # [TrueClass] 表示する場合true + def show_icon? + true end + + # 枠を表示するか? + # ==== Return + # [TrueClass] 表示する場合true + def show_edge? + true end + # SubPartsに表示する _Message_ 。 # 複数表示可能なので、それらを上に表示されるものから順番に返す。 # サブクラスで処理を実装すること。 @@ -33,8 +51,9 @@ class Gdk::SubPartsMessageBase < Gdk::SubParts # [Pango::FontDescription] フォント情報 # [Pango::Attribute] マークアップ情報 def header_left_content(message) - attr_list, text = Pango.parse_markup("#{Pango.escape(message[:user][:idname])} #{Pango.escape(message[:user][:name] || '')}") - return text, header_left_font(message), attr_list end + if show_header? + attr_list, text = Pango.parse_markup("#{Pango.escape(message[:user][:idname])} #{Pango.escape(message[:user][:name] || '')}") + return text, header_left_font(message), attr_list end end # ヘッダ左に使用するフォントを返す # ==== Args @@ -71,8 +90,9 @@ class Gdk::SubPartsMessageBase < Gdk::SubParts # [Pango::FontDescription] フォント情報 # [Pango::Attribute] マークアップ情報 def header_right_content(message) - attr_list, text = Pango.parse_markup("#{Pango.escape(header_right_text(message))}") - return text, header_right_font(message), attr_list end + if show_header? + attr_list, text = Pango.parse_markup("#{Pango.escape(header_right_text(message))}") + return text, header_right_font(message), attr_list end end # ヘッダ右に使用するフォントを返す # ==== Args @@ -113,6 +133,15 @@ class Gdk::SubPartsMessageBase < Gdk::SubParts else [1.0]*3 end end + # 枠のタイプを返す + # ==== Return + # 以下の値のいずれか一つ + # :floating :: 影にblurを入れて、浮いているような感じに + # :solid :: 細い線を入れる + # :flat :: 枠線なし + def edge_type + :floating end + # SubParts内の _Message_ の枠の色を返す # ==== Args # [message] Message @@ -126,7 +155,10 @@ class Gdk::SubPartsMessageBase < Gdk::SubParts # [Gdk::Rectangle] サイズ(px)。xとyは無視され、widthとheightのみが利用される # [nil] アイコンを表示しない def icon_size - Gdk::Rectangle.new(0, 0, DEFAULT_ICON_SIZE, DEFAULT_ICON_SIZE) end + if show_icon? + Gdk::Rectangle.new(0, 0, DEFAULT_ICON_SIZE, DEFAULT_ICON_SIZE) + else + nil end end # _message_ の本文のテキスト色を返す # ==== Args @@ -247,7 +279,7 @@ class Gdk::SubPartsMessageBase < Gdk::SubParts # ヘッダ(左)のための Pango::Layout のインスタンスを返す def header_left(message, context = dummy_context) text, font, attr_list = header_left_content(message) - if text + if show_header? layout = context.create_pango_layout layout.attributes = attr_list if attr_list layout.font_description = font if font @@ -309,7 +341,17 @@ class Gdk::SubPartsMessageBase < Gdk::SubParts layout end def render_outline(message, context, base_y) - render_outline_floating(message, context, base_y) end + unless show_edge? + @edge = 2 + return end + @edge = 8 + case edge_type + when :floating + render_outline_floating(message, context, base_y) + when :solid + render_outline_solid(message, context, base_y) + when :flat + render_outline_flat(message, context, base_y) end end # エッジの描画。 # 影にblurを入れて、浮いているような感じに @@ -347,7 +389,14 @@ class Gdk::SubPartsMessageBase < Gdk::SubParts context.rounded_rectangle(x,y,w,h, radius) } } end def render_badge(message, context) - render_badge_floating(message, context) end + return unless show_edge? + case edge_type + when :floating + render_badge_floating(message, context) + when :solid + render_badge_solid(message, context) + when :flat + render_badge_flat(message, context) end end # バッジの描画。 # 影にblurを入れて、浮いているような感じに @@ -395,7 +444,7 @@ class Gdk::SubPartsMessageBase < Gdk::SubParts context.paint end end def render_icon(message, context) - if icon_size + if show_icon? context.set_source_pixbuf(main_icon(message)) context.paint end end @@ -403,11 +452,3 @@ class Gdk::SubPartsMessageBase < Gdk::SubParts Gdk::WebImageLoader.pixbuf(message[:user][:profile_image_url], icon_size){ |pixbuf| helper.on_modify } end end - - - - - - - - diff --git a/core/mui/cairo_sub_parts_quote.rb b/core/mui/cairo_sub_parts_quote.rb index 0113e3c..375be8d 100644 --- a/core/mui/cairo_sub_parts_quote.rb +++ b/core/mui/cairo_sub_parts_quote.rb @@ -46,14 +46,6 @@ class Gdk::SubPartsQuote < Gdk::SubPartsMessageBase def main_text_font(message) Pango::FontDescription.new(UserConfig[:quote_text_font]) end - def header_left_content(*args) - if show_header? - super end end - - def header_right_content(*args) - if show_header? - super end end - def icon_size if show_icon? if UserConfig[:quote_icon_size] @@ -64,28 +56,8 @@ class Gdk::SubPartsQuote < Gdk::SubPartsMessageBase def text_max_line_count(message) UserConfig[:quote_text_max_line_count] || super end - def render_outline(message, context, base_y) - unless show_edge? - @edge = 2 - return end - @edge = 8 - case UserConfig[:quote_edge] - when :floating - render_outline_floating(message, context, base_y) - when :solid - render_outline_solid(message, context, base_y) - when :flat - render_outline_flat(message, context, base_y) end end - - def render_badge(message, context) - return unless show_edge? - case UserConfig[:quote_edge] - when :floating - render_badge_floating(message, context) - when :solid - render_badge_solid(message, context) - when :flat - render_badge_flat(message, context) end end + def edge_type + UserConfig[:quote_edge] end def show_header? (UserConfig[:quote_present_policy] || []).include?(:header) end @@ -96,7 +68,3 @@ class Gdk::SubPartsQuote < Gdk::SubPartsMessageBase def show_edge? (UserConfig[:quote_present_policy] || []).include?(:edge) end end - - - - -- 2.6.0