mirror of
https://github.com/DevExpress/netcore-winforms-demos.git
synced 2026-01-06 08:47:14 +00:00
Add Outlook Inspired and Stock Market demos
This commit is contained in:
@@ -0,0 +1,110 @@
|
||||
namespace DevExpress.DevAV.Modules {
|
||||
using System;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using DevExpress.DevAV;
|
||||
using DevExpress.DevAV.Presenters;
|
||||
|
||||
using DevExpress.DevAV.ViewModels;
|
||||
using DevExpress.Pdf;
|
||||
|
||||
public partial class OrderMapView : BaseModuleControl, IRibbonModule {
|
||||
public OrderMapView()
|
||||
: base(typeof(OrderMapViewModel)) {
|
||||
InitializeComponent();
|
||||
//
|
||||
Presenter = CreatePresenter();
|
||||
//
|
||||
BindCommands();
|
||||
BindEditors();
|
||||
UpdateColors();
|
||||
LookAndFeel.StyleChanged += LookAndFeel_StyleChanged;
|
||||
}
|
||||
protected override void OnDisposing() {
|
||||
LookAndFeel.StyleChanged -= LookAndFeel_StyleChanged;
|
||||
Presenter.Dispose();
|
||||
base.OnDisposing();
|
||||
}
|
||||
public OrderMapViewModel ViewModel {
|
||||
get { return GetViewModel<OrderMapViewModel>(); }
|
||||
}
|
||||
protected OrderRouteMapPresenter Presenter {
|
||||
get;
|
||||
private set;
|
||||
}
|
||||
protected virtual OrderRouteMapPresenter CreatePresenter() {
|
||||
return new OrderRouteMapPresenter(mapControl, ViewModel, UpdateUI);
|
||||
}
|
||||
protected virtual void BindCommands() {
|
||||
biClose.BindCommand(() => ViewModel.Close(), ViewModel);
|
||||
//
|
||||
biPrint.ItemClick += (s, e) => Viewer.Print();
|
||||
barExportItem.ItemClick += (s, e) => Viewer.SaveDocument("Shipping_" + ViewModel.Entity.InvoiceNumber + ".pdf");
|
||||
}
|
||||
protected virtual void BindEditors() {
|
||||
bindingSource.DataSource = ViewModel;
|
||||
}
|
||||
void LookAndFeel_StyleChanged(object sender, EventArgs e) {
|
||||
UpdateColors();
|
||||
}
|
||||
void UpdateColors() {
|
||||
ItemForInvoice.AppearanceItemCaption.ForeColor = ColorHelper.DisabledTextColor;
|
||||
InvoiceLabel.Appearance.ForeColor = ColorHelper.DisabledTextColor;
|
||||
}
|
||||
void UpdateUI(Order order) {
|
||||
ribbonControl.ApplicationDocumentCaption = order.Customer.Name;
|
||||
using(PdfDocumentProcessor processor = new PdfDocumentProcessor()) {
|
||||
using(var template = GetShipmentTemplate(order)) {
|
||||
processor.LoadDocument(template);
|
||||
AddWatermark(processor, GetWatermarkText(order));
|
||||
var tmpFile = Path.GetTempFileName();
|
||||
processor.SaveDocument(tmpFile);
|
||||
Viewer.LoadDocument(tmpFile);
|
||||
}
|
||||
}
|
||||
}
|
||||
static Stream GetShipmentTemplate(Order order) {
|
||||
MemoryStream pdfStream = new MemoryStream();
|
||||
//var report = ReportFactory.ShippingDetail(order);
|
||||
//report.ExportToPdf(pdfStream);
|
||||
return pdfStream;
|
||||
}
|
||||
static string GetWatermarkText(Order order) {
|
||||
switch(order.ShipmentStatus) {
|
||||
case ShipmentStatus.Received:
|
||||
return "Shipment Received";
|
||||
case ShipmentStatus.Transit:
|
||||
return "Shipment in Transit";
|
||||
default:
|
||||
return "Awaiting shipment";
|
||||
}
|
||||
}
|
||||
static void AddWatermark(PdfDocumentProcessor processor, string watermark) {
|
||||
var pages = processor.Document.Pages;
|
||||
for(int i = 0; i < pages.Count; i++) {
|
||||
using(var graphics = processor.CreateGraphics()) {
|
||||
using(Font font = new Font("Segoe UI", 48, FontStyle.Regular)) {
|
||||
RectangleF pageLayout = new RectangleF(
|
||||
-(float)pages[i].CropBox.Width * 0.35f,
|
||||
(float)pages[i].CropBox.Height * 0.1f,
|
||||
(float)pages[i].CropBox.Width * 1.25f,
|
||||
(float)pages[i].CropBox.Height);
|
||||
// Transformation
|
||||
var angle = Math.Asin((double)pageLayout.Width / (double)pageLayout.Height) * 180.0 / Math.PI;
|
||||
graphics.TranslateTransform(-pageLayout.X, -pageLayout.Y);
|
||||
graphics.RotateTransform((float)angle);
|
||||
|
||||
using(SolidBrush textBrush = new SolidBrush(Color.FromArgb(100, Color.Red)))
|
||||
graphics.DrawString(watermark, font, textBrush, new PointF(50, 50));
|
||||
}
|
||||
graphics.AddToPageForeground(pages[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
#region IRibbonModule
|
||||
XtraBars.Ribbon.RibbonControl IRibbonModule.Ribbon {
|
||||
get { return ribbonControl; }
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user