Skip to content

Commit

Permalink
introduce safe edit mode and add context menu
Browse files Browse the repository at this point in the history
to rename a collection, fixes giowck#82
  • Loading branch information
joshirio committed Feb 4, 2020
1 parent a05791a commit b56b0e8
Show file tree
Hide file tree
Showing 10 changed files with 118 additions and 10 deletions.
29 changes: 26 additions & 3 deletions views/collectionlistview/collectionlistview.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
//-----------------------------------------------------------------------------

CollectionListView::CollectionListView(QWidget *parent) :
QListView(parent), m_currentCollectionId(0)
QListView(parent), m_currentCollectionId(0), m_safeEditMode(false)
{
setAttribute(Qt::WA_MacShowFocusRect, 0); //on mac disable focus rect around borders
setFocusPolicy(Qt::ClickFocus);
Expand Down Expand Up @@ -77,6 +77,7 @@ CollectionListView::CollectionListView(QWidget *parent) :
m_newCollectionAction = new QAction(tr("New"), this);
m_duplicateCollectionAction = new QAction(tr("Duplicate"), this);
m_deleteCollectionAction = new QAction(tr("Delete"), this);
m_renameCollectionAction = new QAction(tr("Rename"), this);
m_moveCollectionUpInList = new QAction(tr("Move up in list"), this);
m_moveCollectionUpInList->setIcon(QIcon(":/images/icons/up.png"));
m_moveCollectionUpInList->setStatusTip(tr("Move the selected collection up in the list"));
Expand All @@ -89,6 +90,8 @@ CollectionListView::CollectionListView(QWidget *parent) :
this, SLOT(deleteCollectionActionTriggered()));
connect(m_duplicateCollectionAction, SIGNAL(triggered()),
this, SLOT(duplicateCollectionActionTriggered()));
connect(m_renameCollectionAction, SIGNAL(triggered()),
this, SLOT(renameCollectionActionTriggered()));
connect(m_newCollectionAction, SIGNAL(triggered()),
this, SLOT(newCollectionActionTriggered()));
connect(m_moveCollectionUpInList, &QAction::triggered,
Expand Down Expand Up @@ -274,6 +277,17 @@ void CollectionListView::detachModel()
}
}

void CollectionListView::setSafeEditMode(const bool &safeMode)
{
m_safeEditMode = safeMode;
static CollectionListView::EditTriggers originalEditTriggers = this->editTriggers();

if (safeMode)
this->setEditTriggers(CollectionListView::NoEditTriggers);
else
this->setEditTriggers(originalEditTriggers);
}


