fb2dock.cpp 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #include "fb2dock.hpp"
  2. #include "fb2code.hpp"
  3. #include "fb2head.hpp"
  4. #include "fb2text.hpp"
  5. #include <QLayout>
  6. FbMainDock::FbMainDock(QWidget *parent)
  7. : QStackedWidget(parent)
  8. {
  9. textFrame = new FbWebFrame(this);
  10. m_text = new FbTextEdit(textFrame);
  11. textFrame->layout()->addWidget(m_text);
  12. m_head = new FbHeadEdit(this);
  13. m_code = new FbCodeEdit(this);
  14. addWidget(textFrame);
  15. addWidget(m_head);
  16. addWidget(m_code);
  17. m_head->setText(m_text);
  18. }
  19. FbMainDock::Mode FbMainDock::mode() const
  20. {
  21. QWidget * current = currentWidget();
  22. if (current == textFrame) return Text;
  23. if (current == m_head) return Head;
  24. if (current == m_code) return Code;
  25. return Text;
  26. }
  27. void FbMainDock::setMode(Mode mode)
  28. {
  29. switch (mode) {
  30. case Text: setCurrentWidget(textFrame); return;
  31. case Head: setCurrentWidget(m_head); return;
  32. case Code: setCurrentWidget(m_code); return;
  33. }
  34. }
  35. bool FbMainDock::load(const QString &filename)
  36. {
  37. QFile file(filename);
  38. if (!file.open(QFile::ReadOnly | QFile::Text)) {
  39. qCritical() << QObject::tr("Cannot read file %1: %2.").arg(filename).arg(file.errorString());
  40. return false;
  41. }
  42. if (mode == Code) {
  43. m_code->clear();
  44. return m_code->read(&file);
  45. }
  46. return false;
  47. }