Skip to content

Commit

Permalink
Add save diff correctly and format
Browse files Browse the repository at this point in the history
  • Loading branch information
Murmele committed Nov 12, 2023
1 parent c961a2d commit e179402
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 24 deletions.
15 changes: 9 additions & 6 deletions src/dialogs/PatchDialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,8 @@
namespace {

QString lastDir() {
QString dir = Settings::instance()->value(Setting::Id::PatchLastDir).toString();
QString dir =
Settings::instance()->value(Setting::Id::PatchLastDir).toString();

if (dir.isEmpty() || !QDir(dir).exists())
dir = QDir::homePath();
Expand All @@ -34,8 +35,9 @@ void saveLastDir(const QString &path) {
return;

QFileInfo fileInfo(path);
Settings::instance()->setValue(
Setting::Id::PatchLastDir, fileInfo.isDir() ? path : fileInfo.absolutePath());
Settings::instance()->setValue(Setting::Id::PatchLastDir,
fileInfo.isDir() ? path
: fileInfo.absolutePath());
}

} // namespace
Expand Down Expand Up @@ -152,8 +154,8 @@ void SavePatchDialog::setupUI(bool patch) {
});

if (patch) {
Format format =
static_cast<Format>(Settings::instance()->value(Setting::Id::PatchFormat).toInt());
Format format = static_cast<Format>(
Settings::instance()->value(Setting::Id::PatchFormat).toInt());
switch (format) {
case Format::Diff:
diff->setChecked(true);
Expand Down Expand Up @@ -199,7 +201,8 @@ SavePatchDialog::SavePatchDialog(const QByteArray &buffer,
}

void SavePatchDialog::save() const {
Settings::instance()->setValue(Setting::Id::PatchFormat, static_cast<int>(mFormat));
Settings::instance()->setValue(Setting::Id::PatchFormat,
static_cast<int>(mFormat));
saveLastDir(mDir->text());

if (mFormat == Format::Mailbox)
Expand Down
44 changes: 26 additions & 18 deletions src/ui/FileContextMenu.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -158,24 +158,6 @@ FileContextMenu::FileContextMenu(RepoView *view, const QStringList &files,
handleUncommittedChanges(index, files);
} else {
handleCommits(commits, files);

// Save Diff
QAction *save = addAction(tr("Save Diff"), view, [view, files, diff] {
SavePatchDialog *dialog =
new SavePatchDialog(diff.toBuffer(files), files, view);
dialog->open();
});
save->setEnabled(false);
foreach (const QString &file, files) {
int index = diff.indexOf(file);
if (index < 0)
continue;

if (diff.status(index) != GIT_DELTA_UNTRACKED) {
save->setEnabled(true);
break;
}
}
}

// TODO: moving this into handleWorkingDirChanges()? Because
Expand Down Expand Up @@ -392,6 +374,24 @@ void FileContextMenu::handleUncommittedChanges(const git::Index &index,
break;
}
}

// Save Diff
QAction *save = addAction(tr("Save Diff"), view, [view, files, diff] {
SavePatchDialog *dialog =
new SavePatchDialog(diff.toBuffer(files), files, view);
dialog->open();
});
save->setEnabled(false);
foreach (const QString &file, files) {
int index = diff.indexOf(file);
if (index < 0)
continue;

if (diff.status(index) != GIT_DELTA_UNTRACKED) {
save->setEnabled(true);
break;
}
}
}

void FileContextMenu::handleCommits(const QList<git::Commit> &commits,
Expand Down Expand Up @@ -489,6 +489,14 @@ void FileContextMenu::handleCommits(const QList<git::Commit> &commits,
break;
}
}

// Save Diff
QAction *save = addAction(tr("Save Diff"), view, [view, files, diff] {
SavePatchDialog *dialog =
new SavePatchDialog(diff.toBuffer(files), files, view);
dialog->open();
});
save->setEnabled(!files.isEmpty());
}

void FileContextMenu::ignoreFile() {
Expand Down

0 comments on commit e179402

Please sign in to comment.