package com.axiastudio.suite.protocollo.forms;
import com.axiastudio.pypapi.ui.IForm;
import com.axiastudio.pypapi.ui.Util;
import com.axiastudio.suite.email.EMail;
import com.axiastudio.suite.email.EmailHelper;
import com.axiastudio.suite.interoperabilita.entities.Segnatura;
import com.axiastudio.suite.interoperabilita.utilities.JAXBHelper;
import com.axiastudio.suite.protocollo.ProtocolloUtil;
import com.axiastudio.suite.protocollo.entities.Mailbox;
import com.axiastudio.suite.protocollo.entities.Protocollo;
import com.trolltech.qt.core.Qt;
import com.trolltech.qt.gui.*;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
/**
* Created with IntelliJ IDEA.
* User: tiziano
* Date: 11/09/13
* Time: 10:19
* To change this template use File | Settings | File Templates.
*/
public class FormMailbox extends QDialog {
private QTableWidget tableWidget;
private Mailbox mailbox;
public FormMailbox(QWidget parent, Mailbox mailbox){
super(parent);
this.mailbox = mailbox;
initLayout();
refreshMailbox();
}
private void initLayout(){
tableWidget = new QTableWidget();
tableWidget.verticalHeader().hide();
tableWidget.setSelectionBehavior(QAbstractItemView.SelectionBehavior.SelectRows);
tableWidget.horizontalHeader().setResizeMode(QHeaderView.ResizeMode.Interactive);
QVBoxLayout layout = new QVBoxLayout();
QHBoxLayout buttonLayout = new QHBoxLayout();
QPushButton refreshButton = new QPushButton("Aggiorna");
refreshButton.clicked.connect(this, "refreshMailbox()");
buttonLayout.addWidget(refreshButton);
QPushButton protocollaButton = new QPushButton("Protocolla");
protocollaButton.clicked.connect(this, "protocolla()");
buttonLayout.addWidget(protocollaButton);
buttonLayout.addSpacerItem(new QSpacerItem(10, 10, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum));
layout.addLayout(buttonLayout);
layout.addWidget(this.tableWidget);
this.setLayout(layout);
}
private void refreshMailbox(){
while( tableWidget.rowCount() > 0 ){
tableWidget.removeRow(0);
}
tableWidget.setColumnCount(3);
List<String> labels = new ArrayList();
labels.add("Data");
labels.add("Mittente");
labels.add("Oggetto");
tableWidget.setHorizontalHeaderLabels(labels);
EmailHelper helper = new EmailHelper(this.mailbox);
helper.open();
Folder folder = helper.getFolder();
Integer i = 0;
try {
int messageCount = folder.getMessageCount();
Message[] messages = folder.getMessages(messageCount-8, messageCount);
for( Message msg: messages ){
tableWidget.insertRow(i);
QTableWidgetItem itemDate = new QTableWidgetItem(msg.getReceivedDate().toString());
itemDate.setData(Qt.ItemDataRole.UserRole, msg.getMessageNumber());
itemDate.setFlags(Qt.ItemFlag.ItemIsSelectable, Qt.ItemFlag.ItemIsEnabled);
tableWidget.setItem(i, 0, itemDate);
QTableWidgetItem itemSender = new QTableWidgetItem(msg.getFrom()[0].toString());
itemSender.setData(Qt.ItemDataRole.UserRole, mailbox);
itemSender.setFlags(Qt.ItemFlag.ItemIsSelectable, Qt.ItemFlag.ItemIsEnabled);
tableWidget.setItem(i, 1, itemSender);
QTableWidgetItem itemSubject = new QTableWidgetItem(msg.getSubject());
itemSubject.setData(Qt.ItemDataRole.UserRole, mailbox);
itemSubject.setFlags(Qt.ItemFlag.ItemIsSelectable, Qt.ItemFlag.ItemIsEnabled);
tableWidget.setItem(i, 2, itemSubject);
i++;
}
} catch (MessagingException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
} finally {
helper.close();
}
}
private void protocolla() {
QTableWidgetItem item = tableWidget.item(tableWidget.currentRow(), 0);
Integer number = (Integer) item.data(Qt.ItemDataRole.UserRole);
EmailHelper helper = new EmailHelper(this.mailbox);
helper.open();
EMail email = helper.getEmail(number);
// Lettura dell'eventuale segnatura
if( false ){
InputStream stream = email.getStream("Segnatura.xml");
if( stream != null ){
StringBuilder builder = new StringBuilder();
int ch;
try {
while((ch = stream.read()) != -1){
builder.append((char)ch);
}
} catch (IOException e) {
e.printStackTrace();
}
String xml = builder.toString();
leggiSegnatura(xml);
}
}
helper.close();
// creo il nuovo protocollo
Protocollo protocollo = ProtocolloUtil.protocollaEmail(email);
if( protocollo == null ){
// TODO: msgbox
return;
}
IForm form = Util.formFromEntity(protocollo);
QMdiArea workspace = Util.findParentMdiArea(this);
if( workspace != null ){
workspace.addSubWindow((QMainWindow) form);
}
form.show();
}
/*
*
*/
private void leggiSegnatura(String xml){
Segnatura segnatura = JAXBHelper.leggiSegnatura(xml);
//System.out.println(segnatura.getIntestazione().getOggetto());
}
}