Skip to content
This repository was archived by the owner on Sep 4, 2024. It is now read-only.

Commit 6dd9512

Browse files
committed
Differenciates between RadioButton and CheckBox frontend
1 parent 6eb3892 commit 6dd9512

File tree

10 files changed

+78
-35
lines changed

10 files changed

+78
-35
lines changed

TestApps/Samples/Samples/ListView2.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,15 +37,15 @@ public ListView2 ()
3737
list.Columns.Add (new ListViewColumn("Not Editable", new CheckBoxCellView { Editable = false, ActiveField = nonEditableActiveField }));
3838

3939
Xwt.Backends.IEditableCellViewFrontend<string> stringCellView = new TextCellView { Editable = true, TextField = textField };
40-
stringCellView.EditingFinished += StringCellView_EditingFinished;
40+
stringCellView.EditingFinished += CellView_EditingFinished;
4141
list.Columns.Add (new ListViewColumn("Editable",(CellView) stringCellView));
4242

4343
cellView = new CheckBoxCellView { EditableField = editableField, ActiveField = somewhatEditableData };
4444
cellView.EditingFinished += CellView_EditingFinished;
4545
list.Columns.Add(new ListViewColumn("Somewhat Editable",(CellView) cellView));
4646

4747
stringCellView = new TextCellView { EditableField = editableField, TextField = textField2 };
48-
stringCellView.EditingFinished += StringCellView_EditingFinished;
48+
stringCellView.EditingFinished += CellView_EditingFinished;
4949

5050
list.Columns.Add (new ListViewColumn("Somewhat Editable", (CellView)stringCellView));
5151

@@ -64,12 +64,12 @@ public ListView2 ()
6464
PackStart (list, true);
6565
}
6666

67-
void CellView_EditingFinished(object sender, Xwt.Backends.CellEditingFinishedArgs<Xwt.CheckBoxState> e)
67+
void CellView_EditingFinished(object sender, Xwt.CellEditingFinishedArgs<Xwt.CheckBoxState> e)
6868
{
6969
Console.WriteLine("Your old value was '{0}' and now is '{1}'", e.OldValue, e.NewValue);
7070
}
7171

72-
void StringCellView_EditingFinished(object sender, Xwt.Backends.CellEditingFinishedArgs<string> e)
72+
void CellView_EditingFinished(object sender, Xwt.CellEditingFinishedArgs<string> e)
7373
{
7474
Console.WriteLine("Your old value was '{0}' and now is '{1}'", e.OldValue, e.NewValue);
7575
}

TestApps/Samples/Samples/ListViewCombos.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,11 +49,11 @@ public ListViewCombos ()
4949
comboCellView.Items.Add (1, "one");
5050
comboCellView.Items.Add (2, "two");
5151
comboCellView.Items.Add (3, "three");
52-
comboCellView.EditingFinished += TextCellView_EditingFinished;
52+
comboCellView.EditingFinished += CellView_EditingFinished;
5353
list.Columns.Add (new ListViewColumn ("List 1", comboCellView));
5454

5555
var comboCellView2 = new ComboBoxCellView { Editable = true, SelectedIndexField = indexField2, ItemsField = itemsField };
56-
comboCellView2.EditingFinished += TextCellView_EditingFinished;
56+
comboCellView2.EditingFinished += CellView_EditingFinished;
5757
list.Columns.Add (new ListViewColumn ("List 2", comboCellView2));
5858

5959
int p = 0;
@@ -70,12 +70,12 @@ public ListViewCombos ()
7070
PackStart (list, true);
7171
}
7272

73-
void ComboCellView_EditingFinished (object sender, Xwt.Backends.CellEditingFinishedArgs<CheckBoxState> e)
73+
void CellView_EditingFinished (object sender, CellEditingFinishedArgs<CheckBoxState> e)
7474
{
7575
Console.WriteLine("Your old value was '{0}' and now is '{1}'", e.OldValue, e.NewValue);
7676
}
7777

78-
void TextCellView_EditingFinished(object sender, Xwt.Backends.CellEditingFinishedArgs<string> e)
78+
void CellView_EditingFinished(object sender, CellEditingFinishedArgs<string> e)
7979
{
8080
Console.WriteLine("Your old value was '{0}' and now is '{1}'", e.OldValue, e.NewValue);
8181
}