//-----------------------------------------------------------------------------
// Protected
Expand All @@ -292,8 +306,11 @@ void CollectionListView::currentChanged(const QModelIndex &current,
void CollectionListView::contextMenuEvent(QContextMenuEvent *event)
{
QMenu menu(this);
menu.addAction(m_newCollectionAction);
if (MetadataEngine::getInstance().getCurrentCollectionId() != 0) {
if (!m_safeEditMode)
menu.addAction(m_newCollectionAction);
if ((MetadataEngine::getInstance().getCurrentCollectionId() != 0)
&& (m_safeEditMode == false)) {
menu.addAction(m_renameCollectionAction);
menu.addAction(m_duplicateCollectionAction);
menu.addAction(m_deleteCollectionAction);
menu.addSeparator();
Expand Down Expand Up @@ -348,6 +365,12 @@ void CollectionListView::duplicateCollectionActionTriggered()
duplicateCollection();
}

void CollectionListView::renameCollectionActionTriggered()
{
//edit it
edit(this->currentIndex());
}

void CollectionListView::moveUpActionTriggered()
{
int collectionId = MetadataEngine::getInstance().getCurrentCollectionId();
Expand Down
8 changes: 8 additions & 0 deletions views/collectionlistview/collectionlistview.h
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,9 @@ class CollectionListView : public QListView
/** Detach collection model from view */
void detachModel();

/** Set safe editing mode (disable editing actions) */
void setSafeEditMode(const bool &safeMode);

protected:
void currentChanged(const QModelIndex &current, const QModelIndex &previous);
void contextMenuEvent(QContextMenuEvent *event);
Expand All @@ -79,6 +82,9 @@ private slots:
/** Called on duplicate collection context menu click */
void duplicateCollectionActionTriggered();

/** Called on rename collection context menu click */
void renameCollectionActionTriggered();

/** Called on move collection up context menu click */
void moveUpActionTriggered();

Expand All @@ -98,7 +104,9 @@ private slots:
QAction *m_duplicateCollectionAction;
QAction *m_moveCollectionUpInList;
QAction *m_moveCollectionDownInList;
QAction *m_renameCollectionAction;
int m_currentCollectionId;
bool m_safeEditMode;
};

#endif // COLLECTIONLISTVIEW_H
8 changes: 8 additions & 0 deletions views/formview/formview.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -194,6 +194,14 @@ void FormView::reloadAppearanceSettings()
setupViewFonts();
}

void FormView::setSafeEditMode(const bool &safeMode)
{
m_newFieldContextAction->setDisabled(safeMode);
m_duplicateFieldContextAction->setDisabled(safeMode);
m_deleteFieldContextAction->setDisabled(safeMode);
m_modifyFieldContextAction->setDisabled(safeMode);
}


//-----------------------------------------------------------------------------
// Protected slots
Expand Down
3 changes: 3 additions & 0 deletions views/formview/formview.h
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,9 @@ class FormView : public QAbstractItemView
/** This reloads all properties and settings related to form view's appearence */
void reloadAppearanceSettings();

/** Set safe editing mode (disable field editing actions) */
void setSafeEditMode(const bool &safeMode);

signals:
/** Emitted when new field action was triggered from context menu */
void newFieldSignal();
Expand Down
8 changes: 8 additions & 0 deletions views/tableview/tableview.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,14 @@ void TableView::reloadRowSize()
restoreRowSize();
}

void TableView::setSafeEditMode(const bool &safeMode)
{
m_newFieldContextAction->setDisabled(safeMode);
m_duplicateFieldContextAction->setDisabled(safeMode);
m_deleteFieldContextAction->setDisabled(safeMode);
m_modifyFieldContextAction->setDisabled(safeMode);
}


//-----------------------------------------------------------------------------
// Protected slots
Expand Down
3 changes: 3 additions & 0 deletions views/tableview/tableview.h
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,9 @@ class TableView : public QTableView
/** Reload default row size from settings */
void reloadRowSize();

/** Set safe editing mode (disable field editing actions) */
void setSafeEditMode(const bool &safeMode);

signals:
/** Emitted when new field action was triggered from context menu */
void newFieldSignal();
Expand Down
57 changes: 50 additions & 7 deletions widgets/mainwindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1392,6 +1392,27 @@ void MainWindow::lockFormViewActionToggled(const bool locked)
m_formView->setLockFormLayout(locked);
}

void MainWindow::safeEditModeActionToggled(const bool locked)
{
m_safeEditModeAction->setChecked(locked);

lockFormViewActionToggled(locked);
m_lockFormViewAction->setDisabled(locked);
m_lockFormViewAction->setChecked(locked);

m_newFieldAction->setDisabled(locked);
m_deleteAllRecordsAction->setDisabled(locked);
m_deleteCollectionAction->setDisabled(locked);
m_newCollectionAction->setDisabled(locked);
m_duplicateCollectionAction->setDisabled(locked);
m_importAction->setDisabled(locked);

m_dockWidget->getCollectionListView()->setSafeEditMode(locked);
m_formView->setSafeEditMode(locked);
m_viewToolBar->setSafeEditMode(locked);
m_tableView->setSafeEditMode(locked);
}

void MainWindow::showAlarmListDialog()
{
if (!m_alarmListDialog) {
Expand Down Expand Up @@ -1755,6 +1776,11 @@ void MainWindow::createActions()
m_lockFormViewAction->setIcon(QIcon(":/images/icons/locked.png"));
m_lockFormViewAction->setStatusTip(tr("Lock the form view design to prevent "
"unwanted field movements"));

m_safeEditModeAction = new QAction(tr("Simple edit mode (safe mode)"), this);
m_safeEditModeAction->setCheckable(true);
m_safeEditModeAction->setStatusTip(tr("Lock all destructive actions to prevent "
"changes to collections. Only editing of records is allowed."));
}

void MainWindow::createToolBar()
Expand Down Expand Up @@ -1846,6 +1872,7 @@ void MainWindow::createMenu()
m_editMenu->addAction(m_selectAllAction);
m_editMenu->addSeparator();
m_editMenu->addAction(m_lockFormViewAction);
m_editMenu->addAction(m_safeEditModeAction);
m_editMenu->addSeparator();
m_editMenu->addAction(m_findAction);

Expand Down Expand Up @@ -1979,6 +2006,8 @@ void MainWindow::createConnections()
this, SLOT(importActionTriggered()));
connect(m_lockFormViewAction, &QAction::toggled,
this, &MainWindow::lockFormViewActionToggled);
connect(m_safeEditModeAction, &QAction::toggled,
this, &MainWindow::safeEditModeActionToggled);

