123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- #include <QtWidgets>
- #include "vmainwindow.h"
- #include "vdirectorytree.h"
- #include "vnote.h"
- #include "vfilelist.h"
- #include "vtabwidget.h"
- #include "vconfigmanager.h"
- VMainWindow::VMainWindow(QWidget *parent)
- : QMainWindow(parent)
- {
- VConfigInst;
- setupUI();
- initActions();
- initToolBar();
- vnote = new VNote();
- vnote->readGlobalConfig();
- updateNotebookComboBox();
- }
- VMainWindow::~VMainWindow()
- {
- delete vnote;
- }
- void VMainWindow::setupUI()
- {
- // Notebook directory browser tree
- notebookLabel = new QLabel(tr("Notebook"));
- notebookComboBox = new QComboBox();
- directoryTree = new VDirectoryTree();
- QHBoxLayout *nbTopLayout = new QHBoxLayout;
- notebookComboBox->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
- notebookComboBox->setSizeAdjustPolicy(QComboBox::AdjustToContents);
- nbTopLayout->setAlignment(Qt::AlignLeft);
- nbTopLayout->addWidget(notebookLabel);
- nbTopLayout->addWidget(notebookComboBox);
- QVBoxLayout *nbLayout = new QVBoxLayout;
- nbLayout->addLayout(nbTopLayout);
- nbLayout->addWidget(directoryTree);
- QWidget *nbContainer = new QWidget();
- nbContainer->setLayout(nbLayout);
- nbContainer->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Expanding);
- // File list widget
- fileList = new VFileList();
- fileList->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Expanding);
- // Editor tab widget
- tabs = new VTabWidget();
- tabs->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
- tabs->setTabBarAutoHide(true);
- // Main Splitter
- mainSplitter = new QSplitter();
- mainSplitter->addWidget(nbContainer);
- mainSplitter->addWidget(fileList);
- mainSplitter->addWidget(tabs);
- mainSplitter->setStretchFactor(0, 1);
- mainSplitter->setStretchFactor(1, 1);
- mainSplitter->setStretchFactor(2, 10);
- // Signals
- connect(notebookComboBox, SIGNAL(currentIndexChanged(int)), this,
- SLOT(setCurNotebookIndex(int)));
- connect(this, SIGNAL(curNotebookIndexChanged(const QString&)), directoryTree,
- SLOT(setTreePath(const QString&)));
- connect(directoryTree, &VDirectoryTree::currentDirectoryChanged,
- fileList, &VFileList::setDirectory);
- connect(fileList, &VFileList::fileClicked,
- tabs, &VTabWidget::openFile);
- setCentralWidget(mainSplitter);
- // Create and show the status bar
- statusBar();
- }
- void VMainWindow::initActions()
- {
- editNoteAct = new QAction(tr("&Edit"), this);
- editNoteAct->setStatusTip(tr("Edit current note"));
- connect(editNoteAct, &QAction::triggered,
- tabs, &VTabWidget::editFile);
- readNoteAct = new QAction(tr("&Read"), this);
- readNoteAct->setStatusTip(tr("Open current note in read mode"));
- connect(readNoteAct, &QAction::triggered,
- tabs, &VTabWidget::readFile);
- saveNoteAct = new QAction(tr("&Save"), this);
- saveNoteAct->setStatusTip(tr("Save current note"));
- connect(saveNoteAct, &QAction::triggered,
- tabs, &VTabWidget::saveFile);
- }
- void VMainWindow::initToolBar()
- {
- fileToolBar = addToolBar(tr("Note"));
- fileToolBar->setMovable(false);
- fileToolBar->addAction(editNoteAct);
- fileToolBar->addAction(readNoteAct);
- fileToolBar->addAction(saveNoteAct);
- }
- void VMainWindow::updateNotebookComboBox()
- {
- const QVector<VNotebook> ¬ebooks = vnote->getNotebooks();
- notebookComboBox->clear();
- for (int i = 0; i <notebooks.size(); ++i) {
- notebookComboBox->addItem(notebooks[i].getName());
- }
- qDebug() << "update notebook combobox with" << notebookComboBox->count()
- << "items";
- notebookComboBox->setCurrentIndex(vnote->getCurNotebookIndex());
- }
- void VMainWindow::setCurNotebookIndex(int index)
- {
- Q_ASSERT(index < vnote->getNotebooks().size());
- qDebug() << "set current notebook index:" << index;
- vnote->setCurNotebookIndex(index);
- notebookComboBox->setCurrentIndex(index);
- // Update directoryTree
- emit curNotebookIndexChanged(vnote->getNotebooks()[index].getPath());
- }
|