fb2dock.cpp 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. #include "fb2dock.hpp"
  2. #include "fb2code.hpp"
  3. #include "fb2head.hpp"
  4. #include "fb2text.hpp"
  5. #include <QLayout>
  6. #include <QtDebug>
  7. //---------------------------------------------------------------------------
  8. // FbMainDock
  9. //---------------------------------------------------------------------------
  10. FbMainDock::FbMainDock(QWidget *parent)
  11. : QStackedWidget(parent)
  12. , isSwitched(false)
  13. {
  14. textFrame = new FbWebFrame(this);
  15. m_text = new FbTextEdit(textFrame, parent);
  16. textFrame->layout()->addWidget(m_text);
  17. m_head = new FbHeadEdit(this);
  18. m_code = new FbCodeEdit(this);
  19. addWidget(textFrame);
  20. addWidget(m_head);
  21. addWidget(m_code);
  22. m_head->setText(m_text);
  23. }
  24. FbMainDock::Mode FbMainDock::mode() const
  25. {
  26. QWidget * current = currentWidget();
  27. if (current == textFrame) return Text;
  28. if (current == m_head) return Head;
  29. if (current == m_code) return Code;
  30. return Text;
  31. }
  32. void FbMainDock::setMode(Mode mode)
  33. {
  34. switch (mode) {
  35. case Text: setCurrentWidget(textFrame); return;
  36. case Head: setCurrentWidget(m_head); return;
  37. case Code: setCurrentWidget(m_code); return;
  38. }
  39. }
  40. bool FbMainDock::load(const QString &filename)
  41. {
  42. QFile file(filename);
  43. if (!file.open(QFile::ReadOnly | QFile::Text)) {
  44. qCritical() << QObject::tr("Cannot read file %1: %2.").arg(filename).arg(file.errorString());
  45. return false;
  46. }
  47. if (currentWidget() == m_code) {
  48. m_code->clear();
  49. return m_code->read(&file);
  50. }
  51. return false;
  52. }
  53. bool FbMainDock::save(QIODevice *device, const QString &codec)
  54. {
  55. if (currentWidget() == m_code) {
  56. QTextStream out(device);
  57. out << m_code->toPlainText();
  58. } else {
  59. isSwitched = false;
  60. m_text->save(device, codec);
  61. }
  62. return true;
  63. }