-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathmainwindow.cpp
96 lines (84 loc) · 2.84 KB
/
mainwindow.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "maileditwidget.h"
#include "logindialog.h"
#include "smaildb.h"
#include <QByteArray>
#include <QDebug>
#include <QDesktopServices>
#include <QDir>
#include <QHBoxLayout>
#include <QFile>
#include <QFileDialog>
#include <QListWidget>
#include <QListWidgetItem>
#include <QTreeWidget>
#include <QTreeWidgetItem>
#include <QSortFilterProxyModel>
#include <QMessageBox>
#include <QTimer>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
//构造函数中只处理窗体UI方面的东西,数据处理放在slotAfterShow中。应为无法在构造函数中退出整个程序
ui->setupUi(this);
ui->splitter->setStretchFactor(1,1);
connect(ui->dirView,SIGNAL(clicked(QModelIndex)),this,SLOT(slotChangeDir(QModelIndex)));
connect(ui->mailView,SIGNAL(clicked(QModelIndex)),this,SLOT(slotReadMail(QModelIndex)));
connect(ui->btWriteMail,SIGNAL(clicked(bool)),this,SLOT(slotWriteMail()));
connect(ui->btRefresh,SIGNAL(clicked(bool)),this,SLOT(slotRefreshMail()));
connect(ui->lineEdit,SIGNAL(textChanged(QString)),this,SLOT(slotSearch(QString)));
QTimer::singleShot(500,this,SLOT(slotAfterShow()));
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::slotWriteMail()
{
this->curUser->sendMail();
}
void MainWindow::slotChangeDir(QModelIndex index)
{
QString dirName = index.data().toString();
this->curUser->changeDir(dirName);
}
void MainWindow::slotReadMail(QModelIndex index)
{
this->curUser->readMail(index);
}
void MainWindow::slotRefreshMail()
{
this->curUser->refreshMailList();
}
void MainWindow::slotAfterShow()
{
this->db = new sMailDB(this);
this->userList = this->db->getUserList();
if(this->userList.isEmpty())
{
this->close();
}
this->curUser = this->userList.at(0);
ui->dirView->setModel(this->curUser->getDirModel());
QAbstractItemModel *mailModel = this->curUser->getMailModel();
this->model = new QSortFilterProxyModel(this);
model->setSourceModel(mailModel);
ui->mailView->setModel(model);
ui->mailView->setSortingEnabled(true);
ui->mailView->setSelectionBehavior(QAbstractItemView::SelectRows);
ui->mailView->setSelectionMode ( QAbstractItemView::SingleSelection);
ui->mailView->setEditTriggers(QAbstractItemView::NoEditTriggers);
ui->mailView->setAlternatingRowColors(true);
ui->mailView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
ui->mailView->horizontalHeader()->setStretchLastSection(true);
ui->dirView->setEditTriggers(QAbstractItemView::NoEditTriggers);
ui->dirView->setSelectionMode ( QAbstractItemView::SingleSelection);
// slotRefreshMail();
}
void MainWindow::slotSearch(QString keywrod)
{
this->model->setFilterFixedString(keywrod);
this->model->setFilterKeyColumn(-1);
}