summaryrefslogtreecommitdiffstats
path: root/actormodel.cpp
diff options
context:
space:
mode:
authoram <am@f440f766-f032-0410-8965-dc7d17de2ca0>2009-11-06 16:52:04 +0000
committeram <am@f440f766-f032-0410-8965-dc7d17de2ca0>2009-11-06 16:52:04 +0000
commitcb094b007ec5b7c197a7df502a778a2ce919128f (patch)
tree2add8b0593fddcdd84e902c466d8885f59d5147c /actormodel.cpp
parentc9497f0e16ad13493f59b835016d46d919378f6d (diff)
downloadSheMov-cb094b007ec5b7c197a7df502a778a2ce919128f.tar.gz
SheMov-cb094b007ec5b7c197a7df502a778a2ce919128f.tar.bz2
SheMov-cb094b007ec5b7c197a7df502a778a2ce919128f.zip
-made burnDir configurable via ConfigurationDialog
-revamped archivedialog to make it more intuitive -added simple listModel without database access (should be renamed) -actorlist in archivedialog now is a QTreeView -changed mFileList in achiveFileWidget git-svn-id: file:///var/svn/repos2/shemov/trunk@421 f440f766-f032-0410-8965-dc7d17de2ca0
Diffstat (limited to 'actormodel.cpp')
-rw-r--r--actormodel.cpp110
1 files changed, 110 insertions, 0 deletions
diff --git a/actormodel.cpp b/actormodel.cpp
new file mode 100644
index 0000000..3f07f3d
--- /dev/null
+++ b/actormodel.cpp
@@ -0,0 +1,110 @@
+/*
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License
+ as published by the Free Software Foundation; either version
+ 2 of the License, or (at your option) any later version.
+*/
+
+#include <QIcon>
+
+#include "actormodel.h"
+
+ActorModel::ActorModel() {};
+
+QModelIndex ActorModel::index(int row, int column, const QModelIndex &) const {
+ if((column != 0) || (row >= mItems.size()) || row < 0){
+ return QModelIndex();
+ }
+ return createIndex(row, 0, 0);
+}
+
+QModelIndex ActorModel::index(const QVariant &item) const {
+ if(item == QVariant()){
+ return QModelIndex();
+ }
+ QString sItem = item.toString();
+ for(int i = 0; i < mItems.size(); ++i){
+ if(mItems.at(i) == sItem){
+ return createIndex(i, 0, 0);
+ }
+ }
+ return QModelIndex();
+}
+
+int ActorModel::rowCount(const QModelIndex &) const {
+ return mItems.size();
+}
+
+QVariant ActorModel::data(const QModelIndex &index, int role) const {
+ if(!index.isValid() || (index.column() > 0) || (index.row() > mItems.size())){
+ return QVariant();
+ }
+ switch (role) {
+ case Qt::DisplayRole:
+ return mItems.at(index.row());
+ break;
+ case Qt::DecorationRole:
+ return QIcon(":/dildo.png");
+ break;
+ }
+ return QVariant();
+}
+
+bool ActorModel::insertRows(int row, int count, const QModelIndex &){
+ beginInsertRows(QModelIndex(), row, row + count - 1);
+ for(int i = row; i < (row + count); ++i){
+ mItems.insert(i, QString());
+ }
+ endInsertRows();
+ return true;
+}
+
+bool ActorModel::removeRows(int row, int count, const QModelIndex &){
+ if((row > mItems.size()) || ((row + count) > mItems.size())){
+ return false;
+ }
+ beginRemoveRows(QModelIndex(), row, row + (count - 1));
+ for(int i = row; i < (row + count); ++i){
+ mItems.removeAt(i);
+ }
+ endRemoveRows();
+ return true;
+}
+
+bool ActorModel::setData(const QModelIndex &idx, const QVariant &data, int role){
+ if(!idx.isValid() || (idx.column() != 0) || (role != Qt::EditRole)){
+ return false;
+ }
+ mItems[idx.row()] = data.toString();
+ qSort(mItems);
+ dataChanged(index(0, 0), index((mItems.size() - 1), 0));
+ return true;
+}
+
+bool ActorModel::addItem(const QVariant &data){
+ if(mItems.contains(data.toString())){
+ return false;
+ }
+ bool success = false;
+ if(insertRows(0, 1, QModelIndex())){
+ QModelIndex idx = index(0, 0);
+ if(idx.isValid()){
+ success = setData(idx, data, Qt::EditRole);
+ }
+ }
+ return success;
+}
+
+bool ActorModel::removeItem(const QVariant &data){
+ QModelIndex idx = index(data);
+ if(!idx.isValid()){
+ return false;
+ }
+ bool retval = removeRows(idx.row(), 1, QModelIndex());
+ return retval;
+}
+
+void ActorModel::clear() {
+ removeRows(0, mItems.size(), QModelIndex());
+}
+