implement deletion of entries

This commit is contained in:
Albert S. 2020-09-27 22:28:16 +02:00
parent 84cf8837bd
commit f9eff3b5b2
5 changed files with 20 additions and 1 deletions

View File

@ -295,6 +295,16 @@ void EntryProvider::saveUserEntry(const EntryConfig &config)
}
}
bool EntryProvider::deleteUserEntry(const EntryConfig &config)
{
if(!config.userEntry || config.entryPath.isEmpty())
{
throw std::runtime_error("Only user entries can be saved");
}
QFile file { config.entryPath };
return file.remove();
}
template <class T> void assignIfDestDefault(T &dest, const T &source)
{
if(dest == T())

View File

@ -50,6 +50,7 @@ class EntryProvider
QVector<EntryConfig> getUserEntries();
QVector<EntryConfig> getSystemEntries();
void saveUserEntry(const EntryConfig &config);
bool deleteUserEntry(const EntryConfig &config);
};
#endif // ENTRYPROVIDER_H

View File

@ -39,7 +39,7 @@ class EntryPushButton : public QPushButton
signals:
void clicked(const EntryConfig &config);
void deleteRequested(const EntryConfig &config);
void deleteRequested(EntryConfig &config);
void addToFavourites(const EntryConfig &config);
protected:

View File

@ -147,6 +147,12 @@ void Window::addToFavourites(const EntryPushButton &button)
userEntryButtons.append(createEntryButton(userConfig));
}
void Window::deleteEntry(EntryConfig &config)
{
this->entryProvider->deleteUserEntry(config);
initFromConfig();
}
void Window::closeWindow()
{
if(settingsProvider->singleInstanceMode())
@ -422,6 +428,7 @@ EntryPushButton *Window::createEntryButton(const EntryConfig &entry)
EntryPushButton *button = new EntryPushButton(entry);
connect(button, &EntryPushButton::clicked, this, &Window::buttonClick);
connect(button, &EntryPushButton::addToFavourites, this, &Window::addToFavourites);
connect(button, &EntryPushButton::deleteRequested, this, &Window::deleteEntry);
return button;
}

View File

@ -65,6 +65,7 @@ class Window : public QWidget
void keyPressEvent(QKeyEvent *event);
void buttonClick(const EntryPushButton &button);
void addToFavourites(const EntryPushButton &button);
void deleteEntry(EntryConfig &config);
QLineEdit *lineEdit;
QGridLayout *grid;
EntryPushButton *createEntryButton(const EntryConfig &config);