support import existing notebook

Signed-off-by: Le Tan <tamlokveer@gmail.com>
This commit is contained in:
Le Tan 2016-12-10 15:41:46 +08:00
parent 5d028e29fb
commit b0ec4c312a
8 changed files with 34 additions and 6 deletions

View File

@ -41,6 +41,10 @@ void VNewNotebookDialog::setupUI()
pathLayout->addWidget(pathEdit); pathLayout->addWidget(pathEdit);
pathLayout->addWidget(browseBtn); pathLayout->addWidget(browseBtn);
importCheck = new QCheckBox(tr("Import existing notebook"), this);
importCheck->setChecked(true);
importCheck->setToolTip(tr("When checked, VNote won't create a new config file if there already exists one."));
okBtn = new QPushButton(tr("&OK")); okBtn = new QPushButton(tr("&OK"));
okBtn->setDefault(true); okBtn->setDefault(true);
cancelBtn = new QPushButton(tr("&Cancel")); cancelBtn = new QPushButton(tr("&Cancel"));
@ -55,6 +59,7 @@ void VNewNotebookDialog::setupUI()
} }
mainLayout->addLayout(nameLayout); mainLayout->addLayout(nameLayout);
mainLayout->addLayout(pathLayout); mainLayout->addLayout(pathLayout);
mainLayout->addWidget(importCheck);
mainLayout->addLayout(btmLayout); mainLayout->addLayout(btmLayout);
setLayout(mainLayout); setLayout(mainLayout);
@ -82,3 +87,8 @@ void VNewNotebookDialog::handleBrowseBtnClicked()
QDir::homePath(), QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks); QDir::homePath(), QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks);
pathEdit->setText(dirPath); pathEdit->setText(dirPath);
} }
bool VNewNotebookDialog::getImportCheck() const
{
return importCheck->isChecked();
}

View File

@ -7,6 +7,7 @@ class QLabel;
class QLineEdit; class QLineEdit;
class QPushButton; class QPushButton;
class QString; class QString;
class QCheckBox;
class VNewNotebookDialog : public QDialog class VNewNotebookDialog : public QDialog
{ {
@ -16,6 +17,7 @@ public:
const QString &defaultPath, QWidget *parent = 0); const QString &defaultPath, QWidget *parent = 0);
QString getNameInput() const; QString getNameInput() const;
QString getPathInput() const; QString getPathInput() const;
bool getImportCheck() const;
private slots: private slots:
void enableOkButton(); void enableOkButton();
@ -28,6 +30,7 @@ private:
QLabel *nameLabel; QLabel *nameLabel;
QLineEdit *nameEdit; QLineEdit *nameEdit;
QLineEdit *pathEdit; QLineEdit *pathEdit;
QCheckBox *importCheck;
QPushButton *browseBtn; QPushButton *browseBtn;
QPushButton *okBtn; QPushButton *okBtn;
QPushButton *cancelBtn; QPushButton *cancelBtn;

View File

@ -159,6 +159,13 @@ QJsonObject VConfigManager::readDirectoryConfig(const QString &path)
return QJsonDocument::fromJson(configData).object(); return QJsonDocument::fromJson(configData).object();
} }
bool VConfigManager::directoryConfigExist(const QString &path)
{
QString configFile = QDir(path).filePath(dirConfigFileName);
QFile config(configFile);
return config.exists();
}
bool VConfigManager::writeDirectoryConfig(const QString &path, const QJsonObject &configJson) bool VConfigManager::writeDirectoryConfig(const QString &path, const QJsonObject &configJson)
{ {
QString configFile = QDir(path).filePath(dirConfigFileName); QString configFile = QDir(path).filePath(dirConfigFileName);

View File

@ -36,6 +36,7 @@ public:
// Read config from the directory config json file into a QJsonObject // Read config from the directory config json file into a QJsonObject
static QJsonObject readDirectoryConfig(const QString &path); static QJsonObject readDirectoryConfig(const QString &path);
static bool writeDirectoryConfig(const QString &path, const QJsonObject &configJson); static bool writeDirectoryConfig(const QString &path, const QJsonObject &configJson);
static bool directoryConfigExist(const QString &path);
static bool deleteDirectoryConfig(const QString &path); static bool deleteDirectoryConfig(const QString &path);
// Constants // Constants

View File

@ -38,13 +38,19 @@ bool VNotebook::open()
} }
VNotebook *VNotebook::createNotebook(const QString &p_name, const QString &p_path, VNotebook *VNotebook::createNotebook(const QString &p_name, const QString &p_path,
QObject *p_parent) bool p_import, QObject *p_parent)
{ {
VNotebook *nb = new VNotebook(p_name, p_path, p_parent); VNotebook *nb = new VNotebook(p_name, p_path, p_parent);
if (!nb) { if (!nb) {
return nb; return nb;
} }
// Check if there alread exists a config file.
if (p_import && VConfigManager::directoryConfigExist(p_path)) {
qDebug() << "import existing notebook";
return nb;
}
// Create directory config in @p_path // Create directory config in @p_path
QJsonObject configJson = VDirectory::createDirectoryJson(); QJsonObject configJson = VDirectory::createDirectoryJson();
if (!VConfigManager::writeDirectoryConfig(p_path, configJson)) { if (!VConfigManager::writeDirectoryConfig(p_path, configJson)) {

View File

@ -26,7 +26,7 @@ public:
inline VDirectory *getRootDir(); inline VDirectory *getRootDir();
void rename(const QString &p_name); void rename(const QString &p_name);
static VNotebook *createNotebook(const QString &p_name, const QString &p_path, static VNotebook *createNotebook(const QString &p_name, const QString &p_path, bool p_import,
QObject *p_parent = 0); QObject *p_parent = 0);
static void deleteNotebook(VNotebook *p_notebook); static void deleteNotebook(VNotebook *p_notebook);

View File

@ -169,7 +169,7 @@ bool VNotebookSelector::newNotebook()
defaultPath = path; defaultPath = path;
continue; continue;
} }
createNotebook(name, path); createNotebook(name, path, dialog.getImportCheck());
return true; return true;
} }
break; break;
@ -187,9 +187,9 @@ VNotebook *VNotebookSelector::findNotebook(const QString &p_name)
return NULL; return NULL;
} }
void VNotebookSelector::createNotebook(const QString &p_name, const QString &p_path) void VNotebookSelector::createNotebook(const QString &p_name, const QString &p_path, bool p_import)
{ {
VNotebook *nb = VNotebook::createNotebook(p_name, p_path, m_vnote); VNotebook *nb = VNotebook::createNotebook(p_name, p_path, p_import, m_vnote);
m_notebooks.append(nb); m_notebooks.append(nb);
vconfig.setNotebooks(m_notebooks); vconfig.setNotebooks(m_notebooks);

View File

@ -44,7 +44,8 @@ private:
VNotebook *findNotebook(const QString &p_name); VNotebook *findNotebook(const QString &p_name);
// Return the index of @p_notebook in m_noteboks. // Return the index of @p_notebook in m_noteboks.
int indexOfNotebook(const VNotebook *p_notebook); int indexOfNotebook(const VNotebook *p_notebook);
void createNotebook(const QString &p_name, const QString &p_path); // if @p_import is true, we will use the existing config file.
void createNotebook(const QString &p_name, const QString &p_path, bool p_import);
void deleteNotebook(VNotebook *p_notebook); void deleteNotebook(VNotebook *p_notebook);
void addNotebookItem(const QString &p_name); void addNotebookItem(const QString &p_name);
// @p_index is the index of m_notebooks, NOT of QComboBox. // @p_index is the index of m_notebooks, NOT of QComboBox.