123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221 |
- #include "mindmapdemo.h"
- #include "ui_mindmapdemo.h"
- MindMapDemo::MindMapDemo(QWidget *parent) : QMainWindow(parent), ui(new Ui::MindMapDemo)
- {
- ui->setupUi(this);
- myDao = new MyDao(this);
- myDao->initGlobalSet();
- mindMapWidget = new MindMapWidget(this);
- QHBoxLayout *lay = new QHBoxLayout();
- ui->wgtClient->setLayout(lay);
- lay->setMargin(0);
- lay->addWidget(mindMapWidget);
- mindMapWidget->setMyDao(myDao);
- connect(mindMapWidget, &MindMapWidget::onDoubleClick, this, &MindMapDemo::on_btnEdit_clicked);
- mindMapWidgetToolBar = new MindMapWidgetToolBar(ui->wgtMindMapToolbar);
- mindMapWidgetToolBar->setMindMapWidget(mindMapWidget);
- QHBoxLayout *laytool = new QHBoxLayout();
- ui->wgtMindMapToolbar->setLayout(laytool);
- laytool->setMargin(0);
- laytool->addWidget(mindMapWidgetToolBar);
- openDefaultProject();
- showMaximized();
- tmr = new QTimer(this);
- connect(tmr, &QTimer::timeout, this, &MindMapDemo::ontmrTimeOut);
- tmr->start(50);
- }
- MindMapDemo::~MindMapDemo()
- {
- ColorTable::freeColorTable();
- delete ui;
- }
- void MindMapDemo::openDefaultProject()
- {
- QSqlQuery qry;
- QString sql = "select pid from mind_history order by id desc";
- myDao->sqliteWrapper->select(sql, qry);
- if (qry.next()) {
- int pid = qry.value(0).toInt();
- mindMapWidget->openProject(pid);
- }
- }
- void MindMapDemo::addNewProject()
- {
- EditNodeDialog *dlg = new EditNodeDialog();
- dlg->setWindowTitle("新建导图");
- int ret = dlg->exec();
- if (ret == QDialog::Accepted) {
- QString name = dlg->getName();
- int id = myDao->addNode(-1, name, 1);
- mindMapWidget->openProject(id);
- }
- delete dlg;
- }
- void MindMapDemo::showOpenProjectDialog()
- {
- OpenProjectDialog *dlg = new OpenProjectDialog();
- dlg->setMyDao(myDao);
- int ret = dlg->exec();
- if (ret == QDialog::Accepted) { mindMapWidget->openProject(dlg->id()); }
- }
- void MindMapDemo::deleteProject()
- {
- if (mindMapWidget->projectId() == -1) { return; }
- int ret = QMessageBox::question(this, "提示", "确定删除当前导图吗?");
- if (ret == QMessageBox::No) { return; }
- mindMapWidget->deleteProject();
- }
- void MindMapDemo::openRecentProject()
- {
- OpenRecentDialog *dlg = new OpenRecentDialog();
- dlg->setMyDao(myDao);
- int ret = dlg->exec();
- if (ret == QDialog::Accepted) {
- int pid = dlg->pid();
- if (pid != -1) { mindMapWidget->openProject(pid); }
- }
- delete dlg;
- }
- void MindMapDemo::on_btnEdit_clicked()
- {
- MindMapObject *selObj = mindMapWidget->selObject();
- if (selObj == nullptr) { return; }
- EditNodeDialog *dlg = new EditNodeDialog();
- dlg->setName(selObj->name());
- dlg->setMessage(selObj->message());
- dlg->setWindowTitle("修改");
- int ret = dlg->exec();
- if (ret == QDialog::Accepted) {
- QString name = dlg->getName();
- myDao->editNode(selObj->id(), name, dlg->getMessage());
- mindMapWidget->editNode(selObj, name);
- }
- delete dlg;
- }
- void MindMapDemo::on_btnMenu_clicked()
- {
- QPoint pt = QPoint(0, ui->btnMenu->height());
- pt = ui->btnMenu->mapToGlobal(pt);
- QMenu * menu = new QMenu();
- QStringList menuNames;
- menuNames << "新建导图"
- << "打开导图"
- << "最近导图"
- << "查看导图大纲"
- << "删除导图"
- << "设置导图背景"
- << "导出导图为图片"
- << "导出导图为Markdown"
- << "导出导图为txt文件"
- << "导出导图为csv文件"
- << "保存导图为新导图"
- << "关于导图";
- for (int i = 0; i < menuNames.count(); i++) {
- QAction *act = new QAction(menu);
- connect(act, &QAction::triggered, this, &MindMapDemo::onMenuItemTriggered);
- act->setText(menuNames[i]);
- menu->addAction(act);
- }
- menu->exec(pt);
- delete menu;
- }
- void MindMapDemo::onMenuItemTriggered(bool checked)
- {
- QAction *act = static_cast<QAction *>(sender());
- if (act->text() == "新建导图") {
- addNewProject();
- } else if (act->text() == "打开导图") {
- showOpenProjectDialog();
- } else if (act->text() == "删除导图") {
- deleteProject();
- } else if (act->text() == "最近导图") {
- openRecentProject();
- } else if (act->text() == "导出导图为图片") {
- mindMapWidget->saveDataAsPng();
- } else if (act->text() == "导出导图为Markdown") {
- mindMapWidget->saveDataAsMarkdown();
- } else if (act->text() == "导出导图为txt文件") {
- mindMapWidget->saveDataAsTxtFile();
- } else if (act->text() == "导出导图为csv文件") {
- mindMapWidget->saveDataAsCsvFile();
- } else if (act->text() == "保存导图为新导图") {
- mindMapWidget->saveMindMapAsNewProject();
- } else if (act->text() == "设置导图背景") {
- if (mindMapWidget->projectId() == -1) { return; }
- SetBackGroundDialog *dlg = new SetBackGroundDialog();
- int ret = dlg->exec();
- if (ret == QDialog::Accepted) {
- mindMapWidget->setBackGroundId(dlg->bid());
- myDao->sqliteWrapper->execute(QString("delete from mind_set where pid=%1").arg(mindMapWidget->projectId()));
- myDao->sqliteWrapper->execute(QString("insert into mind_set (pid,bid) values (%1,%2)")
- .arg(mindMapWidget->projectId())
- .arg(dlg->bid()));
- }
- delete dlg;
- } else if (act->text() == "查看导图大纲") {
- mindMapWidget->showMindLineOut();
- } else if (act->text() == "关于导图") {
- AboutDialog *dlg = new AboutDialog();
- dlg->exec();
- delete dlg;
- }
- }
- void MindMapDemo::ontmrTimeOut()
- {
- ui->btnEdit->setEnabled(mindMapWidget->projectId() != -1);
- ui->btnRemark->setEnabled(mindMapWidget->projectId() != -1);
- ui->btnLink->setEnabled(mindMapWidget->projectId() != -1);
- }
- void MindMapDemo::on_btnRemark_clicked()
- {
- MindMapObject *selObj = mindMapWidget->selObject();
- if (selObj == nullptr) { return; }
- EditRemarkDialog *dlg = new EditRemarkDialog();
- dlg->setRemark(selObj->remark());
- int ret = dlg->exec();
- if (ret == QDialog::Accepted) {
- selObj->setRemark(dlg->remark());
- myDao->sqliteWrapper->execute(
- QString("update mind_data set remark='%1' where id=%2").arg(dlg->remark()).arg(selObj->id()));
- update();
- }
- delete dlg;
- }
- void MindMapDemo::on_btnLink_clicked()
- {
- MindMapObject *selObj = mindMapWidget->selObject();
- if (selObj == nullptr) { return; }
- EditLinkDialog *dlg = new EditLinkDialog();
- dlg->setLink(selObj->link());
- int ret = dlg->exec();
- if (ret == QDialog::Accepted) {
- selObj->setLink(dlg->link());
- myDao->sqliteWrapper->execute(
- QString("update mind_data set link='%1' where id=%2").arg(dlg->link()).arg(selObj->id()));
- update();
- }
- delete dlg;
- }
- void MindMapDemo::on_btnFlag_clicked()
- {
- mindMapWidget->showEditMarkNodeDialog();
- }
|