TestApps/Samples/Samples/TreeViews.cs

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ public TreeViews ()
5454
store.GetNavigatorAt(view.CurrentEventRow).SetValue(text, "TriState Toggled");
5555
}
5656
};
57-
triStateCellView.EditingFinished += CheckBoxCellView_EditingFinished;
57+
triStateCellView.EditingFinished += CellView_EditingFinished;
5858
var checkCellView = new CheckBoxCellView (check) { Editable = true };
5959
checkCellView.Toggled += (object sender, WidgetEventArgs e) => {
6060
if (view.CurrentEventRow == null) {
@@ -64,7 +64,7 @@ public TreeViews ()
6464
store.GetNavigatorAt(view.CurrentEventRow).SetValue(text, "Toggled " + checkCellView.Active);
6565
}
6666
};
67-
checkCellView.EditingFinished += CheckBoxCellView_EditingFinished;
67+
checkCellView.EditingFinished += CellView_EditingFinished;
6868
var optionCellView1 = new RadioButtonCellView (option1) { Editable = true };
6969
optionCellView1.Toggled += (object sender, WidgetEventArgs e) => {
7070
if (view.CurrentEventRow == null) {
@@ -73,7 +73,7 @@ public TreeViews ()
7373
store.GetNavigatorAt (view.CurrentEventRow).SetValue (option2, optionCellView1.Active);
7474
}
7575
};
76-
optionCellView1.EditingFinished += CheckBoxCellView_EditingFinished;
76+
optionCellView1.EditingFinished += CellView_EditingFinished;
7777

7878
var optionCellView2 = new RadioButtonCellView (option2) { Editable = true };
7979
optionCellView2.Toggled += (object sender, WidgetEventArgs e) => {
@@ -83,7 +83,7 @@ public TreeViews ()
8383
store.GetNavigatorAt (view.CurrentEventRow).SetValue (option1, optionCellView2.Active);
8484
}
8585
};
86-
optionCellView2.EditingFinished += CheckBoxCellView_EditingFinished;
86+
optionCellView2.EditingFinished += CellView_EditingFinished;
8787

8888
TreePosition initialActive = null;
8989
var optionCellView3 = new RadioButtonCellView (option3) { Editable = true };
@@ -96,7 +96,7 @@ public TreeViews ()
9696
initialActive = view.CurrentEventRow;
9797
}
9898
};
99-
optionCellView3.EditingFinished += CheckBoxCellView_EditingFinished;
99+
optionCellView3.EditingFinished += CellView_EditingFinished;
100100
view.Columns.Add ("TriCheck", triStateCellView);
101101
view.Columns.Add ("Check", checkCellView);
102102
view.Columns.Add ("Radio", optionCellView1, optionCellView2, optionCellView3);
@@ -235,12 +235,17 @@ public TreeViews ()
235235
view.RowExpanded += (sender, e) => label.Text = "Row expanded: " + store.GetNavigatorAt (e.Position).GetValue (text);
236236
}
237237

238-
void CheckBoxCellView_EditingFinished (object sender, Xwt.Backends.CellEditingFinishedArgs<Xwt.CheckBoxState> e)
238+
void CellView_EditingFinished(object sender, Xwt.CellEditingFinishedArgs<Xwt.CheckBoxState> e)
239239
{
240240
Console.WriteLine("Your old value was '{0}' and now is '{1}'", e.OldValue, e.NewValue);
241241
}
242242

243-
void StringCellView_EditingFinished(object sender, Xwt.Backends.CellEditingFinishedArgs<string> e)
243+
void CellView_EditingFinished(object sender, Xwt.CellEditingFinishedArgs<bool> e)
244+
{
245+
Console.WriteLine("Your old value was '{0}' and now is '{1}'", e.OldValue, e.NewValue);
246+
}
247+
248+
void CellView_EditingFinished(object sender, Xwt.CellEditingFinishedArgs<string> e)
244249
{
245250
Console.WriteLine("Your old value was '{0}' and now is '{1}'", e.OldValue, e.NewValue);
246251
}

Xwt.Gtk/Xwt.GtkBackend.CellViews/CustomCellRendererToggle.cs

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,12 +92,22 @@ void HandleToggled (object o, ToggledArgs args)
9292
(object) newState : (object) (newState == CheckBoxState.On);
9393

9494
CellUtil.SetModelValue (TreeModel, iter, field.Index, type, newValue);
95-
view.RaiseEditingFinished(new CellEditingFinishedArgs<CheckBoxState> (lastValue, newState));
95+
96+
if (view is ICheckBoxCellViewFrontend) {
97+
((ICheckBoxCellViewFrontend)view).RaiseEditingFinished(new CellEditingFinishedArgs<CheckBoxState>(lastValue, newState));
98+
} else if (view is IRadioButtonCellViewFrontend) {
99+
((IRadioButtonCellViewFrontend)view).RaiseEditingFinished(new CellEditingFinishedArgs<bool>(lastValue == CheckBoxState.On, newState == CheckBoxState.On));
100+
}
101+
96102
lastValue = newState;
97103
return;
98104
}
99105

