Print common headers when printing messages
This commit is contained in:
parent
c1bc3ee99d
commit
698f61e6e5
8 changed files with 95 additions and 8 deletions
|
|
@ -16,7 +16,7 @@ variables:
|
|||
glib2-devel gmime-devel gtk3-devel libnotify-devel sqlite-devel
|
||||
webkitgtk4-devel libsecret-devel libxml2-devel vala-tools
|
||||
gcr-devel enchant-devel libunwind-devel iso-codes-devel
|
||||
gnome-online-accounts-devel itstool
|
||||
gnome-online-accounts-devel itstool json-glib-devel
|
||||
FEDORA_TEST_DEPS: Xvfb tar xz
|
||||
UBUNTU_DEPS: valac libgirepository1.0-dev
|
||||
meson desktop-file-utils libcanberra-dev
|
||||
|
|
@ -24,7 +24,7 @@ variables:
|
|||
libsecret-1-dev libxml2-dev libnotify-dev libsqlite3-dev
|
||||
libwebkit2gtk-4.0-dev libgcr-3-dev libenchant-dev
|
||||
libunwind-dev iso-codes libgoa-1.0-dev itstool gettext
|
||||
libmessaging-menu-dev libunity-dev
|
||||
libmessaging-menu-dev libunity-dev libjson-glib-dev
|
||||
UBUNTU_TEST_DEPS: xauth xvfb
|
||||
|
||||
#
|
||||
|
|
|
|||
4
INSTALL
4
INSTALL
|
|
@ -45,7 +45,7 @@ libraries. Install them by running this command:
|
|||
desktop-file-utils iso-codes-devel libcanberra-devel libgee-devel \
|
||||
glib2-devel gmime-devel gtk3-devel libnotify-devel sqlite-devel \
|
||||
webkitgtk4-devel libsecret-devel libxml2-devel vala-tools \
|
||||
gcr-devel enchant-devel libunwind-devel \
|
||||
gcr-devel enchant-devel libunwind-devel json-glib-devel \
|
||||
gnome-online-accounts-devel itstool
|
||||
|
||||
Installing dependencies on Ubuntu/Debian
|
||||
|
|
@ -67,7 +67,7 @@ Install them by running this command:
|
|||
libgee-0.8-dev libglib2.0-dev libgmime-2.6-dev libgtk-3-dev \
|
||||
libsecret-1-dev libxml2-dev libnotify-dev libsqlite3-dev \
|
||||
libwebkit2gtk-4.0-dev libgcr-3-dev libenchant-dev \
|
||||
libunwind-dev libgoa-1.0-dev itstool gettext
|
||||
libunwind-dev libgoa-1.0-dev libjson-glib-dev itstool gettext
|
||||
|
||||
And for Ubuntu Unity integration:
|
||||
|
||||
|
|
|
|||
2
debian/control
vendored
2
debian/control
vendored
|
|
@ -15,6 +15,7 @@ Build-Depends: debhelper (>= 8),
|
|||
libgmime-2.6-dev (>= 2.6.17),
|
||||
libgoa-1.0-dev,
|
||||
libgtk-3-dev (>= 3.22.26),
|
||||
libjson-glib-dev,
|
||||
libmessaging-menu-dev,
|
||||
libnotify-dev,
|
||||
libsecret-1-dev,
|
||||
|
|
@ -42,6 +43,7 @@ Depends: ${shlibs:Depends}, ${misc:Depends},
|
|||
libgmime-2.6-0 (>= 2.6.17),
|
||||
libgoa-1.0-0b,
|
||||
libgtk-3-0 (>= 3.22.26),
|
||||
libjson-glib,
|
||||
libmessaging-menu0,
|
||||
libnotify4,
|
||||
libsecret-1-0,
|
||||
|
|
|
|||
|
|
@ -61,6 +61,7 @@ gobject_introspection = dependency('gobject-introspection-1.0')
|
|||
gthread = dependency('gthread-2.0', version: '>=' + target_glib)
|
||||
iso_codes = dependency('iso-codes')
|
||||
javascriptcoregtk = dependency('javascriptcoregtk-4.0', version: '>=' + target_webkit)
|
||||
json_glib = dependency('json-glib-1.0', version: '>= 1.0')
|
||||
libcanberra = dependency('libcanberra', version: '>= 0.28')
|
||||
libmath = cc.find_library('m')
|
||||
libnotify = dependency('libnotify', version: '>= 0.7.5')
|
||||
|
|
|
|||
|
|
@ -385,7 +385,7 @@ public class ConversationEmail : Gtk.Box, Geary.BaseInterface {
|
|||
forward_message();
|
||||
});
|
||||
add_action(ACTION_PRINT).activate.connect(() => {
|
||||
print();
|
||||
print.begin();
|
||||
});
|
||||
add_action(ACTION_MARK_READ).activate.connect(() => {
|
||||
mark_email(null, Geary.EmailFlags.UNREAD);
|
||||
|
|
@ -804,9 +804,38 @@ public class ConversationEmail : Gtk.Box, Geary.BaseInterface {
|
|||
}
|
||||
}
|
||||
|
||||
private void print() {
|
||||
// XXX This isn't anywhere near good enough - headers aren't
|
||||
// being printed.
|
||||
private async void print() throws Error {
|
||||
Json.Builder builder = new Json.Builder();
|
||||
builder.begin_object();
|
||||
if (this.email.from != null) {
|
||||
builder.set_member_name(_("From:"));
|
||||
builder.add_string_value(this.email.from.to_string());
|
||||
}
|
||||
if (this.email.to != null) {
|
||||
builder.set_member_name(_("To:"));
|
||||
builder.add_string_value(this.email.to.to_string());
|
||||
}
|
||||
if (this.email.cc != null) {
|
||||
builder.set_member_name(_("CC:"));
|
||||
builder.add_string_value(this.email.cc.to_string());
|
||||
}
|
||||
if (this.email.bcc != null) {
|
||||
builder.set_member_name(_("BCC:"));
|
||||
builder.add_string_value(this.email.bcc.to_string());
|
||||
}
|
||||
if (this.email.date != null) {
|
||||
builder.set_member_name(_("Date:"));
|
||||
builder.add_string_value(this.email.date.to_string());
|
||||
}
|
||||
if (this.email.subject != null) {
|
||||
builder.set_member_name(_("Subject:"));
|
||||
builder.add_string_value(this.email.subject.to_string());
|
||||
}
|
||||
builder.end_object();
|
||||
Json.Generator generator = new Json.Generator();
|
||||
generator.set_root(builder.get_root());
|
||||
string js = "geary.addPrintHeaders(" + generator.to_data(null) + ");";
|
||||
yield this.primary_message.web_view.run_javascript(js, null);
|
||||
|
||||
Gtk.Window? window = get_toplevel() as Gtk.Window;
|
||||
WebKit.PrintOperation op = new WebKit.PrintOperation(
|
||||
|
|
|
|||
|
|
@ -116,6 +116,7 @@ geary_client_dependencies = [
|
|||
gio,
|
||||
goa,
|
||||
gtk,
|
||||
json_glib,
|
||||
libcanberra,
|
||||
libnotify,
|
||||
libsecret,
|
||||
|
|
|
|||
|
|
@ -193,8 +193,43 @@ pre {
|
|||
}
|
||||
}
|
||||
|
||||
#geary-message-headers {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
@media print {
|
||||
.geary-button {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#geary-message-headers, #geary-message-headers * {
|
||||
all: initial !important;
|
||||
}
|
||||
|
||||
#geary-message-headers {
|
||||
display: table !important;
|
||||
width: 100% !important;
|
||||
transition: height 2s !important;
|
||||
padding-bottom: 0.5em !important;
|
||||
border-bottom: 2px inset black !important;
|
||||
margin-bottom: 0.75em !important;
|
||||
}
|
||||
|
||||
#geary-message-headers tr {
|
||||
display: table-row !important;
|
||||
}
|
||||
|
||||
#geary-message-headers th, #geary-message-headers td {
|
||||
display: table-cell !important;
|
||||
line-height: 1.5em !important;
|
||||
}
|
||||
|
||||
#geary-message-headers th {
|
||||
font-weight: bold !important;
|
||||
padding-right: 2ex !important;
|
||||
}
|
||||
|
||||
#geary-message-headers td {
|
||||
width: 100% !important;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,6 +34,25 @@ ConversationPageState.prototype = {
|
|||
}
|
||||
}, true);
|
||||
},
|
||||
/**
|
||||
* Add email headers for printing
|
||||
*/
|
||||
addPrintHeaders: function(headers) {
|
||||
let headerTable = document.getElementById('geary-message-headers');
|
||||
if (headerTable) headerTable.parentNode.removeChild(headerTable);
|
||||
|
||||
headerTable = document.createElement('table');
|
||||
headerTable.id = 'geary-message-headers';
|
||||
for (header in headers) {
|
||||
let row = headerTable.appendChild(document.createElement('tr'));
|
||||
let name = row.appendChild(document.createElement('th'));
|
||||
let value = row.appendChild(document.createElement('td'));
|
||||
name.textContent = header;
|
||||
value.textContent = headers[header];
|
||||
}
|
||||
|
||||
document.body.insertBefore(headerTable, document.body.firstChild);
|
||||
},
|
||||
loaded: function() {
|
||||
this.updateDirection();
|
||||
this.createControllableQuotes();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue