aboutsummaryrefslogtreecommitdiffstats
path: root/src/modules/objects/class_listview.cpp
diff options
context:
space:
mode:
authorGravatar Noldor2008-08-07 17:49:07 +0000
committerGravatar Noldor2008-08-07 17:49:07 +0000
commita18c4ddcd6c20ed8197ce88f8553e76342d30b44 (patch)
treec60d1569d7ab075117820ca21dca7eb6f243eb9a /src/modules/objects/class_listview.cpp
parentfix for reopened #34 (diff)
downloadKVIrc-a18c4ddcd6c20ed8197ce88f8553e76342d30b44.tar.gz
KVIrc-a18c4ddcd6c20ed8197ce88f8553e76342d30b44.tar.bz2
KVIrc-a18c4ddcd6c20ed8197ce88f8553e76342d30b44.zip
modules editor (wip), objects(wip) QT4 port.
git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@2209 17fca916-40b9-46aa-a4ea-0a15b648b75c
Diffstat (limited to 'src/modules/objects/class_listview.cpp')
-rw-r--r--src/modules/objects/class_listview.cpp428
1 files changed, 258 insertions, 170 deletions
diff --git a/src/modules/objects/class_listview.cpp b/src/modules/objects/class_listview.cpp
index b9f349857..5f006d461 100644
--- a/src/modules/objects/class_listview.cpp
+++ b/src/modules/objects/class_listview.cpp
@@ -1,6 +1,6 @@
//=================================================================================
//
-// File : class_listview.cpp
+// File : class_treewidget.cpp
// Creation date : Fri Jan 28 14:21:48 CEST 2005
// by Tonino Imbesi(Grifisx) and Alessandro Carbone(Noldor)
//
@@ -30,35 +30,42 @@
#include "kvi_debug.h"
#include "kvi_locale.h"
#include "kvi_iconmanager.h"
-#include "kvi_tal_listview.h"
+#include "kvi_tal_treewidget.h"
+
+// FIXME: fix the doc (function QT4 renamed)
+// OLD:
+// itemRenamed signal
+// itemRenamed event
+// NEW:
+// itemActivated signal
+// itemActavatedEvent
+
-// FIXME: Qt4 #include <QHeaderView>
-#include <q3header.h>
#include <QEvent>
#include <QDragEnterEvent>
#include <QDropEvent>
#include <QUrl>
/*
- @doc: listview
+ @doc: treewidget
@keyterms:
- listview widget class
+ treewidget widget class
@title:
- listview class
+ treewidget class
@type:
class
@short:
- A listview class
+ A treewidget class
@inherits:
[class]widget[/class]
@description:
It can display and control a hierarchy of multi-column items, and provides the ability to add new items at any time.
- The items are added by creating children [class]listviewitem[/class] objects: simply allocating them with $new
- will add the items to the listview and simply deleting them will remove them.
- Allocating a [class]listviewitem[/class] item2 as a child of item1 will insert it to the same listview creating
+ The items are added by creating children [class]treewidgetitem[/class] objects: simply allocating them with $new
+ will add the items to the treewidget and simply deleting them will remove them.
+ Allocating a [class]treewidgetitem[/class] item2 as a child of item1 will insert it to the same treewidget creating
a subtree of items spannig from item1. The subtree can be opened or closed by a simple click either
- on the parent item or on the little plus sign on the side of it (when [classfnc:listview]$setRootIsDecorated[/classfnc]
- is set to $true. The listview can be in Single, Multi, Extended or NoSelection selection mode.
+ on the parent item or on the little plus sign on the side of it (when [classfnc:treewidget]$setRootIsDecorated[/classfnc]
+ is set to $true. The treewidget can be in Single, Multi, Extended or NoSelection selection mode.
In single selection mode there can be only one selected item at a time and the selected item is also
the current item (this mode is the default). In Multi and Extended selection mode there can be multiple selected items
and the current item is one of them. The difference between Multi and Extended is in the way
@@ -73,41 +80,41 @@
If column is -1, sorting is disabled and the user cannot sort columns by clicking on the column headers
!fn: $hideListViewHeader()
- Hide the listview column header.
+ Hide the treewidget column header.
!fn: $showListViewHeader()
- Show the listview column header.
+ Show the treewidget column header.
!fn: <boolean> $isListViewHeaderVisible()
- Returns '1' if the listview header is currently visible. Otherwise this function returns '0'.
+ Returns '1' if the treewidget header is currently visible. Otherwise this function returns '0'.
!fn: $setAllColumnsShowFocus(<bAllColumnsShowFocus:boolean>)
- When the argument is $true, causes the listview to display the focus and selection
+ When the argument is $true, causes the treewidget to display the focus and selection
by highlighting all the columns of the item. When the argument is $false then
only the first column is selected/highlighted.
!fn: $setSelectionMode(<mode:string>)
- Sets the selection mode for this listview. <mode> can be one of "Single","NoSelection","Multi" or "Extended".
+ Sets the selection mode for this treewidget. <mode> can be one of "Single","NoSelection","Multi" or "Extended".
- !fn: <listviewitem> $selectedItem()
- Returns the currently selected [class]listviewitem[/class] or $null if no items are selected.
+ !fn: <treewidgetitem> $selectedItem()
+ Returns the currently selected [class]treewidgetitem[/class] or $null if no items are selected.
This function works only if the list view is in single selection mode.
- !fn: <listviewitem> $currentItem()
- Returns the current [class]listviewitem[/class] or $null if no item is current at the moment.
+ !fn: <treewidgetitem> $currentItem()
+ Returns the current [class]treewidgetitem[/class] or $null if no item is current at the moment.
- !fn: <listviewitem> $firstChild()
- Returns the first child [class]listviewitem[/class] of this listview or $null if there are no items at all.
+ !fn: <treewidgetitem> $firstChild()
+ Returns the first child [class]treewidgetitem[/class] of this treewidget or $null if there are no items at all.
!fn: $clickEvent(<item:object>)
This function is called when the user clicks in the list view.
- In its argument the [class]listviewitem[/class] object clicked or 0 if the user didn't click on an item.[br]
+ In its argument the [class]treewidgetitem[/class] object clicked or 0 if the user didn't click on an item.[br]
The default implementation emits the [classfnc]$clicked[/classfnc]() signal.
!fn: $selectionChangedEvent(<item:object>)
This event handle whenever the set of selected items has changed.
- The argument is the newly selected item if the listview is in single selection mode.[br]
- When the listview is in Multi or Extended selection mode then item is always $null.[br]
+ The argument is the newly selected item if the treewidget is in single selection mode.[br]
+ When the treewidget is in Multi or Extended selection mode then item is always $null.[br]
The default implementation emits the [classfnc]$selectionChanged[/classfnc]() signal.
!fn: $currentChangedEvent(<item:object>)
@@ -172,123 +179,179 @@
//---------------------------------------------------------------------------------
-KVSO_BEGIN_REGISTERCLASS(KviKvsObject_listview,"listview","widget")
+KVSO_BEGIN_REGISTERCLASS(KviKvsObject_treewidget,"listview","widget")
+
+ KVSO_REGISTER_HANDLER(KviKvsObject_treewidget,"setHeaderLabels",function_setHeaderLabels)
+ KVSO_REGISTER_HANDLER(KviKvsObject_treewidget,"addColumn",function_addColumn)
+
+ KVSO_REGISTER_HANDLER(KviKvsObject_treewidget,"setColumnText",function_setColumnText)
+ KVSO_REGISTER_HANDLER(KviKvsObject_treewidget,"setColumnCount",function_setColumnCount)
- KVSO_REGISTER_HANDLER(KviKvsObject_listview,"addColumn",function_addColumn)
- KVSO_REGISTER_HANDLER(KviKvsObject_listview,"setColumnText",function_setColumnText)
- KVSO_REGISTER_HANDLER(KviKvsObject_listview,"setSorting",function_setSorting)
- KVSO_REGISTER_HANDLER(KviKvsObject_listview,"setRootIsDecorated",function_setRootIsDecorated)
- KVSO_REGISTER_HANDLER(KviKvsObject_listview,"setAllColumnsShowFocus",function_setAllColumnsShowFocus)
- KVSO_REGISTER_HANDLER(KviKvsObject_listview,"clear",function_clear)
- KVSO_REGISTER_HANDLER(KviKvsObject_listview,"selectedItem",function_selectedItem)
- KVSO_REGISTER_HANDLER(KviKvsObject_listview,"currentItem",function_currentItem)
- KVSO_REGISTER_HANDLER(KviKvsObject_listview,"setSelectionMode",function_setSelectionMode)
- KVSO_REGISTER_HANDLER(KviKvsObject_listview,"listViewHeaderIsVisible",function_listViewHeaderIsVisible)
+ KVSO_REGISTER_HANDLER(KviKvsObject_treewidget,"setSorting",function_setSorting)
+ KVSO_REGISTER_HANDLER(KviKvsObject_treewidget,"setRootIsDecorated",function_setRootIsDecorated)
+ KVSO_REGISTER_HANDLER(KviKvsObject_treewidget,"setAllColumnsShowFocus",function_setAllColumnsShowFocus)
+ KVSO_REGISTER_HANDLER(KviKvsObject_treewidget,"clear",function_clear)
+ KVSO_REGISTER_HANDLER(KviKvsObject_treewidget,"selectedItem",function_selectedItems)
+ KVSO_REGISTER_HANDLER(KviKvsObject_treewidget,"currentItem",function_currentItem)
+ KVSO_REGISTER_HANDLER(KviKvsObject_treewidget,"setSelectionMode",function_setSelectionMode)
+ KVSO_REGISTER_HANDLER(KviKvsObject_treewidget,"listViewHeaderIsVisible",function_listViewHeaderIsVisible)
- KVSO_REGISTER_HANDLER(KviKvsObject_listview,"hideListViewHeader",function_hideListViewHeader)
- KVSO_REGISTER_HANDLER(KviKvsObject_listview,"showListViewHeader",function_showListViewHeader)
- KVSO_REGISTER_HANDLER(KviKvsObject_listview,"firstChild",function_firstChild)
- KVSO_REGISTER_HANDLER(KviKvsObject_listview,"selectionChangedEvent",function_selectionChangedEvent);
- KVSO_REGISTER_HANDLER(KviKvsObject_listview,"currentChangedEvent",function_currentChangedEvent);
- KVSO_REGISTER_HANDLER(KviKvsObject_listview,"returnPressedEvent",function_returnPressedEvent);
- KVSO_REGISTER_HANDLER(KviKvsObject_listview,"spacePressedEvent",function_spacePressedEvent);
- KVSO_REGISTER_HANDLER(KviKvsObject_listview,"onItemEvent",function_onItemEvent);
- KVSO_REGISTER_HANDLER(KviKvsObject_listview,"itemClickedEvent",function_itemClickedEvent);
- KVSO_REGISTER_HANDLER(KviKvsObject_listview,"itemExpandedEvent",function_itemExpandedEvent);
- KVSO_REGISTER_HANDLER(KviKvsObject_listview,"itemCollapsedEvent",function_itemCollapsedEvent);
- KVSO_REGISTER_HANDLER(KviKvsObject_listview,"itemRenamedEvent",function_itemRenamedEvent);
- KVSO_REGISTER_HANDLER(KviKvsObject_listview,"rightButtonClickedEvent",function_rightButtonClickedEvent);
+ KVSO_REGISTER_HANDLER(KviKvsObject_treewidget,"hideListViewHeader",function_hideListViewHeader)
+ KVSO_REGISTER_HANDLER(KviKvsObject_treewidget,"showListViewHeader",function_showListViewHeader)
+ KVSO_REGISTER_HANDLER(KviKvsObject_treewidget,"firstChild",function_firstChild)
+ KVSO_REGISTER_HANDLER(KviKvsObject_treewidget,"selectionChangedEvent",function_selectionChangedEvent);
+ KVSO_REGISTER_HANDLER(KviKvsObject_treewidget,"currentChangedEvent",function_currentChangedEvent);
+
+ // FIX-ME
+ KVSO_REGISTER_HANDLER(KviKvsObject_treewidget,"returnPressedEvent",function_itemActivatedEvent);//<- remove me
+ KVSO_REGISTER_HANDLER(KviKvsObject_treewidget,"itemActivatedEvent",function_itemActivatedEvent);
+ //
+
+// KVSO_REGISTER_HANDLER(KviKvsObject_treewidget,"spacePressedEvent",function_spacePressedEvent);
+ KVSO_REGISTER_HANDLER(KviKvsObject_treewidget,"onItemEvent",function_onItemEvent);
+ KVSO_REGISTER_HANDLER(KviKvsObject_treewidget,"itemClickedEvent",function_itemClickedEvent);
+ KVSO_REGISTER_HANDLER(KviKvsObject_treewidget,"itemExpandedEvent",function_itemExpandedEvent);
+ KVSO_REGISTER_HANDLER(KviKvsObject_treewidget,"itemCollapsedEvent",function_itemCollapsedEvent);
+
+ //FIXME
+ KVSO_REGISTER_HANDLER(KviKvsObject_treewidget,"itemRenamedEvent",function_itemChangedEvent);//<- remove me
+ KVSO_REGISTER_HANDLER(KviKvsObject_treewidget,"itemChangedEvent",function_itemChangedEvent);
+ //
+
+ KVSO_REGISTER_HANDLER(KviKvsObject_treewidget,"rightButtonClickedEvent",function_rightButtonClickedEvent);
- KVSO_REGISTER_STANDARD_NOTHINGRETURN_HANDLER(KviKvsObject_listview,"fileDroppedEvent")
+ KVSO_REGISTER_STANDARD_NOTHINGRETURN_HANDLER(KviKvsObject_treewidget,"fileDroppedEvent")
-KVSO_END_REGISTERCLASS(KviKvsObject_listview)
+KVSO_END_REGISTERCLASS(KviKvsObject_treewidget)
-KVSO_BEGIN_CONSTRUCTOR(KviKvsObject_listview,KviKvsObject_widget)
+KVSO_BEGIN_CONSTRUCTOR(KviKvsObject_treewidget,KviKvsObject_widget)
-KVSO_END_CONSTRUCTOR(KviKvsObject_listview)
+KVSO_END_CONSTRUCTOR(KviKvsObject_treewidget)
-KVSO_BEGIN_DESTRUCTOR(KviKvsObject_listview)
+KVSO_BEGIN_DESTRUCTOR(KviKvsObject_treewidget)
-KVSO_END_CONSTRUCTOR(KviKvsObject_listview)
+KVSO_END_CONSTRUCTOR(KviKvsObject_treewidget)
-bool KviKvsObject_listview::init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams)
+bool KviKvsObject_treewidget::init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams)
{
setObject(new KviKvsMdmListView(parentScriptWidget(),getName().toUtf8().data(),this),true);
- connect(widget(),SIGNAL(clicked(KviTalListViewItem *)),this,SLOT(slotClicked(KviTalListViewItem *)));
- connect(widget(),SIGNAL(selectionChanged(KviTalListViewItem *)),this,SLOT(slotSelectionChanged(KviTalListViewItem *)));
- connect(widget(),SIGNAL(selectionChanged()),this,SLOT(slotMultipleSelectionChanged()));
- connect(widget(),SIGNAL(currentChanged(KviTalListViewItem *)),this,SLOT(slotCurrentChanged(KviTalListViewItem *)));
- connect(widget(),SIGNAL(returnPressed(KviTalListViewItem *)),this,SLOT(slotReturnPressed(KviTalListViewItem *)));
- connect(widget(),SIGNAL(spacePressed(KviTalListViewItem *)),this,SLOT(slotSpacePressed(KviTalListViewItem *)));
- connect(widget(),SIGNAL(onItem(KviTalListViewItem *)),this,SLOT(slotOnItem(KviTalListViewItem *)));
- connect(widget(),SIGNAL(expanded(KviTalListViewItem *)),this,SLOT(slotItemExpanded(KviTalListViewItem *)));
- connect(widget(),SIGNAL(collapsed(KviTalListViewItem *)),this,SLOT(slotItemCollapsed(KviTalListViewItem *)));
- connect(widget(),SIGNAL(rightButtonClicked(KviTalListViewItem *,const QPoint &,int)),this,SLOT(slotRightButtonClicked(KviTalListViewItem *,const QPoint &,int)));
- connect(widget(),SIGNAL(itemRenamed(KviTalListViewItem *,int,const QString &)),this,SLOT(slotItemRenamed(KviTalListViewItem *,int,const QString &)));
+
+ // hack for compatibility with "old" addColumn method;
+ ((KviTalTreeWidget*) widget())->setColumnCount(0);
+
+ connect(widget(),SIGNAL(itemClicked(KviTalTreeWidgetItem *,int)),this,SLOT(slotClicked(KviTalTreeWidgetItem *,int)));
+ connect(widget(),SIGNAL(itemSelectionChanged()),this,SLOT(slotSelectionChanged()));
+ connect(widget(),SIGNAL(currentItemChanged(KviTalTreeWidgetItem *,KviTalTreeWidgetItem *)),this,SLOT(slotCurrentChanged(KviTalTreeWidgetItem *,KviTalTreeWidgetItem *)));
+ connect(widget(),SIGNAL(itemActivated(KviTalTreeWidgetItem *,int)),this,SLOT(slotItemActivated(KviTalTreeWidgetItem *,int)));
+ connect(widget(),SIGNAL(itemEntered(KviTalTreeWidgetItem *,int)),this,SLOT(slotOnItemEntered(KviTalTreeWidgetItem *,int)));
+ connect(widget(),SIGNAL(itemExpanded(KviTalTreeWidgetItem *)),this,SLOT(slotItemExpanded(KviTalTreeWidgetItem *)));
+ connect(widget(),SIGNAL(itemCollapsed(KviTalTreeWidgetItem *)),this,SLOT(slotItemCollapsed(KviTalTreeWidgetItem *)));
+ //connect(widget(),SIGNAL(rightButtonClicked(KviTalTreeWidgetItem *,const QPoint &,int)),this,SLOT(slotRightButtonClicked(KviTalTreeWidgetItem *,const QPoint &,int)));
+ connect(widget(),SIGNAL(itemChanged(KviTalTreeWidgetItem *,int)),this,SLOT(slotItemChanged(KviTalTreeWidgetItem *,int)));
+
+ widget()->setContextMenuPolicy(Qt::CustomContextMenu);
+ connect(widget(),SIGNAL(customContextMenuRequested(const QPoint &)),this,SLOT(customContextMenuRequested(const QPoint &)));
+
return true;
}
-bool KviKvsObject_listview::function_addColumn(KviKvsObjectFunctionCall *c)
+bool KviKvsObject_treewidget::function_setHeaderLabels(KviKvsObjectFunctionCall *c)
+{
+ QStringList columns;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("labels",KVS_PT_STRINGLIST,KVS_PF_OPTIONAL,columns)
+ KVSO_PARAMETERS_END(c)
+ if (widget()){
+ ((KviTalTreeWidget *)object())->setHeaderLabels(columns);
+ }
+ return true;
+}
+bool KviKvsObject_treewidget::function_setColumnText(KviKvsObjectFunctionCall *c)
+{
+ if (!widget()) return true;
+ QString szLabel;
+ kvs_int_t iCol;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("column",KVS_PT_INT,0,iCol)
+ KVSO_PARAMETER("label",KVS_PT_STRING,0,szLabel)
+ KVSO_PARAMETERS_END(c)
+ QTreeWidgetItem *header=((KviTalTreeWidget *)widget())->headerItem();
+ header->setText(iCol,szLabel);
+ return true;
+}
+bool KviKvsObject_treewidget::function_addColumn(KviKvsObjectFunctionCall *c)
{
+ if (!widget()) return true;
QString szLabel;
kvs_int_t iW;
KVSO_PARAMETERS_BEGIN(c)
KVSO_PARAMETER("label",KVS_PT_STRING,0,szLabel)
KVSO_PARAMETER("width",KVS_PT_INT,0,iW)
KVSO_PARAMETERS_END(c)
- if (widget())
- ((KviTalListView *)object())->addColumn(szLabel,iW);
- return true;
+ int col=((KviTalTreeWidget *)widget())->columnCount();
+ QTreeWidgetItem *header=((KviTalTreeWidget *)widget())->headerItem();
+ header->setText(col,szLabel);
+ ((KviTalTreeWidget *)widget())->setColumnWidth(col,iW);
+ col++;
+ ((KviTalTreeWidget *)widget())->setColumnCount(col);
+ //col++;
+ return true;
}
/*
-bool KviKvsObject_listview::function_setAcceptDrops(KviKvsObjectFunctionCall *c)
+bool KviKvsObject_treewidget::function_setAcceptDrops(KviKvsObjectFunctionCall *c)
{
bool bEnable;
KVSO_PARAMETERS_BEGIN(c)
KVSO_PARAMETER("bEnable",KVS_PT_BOOLEAN,0,bEnable)
KVSO_PARAMETERS_END(c)
if (widget())
- ((KviTalListView *)object())->setAcceptDrops(bEnable);
+ ((KviTalTreeWidget *)object())->setAcceptDrops(bEnable);
return true;
}
*/
-bool KviKvsObject_listview::function_clear(KviKvsObjectFunctionCall *c)
+bool KviKvsObject_treewidget::function_clear(KviKvsObjectFunctionCall *c)
{
if (widget())
- ((KviTalListView *)object())->clear();
+ ((KviTalTreeWidget *)object())->clear();
return true;
}
-bool KviKvsObject_listview::function_selectedItem(KviKvsObjectFunctionCall *c)
+bool KviKvsObject_treewidget::function_selectedItems(KviKvsObjectFunctionCall *c)
{
if(widget())
- c->returnValue()->setHObject(KviKvsObject_listviewitem::itemToHandle(((KviTalListView *)widget())->selectedItem()));
+ {
+ QList<QTreeWidgetItem *> list=((KviTalTreeWidget *)widget())->selectedItems();
+ KviKvsArray * pArray = new KviKvsArray();
+ c->returnValue()->setArray(pArray);
+ for (int i=0;i<list.count();i++)
+ pArray->set(i,new KviKvsVariant(KviKvsObject_treewidgetitem::itemToHandle((KviTalTreeWidgetItem*)list.at(i))));
+ }
else
c->returnValue()->setHObject((kvs_hobject_t)0);
return true;
}
-bool KviKvsObject_listview::function_firstChild(KviKvsObjectFunctionCall *c)
+bool KviKvsObject_treewidget::function_firstChild(KviKvsObjectFunctionCall *c)
{
if(widget())
- c->returnValue()->setHObject(KviKvsObject_listviewitem::itemToHandle(((KviTalListView *)widget())->firstChild()));
+ c->returnValue()->setHObject(KviKvsObject_treewidgetitem::itemToHandle((KviTalTreeWidgetItem*)((KviTalTreeWidget *)widget())->topLevelItem(0)));
else
c->returnValue()->setHObject((kvs_hobject_t)0);
return true;
}
-bool KviKvsObject_listview::function_currentItem(KviKvsObjectFunctionCall *c)
+bool KviKvsObject_treewidget::function_currentItem(KviKvsObjectFunctionCall *c)
{
if(widget())
- c->returnValue()->setHObject(KviKvsObject_listviewitem::itemToHandle(((KviTalListView *)widget())->currentItem()));
+ c->returnValue()->setHObject(KviKvsObject_treewidgetitem::itemToHandle((KviTalTreeWidgetItem*)((KviTalTreeWidget *)widget())->currentItem()));
else
c->returnValue()->setHObject((kvs_hobject_t)0);
return true;
}
-
-bool KviKvsObject_listview::function_setColumnText(KviKvsObjectFunctionCall *c)
+/*
+bool KviKvsObject_treewidget::function_setColumnText(KviKvsObjectFunctionCall *c)
{
kvs_int_t uCol;
QString szText;
@@ -296,11 +359,20 @@ bool KviKvsObject_listview::function_setColumnText(KviKvsObjectFunctionCall *c)
KVSO_PARAMETER("column",KVS_PT_UNSIGNEDINTEGER,0,uCol)
KVSO_PARAMETER("text",KVS_PT_STRING,0,szText)
KVSO_PARAMETERS_END(c)
- if (widget())((KviTalListView *)widget())->setColumnText(uCol,szText);
+ if (widget())((KviTalTreeWidget *)widget())->setColumnText(uCol,szText);
return true;
}
-
-bool KviKvsObject_listview::function_setSelectionMode(KviKvsObjectFunctionCall *c)
+*/
+bool KviKvsObject_treewidget::function_setColumnCount(KviKvsObjectFunctionCall *c)
+{
+ kvs_int_t uCol;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("column",KVS_PT_UNSIGNEDINTEGER,0,uCol)
+ KVSO_PARAMETERS_END(c)
+ if (widget())((KviTalTreeWidget *)widget())->setColumnCount(uCol);
+ return true;
+}
+bool KviKvsObject_treewidget::function_setSelectionMode(KviKvsObjectFunctionCall *c)
{
QString szMode;
KVSO_PARAMETERS_BEGIN(c)
@@ -308,230 +380,245 @@ bool KviKvsObject_listview::function_setSelectionMode(KviKvsObjectFunctionCall *
KVSO_PARAMETERS_END(c)
if(!widget())return true;
if(KviQString::equalCI(szMode,"NoSelection"))
- ((KviTalListView *)widget())->setSelectionMode(KviTalListView::NoSelection);
+ ((KviTalTreeWidget *)widget())->setSelectionMode(QAbstractItemView::NoSelection);
else if(KviQString::equalCI(szMode,"Multi"))
- ((KviTalListView *)widget())->setSelectionMode(KviTalListView::Multi);
+ ((KviTalTreeWidget *)widget())->setSelectionMode(KviTalTreeWidget::MultiSelection);
else if(KviQString::equalCI(szMode,"Extended"))
- ((KviTalListView *)widget())->setSelectionMode(KviTalListView::Extended);
+ ((KviTalTreeWidget *)widget())->setSelectionMode(KviTalTreeWidget::ExtendedSelection);
else if(KviQString::equalCI(szMode,"Single"))
- ((KviTalListView *)widget())->setSelectionMode(KviTalListView::Single);
+ ((KviTalTreeWidget *)widget())->setSelectionMode(KviTalTreeWidget::SingleSelection);
else c->warning(__tr2qs("Invalid selection mode '%Q'"),&szMode);
return true;
}
-bool KviKvsObject_listview::function_setSorting(KviKvsObjectFunctionCall *c)
+bool KviKvsObject_treewidget::function_setSorting(KviKvsObjectFunctionCall *c)
{
kvs_int_t iCol;
- bool bEnabled;
+ bool bEnables;
KVSO_PARAMETERS_BEGIN(c)
KVSO_PARAMETER("column",KVS_PT_INT,0,iCol)
- KVSO_PARAMETER("benabled",KVS_PT_BOOL,0,bEnabled)
- KVSO_PARAMETERS_END(c)
- if (widget()) ((KviTalListView *)widget())->setSorting(iCol,bEnabled);
+ KVSO_PARAMETER("sorting",KVS_PT_BOOLEAN,0,bEnables)
+ KVSO_PARAMETERS_END(c)
+ if (!widget())return true;
+ if (iCol<0)
+ ((KviTalTreeWidget *)widget())->setSortingEnabled(false);
+ else
+ if(!bEnables) ((KviTalTreeWidget *)widget())->sortItems(iCol,Qt::DescendingOrder);
+ else ((KviTalTreeWidget *)widget())->sortItems(iCol,Qt::AscendingOrder);
return true;
}
-bool KviKvsObject_listview::function_setRootIsDecorated(KviKvsObjectFunctionCall *c)
+bool KviKvsObject_treewidget::function_setRootIsDecorated(KviKvsObjectFunctionCall *c)
{
bool bEnabled;
KVSO_PARAMETERS_BEGIN(c)
KVSO_PARAMETER("bEnabled",KVS_PT_BOOL,0,bEnabled)
KVSO_PARAMETERS_END(c)
- if (widget()) ((KviTalListView *)widget())->setRootIsDecorated(bEnabled);
+ if (widget()) ((KviTalTreeWidget *)widget())->setRootIsDecorated(bEnabled);
return true;
}
-bool KviKvsObject_listview::function_setAllColumnsShowFocus(KviKvsObjectFunctionCall *c)
+bool KviKvsObject_treewidget::function_setAllColumnsShowFocus(KviKvsObjectFunctionCall *c)
{
bool bEnabled;
KVSO_PARAMETERS_BEGIN(c)
KVSO_PARAMETER("bAllColumnsShowFocus",KVS_PT_BOOL,0,bEnabled)
KVSO_PARAMETERS_END(c)
- if (widget())((KviTalListView *)widget())->setAllColumnsShowFocus(bEnabled);
+ if (widget())((KviTalTreeWidget *)widget())->setAllColumnsShowFocus(bEnabled);
return true;
}
-bool KviKvsObject_listview::function_hideListViewHeader(KviKvsObjectFunctionCall *c)
+bool KviKvsObject_treewidget::function_hideListViewHeader(KviKvsObjectFunctionCall *c)
{
-// ((KviTalListView *)widget())->header()->hide();
+ ((KviTalTreeWidget *)widget())->header()->hide();
return true;
}
-bool KviKvsObject_listview::function_showListViewHeader(KviKvsObjectFunctionCall *c)
+bool KviKvsObject_treewidget::function_showListViewHeader(KviKvsObjectFunctionCall *c)
{
-// ((KviTalListView *)widget())->header()->show();
+ ((KviTalTreeWidget *)widget())->header()->show();
return true;
}
-bool KviKvsObject_listview::function_listViewHeaderIsVisible(KviKvsObjectFunctionCall *c)
+bool KviKvsObject_treewidget::function_listViewHeaderIsVisible(KviKvsObjectFunctionCall *c)
{
- c->returnValue()->setBoolean(((KviTalListView *)widget())->header()->isVisible());
+ c->returnValue()->setBoolean(((KviTalTreeWidget *)widget())->header()->isVisible());
return true;
}
-bool KviKvsObject_listview::function_itemClickedEvent(KviKvsObjectFunctionCall *c)
+bool KviKvsObject_treewidget::function_itemClickedEvent(KviKvsObjectFunctionCall *c)
{
emitSignal("itemClicked",c,c->params());
return true;
}
-void KviKvsObject_listview::slotClicked(KviTalListViewItem * i)
+void KviKvsObject_treewidget::slotClicked(KviTalTreeWidgetItem * i,int col)
{
- KviKvsVariantList params(new KviKvsVariant(KviKvsObject_listviewitem::itemToHandle(i)));
+ KviKvsVariant *column=new KviKvsVariant((kvs_int_t)col);
+
+ KviKvsVariantList params(new KviKvsVariant(KviKvsObject_treewidgetitem::itemToHandle(i)),column);
callFunction(this,"itemClickedEvent",0,&params);
}
-bool KviKvsObject_listview::function_selectionChangedEvent(KviKvsObjectFunctionCall *c)
+bool KviKvsObject_treewidget::function_selectionChangedEvent(KviKvsObjectFunctionCall *c)
{
emitSignal("selectionChanged",c,c->params());
return true;
}
-void KviKvsObject_listview::slotSelectionChanged(KviTalListViewItem * i)
+void KviKvsObject_treewidget::slotSelectionChanged()
{
- KviKvsVariantList params(new KviKvsVariant(KviKvsObject_listviewitem::itemToHandle(i)));
- callFunction(this,"selectionChangedEvent",0,&params);
-}
-void KviKvsObject_listview::slotMultipleSelectionChanged()
-{
- KviKvsVariantList params(new KviKvsVariant((kvs_hobject_t)0));
- callFunction(this,"selectionChangedEvent",0,&params);
+ if (((KviTalTreeWidget *)widget())->selectionMode()==KviTalTreeWidget::SingleSelection)
+ {
+ KviTalTreeWidgetItem *it=(KviTalTreeWidgetItem *) ((KviTalTreeWidget *)widget())->currentItem();
+ KviKvsVariantList params(new KviKvsVariant(KviKvsObject_treewidgetitem::itemToHandle(it)));
+ callFunction(this,"selectionChangedEvent",0,&params);
+ }
+ else{
+ KviKvsVariantList params(new KviKvsVariant((kvs_hobject_t)0));
+ callFunction(this,"selectionChangedEvent",0,&params);
+ }
+
}
-
-
-bool KviKvsObject_listview::function_currentChangedEvent(KviKvsObjectFunctionCall *c)
+bool KviKvsObject_treewidget::function_currentChangedEvent(KviKvsObjectFunctionCall *c)
{
emitSignal("currentChanged",c,c->params());
return true;
}
-void KviKvsObject_listview::slotCurrentChanged(KviTalListViewItem * i)
+void KviKvsObject_treewidget::slotCurrentChanged(KviTalTreeWidgetItem * i,KviTalTreeWidgetItem *prev)
{
- KviKvsVariantList params(new KviKvsVariant(KviKvsObject_listviewitem::itemToHandle(i)));
+ KviKvsVariantList params(new KviKvsVariant(KviKvsObject_treewidgetitem::itemToHandle(i)),new KviKvsVariant(KviKvsObject_treewidgetitem::itemToHandle(prev)));
callFunction(this,"currentChangedEvent",0,&params);
}
-bool KviKvsObject_listview::function_returnPressedEvent(KviKvsObjectFunctionCall *c)
+bool KviKvsObject_treewidget::function_itemActivatedEvent(KviKvsObjectFunctionCall *c)
{
- emitSignal("returnPressed",c,c->params());
- return true;
-}
+ //FIXME: compatibility
+ emitSignal("returnPressed",c,c->params());//<----remove me
+ //
-void KviKvsObject_listview::slotReturnPressed(KviTalListViewItem * i)
-{
- KviKvsVariantList params(new KviKvsVariant(KviKvsObject_listviewitem::itemToHandle(i)));
- callFunction(this,"returnPressedEvent",0,&params);
-}
-
-bool KviKvsObject_listview::function_spacePressedEvent(KviKvsObjectFunctionCall *c)
-{
- emitSignal("spacePressed",c,c->params());
+ emitSignal("itemActivated",c,c->params());
return true;
}
-void KviKvsObject_listview::slotSpacePressed(KviTalListViewItem * i)
+void KviKvsObject_treewidget::slotItemActivated(KviTalTreeWidgetItem * i,int col)
{
- KviKvsVariantList params(new KviKvsVariant(KviKvsObject_listviewitem::itemToHandle(i)));
- callFunction(this,"spacePressedEvent",0,&params);
+ KviKvsVariant *column=new KviKvsVariant((kvs_int_t)col);
+ KviKvsVariantList params(new KviKvsVariant(KviKvsObject_treewidgetitem::itemToHandle(i)),column);
+ callFunction(this,"itemActivatedEvent",0,&params);
}
-bool KviKvsObject_listview::function_onItemEvent(KviKvsObjectFunctionCall *c)
+bool KviKvsObject_treewidget::function_onItemEvent(KviKvsObjectFunctionCall *c)
{
+
emitSignal("onItem",c,c->params());
return true;
}
-void KviKvsObject_listview::slotOnItem(KviTalListViewItem * i)
+void KviKvsObject_treewidget::slotOnItemEntered(KviTalTreeWidgetItem * i,int col)
{
- KviKvsVariantList params(new KviKvsVariant(KviKvsObject_listviewitem::itemToHandle(i)));
+ KviKvsVariant *column=new KviKvsVariant((kvs_int_t)col);
+
+ KviKvsVariantList params(new KviKvsVariant(KviKvsObject_treewidgetitem::itemToHandle(i)),column);
callFunction(this,"onItemEvent",0,&params);
}
-bool KviKvsObject_listview::function_itemExpandedEvent(KviKvsObjectFunctionCall *c)
+bool KviKvsObject_treewidget::function_itemExpandedEvent(KviKvsObjectFunctionCall *c)
{
emitSignal("itemExpanded",c,c->params());
return true;
}
-void KviKvsObject_listview::slotItemExpanded(KviTalListViewItem * i)
+void KviKvsObject_treewidget::slotItemExpanded(KviTalTreeWidgetItem * i)
{
- KviKvsVariantList params(new KviKvsVariant(KviKvsObject_listviewitem::itemToHandle(i)));
+ KviKvsVariantList params(new KviKvsVariant(KviKvsObject_treewidgetitem::itemToHandle(i)));
callFunction(this,"itemExpandedEvent",0,&params);
}
-bool KviKvsObject_listview::function_itemCollapsedEvent(KviKvsObjectFunctionCall *c)
+bool KviKvsObject_treewidget::function_itemCollapsedEvent(KviKvsObjectFunctionCall *c)
{
emitSignal("itemCollapsed",c,c->params());
return true;
}
-void KviKvsObject_listview::slotItemCollapsed(KviTalListViewItem * i)
+void KviKvsObject_treewidget::slotItemCollapsed(KviTalTreeWidgetItem * i)
{
- KviKvsVariantList params(new KviKvsVariant(KviKvsObject_listviewitem::itemToHandle(i)));
+ KviKvsVariantList params(new KviKvsVariant(KviKvsObject_treewidgetitem::itemToHandle(i)));
callFunction(this,"itemCollapsedEvent",0,&params);
}
-bool KviKvsObject_listview::function_rightButtonClickedEvent(KviKvsObjectFunctionCall *c)
+bool KviKvsObject_treewidget::function_rightButtonClickedEvent(KviKvsObjectFunctionCall *c)
{
emitSignal("rightButtonClicked",c,c->params());
return true;
}
-void KviKvsObject_listview::slotRightButtonClicked(KviTalListViewItem * i,const QPoint &coor, int col)
+void KviKvsObject_treewidget::customContextMenuRequested(const QPoint &pnt)
{
- KviKvsVariant *xpos=new KviKvsVariant((kvs_int_t)coor.x());
- KviKvsVariant *ypos=new KviKvsVariant((kvs_int_t)coor.y());
- KviKvsVariant *column=new KviKvsVariant((kvs_int_t)col);
- KviKvsVariantList params(new KviKvsVariant(KviKvsObject_listviewitem::itemToHandle(i)),xpos,ypos,column);
+ KviKvsVariant *xpos=new KviKvsVariant((kvs_int_t)pnt.x());
+ KviKvsVariant *ypos=new KviKvsVariant((kvs_int_t)pnt.y());
+ KviTalTreeWidgetItem *it=(KviTalTreeWidgetItem *) ((KviTalTreeWidget *)widget())->itemAt(pnt);
+ KviKvsVariantList params(new KviKvsVariant(KviKvsObject_treewidgetitem::itemToHandle(it)),xpos,ypos);
callFunction(this,"rightButtonClickedEvent",0,&params);
}
-bool KviKvsObject_listview::function_itemRenamedEvent(KviKvsObjectFunctionCall *c)
+bool KviKvsObject_treewidget::function_itemChangedEvent(KviKvsObjectFunctionCall *c)
{
- emitSignal("itemRenamed",c,c->params());
+ //FIXME
+ emitSignal("itemRenamed",c,c->params());//<--remove me
+
+ emitSignal("itemChanged",c,c->params());
return true;
}
-void KviKvsObject_listview::slotItemRenamed(KviTalListViewItem *item,int col,const QString & szText)
+void KviKvsObject_treewidget::slotItemChanged(KviTalTreeWidgetItem *item,int col)
{
KviKvsVariant *column=new KviKvsVariant((kvs_int_t)col);
- KviKvsVariant *txt=new KviKvsVariant(szText);
- KviKvsVariantList params(new KviKvsVariant(KviKvsObject_listviewitem::itemToHandle(item)),column,txt);
- callFunction(this,"itemRenamedEvent",0,&params);
+ KviKvsVariantList params(new KviKvsVariant(KviKvsObject_treewidgetitem::itemToHandle(item)),column);
+ callFunction(this,"itemChangedEvent",0,&params);
}
-void KviKvsObject_listview::fileDropped(QString &szFile,KviTalListViewItem *item)
+
+void KviKvsObject_treewidget::fileDropped(QString &szFile,KviTalTreeWidgetItem *item)
{
KviKvsVariant *file=new KviKvsVariant(szFile);
- KviKvsVariantList params(new KviKvsVariant(KviKvsObject_listviewitem::itemToHandle(item)),file);
+ KviKvsVariantList params(new KviKvsVariant(KviKvsObject_treewidgetitem::itemToHandle(item)),file);
callFunction(this,"fileDroppedEvent",0,&params);
}
-KviKvsMdmListView::KviKvsMdmListView(QWidget * par,const char * name,KviKvsObject_listview *parent)
-:KviTalListView(par)
+KviKvsMdmListView::KviKvsMdmListView(QWidget * par,const char * name,KviKvsObject_treewidget *parent)
+:KviTalTreeWidget(par)
{
m_pParentScript=parent;
setAcceptDrops(true);
- viewport()->setAcceptDrops( TRUE );
+ setDragEnabled(true);
+ setDropIndicatorShown(true);
+ setDragDropMode(QAbstractItemView::DragDrop);
+ viewport()->setAcceptDrops(true);
}
KviKvsMdmListView::~KviKvsMdmListView()
{
}
-void KviKvsMdmListView::contentsDragEnterEvent( QDragEnterEvent *e )
+
+void KviKvsMdmListView::dragEnterEvent( QDragEnterEvent *e )
{
+ debug("Drag enter event");
if(!e->mimeData()->hasUrls())
{
+ debug("Ignore drag");
e->ignore();
return;
}
}
-void KviKvsMdmListView::contentsDropEvent(QDropEvent *e)
+void KviKvsMdmListView::dropEvent(QDropEvent *e)
{
+ debug("Drop event");
QList<QUrl> list;
if(e->mimeData()->hasUrls())
{
@@ -544,11 +631,12 @@ void KviKvsMdmListView::contentsDropEvent(QDropEvent *e)
{
QUrl url = *it;
QString path = url.path();
+ debug("path %s",path.toUtf8().data());
#if !defined(COMPILE_ON_WINDOWS) && !defined(COMPILE_ON_MINGW)
if(path[0] != '/')path.prepend("/"); //HACK HACK HACK for Qt bug (?!?)
#endif
- KviTalListViewItem *i = itemAt( contentsToViewport(e->pos()) );
- m_pParentScript->fileDropped(path,i);
+ // KviTalTreeWidgetItem *i = itemAt( contentsToViewport(e->pos()) );
+ // m_pParentScript->fileDropped(path,i);
}
}
}