defuze.me
Client
|
00001 /************************************************************************** 00002 ** defuze.me Epitech Innovative Project 00003 ** 00004 ** Copyright 2010-2012 00005 ** Athena Calmettes - Jocelyn De La Rosa - Francois Gaillard 00006 ** Adrien Jarthon - Alexandre Moore - Luc Peres - Arnaud Sellier 00007 ** 00008 ** All rights reserved. 00009 **************************************************************************/ 00010 00011 #include "editabletreeitem.hpp" 00012 #include <QStringList> 00013 00014 EditableTreeItem::EditableTreeItem(const QVector<QVariant> &data, EditableTreeItem *parent) 00015 { 00016 parentItem = parent; 00017 itemData = data; 00018 } 00019 00020 EditableTreeItem::EditableTreeItem(const QString &title, EditableTreeItem *parent) 00021 { 00022 parentItem = parent; 00023 QVector<QVariant> data; 00024 data << title; 00025 itemData = data; 00026 } 00027 00028 EditableTreeItem::~EditableTreeItem() 00029 { 00030 qDeleteAll(childItems); 00031 } 00032 00033 EditableTreeItem *EditableTreeItem::child(int number) 00034 { 00035 return childItems.value(number); 00036 } 00037 00038 int EditableTreeItem::childCount() const 00039 { 00040 return childItems.count(); 00041 } 00042 00043 int EditableTreeItem::childNumber() const 00044 { 00045 if (parentItem) 00046 return parentItem->childItems.indexOf(const_cast<EditableTreeItem*>(this)); 00047 00048 return 0; 00049 } 00050 00051 int EditableTreeItem::columnCount() const 00052 { 00053 return itemData.count(); 00054 } 00055 00056 QVariant EditableTreeItem::data(int column) const 00057 { 00058 return itemData.value(column); 00059 } 00060 00061 bool EditableTreeItem::insertChildren(int position, int count, int columns) 00062 { 00063 if (position < 0 || position > childItems.size()) 00064 return false; 00065 00066 for (int row = 0; row < count; ++row) { 00067 QVector<QVariant> data(columns); 00068 EditableTreeItem *item = new EditableTreeItem(data, this); 00069 childItems.insert(position, item); 00070 } 00071 00072 return true; 00073 } 00074 00075 bool EditableTreeItem::insertColumns(int position, int columns) 00076 { 00077 if (position < 0 || position > itemData.size()) 00078 return false; 00079 00080 for (int column = 0; column < columns; ++column) 00081 itemData.insert(position, QVariant()); 00082 00083 foreach (EditableTreeItem *child, childItems) 00084 child->insertColumns(position, columns); 00085 00086 return true; 00087 } 00088 00089 EditableTreeItem *EditableTreeItem::parent() 00090 { 00091 return parentItem; 00092 } 00093 00094 bool EditableTreeItem::removeChildren(int position, int count) 00095 { 00096 if (position < 0 || position + count > childItems.size()) 00097 return false; 00098 00099 for (int row = 0; row < count; ++row) 00100 delete childItems.takeAt(position); 00101 00102 return true; 00103 } 00104 00105 bool EditableTreeItem::removeColumns(int position, int columns) 00106 { 00107 if (position < 0 || position + columns > itemData.size()) 00108 return false; 00109 00110 for (int column = 0; column < columns; ++column) 00111 itemData.remove(position); 00112 00113 foreach (EditableTreeItem *child, childItems) 00114 child->removeColumns(position, columns); 00115 00116 return true; 00117 } 00118 00119 bool EditableTreeItem::setData(int column, const QVariant &value) 00120 { 00121 if (column < 0 || column >= itemData.size()) 00122 return false; 00123 00124 itemData[column] = value; 00125 return true; 00126 }