//record actions
connect(m_newRecordAction, SIGNAL(triggered()),
Expand Down Expand Up @@ -2125,10 +2154,17 @@ void MainWindow::restoreSettings()
m_toggleDockAction->setChecked(true);
}

//restore layout locked status of formView
bool fwLock = m_settingsManager->restoreProperty("lockFormView", "mainWindow").toBool();
m_lockFormViewAction->setChecked(fwLock);
m_formView->setLockFormLayout(fwLock);
//restore safe edit mode status
bool safeEditMode = m_settingsManager->restoreProperty("safeEditMode", "mainWindow").toBool();
if (safeEditMode) {
//enable safe editing
safeEditModeActionToggled(true);
} else {
//restore layout locked status of formView
bool fwLock = m_settingsManager->restoreProperty("lockFormView", "mainWindow").toBool();
m_lockFormViewAction->setChecked(fwLock);
m_formView->setLockFormLayout(fwLock);
}

//sync
SyncSession::LOCAL_DATA_CHANGED = m_syncEngine->localDataChanged();
Expand All @@ -2143,9 +2179,16 @@ void MainWindow::saveSettings()
m_settingsManager->saveViewMode(m_currentViewMode);
m_settingsManager->saveLastUsedRecord(m_formView->getCurrentRow());

//save layout locked status of formView
m_settingsManager->saveProperty("lockFormView", "mainWindow",
m_lockFormViewAction->isChecked());
//save safe editing mode status
bool safeEditingEnabled = m_safeEditModeAction->isChecked();
m_settingsManager->saveProperty("safeEditMode", "mainWindow",
safeEditingEnabled);

if (!safeEditingEnabled) {
//save layout locked status of formView
m_settingsManager->saveProperty("lockFormView", "mainWindow",
m_lockFormViewAction->isChecked());
}

//sync
if (SyncSession::IS_ENABLED) {
Expand Down
2 changes: 2 additions & 0 deletions widgets/mainwindow.h
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,7 @@ private slots:
void exportActionTriggered();
void importActionTriggered();
void lockFormViewActionToggled(const bool locked);
void safeEditModeActionToggled(const bool locked);

/** Create and show alarm list dialog */
void showAlarmListDialog();
Expand Down Expand Up @@ -245,6 +246,7 @@ private slots:
QAction *m_exportAction;
QAction *m_importAction;
QAction *m_lockFormViewAction;
QAction *m_safeEditModeAction;
#ifdef Q_OS_OSX
QAction *m_minimizeAction;
QAction *m_closeWindowAction;
Expand Down
7 changes: 7 additions & 0 deletions widgets/viewtoolbarwidget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -380,6 +380,13 @@ void ViewToolBarWidget::setViewModeState(ViewMode m)
}
}

void ViewToolBarWidget::setSafeEditMode(const bool &safeMode)
{
m_newFieldButton->setDisabled(safeMode);
m_duplicateFieldButton->setDisabled(safeMode);
m_deleteFieldButton->setDisabled(safeMode);
}


//-----------------------------------------------------------------------------
// Public slots
Expand Down
3 changes: 3 additions & 0 deletions widgets/viewtoolbarwidget.h
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,9 @@ class ViewToolBarWidget : public QWidget
/** This method is used to set the view mode buttons to the specified state */
void setViewModeState(ViewMode m);

/** Set safe editing mode (disable field editing actions) */
void setSafeEditMode(const bool &safeMode);

public slots:
/** Set the focus on the search line */
void setSearchLineFocus();
Expand Down

0 comments on commit b56b0e8

Please sign in to comment.