annotate filestatuswidget.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 acfe9390d5c6
rev   line source
Chris@88 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@88 2
Chris@88 3 /*
Chris@88 4 EasyMercurial
Chris@88 5
Chris@88 6 Based on HgExplorer by Jari Korhonen
Chris@88 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@88 10
Chris@88 11 This program is free software; you can redistribute it and/or
Chris@88 12 modify it under the terms of the GNU General Public License as
Chris@88 13 published by the Free Software Foundation; either version 2 of the
Chris@88 14 License, or (at your option) any later version. See the file
Chris@88 15 COPYING included with this distribution for more information.
Chris@88 16 */
Chris@88 17
Chris@88 18 #ifndef FILESTATUSWIDGET_H
Chris@88 19 #define FILESTATUSWIDGET_H
Chris@88 20
Chris@92 21 #include "filestates.h"
Chris@88 22
Chris@88 23 #include <QWidget>
Chris@230 24 #include <QList>
Chris@88 25
Chris@88 26 class QLabel;
Chris@88 27 class QListWidget;
Chris@115 28 class QPushButton;
Chris@93 29 class QFileInfo;
Chris@199 30 class QCheckBox;
Chris@88 31
Chris@88 32 class FileStatusWidget : public QWidget
Chris@88 33 {
Chris@88 34 Q_OBJECT
Chris@88 35
Chris@88 36 public:
Chris@88 37 FileStatusWidget(QWidget *parent = 0);
Chris@93 38 ~FileStatusWidget();
Chris@88 39
Chris@283 40 QString localPath() const;
Chris@88 41 void setLocalPath(QString p);
Chris@88 42
Chris@283 43 FileStates fileStates() const;
Chris@92 44 void setFileStates(FileStates sp);
Chris@88 45
Chris@95 46 bool haveChangesToCommit() const;
Chris@95 47 bool haveSelection() const;
Chris@90 48
Chris@103 49 QStringList getAllCommittableFiles() const;
Chris@109 50 QStringList getAllRevertableFiles() const;
Chris@326 51 QStringList getAllUnresolvedFiles() const;
Chris@109 52
Chris@95 53 QStringList getSelectedAddableFiles() const;
Chris@326 54 QStringList getSelectedRemovableFiles() const;
Chris@103 55
Chris@95 56 signals:
Chris@95 57 void selectionChanged();
Chris@199 58 void showAllChanged(bool);
Chris@94 59
Chris@326 60 void annotateFiles(QStringList);
Chris@326 61 void diffFiles(QStringList);
Chris@326 62 void commitFiles(QStringList);
Chris@326 63 void revertFiles(QStringList);
Chris@326 64 void addFiles(QStringList);
Chris@326 65 void removeFiles(QStringList);
Chris@326 66 void redoFileMerges(QStringList);
Chris@326 67 void markFilesResolved(QStringList);
Chris@326 68 void ignoreFiles(QStringList);
Chris@326 69 void unIgnoreFiles(QStringList);
Chris@326 70
Chris@94 71 public slots:
Chris@94 72 void clearSelections();
Chris@230 73 void updateWidgets();
Chris@94 74
Chris@95 75 private slots:
Chris@326 76 void menuActionActivated();
Chris@95 77 void itemSelectionChanged();
Chris@95 78
Chris@88 79 private:
Chris@287 80 QString m_localPath;
Chris@115 81 QLabel *m_noModificationsLabel;
Chris@106 82
Chris@199 83 QCheckBox *m_showAllFiles;
Chris@199 84
Chris@92 85 FileStates m_fileStates;
Chris@100 86 QMap<FileStates::State, QString> m_simpleLabels;
Chris@100 87 QMap<FileStates::State, QString> m_descriptions;
Chris@94 88 QMap<FileStates::State, QListWidget *> m_stateListMap;
Chris@325 89 QMap<FileStates::Activity, QString> m_actionLabels;
Chris@100 90 QString m_highlightExplanation;
Chris@88 91
Chris@93 92 QFileInfo *m_dateReference;
Chris@95 93 QStringList m_selectedFiles;
Chris@93 94
Chris@230 95 bool m_gridlyLayout;
Chris@230 96 int m_lastGridlyCount;
Chris@230 97 QList<QWidget *> m_boxes;
Chris@230 98 QWidget *m_boxesParent;
Chris@230 99
Chris@230 100 void layoutBoxesGridly(int count);
Chris@230 101 void layoutBoxesLinearly();
Chris@230 102 void setNoModificationsLabelText();
Chris@100 103 QString labelFor(FileStates::State, bool addHighlightExplanation = false);
Chris@100 104 void setLabelFor(QWidget *w, FileStates::State, bool addHighlightExplanation);
Chris@326 105
Chris@326 106 QStringList getSelectedFilesInState(FileStates::State s) const;
Chris@326 107 QStringList getSelectedFilesSupportingActivity(FileStates::Activity) const;
Chris@88 108 };
Chris@88 109
Chris@88 110 #endif