Skip to content

Commit

Permalink
Added persistency for window orientation and state. Initial skeleton …
Browse files Browse the repository at this point in the history
…for supporting the MountNotification interface in the mainwindow.
  • Loading branch information
Larswad committed Jul 24, 2013
1 parent 0240b87 commit c36eadf
Show file tree
Hide file tree
Showing 4 changed files with 73 additions and 12 deletions.
17 changes: 7 additions & 10 deletions interface.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -31,23 +31,14 @@ const QString s_errorEnding = ",00,00";
}


class IMountNotify
{
public:
virtual void directoryChanged(const QString& newPath) = 0;
virtual void imageMounted(const QString& imagePath, FileDriverBase* pFileSystem) = 0;
};


Interface::Interface(QextSerialPort& port)
: m_currFileDriver(0), m_port(port), m_queuedError(ErrOK), m_openState(O_NOTHING)
: m_currFileDriver(0), m_port(port), m_queuedError(ErrOK), m_openState(O_NOTHING), m_pListener(0)
{
m_fsList.append(&m_native);
m_fsList.append(&m_d64);
m_fsList.append(&m_t64);
// m_fsList.append(&m_m2i);
m_currFileDriver = &m_native;

} // ctor


Expand All @@ -63,6 +54,12 @@ void Interface::reset()
} // reset


void Interface::setMountNotifyListener(IMountNotify* pListener)
{
m_pListener = pListener;
} // setMountNotifyListener


// This function crops cmd string of initial @ or until :
// Returns true if @ was detected
bool Interface::removeFilePrefix(QString& cmd)
Expand Down
16 changes: 16 additions & 0 deletions interface.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,23 @@ enum OpenState {
O_SAVE_REPLACE // Save-with-replace is requested
};


class Interface : public ISendLine
{
public:
// Callback Interface for notification when Arduino triggers various (upon CBM requests).
// This is typically for UI reflection, updating progress bars, mounted file names, directory lists etc.
struct IMountNotify
{
virtual void directoryChanged(const QString& newPath) = 0;
virtual void imageMounted(const QString& imagePath, FileDriverBase* pFileSystem) = 0;
virtual void fileLoading(const QString& fileName) = 0;
virtual void bytesRead(uint numBytes) = 0;
virtual void bytesWritten(uint numBytes) = 0;
virtual void fileClosed(const QString& lastFileName) = 0;
};


Interface(QextSerialPort& port);
void processOpenCommand(const QString &cmd, bool localImageSelectionMode = false);
void processReadFileRequest();
Expand All @@ -54,6 +68,7 @@ class Interface : public ISendLine
void processCloseCommand();
void processErrorStringRequest(IOErrorMessage code);
bool changeNativeFSDirectory(const QString &newDir);
void setMountNotifyListener(IMountNotify *pListener);

private:
void openFile(const QString &cmdString, bool localImageSelection = false);
Expand All @@ -72,6 +87,7 @@ class Interface : public ISendLine
QString m_lastCmdString;
//QStringList m_dirListing;
QList<QByteArray> m_dirListing;
IMountNotify* m_pListener;
};

#endif // INTERFACE_HPP
42 changes: 41 additions & 1 deletion mainwindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -124,11 +124,14 @@ MainWindow::MainWindow(QWidget *parent) :
ui->imageDirList->addItem("LIST VIEW 15");
ui->imageDirList->addItem("LIST VIEW 16");
*/
// register ourselves to listen for CBM events from the Arduino.
m_iface.setMountNotifyListener(this);
} // MainWindow


MainWindow::~MainWindow()
{
m_iface.setMountNotifyListener(0);
if(m_port.isOpen())
m_port.close();
delete ui;
Expand Down Expand Up @@ -160,13 +163,18 @@ void MainWindow::readSettings()
ui->clockPin->setCurrentText(settings.value("clockPin", QString::number(DEFAULT_CLOCK_PIN)).toString());
ui->dataPin->setCurrentText(settings.value("dataPin", QString::number(DEFAULT_DATA_PIN)).toString());
ui->resetPin->setCurrentText(settings.value("resetPin", QString::number(DEFAULT_RESET_PIN)).toString());
// ui->baudRate->setCurrentText(settings.value("srqInPin", QString::number(DEFAULT_SRQIN_PIN)).toString());
// ui->srqInPin->setCurrentText(settings.value("srqInPin", QString::number(DEFAULT_SRQIN_PIN)).toString());
restoreGeometry(settings.value("mainWindowGeometry").toByteArray());
restoreState(settings.value("mainWindowState").toByteArray());
} // readSettings


void MainWindow::writeSettings() const
{
QSettings settings;
settings.setValue("mainWindowGeometry", saveGeometry());
settings.setValue("mainWindowState", saveState());

settings.setValue("imageDirectory", ui->imageDir->text());
settings.setValue("singleImageName", ui->singleImageName->text());
settings.setValue("imageFilter", ui->imageFilter->text());
Expand Down Expand Up @@ -562,3 +570,35 @@ void MainWindow::on_baudRate_currentIndexChanged(const QString &baudRate)
m_port.open(QIODevice::ReadWrite); // open the shop again.
m_isConnected = false;
} // on_baudRate_currentIndexChanged

//////////////////////////////////////////////////////////////////////////////
// IMountNotifyListener interface implementation
//////////////////////////////////////////////////////////////////////////////
void MainWindow::directoryChanged(const QString&/* newPath */)
{
}


void MainWindow::imageMounted(const QString& /*imagePath*/, FileDriverBase* /*pFileSystem*/)
{
}


void MainWindow::fileLoading(const QString& /*fileName*/)
{
}


void MainWindow::bytesRead(uint /*numBytes*/)
{
}


void MainWindow::bytesWritten(uint /*numBytes*/)
{
}


void MainWindow::fileClosed(const QString& /*lastFileName*/)
{
}
10 changes: 9 additions & 1 deletion mainwindow.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ class MainWindow;

typedef QMap<QChar, QString> FacilityMap;

class MainWindow : public QMainWindow, public Logging::ILogTransport
class MainWindow : public QMainWindow, public Logging::ILogTransport, public Interface::IMountNotify
{
Q_OBJECT

Expand All @@ -29,6 +29,14 @@ class MainWindow : public QMainWindow, public Logging::ILogTransport
void processAddNewFacility(const QString &str);
void closeEvent(QCloseEvent *event);

// IMountNotifyListener interface implementation
void directoryChanged(const QString &);
void imageMounted(const QString &, FileDriverBase *);
void fileLoading(const QString &);
void bytesRead(uint);
void bytesWritten(uint);
void fileClosed(const QString &);

public slots:
void onDataAvailable();

Expand Down

0 comments on commit c36eadf

Please sign in to comment.