Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

some fixes #21

Merged
merged 6 commits into from Mar 11, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
11 changes: 6 additions & 5 deletions CMakeLists.txt
Expand Up @@ -3,7 +3,7 @@ project(qmarkdowntextedit)

#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

#set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
Expand All @@ -21,8 +21,8 @@ set(RESOURCE_FILES
qt5_add_resources(RESOURCE_ADDED ${RESOURCE_FILES})

set(SOURCE_FILES
highlighter.cpp
highlighter.h
markdownhighlighter.cpp
markdownhighlighter.h
main.cpp
mainwindow.cpp
mainwindow.h
Expand All @@ -31,7 +31,8 @@ set(SOURCE_FILES
qmarkdowntextedit.h
qplaintexteditsearchwidget.ui
qplaintexteditsearchwidget.cpp
qplaintexteditsearchwidget.h)
qplaintexteditsearchwidget.h
)

add_executable(qmarkdowntextedit ${SOURCE_FILES} ${RESOURCE_ADDED})

Expand All @@ -45,4 +46,4 @@ add_definitions(${Qt5Widgets_DEFINITIONS})
set(CMAKE_CXX_FLAGS "${Qt5Widgets_EXECUTABLE_COMPILE_FLAGS}")

# The Qt5Widgets_LIBRARIES variable also includes QtGui and QtCore
target_link_libraries(qmarkdowntextedit ${Qt5Widgets_LIBRARIES})
target_link_libraries(qmarkdowntextedit Qt5::Widgets)
16 changes: 16 additions & 0 deletions main.cpp
Expand Up @@ -14,12 +14,28 @@

#include "mainwindow.h"
#include <QApplication>
#include <QFileInfo>
#include <QDebug>

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QString filename;
if (argc > 1) {
filename = argv[1];
}
if (!filename.isEmpty() && !QFileInfo(filename).isReadable()) {
qWarning() << filename << "is not a readable file";
return 1;
}

MainWindow w;
w.show();

if (!filename.isEmpty()) {
w.loadFile(filename);
}


return a.exec();
}
87 changes: 87 additions & 0 deletions mainwindow.cpp
Expand Up @@ -17,15 +17,102 @@

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "qmarkdowntextedit.h"
#include <QDebug>
#include <QFileDialog>
#include <QMessageBox>

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QToolBar *toolBar = new QToolBar;
addToolBar(toolBar);
QAction *openAction = new QAction(QIcon::fromTheme("document-open"), tr("Open..."));
openAction->setShortcut(QKeySequence::Open);
connect(openAction, &QAction::triggered, this, &MainWindow::open);

QAction *saveAction = new QAction(QIcon::fromTheme("document-save"), tr("Save"));
saveAction->setShortcut(QKeySequence::Save);
QAction *saveAsAction = new QAction(QIcon::fromTheme("document-save-as"), tr("Save as..."));
saveAsAction->setShortcut(QKeySequence::SaveAs);
QAction *quitAction = new QAction(QIcon::fromTheme("view-close"), tr("Quit"));
quitAction->setShortcut(QKeySequence::Quit);
connect(quitAction, &QAction::triggered, this, &MainWindow::onQuit);

m_loadedContent = ui->textEdit->toPlainText();

toolBar->addActions({openAction, saveAction, saveAsAction, quitAction});
}

MainWindow::~MainWindow()
{
delete ui;
}

void MainWindow::loadFile(const QString &filename)
{
QFile file(filename);
if (!file.open(QIODevice::ReadOnly)) {
qWarning() << "Failed to open" << filename;
return;
}

m_filename = filename;
m_loadedContent = QString::fromLocal8Bit(file.readAll());
ui->textEdit->setPlainText(m_loadedContent);
}

void MainWindow::saveToFile(const QString &filename)
{
QFile file(filename);
if (!file.open(QIODevice::WriteOnly)) {
qWarning() << "Failed to open" << filename;
return;
}

m_filename = filename;

m_loadedContent = ui->textEdit->toPlainText();
file.write(m_loadedContent.toLocal8Bit());
}

void MainWindow::open()
{
QString filename = QFileDialog::getOpenFileName();
if (filename.isEmpty()) {
return;
}
loadFile(filename);
}

void MainWindow::save()
{
if (!m_filename.isEmpty()) {
saveAs();
return;
}

saveToFile(m_filename);
}

void MainWindow::saveAs()
{
QString filename = QFileDialog::getSaveFileName();
if (filename.isEmpty()) {
return;
}

saveToFile(filename);
}

void MainWindow::onQuit()
{
if (ui->textEdit->toPlainText() != m_loadedContent) {
if (QMessageBox::question(this, tr("Not saved"), tr("Document not saved, sure you want to quit?")) != QMessageBox::Yes) {
return;
}
}
close();
}
13 changes: 12 additions & 1 deletion mainwindow.h
Expand Up @@ -25,9 +25,20 @@ class MainWindow : public QMainWindow
Q_OBJECT

public:
explicit MainWindow(QWidget *parent = 0);
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();

void loadFile(const QString &filename);
void saveToFile(const QString &filename);

private slots:
void open();
void save();
void saveAs();
void onQuit();

private:
Ui::MainWindow *ui;
QString m_loadedContent;
QString m_filename;
};