Chris@74: /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ Chris@74: Chris@74: /* Chris@74: EasyMercurial Chris@74: Chris@74: Based on HgExplorer by Jari Korhonen Chris@74: Copyright (c) 2010 Jari Korhonen Chris@644: Copyright (c) 2013 Chris Cannam Chris@644: Copyright (c) 2013 Queen Mary, University of London Chris@74: Chris@74: This program is free software; you can redistribute it and/or Chris@74: modify it under the terms of the GNU General Public License as Chris@74: published by the Free Software Foundation; either version 2 of the Chris@74: License, or (at your option) any later version. See the file Chris@74: COPYING included with this distribution for more information. Chris@74: */ Chris@74: Chris@92: #ifndef FILESTATES_H Chris@92: #define FILESTATES_H Chris@74: Chris@74: #include Chris@94: #include Chris@94: #include Chris@74: Chris@92: class FileStates Chris@74: { Chris@74: public: Chris@94: FileStates(); Chris@92: Chris@92: enum State { Chris@92: Chris@163: // These are in the order in which they want to be listed in Chris@163: // the interface Chris@163: Chris@92: Modified, Chris@92: Added, Chris@163: Removed, Chris@163: InConflict, Chris@163: Missing, Chris@202: Unknown, Chris@163: Clean, Chris@199: Ignored, Chris@92: Chris@163: FirstState = Modified, Chris@199: LastState = Ignored Chris@92: }; Chris@74: Chris@94: void parseStates(QString text); Chris@92: Chris@324: bool isInState(QString file, State s) const; Chris@324: QStringList filesInState(State s) const; Chris@324: State stateOf(QString file) const; Chris@421: bool isKnown(QString file) const; Chris@94: Chris@541: QStringList trackedFiles() const; Chris@541: Chris@324: enum Activity { Chris@324: Chris@324: // These are in the order in which they want to be listed in Chris@324: // the context menu Chris@324: Chris@326: Diff, Chris@324: Annotate, Chris@325: Chris@324: Commit, Chris@324: Revert, Chris@325: Chris@361: Rename, Chris@361: Copy, Chris@361: Chris@324: Add, Chris@324: Remove, Chris@325: Chris@324: RedoMerge, Chris@324: MarkResolved, Chris@325: Chris@324: Ignore, Chris@324: UnIgnore, Chris@324: sam@624: ShowIn, sam@624: Chris@326: FirstActivity = Diff, Chris@324: LastActivity = UnIgnore Chris@324: }; Chris@324: Chris@324: typedef QList Activities; Chris@324: Chris@324: static bool supportsActivity(State s, Activity a); Chris@324: static Activities activitiesSupportedBy(State s); Chris@325: static int activityGroup(Activity a); Chris@324: Chris@324: bool supportsActivity(QString file, Activity a) const; Chris@324: QStringList filesSupportingActivity(Activity) const; Chris@324: Activities activitiesSupportedBy(QString file) const; Chris@94: Chris@94: private: Chris@94: QStringList m_modified; Chris@94: QStringList m_added; Chris@94: QStringList m_unknown; Chris@94: QStringList m_removed; Chris@94: QStringList m_missing; Chris@159: QStringList m_inConflict; Chris@199: QStringList m_clean; Chris@199: QStringList m_ignored; Chris@94: QMap m_stateMap; Chris@94: Chris@324: void clearBuckets(); Chris@324: Chris@94: State charToState(QChar, bool * = 0); Chris@94: QStringList *stateToBucket(State); Chris@74: }; Chris@74: Chris@92: #endif // FILESTATES_H