casa  $Rev:20696$
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
dirmodel.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 DIRMODEL_H
00028 #define DIRMODEL_H
00029 
00030 
00031 #include <graphics/X11/X_enter.h>
00032 #include <QAbstractItemModel>
00033 #include <QModelIndex>
00034 #include <QVariant>
00035 #include <QTextStream>
00036 #include <QDir>
00037 #include <QStringList>
00038 #include <graphics/X11/X_exit.h>
00039 
00040 namespace casa {
00041 
00042 class DirItem;
00043 
00044 class DirModel : public QAbstractItemModel
00045 {
00046     Q_OBJECT
00047 
00048 public:
00049     DirModel(QDir *data, QObject *parent = 0);
00050     ~DirModel();
00051 
00052     const static QStringList cols;
00053     const static QColor colors[24];
00054 
00055     QVariant data(const QModelIndex &index, int role) const;
00056     Qt::ItemFlags flags(const QModelIndex &index) const;
00057     QVariant headerData(int section, Qt::Orientation orientation,
00058                         int role = Qt::DisplayRole) const;
00059     QModelIndex index(int row, int column,
00060                       const QModelIndex &parent = QModelIndex()) const;
00061     QModelIndex parent(const QModelIndex &index) const;
00062     int rowCount(const QModelIndex &parent = QModelIndex()) const;
00063     int columnCount(const QModelIndex &parent = QModelIndex()) const;
00064 
00065     void writeData(QTextStream &os);
00066     QString stringData();
00067     QString stringData(int row);
00068     bool insert(int, const QString&);
00069     virtual bool removeRows (int row, int count, 
00070             const QModelIndex & parent = QModelIndex());
00071     virtual bool insertRows (int row, int count, 
00072             const QModelIndex & parent = QModelIndex());
00073     void appendData(const QString &lines);
00074     QStringList fileType(const QString pathname);
00075     void goTo(QDir *);
00076 private:
00077     QColor itemColor(const DirItem *);
00078     void setupModelData(QDir *lines, DirItem *parent);
00079     DirItem *insertItem; 
00080     DirItem *rootItem;
00081     QString searchKey;
00082 
00083 public slots:
00084     void searchKeyChanged(const QString &key = "");
00085 };
00086 
00087 }
00088 #endif