casa  $Rev:20696$
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
logmodel.qo.h
Go to the documentation of this file.
00001 //# Copyright (C) 2005
00002 //# Associated Universities, Inc. Washington DC, USA.
00003 //#
00004 //# This library is free software; you can redistribute it and/or modify it
00005 //# under the terms of the GNU Library General Public License as published by
00006 //# the Free Software Foundation; either version 2 of the License, or (at your
00007 //# option) any later version.
00008 //#
00009 //# This library is distributed in the hope that it will be useful, but WITHOUT
00010 //# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
00011 //# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Library General Public
00012 //# License for more details.
00013 //#
00014 //# You should have received a copy of the GNU Library General Public License
00015 //# along with this library; if not, write to the Free Software Foundation,
00016 //# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA.
00017 //#
00018 //# Correspondence concerning AIPS++ should be addressed as follows:
00019 //#        Internet email: aips2-request@nrao.edu.
00020 //#        Postal address: AIPS++ Project Office
00021 //#                        National Radio Astronomy Observatory
00022 //#                        520 Edgemont Road
00023 //#                        Charlottesville, VA 22903-2475 USA
00024 //#
00025 //# $Id:  $
00026 
00027 #ifndef LOGMODEL_H
00028 #define LOGMODEL_H
00029 
00030 
00031 #include <graphics/X11/X_enter.h>
00032 #include <QAbstractItemModel>
00033 #include <QModelIndex>
00034 #include <QVariant>
00035 #include <QTextStream>
00036 #include <graphics/X11/X_exit.h>
00037 
00038 namespace casa {
00039 
00040 class LogItem;
00041 
00042 class LogModel : public QAbstractItemModel
00043 {
00044     Q_OBJECT
00045 
00046 public:
00047     LogModel(const QString &data, QObject *parent = 0);
00048     ~LogModel();
00049 
00050     QVariant data(const QModelIndex &index, int role) const;
00051     Qt::ItemFlags flags(const QModelIndex &index) const;
00052     QVariant headerData(int section, Qt::Orientation orientation,
00053                         int role = Qt::DisplayRole) const;
00054     QModelIndex index(int row, int column,
00055                       const QModelIndex &parent = QModelIndex()) const;
00056     QModelIndex parent(const QModelIndex &index) const;
00057     int rowCount(const QModelIndex &parent = QModelIndex()) const;
00058     int columnCount(const QModelIndex &parent = QModelIndex()) const;
00059 
00060     void writeData(QTextStream &os);
00061     QString stringData();
00062     QString stringData(int row);
00063     bool insert(int, const QString&);
00064     virtual bool removeRows (int row, int count, 
00065             const QModelIndex & parent = QModelIndex());
00066     virtual bool insertRows (int row, int count, 
00067             const QModelIndex & parent = QModelIndex());
00068     void appendData(const QString &data);
00069     void changeFont(int);
00070     int getFontSize();
00071 
00072 private:
00073     void setupModelData(const QString &lines, LogItem *parent);
00074     LogItem *insertItem; 
00075     LogItem *rootItem;
00076     QString searchKey;
00077     int fontSize;
00078 
00079 public slots:
00080     void searchKeyChanged(const QString &key = "");
00081 };
00082 
00083 }
00084 #endif