100-
view.RaiseEditingFinished (new CellEditingFinishedArgs<CheckBoxState> (lastValue, lastValue));
106+
if (view is ICheckBoxCellViewFrontend) {
107+
((ICheckBoxCellViewFrontend)view).RaiseEditingFinished(new CellEditingFinishedArgs<CheckBoxState>(lastValue, lastValue));
108+
} else if (view is IRadioButtonCellViewFrontend) {
109+
((IRadioButtonCellViewFrontend)view).RaiseEditingFinished(new CellEditingFinishedArgs<bool>(lastValue == CheckBoxState.On, lastValue == CheckBoxState.On));
110+
}
101111
}
102112
}
103113
}

Xwt/Xwt.Backends/ICheckBoxCellViewFrontend.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727

2828
namespace Xwt.Backends
2929
{
30-
public interface ICheckBoxCellViewFrontend: IToggleCellViewFrontend
30+
public interface ICheckBoxCellViewFrontend: IToggleCellViewFrontend, IEditableCellViewFrontend<CheckBoxState>
3131
{
3232
CheckBoxState State { get; }
3333
bool AllowMixed { get; }

Xwt/Xwt.Backends/IComboBoxCellViewFrontend.cs

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -27,18 +27,6 @@
2727

2828
namespace Xwt.Backends
2929
{
30-
public class CellEditingFinishedArgs<T> : EventArgs
31-
{
32-
public CellEditingFinishedArgs(T oldValue, T newValue)
33-
{
34-
OldValue = oldValue;
35-
NewValue = newValue;
36-
}
37-
38-
public T OldValue { get; set; }
39-
public T NewValue { get; set; }
40-
}
41-
4230
public interface IEditableCellViewFrontend<T>
4331
{
4432
event EventHandler<CellEditingFinishedArgs<T>> EditingFinished;

Xwt/Xwt.Backends/IRadioButtonCellViewFrontend.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626

2727
namespace Xwt.Backends
2828
{
29-
public interface IRadioButtonCellViewFrontend: IToggleCellViewFrontend
29+
public interface IRadioButtonCellViewFrontend: IToggleCellViewFrontend, IEditableCellViewFrontend<bool>
3030
{
3131
}
3232
}

Xwt/Xwt.Backends/IToggleCellViewFrontend.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,7 @@
2626

2727
namespace Xwt.Backends
2828
{
29-
30-
public interface IToggleCellViewFrontend : ICellViewFrontend, IEditableCellViewFrontend<CheckBoxState>
29+
public interface IToggleCellViewFrontend : ICellViewFrontend
3130
{
3231
bool Active { get; }
3332
bool Editable { get; }

Xwt/Xwt/CellEditingFinishedArgs.cs

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
//
2+
// IComboBoxCellViewFrontend.cs
3+
//
4+
// Author:
5+
// Lluis Sanchez Gual <[email protected]>
6+
//
7+
// Copyright (c) 2016 Xamarin, Inc (http://www.xamarin.com)
8+
//
9+
// Permission is hereby granted, free of charge, to any person obtaining a copy
10+
// of this software and associated documentation files (the "Software"), to deal
11+
// in the Software without restriction, including without limitation the rights
12+
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
13+
// copies of the Software, and to permit persons to whom the Software is
14+
// furnished to do so, subject to the following conditions:
15+
//
16+
// The above copyright notice and this permission notice shall be included in
17+
// all copies or substantial portions of the Software.
18+
//
19+
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20+
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21+
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22+
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23+
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
24+
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
25+
// THE SOFTWARE.
26+
using System;
27+
28+
namespace Xwt
29+
{
30+
public class CellEditingFinishedArgs<T> : EventArgs
31+
{
32+
public CellEditingFinishedArgs(T oldValue, T newValue)
33+
{
34+
OldValue = oldValue;
35+
NewValue = newValue;
36+
}
37+
38+
public T OldValue { get; set; }
39+
public T NewValue { get; set; }
40+
}
41+
}

Xwt/Xwt/RadioButtonCellView.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,9 +80,9 @@ public bool RaiseToggled ()
8080
return false;
8181
}
8282

83-
public event EventHandler<CellEditingFinishedArgs<CheckBoxState>> EditingFinished;
83+
public event EventHandler<CellEditingFinishedArgs<bool>> EditingFinished;
8484

85-
public void RaiseEditingFinished (CellEditingFinishedArgs<CheckBoxState> args)
85+
public void RaiseEditingFinished (CellEditingFinishedArgs<bool> args)
8686
{
8787
EditingFinished?.Invoke (this, args);
8888
}

0 commit comments

Comments
 (0)