#include "Screen.h" #include #include Screen::Screen() : m_Pixmap(QPixmap(":res/icons/64x64/video-display.png")), m_Swapped(false) { init(); } Screen::Screen(const QString& name) : m_Pixmap(QPixmap(":res/icons/64x64/video-display.png")), m_Swapped(false) { init(); setName(name); } void Screen::init() { name().clear(); aliases().clear(); modifiers().clear(); switchCorners().clear(); fixes().clear(); setSwitchCornerSize(0); // m_Modifiers, m_SwitchCorners and m_Fixes are QLists we use like fixed-size arrays, // thus we need to make sure to fill them with the required number of elements. for (int i = 0; i < NumModifiers; i++) modifiers() << i; for (int i = 0; i < NumSwitchCorners; i++) switchCorners() << false; for (int i = 0; i < NumFixes; i++) fixes() << false; } void Screen::loadSettings(QSettings& settings) { setName(settings.value("name").toString()); if (name().isEmpty()) return; setSwitchCornerSize(settings.value("switchCornerSize").toInt()); readSettings(settings, aliases(), "alias", QString("")); readSettings(settings, modifiers(), "modifier", static_cast(DefaultMod), NumModifiers); readSettings(settings, switchCorners(), "switchCorner", false, NumSwitchCorners); readSettings(settings, fixes(), "fix", false, NumFixes); } void Screen::saveSettings(QSettings& settings) const { settings.setValue("name", name()); if (name().isEmpty()) return; settings.setValue("switchCornerSize", switchCornerSize()); writeSettings(settings, aliases(), "alias"); writeSettings(settings, modifiers(), "modifier"); writeSettings(settings, switchCorners(), "switchCorner"); writeSettings(settings, fixes(), "fix"); } QTextStream& Screen::writeScreensSection(QTextStream& outStream) const { outStream << "\t" << name() << ":" << endl; for (int i = 0; i < modifiers().size(); i++) if (modifier(i) != i) outStream << "\t\t" << modifierName(i) << " = " << modifierName(modifier(i)) << endl; for (int i = 0; i < fixes().size(); i++) outStream << "\t\t" << fixName(i) << " = " << (fixes()[i] ? "true" : "false") << endl; outStream << "\t\t" << "switchCorners = none "; for (int i = 0; i < switchCorners().size(); i++) if (switchCorners()[i]) outStream << "+" << switchCornerName(i) << " "; outStream << endl; outStream << "\t\t" << "switchCornerSize = " << switchCornerSize() << endl; return outStream; } QTextStream& Screen::writeAliasesSection(QTextStream& outStream) const { if (!aliases().isEmpty()) { outStream << "\t" << name() << ":" << endl; foreach (const QString& alias, aliases()) outStream << "\t\t" << alias << endl; } return outStream; } QDataStream& operator<<(QDataStream& outStream, const Screen& screen) { return outStream << screen.name() << screen.switchCornerSize() << screen.aliases() << screen.modifiers() << screen.switchCorners() << screen.fixes() ; } QDataStream& operator>>(QDataStream& inStream, Screen& screen) { return inStream >> screen.m_Name >> screen.m_SwitchCornerSize >> screen.m_Aliases >> screen.m_Modifiers >> screen.m_SwitchCorners >> screen.m_Fixes ; }