forked from mirror/openmw-tes3mp
added refrash menu item to report table (Fixes #2620)
This commit is contained in:
parent
e29d9bcc8e
commit
6fbdbb11d5
8 changed files with 67 additions and 14 deletions
|
@ -2369,9 +2369,9 @@ void CSMDoc::Document::save()
|
|||
emit stateChanged (getState(), this);
|
||||
}
|
||||
|
||||
CSMWorld::UniversalId CSMDoc::Document::verify()
|
||||
CSMWorld::UniversalId CSMDoc::Document::verify (const CSMWorld::UniversalId& reportId)
|
||||
{
|
||||
CSMWorld::UniversalId id = mTools.runVerifier();
|
||||
CSMWorld::UniversalId id = mTools.runVerifier (reportId);
|
||||
emit stateChanged (getState(), this);
|
||||
return id;
|
||||
}
|
||||
|
|
|
@ -120,7 +120,7 @@ namespace CSMDoc
|
|||
|
||||
void save();
|
||||
|
||||
CSMWorld::UniversalId verify();
|
||||
CSMWorld::UniversalId verify (const CSMWorld::UniversalId& reportId = CSMWorld::UniversalId());
|
||||
|
||||
CSMWorld::UniversalId newSearch();
|
||||
|
||||
|
|
|
@ -146,14 +146,19 @@ CSMTools::Tools::~Tools()
|
|||
delete iter->second;
|
||||
}
|
||||
|
||||
CSMWorld::UniversalId CSMTools::Tools::runVerifier()
|
||||
CSMWorld::UniversalId CSMTools::Tools::runVerifier (const CSMWorld::UniversalId& reportId)
|
||||
{
|
||||
mReports.insert (std::make_pair (mNextReportNumber++, new ReportModel));
|
||||
mActiveReports[CSMDoc::State_Verifying] = mNextReportNumber-1;
|
||||
int reportNumber = reportId.getType()==CSMWorld::UniversalId::Type_VerificationResults ?
|
||||
reportId.getIndex() : mNextReportNumber++;
|
||||
|
||||
if (mReports.find (reportNumber)==mReports.end())
|
||||
mReports.insert (std::make_pair (reportNumber, new ReportModel));
|
||||
|
||||
mActiveReports[CSMDoc::State_Verifying] = reportNumber;
|
||||
|
||||
getVerifier()->start();
|
||||
|
||||
return CSMWorld::UniversalId (CSMWorld::UniversalId::Type_VerificationResults, mNextReportNumber-1);
|
||||
return CSMWorld::UniversalId (CSMWorld::UniversalId::Type_VerificationResults, reportNumber);
|
||||
}
|
||||
|
||||
CSMWorld::UniversalId CSMTools::Tools::newSearch()
|
||||
|
|
|
@ -57,8 +57,11 @@ namespace CSMTools
|
|||
|
||||
virtual ~Tools();
|
||||
|
||||
CSMWorld::UniversalId runVerifier();
|
||||
///< \return ID of the report for this verification run
|
||||
/// \param reportId If a valid VerificationResults ID, run verifier for the
|
||||
/// specified report instead of creating a new one.
|
||||
///
|
||||
/// \return ID of the report for this verification run
|
||||
CSMWorld::UniversalId runVerifier (const CSMWorld::UniversalId& reportId = CSMWorld::UniversalId());
|
||||
|
||||
/// Return ID of the report for this search.
|
||||
CSMWorld::UniversalId newSearch();
|
||||
|
|
|
@ -4,12 +4,18 @@
|
|||
#include "reporttable.hpp"
|
||||
|
||||
CSVTools::ReportSubView::ReportSubView (const CSMWorld::UniversalId& id, CSMDoc::Document& document)
|
||||
: CSVDoc::SubView (id)
|
||||
: CSVDoc::SubView (id), mDocument (document), mRefreshState (0)
|
||||
{
|
||||
setWidget (mTable = new ReportTable (document, id, false, this));
|
||||
if (id.getType()==CSMWorld::UniversalId::Type_VerificationResults)
|
||||
mRefreshState = CSMDoc::State_Verifying;
|
||||
|
||||
setWidget (mTable = new ReportTable (document, id, false, mRefreshState, this));
|
||||
|
||||
connect (mTable, SIGNAL (editRequest (const CSMWorld::UniversalId&, const std::string&)),
|
||||
SIGNAL (focusId (const CSMWorld::UniversalId&, const std::string&)));
|
||||
|
||||
if (mRefreshState==CSMDoc::State_Verifying)
|
||||
connect (mTable, SIGNAL (refreshRequest()), this, SLOT (refreshRequest()));
|
||||
}
|
||||
|
||||
void CSVTools::ReportSubView::setEditLock (bool locked)
|
||||
|
@ -21,3 +27,15 @@ void CSVTools::ReportSubView::updateUserSetting (const QString &name, const QStr
|
|||
{
|
||||
mTable->updateUserSetting (name, list);
|
||||
}
|
||||
|
||||
void CSVTools::ReportSubView::refreshRequest()
|
||||
{
|
||||
if (!(mDocument.getState() & mRefreshState))
|
||||
{
|
||||
if (mRefreshState==CSMDoc::State_Verifying)
|
||||
{
|
||||
mTable->clear();
|
||||
mDocument.verify (getUniversalId());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -20,6 +20,8 @@ namespace CSVTools
|
|||
Q_OBJECT
|
||||
|
||||
ReportTable *mTable;
|
||||
CSMDoc::Document& mDocument;
|
||||
int mRefreshState;
|
||||
|
||||
public:
|
||||
|
||||
|
@ -28,6 +30,10 @@ namespace CSVTools
|
|||
virtual void setEditLock (bool locked);
|
||||
|
||||
virtual void updateUserSetting (const QString &, const QStringList &);
|
||||
|
||||
private slots:
|
||||
|
||||
void refreshRequest();
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -74,7 +74,12 @@ void CSVTools::ReportTable::contextMenuEvent (QContextMenuEvent *event)
|
|||
|
||||
if (found)
|
||||
menu.addAction (mReplaceAction);
|
||||
}
|
||||
|
||||
if (mRefreshAction)
|
||||
{
|
||||
mRefreshAction->setEnabled ((mDocument.getState() & mRefreshState)==0);
|
||||
menu.addAction (mRefreshAction);
|
||||
}
|
||||
|
||||
menu.exec (event->globalPos());
|
||||
|
@ -134,8 +139,10 @@ void CSVTools::ReportTable::mouseDoubleClickEvent (QMouseEvent *event)
|
|||
}
|
||||
|
||||
CSVTools::ReportTable::ReportTable (CSMDoc::Document& document,
|
||||
const CSMWorld::UniversalId& id, bool richTextDescription, QWidget *parent)
|
||||
: CSVWorld::DragRecordTable (document, parent), mModel (document.getReport (id))
|
||||
const CSMWorld::UniversalId& id, bool richTextDescription, int refreshState,
|
||||
QWidget *parent)
|
||||
: CSVWorld::DragRecordTable (document, parent), mModel (document.getReport (id)),
|
||||
mRefreshAction (0), mRefreshState (refreshState)
|
||||
{
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(5,0,0)
|
||||
horizontalHeader()->setSectionResizeMode (QHeaderView::Interactive);
|
||||
|
@ -171,6 +178,13 @@ CSVTools::ReportTable::ReportTable (CSMDoc::Document& document,
|
|||
connect (mReplaceAction, SIGNAL (triggered()), this, SIGNAL (replaceRequest()));
|
||||
addAction (mReplaceAction);
|
||||
|
||||
if (mRefreshState)
|
||||
{
|
||||
mRefreshAction = new QAction (tr ("Refresh"), this);
|
||||
connect (mRefreshAction, SIGNAL (triggered()), this, SIGNAL (refreshRequest()));
|
||||
addAction (mRefreshAction);
|
||||
}
|
||||
|
||||
mDoubleClickActions.insert (std::make_pair (Qt::NoModifier, Action_Edit));
|
||||
mDoubleClickActions.insert (std::make_pair (Qt::ShiftModifier, Action_Remove));
|
||||
mDoubleClickActions.insert (std::make_pair (Qt::ControlModifier, Action_EditAndRemove));
|
||||
|
|
|
@ -36,7 +36,9 @@ namespace CSVTools
|
|||
QAction *mShowAction;
|
||||
QAction *mRemoveAction;
|
||||
QAction *mReplaceAction;
|
||||
QAction *mRefreshAction;
|
||||
std::map<Qt::KeyboardModifiers, DoubleClickAction> mDoubleClickActions;
|
||||
int mRefreshState;
|
||||
|
||||
private:
|
||||
|
||||
|
@ -49,8 +51,11 @@ namespace CSVTools
|
|||
public:
|
||||
|
||||
/// \param richTextDescription Use rich text in the description column.
|
||||
/// \param refreshState Document state to check for refresh function. If value is
|
||||
/// 0 no refresh function exists. If the document current has the specified state
|
||||
/// the refresh function is disabled.
|
||||
ReportTable (CSMDoc::Document& document, const CSMWorld::UniversalId& id,
|
||||
bool richTextDescription, QWidget *parent = 0);
|
||||
bool richTextDescription, int refreshState = 0, QWidget *parent = 0);
|
||||
|
||||
virtual std::vector<CSMWorld::UniversalId> getDraggedRecords() const;
|
||||
|
||||
|
@ -76,6 +81,8 @@ namespace CSVTools
|
|||
void editRequest (const CSMWorld::UniversalId& id, const std::string& hint);
|
||||
|
||||
void replaceRequest();
|
||||
|
||||
void refreshRequest();
|
||||
};
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue