Skip to content

Commit

Permalink
Save app settings to file
Browse files Browse the repository at this point in the history
Copy serial input to clipboard
  • Loading branch information
Daniel Savi committed Dec 17, 2013
1 parent 6d94e13 commit ae43612
Show file tree
Hide file tree
Showing 8 changed files with 126 additions and 25 deletions.
3 changes: 2 additions & 1 deletion RS232Visualizer.pro
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ UI_DIR = ./.ui
RCC_DIR = ./.rcc

HEADERS += rs232visualizermain.h \
serialconnect.h
serialconnect.h \
appsettings.h

ICON += bitmaps/logo.png

Expand Down
33 changes: 33 additions & 0 deletions appsettings.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
#ifndef APPSETTINGS_H
#define APPSETTINGS_H
#include <QObject>
#include <QSettings>
#include <QCoreApplication>
#include <QMetaType>
#include <QDebug>
#include <QVariant>

class AppSettings : public QSettings
{
Q_OBJECT

public:
explicit AppSettings(QObject *parent = 0) : QSettings(QSettings::UserScope, QCoreApplication::instance()->organizationName(), QCoreApplication::instance()->applicationName(), parent) {}
Q_INVOKABLE inline void setValue(const QString &key, const QVariant &value) { QSettings::setValue(key, value); }
Q_INVOKABLE inline QVariant value(const QString &key, const QVariant &defaultValue = QVariant()) const { return QSettings::value(key, defaultValue); }

signals:
void settingsChanged();


private:


Q_DISABLE_COPY(AppSettings);


};

Q_DECLARE_METATYPE(AppSettings*)

#endif // APPSETTINGS_H
17 changes: 16 additions & 1 deletion qml/SerialDataTerminal.qml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,10 @@ Rectangle {
guiSendSerialData(text)
}

function copy() {
serialDataCommunication.copy()
}

gradient: Gradient {
GradientStop {
position: 0.00;
Expand All @@ -35,6 +39,10 @@ Rectangle {
}
border.color: "#b4bbbe"
anchors.fill: parent




Text {
anchors.left: parent.left
anchors.leftMargin: 5
Expand Down Expand Up @@ -96,6 +104,13 @@ Rectangle {
anchors.bottom: parent.bottom
anchors.bottomMargin: 5
text: qsTr("send carriage return when pressing enter")
onCheckedStateChanged: { sendCarriageReturn = checked }

checkedState: staticSettings.value("SerialDataTerminal/sendCarriageReturnCheck", Qt.Checked )
onCheckedStateChanged: {
sendCarriageReturn = checked
staticSettings.setValue("SerialDataTerminal/sendCarriageReturnCheck",checkedState)
}

}

}
30 changes: 20 additions & 10 deletions qml/SerialPortSettingsDialog.qml
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,20 @@ Rectangle {

property bool includeSystemPorts: false
property string newPortChoice
property int serialBaud


onNewPortChoiceChanged: portChoices.append({ "text": newPortChoice })

function saveSettings() {
staticSettings.setValue("serialPortSettings/BaudChoice", baudCombo.currentIndex)
staticSettings.setValue("serialPortSettings/DataBitsChoice", bitCombo.currentIndex)
staticSettings.setValue("serialPortSettings/ParityChoice", parityCombo.currentIndex)
staticSettings.setValue("serialPortSettings/StopBitsChoice",stopbitsCombo.currentIndex)
staticSettings.setValue("serialPortSettings/FlowControlChoice",flowcontrolCombo.currentIndex)

}

function sendSerialOpen() {
guiSetSerialSettingsPort(portCombo.currentText)
guiOpenSerial()
Expand All @@ -21,10 +31,6 @@ Rectangle {
guiSetSerialSettingsFlowcontrol(flowcontrolChoices.get(flowcontrolCombo.currentIndex).value)
}

Component.onCompleted: {
//??crash appSettings.setValue("serialPort/BAUD", 9600)
}


ListModel {
id: baudChoices
Expand Down Expand Up @@ -135,7 +141,7 @@ ListModel {
ComboBox {
id: baudCombo;
model: baudChoices;
currentIndex: 2
currentIndex: staticSettings.value("serialPortSettings/BaudChoice",2)
}
}
RowLayout {
Expand All @@ -148,7 +154,7 @@ ListModel {
ComboBox {
id: bitCombo;
model: bitChoices;
currentIndex: 1
currentIndex: staticSettings.value("serialPortSettings/DataBitsChoice",1)
}
}
RowLayout {
Expand All @@ -161,7 +167,7 @@ ListModel {
ComboBox {
id: parityCombo;
model: parityChoices;
currentIndex: 0
currentIndex: staticSettings.value("serialPortSettings/ParityChoice",0)
}
}
RowLayout {
Expand All @@ -174,7 +180,7 @@ ListModel {
ComboBox {
id: stopbitsCombo;
model: stopbitsChoices;
currentIndex: 1
currentIndex: staticSettings.value("serialPortSettings/StopBitsChoice",1)
}
}
RowLayout {
Expand All @@ -187,7 +193,7 @@ ListModel {
ComboBox {
id: flowcontrolCombo;
model: flowcontrolChoices;
currentIndex: 0
currentIndex: staticSettings.value("serialPortSettings/FlowControlChoice",0)
}
}
RowLayout{
Expand All @@ -200,13 +206,17 @@ ListModel {
Button {
id: serialSettingsSet
text: qsTr("Set")
onClicked: sendSerialOpen()
onClicked: {
sendSerialOpen()
saveSettings()
}
}
Button {
id: serialSettingsOK
text: qsTr("OK")
onClicked: {
sendSerialOpen()
saveSettings()
serialSettingsView.state = "invisible"
}
}
Expand Down
37 changes: 32 additions & 5 deletions qml/main.qml
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ ApplicationWindow {

property int getSystemPorts: 0


// signals to C++
signal guiOpenSerial()
signal guiCloseSerial()
Expand All @@ -70,12 +71,31 @@ ApplicationWindow {

// UI internal bindings
Component.onCompleted: {
loadSettings()
mainwin.guiSendSerialData.connect(serialDataView.deleteTextInputField)
}

/* function newSerialDataSlot() {
serialDataView.appendNewSerialData(serialPortC.newSerialData)
} */
onClosing: {
saveSettings()
}

function loadSettings() {
mainwin.setX(staticSettings.value("MainWindow/x") )
mainwin.setY(staticSettings.value("MainWindow/y") )
mainwin.setWidth(staticSettings.value("MainWindow/width") )
mainwin.setHeight(staticSettings.value("MainWindow/height") )

}

function saveSettings() {
staticSettings.setValue("MainWindow/x", mainwin.x )
staticSettings.setValue("MainWindow/y", mainwin.y )
staticSettings.setValue("MainWindow/width", mainwin.width)
staticSettings.setValue("MainWindow/height", mainwin.height)

}



function sendSerialClose() {
guiCloseSerial()
Expand All @@ -100,6 +120,12 @@ ApplicationWindow {
serialDataView.appendNewSerialData(serialPortC.newSerialData)
}

function copy() {
if (serialDataView.visible ) {
serialDataView.copy() //copies text to clipboard
}
}

menuBar: MenuBar {
Menu {
title: qsTr("File")
Expand All @@ -124,11 +150,12 @@ ApplicationWindow {
MenuItem {
text: qsTr("Copy")
shortcut: "Ctrl+C"
onTriggered: copy()
}
MenuItem {
/* MenuItem {
text: qsTr("Paste")
shortcut: "Ctrl+V"
}
} */
}
Menu {
title: qsTr("Serial Port")
Expand Down
24 changes: 19 additions & 5 deletions rs232visualizermain.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
#include <QIcon>
#include <QDebug>
#include "rs232visualizermain.h"
#include "appsettings.h"


/***********************************************************
Expand All @@ -15,11 +16,11 @@
RS232VisualizerMain::RS232VisualizerMain(QObject *parent) :
QObject(parent)
{
initializeSettings();
startSerialPort();
startGUI();
connectionsGUIserial();
initializeSettings();
//connect serialDataChanged to this and engine->rootContext()->setContextProperty("serialPortC",serialPort); again to update properties
connectionsCore();

}

Expand All @@ -33,32 +34,38 @@ void RS232VisualizerMain::initializeSettings() {
QCoreApplication::setOrganizationDomain("gaess.ch");
QCoreApplication::setApplicationName("visualize232");

appSettings = new QSettings;
staticSettings = new AppSettings();
// staticSettings->setValue("serialPort/test", "value");


}

int RS232VisualizerMain::startGUI() {
engine = new QQmlEngine;

//export context properties to qml
engine->rootContext()->setContextProperty("serialPortC",serialPort);
engine->rootContext()->setContextProperty("appSettings",appSettings);
engine->rootContext()->setContextProperty("staticSettings",staticSettings);

component = new QQmlComponent(engine);
component->loadUrl(QUrl("qrc:/qml/main.qml"));
if ( !component->isReady() ) {
qWarning("%s", qPrintable(component->errorString()));
return 1;
}

topLevel = component->create();
window = qobject_cast<QQuickWindow *>(topLevel);
if ( !window ) {
qWarning("Error: Your root item has to be a Window.");
return 1;
}



window->show();
window->setIcon(QIcon(":/bitmaps/RS232VisIcon.png"));

QObject::connect(engine, SIGNAL(quit()),QCoreApplication::instance(), SLOT(quit()));
return 0;
}

Expand Down Expand Up @@ -86,13 +93,20 @@ void RS232VisualizerMain::connectionsGUIserial() {

}

void RS232VisualizerMain::connectionsCore() {
connect(engine, SIGNAL(quit()),QCoreApplication::instance(), SLOT(quit()));
// connect(QCoreApplication::instance(), SIGNAL(aboutToQuit()), this, SLOT(aboutToQuit()) );
}

/***********************************************************
*
* public slots
*
***********************************************************/

/*void RS232VisualizerMain::aboutToQuit() {
} */

/***********************************************************
*
Expand Down
6 changes: 4 additions & 2 deletions rs232visualizermain.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
#include <QtQuick/QQuickView>
#include <QIcon>
#include <QObject>
#include <QSettings>
#include "serialconnect.h"
#include "appsettings.h"

class RS232VisualizerMain : public QObject
{
Expand All @@ -29,14 +29,16 @@ class RS232VisualizerMain : public QObject
void serialObjectChanged();

public slots:
// void aboutToQuit();

private:

SerialConnect* serialPort;
QSettings* appSettings;
AppSettings* staticSettings;
int startGUI();
void startSerialPort();
void connectionsGUIserial();
void connectionsCore();
void initializeSettings();

private slots:
Expand Down
1 change: 0 additions & 1 deletion serialconnect.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -241,7 +241,6 @@ void SerialConnect::findAvailablePorts(bool withSystemPorts) {

foreach (const QSerialPortInfo &info, QSerialPortInfo::availablePorts()) {
if(!withSystemPorts) {
qDebug() << "SerialConnect::findAvailablePorts(): omitting system port";
if(!info.portName().contains("ttyS")) {
availablePortsList.append(info.portName());
//sendAvailablePort((QVariant) info.portName());
Expand Down

0 comments on commit ae43612

Please sign in to comment.