summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.ControlGallery.Android/_58406EffectRenderer.cs
blob: b34b38a542da92ebd941822e560a7eaac0f6ea63 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
using System;
using System.Diagnostics;
using System.Linq;
using Android.Widget;
using Xamarin.Forms;
using Xamarin.Forms.Controls.Issues;
using Xamarin.Forms.Platform.Android;

[assembly: ExportEffect(typeof(Xamarin.Forms.ControlGallery.Android._58406EffectRenderer), Bugzilla58406.EffectName)]

namespace Xamarin.Forms.ControlGallery.Android
{
	public class _58406EffectRenderer : PlatformEffect
	{
		protected override void OnAttached()
		{
			var tv = Control as TextView;

			if (tv == null)
			{
				return;
			}

			ReverseText(tv, tv.Text);
			tv.TextChanged += OnTextChanged;
		}

		bool _ignoreNextTextChange;

		void OnTextChanged(object sender, global::Android.Text.TextChangedEventArgs textChangedEventArgs)
		{
			var tv = sender as TextView;

			if (tv == null)
			{
				return;
			}

			if (_ignoreNextTextChange)
			{
				_ignoreNextTextChange = false;
				return;
			}

			_ignoreNextTextChange = true;

			ReverseText(tv, textChangedEventArgs.Text.ToString());
		}

		static void ReverseText(TextView tv, string text)
		{
			var rev = new string(text.Reverse().ToArray());
			tv.Text = rev;
		}

		protected override void OnDetached()
		{
			var tv = Control as TextView;
			if (tv == null)
			{
				return;
			}

			tv.TextChanged -= OnTextChanged;
		}
	}
}