zeit: introduce copying possibility

This commit is contained in:
blaze 2021-04-25 10:14:17 +03:00
parent 72afd145fc
commit 4336b3b34f
No known key found for this signature in database
GPG Key ID: C4996C546950EAE4
8 changed files with 52 additions and 13 deletions

View File

@ -47,7 +47,7 @@ public:
virtual ~BaseDelegate() {}
virtual void view()=0;
virtual void copyEntry()=0;
virtual void copyEntry(int index)=0;
virtual void createEntry()=0;
virtual void modifyEntry(int index)=0;
virtual void deleteEntry(int index)=0;

View File

@ -34,7 +34,7 @@ class CommandDelegate : public BaseDelegate
public:
CommandDelegate(Ui::MainWindow* ui, Commands* commands);
void view() override;
void copyEntry() override { assert(false); };
void copyEntry(int index) override { Q_UNUSED(index); assert(false); };
void createEntry() override;
void modifyEntry(int index) override { Q_UNUSED(index); assert(false); };
void deleteEntry(int index) override;

View File

@ -52,10 +52,19 @@ void TaskDelegate::view()
}
}
void TaskDelegate::copyEntry(int index) {
CTTask* task = cron->tasks().at(index);
auto* newTask = new CTTask(*task);
newTask->comment = newTask->comment + QChar(0x20) + tr("(Copy)");
cron->addTask(newTask);
cron->save();
if(ui->actionTasks->isChecked())
view();
}
void TaskDelegate::createEntry() {
CTTask* task = new CTTask(QString(), QString(),
cron->userLogin(), false);
TaskDialog *td = new TaskDialog(task, tr("New Task"), ui->listWidget);
auto* task = new CTTask({}, {}, cron->userLogin(), false);
auto* td = new TaskDialog(task, tr("New Task"), ui->listWidget);
td->show();
QApplication::connect(td, &TaskDialog::accepted, td, [this, task] {
cron->addTask(task);
@ -67,7 +76,7 @@ void TaskDelegate::createEntry() {
void TaskDelegate::modifyEntry(int index) {
CTTask* task = cron->tasks().at(index);
TaskDialog* td = new TaskDialog(task, tr("Edit Task"), ui->listWidget);
auto* td = new TaskDialog(task, tr("Edit Task"), ui->listWidget);
td->show();
QApplication::connect(td, &TaskDialog::accepted, td, [this, task] {
cron->modifyTask(task);

View File

@ -33,7 +33,7 @@ class TaskDelegate : public BaseDelegate
public:
TaskDelegate(Ui::MainWindow* ui, CTCron* cron);
void view() override;
void copyEntry() override { assert(false); };
void copyEntry(int index) override;
void createEntry() override;
void modifyEntry(int index) override;
void deleteEntry(int index) override;

View File

@ -50,9 +50,19 @@ void VariableDelegate::view() {
}
}
void VariableDelegate::copyEntry(int index) {
CTVariable* var = cron->variables().at(index);
auto* newVariable = new CTVariable(*var);
newVariable->comment = newVariable->comment + QChar(0x20) + tr("(Copy)");
cron->addVariable(var);
cron->save();
if(ui->actionVariables->isChecked())
view();
}
void VariableDelegate::createEntry() {
CTVariable* var = new CTVariable({}, {}, cron->userLogin());
VariableDialog* vd = new VariableDialog(var, tr("New Variable"), ui->listWidget);
auto* var = new CTVariable({}, {}, cron->userLogin());
auto* vd = new VariableDialog(var, tr("New Variable"), ui->listWidget);
vd->show();
QApplication::connect(vd, &VariableDialog::accepted, vd, [this, var] {
cron->addVariable(var);
@ -64,7 +74,7 @@ void VariableDelegate::createEntry() {
void VariableDelegate::modifyEntry(int index) {
CTVariable* var = cron->variables().at(index);
VariableDialog* vd = new VariableDialog(var, tr("Edit Variable"), ui->listWidget);
auto* vd = new VariableDialog(var, tr("Edit Variable"), ui->listWidget);
vd->show();
QApplication::connect(vd, &VariableDialog::accepted, vd, [this, var] {
cron->modifyVariable(var);

View File

@ -34,7 +34,7 @@ class VariableDelegate : public BaseDelegate
public:
VariableDelegate(Ui::MainWindow* ui, CTCron* cron);
void view() override;
void copyEntry() override { assert(false); };
void copyEntry(int index) override;
void createEntry() override;
void modifyEntry(int index) override;
void deleteEntry(int index) override;

View File

@ -64,6 +64,8 @@ MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent),
ui->actionAddEntry->setIcon(QIcon::fromTheme(
QStringLiteral("document-new"),
QIcon(QSL(":/icons/document-new"))));
ui->actionCopyEntry->setIcon(QIcon::fromTheme(
QStringLiteral("edit-copy")));
ui->actionModifyEntry->setIcon(QIcon::fromTheme(
QStringLiteral("document-edit"),
QIcon(QSL(":/icons/document-edit"))));
@ -91,6 +93,7 @@ MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent),
ui->actionCommands->setDisabled(proc.readAllStandardOutput().isEmpty());
/* window actions */
ui->mainToolBar->addAction(ui->actionAddEntry);
ui->mainToolBar->addAction(ui->actionCopyEntry);
ui->mainToolBar->addAction(ui->actionModifyEntry);
ui->mainToolBar->addAction(ui->actionDeleteEntry);
ui->mainToolBar->addAction(ui->actionAlarm);
@ -102,6 +105,7 @@ MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent),
connect(ui->toggleItemAction, &QAction::triggered,
this, [this] { list->toggleEntry(ui->listWidget->currentRow()); });
ui->listWidget->addAction(ui->toggleItemAction);
ui->listWidget->addAction(ui->actionCopyEntry);
ui->listWidget->addAction(ui->actionModifyEntry);
ui->listWidget->addAction(ui->actionDeleteEntry);
ui->listWidget->setContextMenuPolicy(Qt::ActionsContextMenu);
@ -127,6 +131,8 @@ MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent),
this, [this] { list->modifyEntry(ui->listWidget->currentRow()); });
connect(ui->actionDeleteEntry, &QAction::triggered,
this, &MainWindow::deleteEntry);
connect(ui->actionCopyEntry, &QAction::triggered,
this, [this] { list->copyEntry(ui->listWidget->currentRow()); });
connect(ui->actionQuit, &QAction::triggered, this, &MainWindow::close);
// View menu
connect(ui->actionRefresh, &QAction::triggered, this, [this] {list->view();});
@ -164,18 +170,20 @@ void MainWindow::keyPressEvent(QKeyEvent* e) {
}
void MainWindow::refreshActions(bool enabled) {
bool currentUser = cron->isCurrentUserCron() || ROOT_ACTIONS;
ui->toggleItemAction->setDisabled(ui->actionCommands->isChecked() || !enabled);
bool currentUser = cron->isCurrentUserCron() || cron->isSystemCron();
ui->actionAddEntry->setEnabled(currentUser);
ui->actionCopyEntry->setEnabled((currentUser && enabled)
&& !ui->actionCommands->isChecked());
ui->actionModifyEntry->setEnabled((currentUser && enabled)
&& !ui->actionCommands->isChecked());
ui->actionDeleteEntry->setEnabled(currentUser && enabled);
ui->actionAlarm->setEnabled(currentUser);
ui->actionTimer->setEnabled(currentUser);
}
void MainWindow::updateWindow() {
ui->actionAddEntry->setText(tr("Add ") + list->caption);
ui->actionCopyEntry->setText(tr("Copy ") + list->caption);
ui->actionModifyEntry->setText(tr("Modify ") + list->caption);
ui->actionDeleteEntry->setText(tr("Delete ") + list->caption);
if(ui->actionCommands->isChecked())

View File

@ -84,6 +84,7 @@
<string>&amp;Zeit</string>
</property>
<addaction name="actionAddEntry"/>
<addaction name="actionCopyEntry"/>
<addaction name="actionModifyEntry"/>
<addaction name="actionDeleteEntry"/>
<addaction name="separator"/>
@ -287,6 +288,17 @@
<string>Ctrl+G</string>
</property>
</action>
<action name="actionCopyEntry">
<property name="text">
<string>&amp;Copy Entry</string>
</property>
<property name="toolTip">
<string>Copy Entry</string>
</property>
<property name="shortcut">
<string>Ctrl+C</string>
</property>
</action>
</widget>
<layoutdefault spacing="6" margin="11"/>
<resources/>