+++ /dev/null
-#include "slidemodel.h"
-
-#include "slideitem.h"
-#include "vymmodel.h"
-
-#include <QDebug>
-#include <QItemSelectionModel>
-
-
-SlideModel::SlideModel( VymModel *vm)
- : QAbstractItemModel(NULL)
-{
- QVector<QVariant> rootData;
- rootData << "Slide";
- rootItem = new SlideItem(rootData, NULL,this);
- vymModel=vm;
-}
-
-SlideModel::~SlideModel()
-{
- delete rootItem;
-}
-
-void SlideModel::clear()
-{
- if (rootItem->childCount()>0)
- removeRows (0,rowCount (QModelIndex ()));
-}
-
-VymModel* SlideModel::getVymModel()
-{
- return vymModel;
-}
-
-int SlideModel::columnCount(const QModelIndex & /* parent */) const
-{
- return rootItem->columnCount();
-}
-
-QVariant SlideModel::data(const QModelIndex &index, int role) const
-{
- if (!index.isValid())
- return QVariant();
-
- if (role != Qt::DisplayRole && role != Qt::EditRole)
- return QVariant();
-
- SlideItem *item = getItem(index);
-
- return item->data(index.column());
-}
-
-Qt::ItemFlags SlideModel::flags(const QModelIndex &index) const
-{
- if (!index.isValid())
- return 0;
-
- return Qt::ItemIsEditable | Qt::ItemIsEnabled | Qt::ItemIsSelectable;
-}
-
-QVariant SlideModel::headerData(int section, Qt::Orientation orientation,
- int role) const
-{
- if (orientation == Qt::Horizontal && role == Qt::DisplayRole)
- return rootItem->data(section);
-
- return QVariant();
-}
-
-QModelIndex SlideModel::index (SlideItem *fri)
-{
- if (!fri || !fri->parent())
- return QModelIndex();
- else
- return createIndex (fri->row(),0,fri);
-}
-
-
-QModelIndex SlideModel::index(int row, int column, const QModelIndex &parent) const
-{
- if (parent.isValid() && parent.column() != 0)
- return QModelIndex();
-
- SlideItem *parentItem = getItem(parent);
-
- SlideItem *childItem = parentItem->child(row);
- if (childItem)
- return createIndex(row, column, childItem);
- else
- return QModelIndex();
-}
-
-bool SlideModel::insertColumns(int position, int columns, const QModelIndex &parent)
-{
- bool success;
-
- beginInsertColumns(parent, position, position + columns - 1);
- success = rootItem->insertColumns(position, columns);
- endInsertColumns();
-
- return success;
-}
-
-bool SlideModel::insertRows(int position, int rows, const QModelIndex &parent)
-{
- SlideItem *parentItem = getItem(parent);
- bool success;
-
- beginInsertRows(parent, position, position + rows - 1);
- success = parentItem->insertChildren(position, rows, rootItem->columnCount());
- endInsertRows();
-
- return success;
-}
-
-QModelIndex SlideModel::parent(const QModelIndex &index) const
-{
- if (!index.isValid())
- return QModelIndex();
-
- SlideItem *childItem = getItem(index);
- SlideItem *parentItem = childItem->parent();
-
- if (parentItem == rootItem)
- return QModelIndex();
-
- return createIndex(parentItem->childNumber(), 0, parentItem);
-}
-
-bool SlideModel::removeColumns(int position, int columns, const QModelIndex &parent)
-{
- bool success;
-
- beginRemoveColumns(parent, position, position + columns - 1);
- success = rootItem->removeColumns(position, columns);
- endRemoveColumns();
-
- if (rootItem->columnCount() == 0)
- removeRows(0, rowCount());
-
- return success;
-}
-
-bool SlideModel::removeRows(int position, int rows, const QModelIndex &parent)
-{
- SlideItem *parentItem = getItem(parent);
- bool success = true;
-
- beginRemoveRows(parent, position, position + rows - 1);
- success = parentItem->removeChildren(position, rows);
- endRemoveRows();
-
- return success;
-}
-
-int SlideModel::count()
-{
- return rootItem->childCount();
-}
-
-int SlideModel::rowCount(const QModelIndex &parent) const
-{
- SlideItem *parentItem = getItem(parent);
-
- return parentItem->childCount();
-}
-
-bool SlideModel::setData(const QModelIndex &index, const QVariant &value,
- int role)
-{
- if (role != Qt::EditRole)
- return false;
-
- SlideItem *item = getItem(index);
- bool result = item->setData(index.column(), value);
-
- if (result)
- emit dataChanged(index, index);
-
- return result;
-}
-
-bool SlideModel::setHeaderData(int section, Qt::Orientation orientation,
- const QVariant &value, int role)
-{
- if (role != Qt::EditRole || orientation != Qt::Horizontal)
- return false;
-
- bool result = rootItem->setData(section, value);
-
- if (result)
- emit headerDataChanged(orientation, section, section);
-
- return result;
-}
-
-SlideItem* SlideModel::addSlide(SlideItem *dst, int n)
-{
- SlideItem *si=NULL;
- if (!dst) dst=rootItem;
-
- emit (layoutAboutToBeChanged() );
-
- QModelIndex parix=index (dst);
- if (n<0) n=dst->childCount();
- beginInsertRows (parix,n,n);
- if (rootItem->insertChildren (n,1,0) )
- {
- QModelIndex ix=index(n,0,QModelIndex());
- si=getItem(ix);
- }
- endInsertRows ();
- emit (layoutChanged() );
-
- return si;
-}
-
-void SlideModel::deleteSlide(SlideItem *si)
-{
- QModelIndex ix=index(si);
- if (ix.isValid())
- {
- QModelIndex px=ix.parent();
- int n=si->childNumber();
- removeRows (n,1,px);
- }
-}
-
-bool SlideModel::relinkSlide(
- SlideItem *si,
- SlideItem *dst,
- int pos)
-{
- if (si && dst)
- {
- emit (layoutAboutToBeChanged() );
- SlideItem *pi=si->parent();
-
- // Remove at current position
- int n=si->childNumber();
-
- beginRemoveRows (index(pi),n,n);
- pi->removeItem (n);
- endRemoveRows();
-
- if (pos<0 ||pos>dst->childCount() ) pos=dst->childCount();
-
- // Insert at new position
- beginInsertRows (index(dst),pos,pos);
- dst->insertItem (pos, si);
- endInsertRows();
-
- emit (layoutChanged() );
-
- selModel->select (index (si),QItemSelectionModel::ClearAndSelect );
-
- return true;
- }
- return false;
-}
-
-SlideItem* SlideModel::getItem (const QModelIndex &index) const
-{
- if (index.isValid()) {
- SlideItem *item = static_cast<SlideItem*>(index.internalPointer());
- if (item) return item;
- }
- return rootItem;
-}
-
-SlideItem* SlideModel::getSlide (int n)
-{
- if (n>=count() || n<0) return NULL;
- return getItem (index (n, 0, QModelIndex() ));
-}
-
-SlideItem* SlideModel::findSlideID (uint n)
-{
- for (int i=0; i<rootItem->childCount(); i++)
- if (rootItem->child(i)->getID()==n)
- return rootItem->child(i);
- return NULL;
-}
-
-QString SlideModel::saveToDir()
-{
- QString s;
- for (int i=0; i<rootItem->childCount(); i++)
- s+=rootItem->child(i)->saveToDir();
- return s;
-}
-
-void SlideModel::setSearchString( const QString &s)
-{
- searchString=s;
-}
-
-QString SlideModel::getSearchString()
-{
- return searchString;
-}
-
-void SlideModel::setSearchFlags( QTextDocument::FindFlags f)
-{
- searchFlags=f;
-}
-
-QTextDocument::FindFlags SlideModel::getSearchFlags()
-{
- return searchFlags;
-}
-
-void SlideModel::setSelectionModel(QItemSelectionModel *sm)
-{
- selModel=sm;
-}
-
-QItemSelectionModel* SlideModel::getSelectionModel()
-{
- return selModel;
-}
-
-QModelIndex SlideModel::getSelectedIndex()
-{
- if (!selModel)
- {
- qDebug ()<<"SlideModel: No selection model!";
- return QModelIndex();
- }
- QModelIndexList list=selModel->selectedIndexes();
- if (!list.isEmpty() ) return list.first();
- return QModelIndex();
-}
-
-SlideItem* SlideModel::getSelectedItem ()
-{
- QModelIndex ix=getSelectedIndex();
- if (ix.isValid() ) return getItem (ix);
- return NULL;
-}
-