123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- #include "fb2dock.hpp"
- #include "fb2code.hpp"
- #include "fb2head.hpp"
- #include "fb2text.hpp"
- #include <QLayout>
- #include <QtDebug>
- //---------------------------------------------------------------------------
- // FbModeAction
- //---------------------------------------------------------------------------
- FbModeAction::FbModeAction(FbMainDock *parent, Fb::Mode mode, const QString &text)
- : QAction(text, parent)
- , m_dock(parent)
- , m_mode(mode)
- {
- setCheckable(true);
- connect(this, SIGNAL(triggered()), SLOT(switchMode()));
- }
- void FbModeAction::switchMode()
- {
- m_dock->setMode(m_mode);
- }
- //---------------------------------------------------------------------------
- // FbMainDock
- //---------------------------------------------------------------------------
- FbMainDock::FbMainDock(QWidget *parent)
- : QStackedWidget(parent)
- , isSwitched(false)
- {
- textFrame = new FbWebFrame(this);
- m_text = new FbTextEdit(textFrame, parent);
- textFrame->layout()->addWidget(m_text);
- m_head = new FbHeadEdit(this, m_text);
- m_code = new FbCodeEdit(this);
- addWidget(textFrame);
- addWidget(m_head);
- addWidget(m_code);
- }
- void FbMainDock::setMode(Fb::Mode mode)
- {
- if (mode == m_mode) return;
- switch (m_mode = mode) {
- case Fb::Text: setModeText(); return;
- case Fb::Head: setModeHead(); return;
- case Fb::Code: setModeCode(); return;
- case Fb::Html: setModeHtml(); return;
- }
- }
- void FbMainDock::setModeText()
- {
- m_mode = Fb::Text;
- setCurrentWidget(textFrame);
- m_head->disconnectActions();
- m_code->disconnectActions();
- m_text->connectActions(m_tool);
- }
- void FbMainDock::setModeHead()
- {
- m_mode = Fb::Head;
- setCurrentWidget(m_head);
- m_text->disconnectActions();
- m_code->disconnectActions();
- m_head->connectActions(m_tool);
- }
- void FbMainDock::setModeCode()
- {
- m_mode = Fb::Code;
- setCurrentWidget(m_code);
- m_head->disconnectActions();
- m_code->disconnectActions();
- m_code->connectActions(m_tool);
- }
- void FbMainDock::setModeHtml()
- {
- m_mode = Fb::Html;
- setCurrentWidget(m_code);
- m_head->disconnectActions();
- m_code->disconnectActions();
- m_code->connectActions(m_tool);
- }
- bool FbMainDock::load(const QString &filename)
- {
- QFile file(filename);
- if (!file.open(QFile::ReadOnly | QFile::Text)) {
- qCritical() << QObject::tr("Cannot read file %1: %2.").arg(filename).arg(file.errorString());
- return false;
- }
- if (currentWidget() == m_code) {
- m_code->clear();
- return m_code->read(&file);
- }
- return false;
- }
- bool FbMainDock::save(QIODevice *device, const QString &codec)
- {
- if (currentWidget() == m_code) {
- QTextStream out(device);
- out << m_code->toPlainText();
- } else {
- isSwitched = false;
- m_text->save(device, codec);
- }
- return true;
- }
- bool FbMainDock::isModified() const
- {
- if (isSwitched) return true;
- QWidget * current = currentWidget();
- if (current == textFrame) return m_text->isModified();
- if (current == m_head) return m_text->isModified();
- if (current == m_code) return m_code->isModified();
- return false;
- }
|