#ifndef NOTEBOOKMODEL_H #define NOTEBOOKMODEL_H #include #include #include class NotebookModel : public QAbstractItemModel { Q_OBJECT public: explicit NotebookModel(QObject *parent = 0); static QString defaultDataDirectory(); static QString userDataDirectory(); QString penDirectory(const QString &name) const; QString notebookDirectory(const QString &penName, const QString &nbName) const; QString notebookDirectory(const QModelIndex &index) const; QString paperReplayDirectory(const QString &name) const; QVariant data(const QModelIndex &index, int role) const; Qt::ItemFlags flags(const QModelIndex &index) const; QModelIndex index(int row, int column, const QModelIndex &parent) const; QModelIndex parent(const QModelIndex &child) const; int rowCount(const QModelIndex &parent) const; int columnCount(const QModelIndex &parent) const; signals: public slots: void refresh(); void refreshPen(const QString &name); private: private: int indexOfPen(const QString &name); QDir penDir(const QString &pen) const; QDir notebookDir(const QString &pen, const QString ¬ebook) const; QIcon getNotebookIcon(const QString &pen, const QString ¬ebook) const; bool isPenLocked(const QString &pen) const; bool isNotebookLocked(const QString &pen, const QString ¬ebook) const; int estimatePagesOfNotebook(const QString &pen, const QString ¬ebook) const; private slots: void handleChangedDirectory(const QString &path); private: QDir _dataDir; QFileSystemWatcher _watcher; QStringList _pens; QHash _notebooks; }; #endif // NOTEBOOKMODEL_H