Mercurial > hg > easyhg
diff filestates.cpp @ 324:306ffd913071 filelist_right_button_menu
Introduce "activities" enum and functions
author | Chris Cannam |
---|---|
date | Thu, 10 Mar 2011 18:45:50 +0000 |
parents | 8fd71f570884 |
children | 5fa5c908ca00 |
line wrap: on
line diff
--- a/filestates.cpp Thu Mar 10 15:33:02 2011 +0000 +++ b/filestates.cpp Thu Mar 10 18:45:50 2011 +0000 @@ -63,7 +63,7 @@ QStringList *FileStates::stateToBucket(State s) { switch (s) { - case Clean: return &m_clean; // not implemented yet + case Clean: return &m_clean; case Modified: return &m_modified; case Added: return &m_added; case Unknown: return &m_unknown; @@ -112,14 +112,19 @@ << m_unknown.size() << " unknown" << endl; } -QStringList FileStates::getFilesInState(State s) const +QStringList FileStates::filesInState(State s) const { QStringList *sl = const_cast<FileStates *>(this)->stateToBucket(s); if (sl) return *sl; else return QStringList(); } -FileStates::State FileStates::getStateOfFile(QString file) const +bool FileStates::isInState(QString file, State s) const +{ + return filesInState(s).contains(file); +} + +FileStates::State FileStates::stateOf(QString file) const { if (m_stateMap.contains(file)) { return m_stateMap[file]; @@ -131,3 +136,71 @@ << endl; return Unknown; } + +FileStates::Activities FileStates::activitiesSupportedBy(State s) +{ + Activities a; + + switch (s) { + + case Modified: + a << Annotate << Diff << Commit << Revert << Remove; + break; + + case Added: + a << Commit << Revert << Remove; + break; + + case Removed: + a << Commit << Revert << Add; + break; + + case InConflict: + a << Annotate << Diff << RedoMerge << MarkResolved; + break; + + case Missing: + a << Revert << Remove; + break; + + case Unknown: + a << Add << Ignore; + break; + + case Clean: + a << Remove << Annotate; + break; + + case Ignored: + a << UnIgnore; + break; + } + + return a; +} + +bool FileStates::supportsActivity(State s, Activity a) +{ + return activitiesSupportedBy(s).contains(a); +} + +bool FileStates::supportsActivity(QString file, Activity a) const +{ + return supportsActivity(stateOf(file), a); +} + +QStringList FileStates::filesSupportingActivity(Activity a) const +{ + QStringList f; + for (int i = int(FirstState); i <= int(LastState); ++i) { + State s = (State)i; + f << filesInState(s); + } + return f; +} + +FileStates::Activities FileStates::activitiesSupportedBy(QString file) const +{ + return activitiesSupportedBy(stateOf(file)); +} +