------------------------------------------------------------------------------
--                                                                          --
--                An Ada2005 binding to the Qt C++ framework                --
--                                                                          --
------------------------------------------------------------------------------
--                                                                          --
-- Copyright © 2008-2010 Vadim Godunko <vgodunko@gmail.com>                 --
--                                                                          --
-- QtAda is free software;  you can  redistribute it and/or modify it under --
-- terms of the  GNU General Public License as published  by the Free Soft- --
-- ware  Foundation;  either version 2,  or (at your option) any later ver- --
-- sion. QtAda is distributed in the hope that it will be useful, but WITH- --
-- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
-- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
-- for  more details.  You should have  received  a copy of the GNU General --
-- Public License distributed with QtAda;  see file COPYING.  If not, write --
-- to  the  Free Software Foundation,  51  Franklin  Street,  Fifth  Floor, --
-- Boston, MA 02110-1301, USA.                                              --
--                                                                          --
-- As a special exception,  if other files  instantiate  generics from this --
-- unit, or you link  this unit with other files  to produce an executable, --
-- this  unit  does not  by itself cause  the resulting  executable  to  be --
-- covered  by the  GNU  General  Public  License.  This exception does not --
-- however invalidate  any other reasons why  the executable file  might be --
-- covered by the  GNU Public License.                                      --
--                                                                          --
------------------------------------------------------------------------------
--    This file has been generated automatically. Please don't edit it.     --
------------------------------------------------------------------------------
limited with Qt4.Abstract_Item_Delegates;
limited with Qt4.Abstract_Item_Models;
with Qt4.Abstract_Scroll_Areas;
with Qt4.Item_Selection_Models;
with Qt4.Model_Indices;
with Qt4.Points;
with Qt4.Rects;
with Qt4.Sizes;
with Qt4.Strings;
limited with Qt4.Widgets;
with Qt4_Generic_Flags;
with Qt_Ada.Generic_Object_Pointers;

