recordtablemodel.cpp

Go to the documentation of this file.
00001 #include <QtXml/qdom.h>
00002 
00003 #include "main.h"
00004 #include "treeitem.h"
00005 #include "treemodel.h"
00006 #include "appconfig.h"
00007 #include "mainwindow.h"
00008 #include "recordtabledata.h"
00009 #include "recordtablemodel.h"
00010 
00011 extern appconfig mytetraconfig;
00012 
00013 
00014 // Конструктор модели.
00015 recordtablemodel::recordtablemodel(QObject *pobj) : QAbstractListModel(pobj)
00016 {
00017  // При создании модели она должна брать данные как минимум из
00018  // пустой таблицы данных
00019  table=new recordtabledata();
00020  
00021  return;
00022 }
00023 
00024 
00025 // Деструктор модели.
00026 recordtablemodel::~recordtablemodel()
00027 {
00028  return;
00029 }
00030 
00031 
00032 // Предоставление данных модели
00033 // В таблице конечных записей на экране перечисляются только имена записей
00034 QVariant recordtablemodel::data(const QModelIndex &index, int nRole) const
00035 {
00036  // Если индекс недопустимый, возвращается пустой объект
00037  if(!index.isValid()) return QVariant();
00038  
00039  // Если запрашивается текст строки для отрисовки или для редактирования
00040  if(nRole==Qt::DisplayRole || nRole==Qt::EditRole)
00041   return table->get_field("name",index.row());
00042    
00043  // Во всех остальных случаях
00044  return QVariant();
00045 }
00046 
00047 
00048 // Сохранение вводимых данных по указанному индексу
00049 bool recordtablemodel::setData(const QModelIndex &index, const QVariant &value, int nRole)
00050 {
00051  // Если индекс недопустимый, возвращается пустой объект
00052  if(!index.isValid()) return false;
00053 
00054  // Если запрашивается редактирование
00055  if(nRole==Qt::EditRole)
00056   {
00057    // Новое значение строки записывается в строковую переменную 
00058    QString linename;
00059    linename=value.value<QString>(); 
00060 
00061    // Изменяется поле в таблице конечных записей
00062    table->set_field("name",linename,index.row());
00063    
00064    emit dataChanged(index,index); // Посылается сигнал что данные были изменены
00065 
00066    return true;
00067   }
00068 
00069  // Во всех остальных случаях
00070  return false;
00071 }
00072 
00073 
00074 // Сколько записей в таблице
00075 int recordtablemodel::rowCount(const QModelIndex &parent) const
00076 {
00077  Q_UNUSED(parent);
00078  return table->size();
00079 }
00080 
00081 
00082 QAbstractListModel *recordtablemodel::getmodel(void)
00083 {
00084  // Возвращается ссылка на модель таблицы конечных записей
00085  return this;
00086 }
00087 
00088 void recordtablemodel::set_tabledata(recordtabledata *rtdata)
00089 {
00090  table=rtdata;
00091  
00092  // Модель информирует о том, что данные были кардинально изменены
00093  reset();
00094 }
00095 
00096 recordtabledata *recordtablemodel::get_tabledata(void)
00097 {
00098  // Возвращается ссылка на данные, с которыми в данный момент работает модель
00099  return table;
00100 }
00101 
00102 void recordtablemodel::update(void)
00103 {
00104  qDebug() << "Update view";
00105  
00106  // Модель информирует о том, что данные были изменены
00107  // При этом перестроится весь список на экране
00108  reset();
00109 }

Generated on Mon Feb 2 00:25:34 2009 for mytetra by  doxygen 1.5.1