]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/GuiChanges.cpp
* fix spelling in comments to please John.
[lyx.git] / src / frontends / qt4 / GuiChanges.cpp
index 467d47f3dd1a693141146d4cd4ff91e3256437db..63268ae24e808d3dc3f89428c7649ffd3c5455b7 100644 (file)
 #include <config.h>
 
 #include "GuiChanges.h"
-#include "ControlChanges.h"
 
 #include "qt_helpers.h"
 
+#include "support/gettext.h"
 #include "support/lstrings.h"
+#include "support/lyxtime.h"
 
-#include <QCloseEvent>
-#include <QTextBrowser>
+#include "Author.h"
+#include "Buffer.h"
+#include "BufferParams.h"
+#include "BufferView.h"
+#include "Changes.h"
+#include "FuncRequest.h"
+#include "LyXRC.h"
 
-using lyx::support::bformat;
+#include <QTextBrowser>
 
 
 namespace lyx {
 namespace frontend {
 
-GuiChangesDialog::GuiChangesDialog(LyXView & lv)
-       : GuiDialog(lv, "changes")
+using support::bformat;
+
+GuiChanges::GuiChanges(GuiView & lv)
+       : GuiDialog(lv, "changes", qt_("Merge Changes"))
 {
        setupUi(this);
-       setController(new ControlChanges(*this));
-       setViewTitle(_("Merge Changes"));
 
        connect(closePB, SIGNAL(clicked()), this, SLOT(slotClose()));
-       connect(nextPB, SIGNAL(clicked()), this, SLOT(nextPressed()));
-       connect(rejectPB, SIGNAL(clicked()), this, SLOT(rejectPressed()));
-       connect(acceptPB, SIGNAL(clicked()), this, SLOT(acceptPressed()));
+       connect(nextPB, SIGNAL(clicked()), this, SLOT(nextChange()));
+       connect(previousPB, SIGNAL(clicked()), this, SLOT(previousChange()));
+       connect(rejectPB, SIGNAL(clicked()), this, SLOT(rejectChange()));
+       connect(acceptPB, SIGNAL(clicked()), this, SLOT(acceptChange()));
 
        bc().setPolicy(ButtonPolicy::NoRepeatedApplyReadOnlyPolicy);
        bc().setCancel(closePB);
@@ -46,52 +53,79 @@ GuiChangesDialog::GuiChangesDialog(LyXView & lv)
 }
 
 
-ControlChanges & GuiChangesDialog::controller() const
+void GuiChanges::updateContents()
 {
-       return static_cast<ControlChanges &>(Dialog::controller());
+       docstring text;
+       docstring author = changeAuthor();
+       docstring date = changeDate();
+
+       if (!author.empty())
+               text += bformat(_("Change by %1$s\n\n"), author);
+       if (!date.empty())
+               text += bformat(_("Change made at %1$s\n"), date);
+
+       changeTB->setPlainText(toqstr(text));
 }
 
 
-void GuiChangesDialog::closeEvent(QCloseEvent *e)
+void GuiChanges::nextChange()
 {
-       slotWMHide();
-       e->accept();
+       dispatch(FuncRequest(LFUN_CHANGE_NEXT));
 }
 
 
-void GuiChangesDialog::update_contents()
+void GuiChanges::previousChange()
 {
-       docstring text;
-       docstring author = controller().getChangeAuthor();
-       docstring date = controller().getChangeDate();
+       dispatch(FuncRequest(LFUN_CHANGE_PREVIOUS));
+}
 
-       if (!author.empty())
-               text += bformat(_("Change by %1$s\n\n"), author);
-       if (!date.empty())
-               text += bformat(_("Change made at %1$s\n"), date);
 
-       changeTB->setPlainText(toqstr(text));
+docstring GuiChanges::changeDate() const
+{
+       Change const & c = bufferview()->getCurrentChange();
+       if (c.type == Change::UNCHANGED)
+               return docstring();
+
+       // FIXME UNICODE
+       return from_utf8(formatted_time(c.changetime, lyxrc.date_insert_format));
 }
 
 
-void GuiChangesDialog::nextPressed()
+docstring GuiChanges::changeAuthor() const
 {
-       controller().next();
+       Change const & c = bufferview()->getCurrentChange();
+       if (c.type == Change::UNCHANGED)
+               return docstring();
+
+       Author const & a = buffer().params().authors().get(c.author);
+
+       docstring author = a.name();
+
+       if (!a.email().empty())
+               author += " (" + a.email() + ")";
+
+       return author;
 }
 
 
-void GuiChangesDialog::acceptPressed()
+void GuiChanges::acceptChange()
 {
-       controller().accept();
+       dispatch(FuncRequest(LFUN_CHANGE_ACCEPT));
+       nextChange();
 }
 
 
-void GuiChangesDialog::rejectPressed()
+void GuiChanges::rejectChange()
 {
-       controller().reject();
+       dispatch(FuncRequest(LFUN_CHANGE_REJECT));
+       nextChange();
 }
 
+
+Dialog * createGuiChanges(GuiView & lv) { return new GuiChanges(lv); }
+
+
 } // namespace frontend
 } // namespace lyx
 
-#include "GuiChanges_moc.cpp"
+#include "moc_GuiChanges.cpp"