diff --git a/src/gui/DatabaseTabWidget.cpp b/src/gui/DatabaseTabWidget.cpp index 4c9445cc..8510279b 100644 --- a/src/gui/DatabaseTabWidget.cpp +++ b/src/gui/DatabaseTabWidget.cpp @@ -539,6 +539,16 @@ bool DatabaseTabWidget::readOnly(int index) return indexDatabaseManagerStruct(index).readOnly; } +bool DatabaseTabWidget::canSave(int index) +{ + if (index == -1) { + index = currentIndex(); + } + + const DatabaseManagerStruct& dbStruct = indexDatabaseManagerStruct(index); + return !dbStruct.saveToFilename || (dbStruct.modified && !dbStruct.readOnly); +} + bool DatabaseTabWidget::isModified(int index) { if (index == -1) { diff --git a/src/gui/DatabaseTabWidget.h b/src/gui/DatabaseTabWidget.h index 847eaef0..db237d98 100644 --- a/src/gui/DatabaseTabWidget.h +++ b/src/gui/DatabaseTabWidget.h @@ -78,6 +78,7 @@ public slots: void changeMasterKey(); void changeDatabaseSettings(); bool readOnly(int index = -1); + bool canSave(int index = -1); bool isModified(int index = -1); void performGlobalAutoType(); void lockDatabases(); diff --git a/src/gui/MainWindow.cpp b/src/gui/MainWindow.cpp index c83cae10..c82ea175 100644 --- a/src/gui/MainWindow.cpp +++ b/src/gui/MainWindow.cpp @@ -124,12 +124,6 @@ MainWindow::MainWindow() setWindowIcon(filePath()->applicationIcon()); m_ui->globalMessageWidget->setHidden(true); - QAction* toggleViewAction = m_ui->toolBar->toggleViewAction(); - toggleViewAction->setText(tr("Show toolbar")); - m_ui->menuView->addAction(toggleViewAction); - bool showToolbar = config()->get("ShowToolbar").toBool(); - m_ui->toolBar->setVisible(showToolbar); - connect(m_ui->toolBar, SIGNAL(visibilityChanged(bool)), this, SLOT(saveToolbarState(bool))); m_clearHistoryAction = new QAction(tr("Clear history"), m_ui->menuFile); m_lastDatabasesActions = new QActionGroup(m_ui->menuRecentDatabases); @@ -460,7 +454,7 @@ void MainWindow::setMenuActionState(DatabaseWidget::Mode mode) m_ui->actionGroupEmptyRecycleBin->setEnabled(recycleBinSelected); m_ui->actionChangeMasterKey->setEnabled(true); m_ui->actionChangeDatabaseSettings->setEnabled(true); - m_ui->actionDatabaseSave->setEnabled(true); + m_ui->actionDatabaseSave->setEnabled(m_ui->tabWidget->canSave()); m_ui->actionDatabaseSaveAs->setEnabled(true); m_ui->actionExportCsv->setEnabled(true); m_ui->actionDatabaseMerge->setEnabled(m_ui->tabWidget->currentIndex() != -1); @@ -566,6 +560,7 @@ void MainWindow::updateWindowTitle() if (m_ui->tabWidget->readOnly(tabWidgetIndex)) { customWindowTitlePart.append(QString(" [%1]").arg(tr("read-only"))); } + m_ui->actionDatabaseSave->setEnabled(m_ui->tabWidget->canSave(tabWidgetIndex)); } else if (stackedWidgetIndex == 1) { customWindowTitlePart = tr("Settings"); } diff --git a/src/gui/MainWindow.ui b/src/gui/MainWindow.ui index 258dd90c..6824904a 100644 --- a/src/gui/MainWindow.ui +++ b/src/gui/MainWindow.ui @@ -260,15 +260,9 @@ - - - &View - - -