#include "Author.h"
#include "support/convert.h"
+#include "support/gettext.h"
#include "support/lassert.h"
#include "support/lstrings.h"
{}
+docstring Author::nameAndEmail() const
+{
+ if (email().empty())
+ return name();
+ else
+ return bformat(_("%1$s[[name]] (%2$s[[email]])"), name(), email());
+}
+
+
bool Author::valid() const
{
//this cannot be equal if the buffer_id was produced by the hash function.
///
docstring email() const { return email_; }
///
+ docstring nameAndEmail() const;
+ ///
int bufferId() const { return buffer_id_; }
///
void setBufferId(int buffer_id) const { buffer_id_ = buffer_id; }
#include "support/lassert.h"
#include "support/lstrings.h"
#include "support/lyxalgo.h"
+#include "support/lyxtime.h"
#include "support/textutils.h"
#include <sstream>
Change change = par.lookupChange(cur.pos());
if (change.changed()) {
- Author const & a = buf.params().authors().get(change.author);
- os << _("Change: ") << a.name();
- if (!a.email().empty())
- os << " (" << a.email() << ")";
- // FIXME ctime is english, we should translate that
- os << _(" at ") << ctime(&change.changetime);
- os << " : ";
+ docstring const author =
+ buf.params().authors().get(change.author).nameAndEmail();
+ docstring const date = formatted_datetime(change.changetime);
+ os << bformat(_("Changed by %1$s[[author]] on %2$s[[date]]. "),
+ author, date);
}
// I think we should only show changes from the default
#include "FuncRequest.h"
#include "LyXRC.h"
+#include <QDateTime>
#include <QTextBrowser>
namespace lyx {
namespace frontend {
-using support::bformat;
-using support::formatted_time;
GuiChanges::GuiChanges(GuiView & lv)
: GuiDialog(lv, "changes", qt_("Merge Changes"))
void GuiChanges::updateContents()
{
- docstring text;
- docstring author = changeAuthor();
- docstring date = changeDate();
+ bool const changesPresent = buffer().areChangesPresent();
+ nextPB->setEnabled(changesPresent);
+ previousPB->setEnabled(changesPresent);
+ changeTB->setEnabled(changesPresent);
- 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));
+ Change const & c = bufferview()->getCurrentChange();
+ bool const changePresent = c.type != Change::UNCHANGED;
+ rejectPB->setEnabled(changePresent);
+ acceptPB->setEnabled(changePresent);
+
+ QString text;
+ if (changePresent) {
+ QString const author =
+ toqstr(buffer().params().authors().get(c.author).nameAndEmail());
+ if (!author.isEmpty())
+ text += qt_("Changed by %1\n\n").arg(author);
+
+ QString const date = QDateTime::fromTime_t(c.changetime)
+ .toString(Qt::DefaultLocaleLongDate);
+ if (!date.isEmpty())
+ text += qt_("Change made on %1\n").arg(date);
+ }
+ changeTB->setPlainText(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));
-}
-
-
-docstring GuiChanges::changeAuthor() const
-{
- 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 GuiChanges::acceptChange()
{
dispatch(FuncRequest(LFUN_CHANGE_ACCEPT));
#include "GuiDialog.h"
#include "ui_ChangesUi.h"
+
+#include "support/debug.h"
#include "support/docstring.h"
bool isBufferDependent() const { return true; }
/// always true since dispatchParams() is empty
bool canApply() const { return true; }
-
- /// return date of change
- docstring changeDate() const;
- /// return author of change
- docstring changeAuthor() const;
};
} // namespace frontend
}
+docstring formatted_datetime(time_t t, string const & fmt)
+{
+ QString qres;
+ if (fmt.empty())
+ qres = QLocale().toString(QDateTime::fromTime_t(t),
+ QLocale::ShortFormat);
+ else
+ qres = QLocale().toString(QDateTime::fromTime_t(t), toqstr(fmt));
+ return qstring_to_ucs4(qres);
+}
+
+
time_t from_asctime_utc(string t)
{
// Example for the format: "Sun Nov 6 10:39:39 2011\n"
#include <time.h>
#include <string>
+#include "strfwd.h"
+
namespace lyx {
namespace support {
/** Returns a locale-dependent formatting of the date
* and time encoded in \c time. The \p fmt string
* holds the formatting arguments of \c strftime.
+ * Prefer the function formatted_datetime below.
*/
std::string const formatted_time(time_t t, std::string const & fmt);
+/** Returns a locale-dependent formatting of the date and time encoded in \c t
+ * The \p fmt string holds the formatting arguments of QDateTime::toString().
+ * If fmt is empty then the formatting of the date and time is itself according
+ * to the locale.
+ */
+docstring formatted_datetime(time_t t, std::string const & fmt = "");
+
/**
* Inverse of asctime(gmtime()).
*/