/*
* Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the License);
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an AS IS BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
using System;
namespace ElmSharp
{
///
/// The Table is a container widget to arrange other widgets in a table where items can span multiple columns or rows .
/// Inherits .
///
public class Table : Container
{
int _paddingX = 0;
int _paddingY = 0;
///
/// Creates and initializes a new instance of the Table class.
///
///
/// A to which the new Table instance will be attached.
///
public Table(EvasObject parent) : base(parent)
{
}
///
/// Sets or gets whether the layout of this table is homogeneous.
///
/// True for homogeneous, False for no homogeneous
public bool Homogeneous
{
get
{
return Interop.Elementary.elm_table_homogeneous_get(RealHandle);
}
set
{
Interop.Elementary.elm_table_homogeneous_set(RealHandle, value);
}
}
///
/// Sets or gets the horizontal padding between the cells.
///
public int PaddingX
{
get
{
return _paddingX;
}
set
{
_paddingX = value;
Interop.Elementary.elm_table_padding_set(RealHandle, _paddingX, _paddingY);
}
}
///
/// Sets or gets the vertical padding between the cells.
///
public int PaddingY
{
get
{
return _paddingY;
}
set
{
_paddingY = value;
Interop.Elementary.elm_table_padding_set(RealHandle, _paddingX, _paddingY);
}
}
///
/// Adds a subobject on the table with the coordinates passed.
///
/// The subobject to be added to the table
/// The column number
/// The row number
/// The column span
/// The row span
public void Pack(EvasObject obj, int col, int row, int colspan, int rowspan)
{
if (obj == null)
throw new ArgumentNullException("obj");
Interop.Elementary.elm_table_pack(RealHandle, obj, col, row, colspan, rowspan);
AddChild(obj);
}
///
/// Removes the child from the table.
///
/// The subobject
public void Unpack(EvasObject obj)
{
if (obj == null)
throw new ArgumentNullException("obj");
Interop.Elementary.elm_table_unpack(RealHandle, obj);
RemoveChild(obj);
}
///
/// Removes all child objects from a table object.
///
public void Clear()
{
Interop.Elementary.elm_table_clear(RealHandle, false);
ClearChildren();
}
///
/// Sets the color for particular part of the table.
///
/// The name of part class
/// The color
public override void SetPartColor(string part, Color color)
{
Interop.Elementary.elm_object_color_class_color_set(Handle, part, color.R * color.A / 255,
color.G * color.A / 255,
color.B * color.A / 255,
color.A);
}
///
/// Gets the color of particular part of the table.
///
/// The name of part class, it could be 'bg', 'elm.swllow.content'
/// The color of the particular part
public override Color GetPartColor(string part)
{
int r, g, b, a;
Interop.Elementary.elm_object_color_class_color_get(Handle, part, out r, out g, out b, out a);
return new Color((int)(r / (a / 255.0)), (int)(g / (a / 255.0)), (int)(b / (a / 255.0)), a);
}
///
/// Creates a widget handle.
///
/// Parent EvasObject
/// Handle IntPtr
protected override IntPtr CreateHandle(EvasObject parent)
{
IntPtr handle = Interop.Elementary.elm_layout_add(parent);
Interop.Elementary.elm_layout_theme_set(handle, "layout", "background", "default");
RealHandle = Interop.Elementary.elm_table_add(handle);
Interop.Elementary.elm_object_part_content_set(handle, "elm.swallow.content", RealHandle);
return handle;
}
}
}