package Qt4.Abstract_Item_Views is

   type Abstract_Item_View_Drag_Drop_Mode is
    (No_Drag_Drop,
     Drag_Only,
     Drop_Only,
     Drag_Drop,
     Internal_Move);
   pragma Convention (C, Abstract_Item_View_Drag_Drop_Mode);

   type Abstract_Item_View_Scroll_Hint is
    (Ensure_Visible,
     Position_At_Top,
     Position_At_Bottom,
     Position_At_Center);
   pragma Convention (C, Abstract_Item_View_Scroll_Hint);

   type Abstract_Item_View_Scroll_Mode is
    (Scroll_Per_Item,
     Scroll_Per_Pixel);
   pragma Convention (C, Abstract_Item_View_Scroll_Mode);

   type Abstract_Item_View_Selection_Behavior is
    (Select_Items,
     Select_Rows,
     Select_Columns);
   pragma Convention (C, Abstract_Item_View_Selection_Behavior);

   type Abstract_Item_View_Selection_Mode is
    (No_Selection,
     Single_Selection,
     Multi_Selection,
     Extended_Selection,
     Contiguous_Selection);
   pragma Convention (C, Abstract_Item_View_Selection_Mode);

   type Q_Abstract_Item_View is limited interface
     and Qt4.Abstract_Scroll_Areas.Q_Abstract_Scroll_Area;

   type Q_Abstract_Item_View_Access is
     access all Q_Abstract_Item_View'Class;
   for Q_Abstract_Item_View_Access'Storage_Size use 0;

   type Q_Abstract_Item_View_Pointer is tagged;

   function Alternating_Row_Colors
    (Self : not null access constant Q_Abstract_Item_View'Class)
       return Standard.Boolean;

   procedure Close_Persistent_Editor
    (Self : not null access Q_Abstract_Item_View'Class;
     Index : Qt4.Model_Indices.Q_Model_Index);

   function Current_Index
    (Self : not null access constant Q_Abstract_Item_View'Class)
       return Qt4.Model_Indices.Q_Model_Index;

   function Drag_Drop_Mode
    (Self : not null access constant Q_Abstract_Item_View'Class)
       return Qt4.Abstract_Item_Views.Abstract_Item_View_Drag_Drop_Mode;

   function Drag_Drop_Overwrite_Mode
    (Self : not null access constant Q_Abstract_Item_View'Class)
       return Standard.Boolean;

   function Drag_Enabled
    (Self : not null access constant Q_Abstract_Item_View'Class)
       return Standard.Boolean;

   function Has_Auto_Scroll
    (Self : not null access constant Q_Abstract_Item_View'Class)
       return Standard.Boolean;

   function Horizontal_Scroll_Mode
    (Self : not null access constant Q_Abstract_Item_View'Class)
       return Qt4.Abstract_Item_Views.Abstract_Item_View_Scroll_Mode;

   function Icon_Size
    (Self : not null access constant Q_Abstract_Item_View'Class)
       return Qt4.Sizes.Q_Size;

   not overriding
   function Index_At
    (Self : not null access constant Q_Abstract_Item_View;
     Point : Qt4.Points.Q_Point)
       return Qt4.Model_Indices.Q_Model_Index
         is abstract;

   function Index_Widget
    (Self : not null access constant Q_Abstract_Item_View'Class;
     Index : Qt4.Model_Indices.Q_Model_Index)
       return not null access Qt4.Widgets.Q_Widget'Class;

   function Item_Delegate
    (Self : not null access constant Q_Abstract_Item_View'Class)
       return not null access Qt4.Abstract_Item_Delegates.Q_Abstract_Item_Delegate'Class;

   function Item_Delegate
    (Self : not null access constant Q_Abstract_Item_View'Class;
     Index : Qt4.Model_Indices.Q_Model_Index)
       return not null access Qt4.Abstract_Item_Delegates.Q_Abstract_Item_Delegate'Class;

   function Item_Delegate_For_Column
    (Self : not null access constant Q_Abstract_Item_View'Class;
     Column : Qt4.Q_Integer)
       return access Qt4.Abstract_Item_Delegates.Q_Abstract_Item_Delegate'Class;

   function Item_Delegate_For_Row
    (Self : not null access constant Q_Abstract_Item_View'Class;
     Row : Qt4.Q_Integer)
       return access Qt4.Abstract_Item_Delegates.Q_Abstract_Item_Delegate'Class;

   not overriding
   procedure Keyboard_Search
    (Self : not null access Q_Abstract_Item_View;
     Search : Qt4.Strings.Q_String)
       is abstract;

   function Model
    (Self : not null access constant Q_Abstract_Item_View'Class)
       return not null access Qt4.Abstract_Item_Models.Q_Abstract_Item_Model'Class;

   procedure Open_Persistent_Editor
    (Self : not null access Q_Abstract_Item_View'Class;
     Index : Qt4.Model_Indices.Q_Model_Index);

   function Root_Index
    (Self : not null access constant Q_Abstract_Item_View'Class)
       return Qt4.Model_Indices.Q_Model_Index;

   not overriding
   procedure Scroll_To
    (Self : not null access Q_Abstract_Item_View;
     Index : Qt4.Model_Indices.Q_Model_Index;
     Hint : Qt4.Abstract_Item_Views.Abstract_Item_View_Scroll_Hint
       := Qt4.Abstract_Item_Views.Ensure_Visible)
       is abstract;

   function Selection_Behavior
    (Self : not null access constant Q_Abstract_Item_View'Class)
       return Qt4.Abstract_Item_Views.Abstract_Item_View_Selection_Behavior;

   function Selection_Mode
    (Self : not null access constant Q_Abstract_Item_View'Class)
       return Qt4.Abstract_Item_Views.Abstract_Item_View_Selection_Mode;

   function Selection_Model
    (Self : not null access constant Q_Abstract_Item_View'Class)
       return access Qt4.Item_Selection_Models.Q_Item_Selection_Model'Class;

   procedure Set_Alternating_Row_Colors
    (Self : not null access Q_Abstract_Item_View'Class;
     Enable : Standard.Boolean);

   procedure Set_Auto_Scroll
    (Self : not null access Q_Abstract_Item_View'Class;
     Enable : Standard.Boolean);

   procedure Set_Drag_Drop_Mode
    (Self : not null access Q_Abstract_Item_View'Class;
     Behavior : Qt4.Abstract_Item_Views.Abstract_Item_View_Drag_Drop_Mode);

   procedure Set_Drag_Drop_Overwrite_Mode
    (Self : not null access Q_Abstract_Item_View'Class;
     Overwrite : Standard.Boolean);

   procedure Set_Drag_Enabled
    (Self : not null access Q_Abstract_Item_View'Class;
     Enable : Standard.Boolean);

   procedure Set_Drop_Indicator_Shown
    (Self : not null access Q_Abstract_Item_View'Class;
     Enable : Standard.Boolean);

   procedure Set_Horizontal_Scroll_Mode
    (Self : not null access Q_Abstract_Item_View'Class;
     Mode : Qt4.Abstract_Item_Views.Abstract_Item_View_Scroll_Mode);

   procedure Set_Icon_Size
    (Self : not null access Q_Abstract_Item_View'Class;
     Size : Qt4.Sizes.Q_Size);

   procedure Set_Index_Widget
    (Self : not null access Q_Abstract_Item_View'Class;
     Index : Qt4.Model_Indices.Q_Model_Index;
     Widget : not null access Qt4.Widgets.Q_Widget'Class);

   procedure Set_Item_Delegate
    (Self : not null access Q_Abstract_Item_View'Class;
     Delegate : not null access Qt4.Abstract_Item_Delegates.Q_Abstract_Item_Delegate'Class);

   procedure Set_Item_Delegate_For_Column
    (Self : not null access Q_Abstract_Item_View'Class;
     Column : Qt4.Q_Integer;
     Delegate : not null access Qt4.Abstract_Item_Delegates.Q_Abstract_Item_Delegate'Class);

   procedure Set_Item_Delegate_For_Row
    (Self : not null access Q_Abstract_Item_View'Class;
     Row : Qt4.Q_Integer;
     Delegate : not null access Qt4.Abstract_Item_Delegates.Q_Abstract_Item_Delegate'Class);

   not overriding
   procedure Set_Model
    (Self : not null access Q_Abstract_Item_View;
     Model : not null access Qt4.Abstract_Item_Models.Q_Abstract_Item_Model'Class)
       is abstract;

   procedure Set_Selection_Behavior
    (Self : not null access Q_Abstract_Item_View'Class;
     Behavior : Qt4.Abstract_Item_Views.Abstract_Item_View_Selection_Behavior);

   procedure Set_Selection_Mode
    (Self : not null access Q_Abstract_Item_View'Class;
     Mode : Qt4.Abstract_Item_Views.Abstract_Item_View_Selection_Mode);

   not overriding
   procedure Set_Selection_Model
    (Self : not null access Q_Abstract_Item_View;
     Selection_Model : not null access Qt4.Item_Selection_Models.Q_Item_Selection_Model'Class)
       is abstract;

   procedure Set_Tab_Key_Navigation
    (Self : not null access Q_Abstract_Item_View'Class;
     Enable : Standard.Boolean);

   procedure Set_Vertical_Scroll_Mode
    (Self : not null access Q_Abstract_Item_View'Class;
     Mode : Qt4.Abstract_Item_Views.Abstract_Item_View_Scroll_Mode);

   function Show_Drop_Indicator
    (Self : not null access constant Q_Abstract_Item_View'Class)
       return Standard.Boolean;

   not overriding
   function Size_Hint_For_Column
    (Self : not null access constant Q_Abstract_Item_View;
     Column : Qt4.Q_Integer)
       return Qt4.Q_Integer
         is abstract;

   function Size_Hint_For_Index
    (Self : not null access constant Q_Abstract_Item_View'Class;
     Index : Qt4.Model_Indices.Q_Model_Index)
       return Qt4.Sizes.Q_Size;

   not overriding
   function Size_Hint_For_Row
    (Self : not null access constant Q_Abstract_Item_View;
     Row : Qt4.Q_Integer)
       return Qt4.Q_Integer
         is abstract;

   function Tab_Key_Navigation
    (Self : not null access constant Q_Abstract_Item_View'Class)
       return Standard.Boolean;

   function Vertical_Scroll_Mode
    (Self : not null access constant Q_Abstract_Item_View'Class)
       return Qt4.Abstract_Item_Views.Abstract_Item_View_Scroll_Mode;

   not overriding
   function Visual_Rect
    (Self : not null access constant Q_Abstract_Item_View;
     Index : Qt4.Model_Indices.Q_Model_Index)
       return Qt4.Rects.Q_Rect
         is abstract;

   procedure Clear_Selection
    (Self : not null access Q_Abstract_Item_View'Class);

   procedure Edit
    (Self : not null access Q_Abstract_Item_View'Class;
     Index : Qt4.Model_Indices.Q_Model_Index);

   not overriding
   procedure Reset
    (Self : not null access Q_Abstract_Item_View)
       is abstract;

   procedure Scroll_To_Bottom
    (Self : not null access Q_Abstract_Item_View'Class);

   procedure Scroll_To_Top
    (Self : not null access Q_Abstract_Item_View'Class);

   not overriding
   procedure Select_All
    (Self : not null access Q_Abstract_Item_View)
       is abstract;

   procedure Set_Current_Index
    (Self : not null access Q_Abstract_Item_View'Class;
     Index : Qt4.Model_Indices.Q_Model_Index);

   not overriding
   procedure Set_Root_Index
    (Self : not null access Q_Abstract_Item_View;
     Index : Qt4.Model_Indices.Q_Model_Index)
       is abstract;

   type Cursor_Action is
    (Move_Up,
     Move_Down,
     Move_Left,
     Move_Right,
     Move_Home,
     Move_End,
     Move_PageUp,
     Move_PageDown,
     Move_Next,
     Move_Previous);
   pragma Convention (C, Cursor_Action);
   for Cursor_Action'Size use Interfaces.C.int'Size;
   for Cursor_Action use
    (Move_Up       => 0,
     Move_Down     => 1,
     Move_Left     => 2,
     Move_Right    => 3,
     Move_Home     => 4,
     Move_End      => 5,
     Move_PageUp   => 6,
     Move_PageDown => 7,
     Move_Next     => 8,
     Move_Previous => 9);

   --  enum QAbstractItemView::EditTrigger

   type Edit_Trigger is
    (No_Edit_Triggers,
     Current_Changed,
     Double_Clicked,
     Selected_Clicked,
     Edit_Key_Pressed,
     Any_Key_Pressed,
     All_Edit_Triggers);
   pragma Convention (C, Edit_Trigger);
   for Edit_Trigger'Size use Interfaces.C.int'Size;
   for Edit_Trigger use
    (No_Edit_Triggers => 0,
     Current_Changed  => 1,
     Double_Clicked   => 2,
     Selected_Clicked => 4,
     Edit_Key_Pressed => 8,
     Any_Key_Pressed  => 16,
     All_Edit_Triggers => 31);

   package Edit_Trigger_Flags is
     new Qt4_Generic_Flags (Edit_Trigger);

   type Edit_Triggers is new Edit_Trigger_Flags.Flags;

   package Q_Abstract_Item_View_Pointers is
     new Qt_Ada.Generic_Object_Pointers (Q_Abstract_Item_View, Q_Abstract_Item_View_Access);

   type Q_Abstract_Item_View_Pointer is
     new Q_Abstract_Item_View_Pointers.Q_Pointer with null record;

end Qt4.Abstract_Item_Views;
