mirror of
https://github.com/loimu/zeit.git
synced 2025-09-15 12:58:44 +08:00
zeit: introduce copying possibility
This commit is contained in:
parent
72afd145fc
commit
4336b3b34f
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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())
|
||||
|
||||
@ -84,6 +84,7 @@
|
||||
<string>&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>&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/>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user