annotate filestates.h @ 326:6e1fdda1dff2 filelist_right_button_menu

Implement right-button menu functions for file lists; convert the toolbar-button functions (apart from Add and Remove) to modal only on working copy state rather than selection state
author Chris Cannam
date Fri, 11 Mar 2011 15:33:16 +0000
parents 5fa5c908ca00
children a52970e7a6e0
rev   line source
Chris@74 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@74 2
Chris@74 3 /*
Chris@74 4 EasyMercurial
Chris@74 5
Chris@74 6 Based on HgExplorer by Jari Korhonen
Chris@74 7 Copyright (c) 2010 Jari Korhonen
Chris@244 8 Copyright (c) 2011 Chris Cannam
Chris@244 9 Copyright (c) 2011 Queen Mary, University of London
Chris@74 10
Chris@74 11 This program is free software; you can redistribute it and/or
Chris@74 12 modify it under the terms of the GNU General Public License as
Chris@74 13 published by the Free Software Foundation; either version 2 of the
Chris@74 14 License, or (at your option) any later version. See the file
Chris@74 15 COPYING included with this distribution for more information.
Chris@74 16 */
Chris@74 17
Chris@92 18 #ifndef FILESTATES_H
Chris@92 19 #define FILESTATES_H
Chris@74 20
Chris@74 21 #include <QStringList>
Chris@94 22 #include <QMap>
Chris@94 23 #include <QString>
Chris@74 24
Chris@92 25 class FileStates
Chris@74 26 {
Chris@74 27 public:
Chris@94 28 FileStates();
Chris@92 29
Chris@92 30 enum State {
Chris@92 31
Chris@163 32 // These are in the order in which they want to be listed in
Chris@163 33 // the interface
Chris@163 34
Chris@92 35 Modified,
Chris@92 36 Added,
Chris@163 37 Removed,
Chris@163 38 InConflict,
Chris@163 39 Missing,
Chris@202 40 Unknown,
Chris@163 41 Clean,
Chris@199 42 Ignored,
Chris@92 43
Chris@163 44 FirstState = Modified,
Chris@199 45 LastState = Ignored
Chris@92 46 };
Chris@74 47
Chris@94 48 void parseStates(QString text);
Chris@92 49
Chris@324 50 bool isInState(QString file, State s) const;
Chris@324 51 QStringList filesInState(State s) const;
Chris@324 52 State stateOf(QString file) const;
Chris@94 53
Chris@324 54 /*!!! -- to remove: */
Chris@94 55 QStringList modified() const { return m_modified; }
Chris@94 56 QStringList added() const { return m_added; }
Chris@94 57 QStringList unknown() const { return m_unknown; }
Chris@94 58 QStringList removed() const { return m_removed; }
Chris@94 59 QStringList missing() const { return m_missing; }
Chris@159 60 QStringList inConflict() const { return m_inConflict; }
Chris@199 61 QStringList clean() const { return m_clean; }
Chris@199 62 QStringList ignored() const { return m_ignored; }
Chris@94 63
Chris@324 64 enum Activity {
Chris@324 65
Chris@324 66 // These are in the order in which they want to be listed in
Chris@324 67 // the context menu
Chris@324 68
Chris@326 69 Diff,
Chris@324 70 Annotate,
Chris@325 71
Chris@324 72 Commit,
Chris@324 73 Revert,
Chris@325 74
Chris@324 75 Add,
Chris@324 76 Remove,
Chris@325 77
Chris@324 78 RedoMerge,
Chris@324 79 MarkResolved,
Chris@325 80
Chris@324 81 Ignore,
Chris@324 82 UnIgnore,
Chris@324 83
Chris@326 84 FirstActivity = Diff,
Chris@324 85 LastActivity = UnIgnore
Chris@324 86 };
Chris@324 87
Chris@324 88 typedef QList<Activity> Activities;
Chris@324 89
Chris@324 90 static bool supportsActivity(State s, Activity a);
Chris@324 91 static Activities activitiesSupportedBy(State s);
Chris@325 92 static int activityGroup(Activity a);
Chris@324 93
Chris@324 94 bool supportsActivity(QString file, Activity a) const;
Chris@324 95 QStringList filesSupportingActivity(Activity) const;
Chris@324 96 Activities activitiesSupportedBy(QString file) const;
Chris@94 97
Chris@94 98 private:
Chris@94 99 QStringList m_modified;
Chris@94 100 QStringList m_added;
Chris@94 101 QStringList m_unknown;
Chris@94 102 QStringList m_removed;
Chris@94 103 QStringList m_missing;
Chris@159 104 QStringList m_inConflict;
Chris@199 105 QStringList m_clean;
Chris@199 106 QStringList m_ignored;
Chris@94 107 QMap<QString, State> m_stateMap;
Chris@94 108
Chris@324 109 void clearBuckets();
Chris@324 110
Chris@94 111 State charToState(QChar, bool * = 0);
Chris@94 112 QStringList *stateToBucket(State);
Chris@74 113 };
Chris@74 114
Chris@92 115 #endif // FILESTATES_H