layout: improve logging for XML parsing
authorGiWoong Kim <giwoong.kim@samsung.com>
Tue, 1 Dec 2015 05:54:05 +0000 (14:54 +0900)
committerGiWoong Kim <giwoong.kim@samsung.com>
Wed, 2 Dec 2015 06:37:51 +0000 (15:37 +0900)
- apply indenting
- clean up

Change-Id: Ibdf00cb60329a7d2f2eeedc29f7d1cca909c83b9
Signed-off-by: GiWoong Kim <giwoong.kim@samsung.com>
tizen/src/ui/xmllayoutparser.cpp
tizen/src/ui/xmllayoutparser.h

index 483afbb..a37e2bb 100644 (file)
 #include "controller/generalpurposecon.h"
 #include "resource/ui_strings.h"
 
-/* Qt Qlayout has a minimum size */
+#define LOG_LINE_HEAD_CHAR "> "
+#define LOG_INDENTATION_SIZE 2
+#define QDEBUG_INDENT(x) qDebug().nospace() << qPrintable(getIndenting(x))
+#define QWARN_INDENT(x) qWarning().nospace() << qPrintable(getIndenting(x))
+
+/* Qt QLayout has a minimum size */
 #define QT_LAYOUT_MINIMUM (73)
 
 XmlLayoutParser::XmlLayoutParser(const QString &path, UiInformation *uiInfo)
@@ -43,7 +48,21 @@ XmlLayoutParser::XmlLayoutParser(const QString &path, UiInformation *uiInfo)
     this->uiInfo = uiInfo;
 }
 
-QColor XmlLayoutParser::parseColor(QXmlStreamReader &xml)
+QString XmlLayoutParser::getIndenting(int depth) {
+    QString indenting = LOG_LINE_HEAD_CHAR;
+
+    if (depth > 0) {
+        while (depth--) {
+            for (int i = 0; i < LOG_INDENTATION_SIZE; i++) {
+                indenting.append(QChar::Space);
+            }
+        }
+    }
+
+    return indenting;
+}
+
+QColor XmlLayoutParser::parseColor(QXmlStreamReader &xml, int depth)
 {
     int red = 0, green = 0, blue = 0;
 
@@ -65,10 +84,12 @@ QColor XmlLayoutParser::parseColor(QXmlStreamReader &xml)
     return QColor(red, green, blue, 255);
 }
 
-HoverType XmlLayoutParser::parseHover(QXmlStreamReader &xml)
+HoverType XmlLayoutParser::parseHover(QXmlStreamReader &xml, int depth)
 {
     QColor color(255, 255, 255);
 
+    QDEBUG_INDENT(depth) << HOVER_KEYWORD << " {";
+
     QXmlStreamReader::TokenType token = xml.readNext();
 
     while (xml.atEnd() == false && (xml.name() == HOVER_KEYWORD &&
@@ -77,20 +98,22 @@ HoverType XmlLayoutParser::parseHover(QXmlStreamReader &xml)
         if (token == QXmlStreamReader::StartElement) {
             if (xml.name() == COLOR_KEYWORD) {
                 /* color */
-                color = parseColor(xml);
-                qDebug() << "hover color:" << color.name();
+                color = parseColor(xml, depth + 1);
+                QDEBUG_INDENT(depth + 1) << COLOR_KEYWORD << ": " << color.name();
             } else {
-                qWarning() << "undefined element:" << xml.name();
+                QWARN_INDENT(depth + 1) << "undefined element: " << xml.name();
             }
         }
 
         token = xml.readNext();
     }
 
+    QDEBUG_INDENT(depth) << "}";
+
     return HoverType(color);
 }
 
-QRect XmlLayoutParser::parseRegion(QXmlStreamReader &xml)
+QRect XmlLayoutParser::parseRegion(QXmlStreamReader &xml, int depth)
 {
     int left = 0, top = 0;
     unsigned int width = 0, height = 0;
@@ -116,13 +139,13 @@ QRect XmlLayoutParser::parseRegion(QXmlStreamReader &xml)
     return QRect(left, top, width, height);
 }
 
-DisplayType *XmlLayoutParser::parseDisplay(QXmlStreamReader &xml)
+DisplayType *XmlLayoutParser::parseDisplay(QXmlStreamReader &xml, int depth)
 {
     QRect displayRect;
     int angle = 0;
     QPixmap maskImage;
 
-    qDebug() << "**" << DISPLAY_KEYWORD << "{";
+    QDEBUG_INDENT(depth) << DISPLAY_KEYWORD << " {";
 
     QXmlStreamReader::TokenType token = xml.readNext();
 
@@ -132,36 +155,37 @@ DisplayType *XmlLayoutParser::parseDisplay(QXmlStreamReader &xml)
         if (token == QXmlStreamReader::StartElement) {
             if (xml.name() == REGION_KEYWORD) {
                 /* region */
-                displayRect = parseRegion(xml);
-                qDebug("- rect: (%d,%d %dx%d)",
-                    displayRect.x(), displayRect.y(),
-                    displayRect.width(), displayRect.height());
+                displayRect = parseRegion(xml, depth + 1);
+                QDEBUG_INDENT(depth + 1) <<
+                    "(" << displayRect.x() <<  "," << displayRect.y() << " " <<
+                    displayRect.width() << "x" << displayRect.height() << ")";
             } else if (xml.name() == ANGLE_KEYWORD) {
                 /* angle */
                 angle = xml.readElementText().toInt();
             } else if (xml.name() == MASK_IMG_KEYWORD) {
                 /* display mask */
                 QString maskImageFileName = xml.readElementText();
-                qDebug() << "-" << MASK_IMG_KEYWORD << ":" << maskImageFileName;
+                QDEBUG_INDENT(depth + 1) <<
+                    MASK_IMG_KEYWORD << ": " << maskImageFileName;
 
                 if (maskImage.load(
                     xmlPath + QDir::separator() + maskImageFileName) == false) {
-                    qWarning() << "failed to load mask image";
+                    QWARN_INDENT(depth + 1) << "failed to load mask image";
                 }
             } else {
-                qWarning() << "undefined element:" << xml.name();
+                QWARN_INDENT(depth + 1) << "undefined element: " << xml.name();
             }
         }
 
         token = xml.readNext();
     }
 
-    qDebug("** }");
+    QDEBUG_INDENT(depth) << "}";
 
     return new DisplayType(displayRect, angle, maskImage);
 }
 
-KeycodeType XmlLayoutParser::parseKeycode(QXmlStreamReader &xml)
+KeycodeType XmlLayoutParser::parseKeycode(QXmlStreamReader &xml, int depth)
 {
     int longPress = -1, shortPress = 0;
 
@@ -173,7 +197,7 @@ KeycodeType XmlLayoutParser::parseKeycode(QXmlStreamReader &xml)
     return KeycodeType(shortPress, longPress);
 }
 
-HardwareKey *XmlLayoutParser::parseKey(QXmlStreamReader &xml)
+HardwareKey *XmlLayoutParser::parseKey(QXmlStreamReader &xml, int depth)
 {
     QRect keyRegion;
     KeycodeType keycodeType;
@@ -191,10 +215,10 @@ HardwareKey *XmlLayoutParser::parseKey(QXmlStreamReader &xml)
         if (token == QXmlStreamReader::StartElement) {
             if (xml.name() == REGION_KEYWORD) {
                 /* region */
-                keyRegion = parseRegion(xml);
+                keyRegion = parseRegion(xml, depth + 1);
             } else if (xml.name() == KEYCODE_KEYWORD) {
                 /* keycode */
-                keycodeType = parseKeycode(xml);
+                keycodeType = parseKeycode(xml, depth + 1);
             } else if (xml.name() == TOOLTIP_KEYWORD) {
                 /* tooltip */
                 keyTooptip = xml.readElementText();
@@ -202,7 +226,7 @@ HardwareKey *XmlLayoutParser::parseKey(QXmlStreamReader &xml)
                 /* shortcut */
                 keySequence = QKeySequence::fromString(xml.readElementText());
             } else {
-                qWarning() << "undefined element:" << xml.name();
+                QWARN_INDENT(depth + 1) << "undefined element: " << xml.name();
             }
         }
 
@@ -212,10 +236,11 @@ HardwareKey *XmlLayoutParser::parseKey(QXmlStreamReader &xml)
     return new HardwareKey(keyName, keycodeType, keyRegion, keyTooptip, keySequence);
 }
 
-int XmlLayoutParser::parseKeyList(
-    QXmlStreamReader &xml, QList<HardwareKey *> &list)
+int XmlLayoutParser::parseKeyList(QXmlStreamReader &xml,
+    int depth, QList<HardwareKey *> &list)
 {
     HardwareKey *hwKey = NULL;
+
     QXmlStreamReader::TokenType token = xml.readNext();
 
     while (xml.atEnd() == false && (xml.name() == KEYLIST_KEYWORD &&
@@ -223,12 +248,12 @@ int XmlLayoutParser::parseKeyList(
     {
         if (token == QXmlStreamReader::StartElement) {
             if (xml.name() == KEY_KEYWORD) {
-                hwKey = parseKey(xml);
+                hwKey = parseKey(xml, depth + 1);
                 if (hwKey != NULL) {
                     list.append(hwKey);
                 }
             } else {
-                qWarning() << "undefined element:" << xml.name();
+                QWARN_INDENT(depth + 1) << "undefined element: " << xml.name();
             }
         }
 
@@ -238,13 +263,14 @@ int XmlLayoutParser::parseKeyList(
     return list.count();
 }
 
-MainForm *XmlLayoutParser::parseMainForm(QXmlStreamReader &xml)
+MainForm *XmlLayoutParser::parseMainForm(QXmlStreamReader &xml, int depth)
 {
     /* attribute */
     QString formName = xml.attributes().value(NAME_ATTR_KEYWORD).toString();
     MainForm *form = new MainForm(formName);
 
-    qDebug() << '*' << form->getName() << '{';
+    qDebug(LOG_LINE_HEAD_CHAR);
+    QDEBUG_INDENT(depth) << form->getName() << " {";
 
     QXmlStreamReader::TokenType token = xml.readNext();
 
@@ -254,59 +280,65 @@ MainForm *XmlLayoutParser::parseMainForm(QXmlStreamReader &xml)
         if (token == QXmlStreamReader::StartElement) {
             if (xml.name() == DISPLAY_KEYWORD) {
                 /* display */
-                form->setDpyType(parseDisplay(xml));
+                form->setDpyType(parseDisplay(xml, depth + 1));
             } else if (xml.name() == NORMAL_IMG_KEYWORD) {
                 /* normal image */
                 QString normalImageFileName = xml.readElementText();
-                qDebug() << "-" << NORMAL_IMG_KEYWORD << ":" << normalImageFileName;
+                QDEBUG_INDENT(depth + 1) <<
+                    NORMAL_IMG_KEYWORD << ": " << normalImageFileName;
 
                 if (form->skinImg[LayoutForm::normal].load(
                     xmlPath + QDir::separator() + normalImageFileName) == false) {
-                    qWarning() << "failed to load normal image";
+                    QWARN_INDENT(depth + 1) << "failed to load normal image";
                 }
             } else if (xml.name() == PRESSED_IMG_KEYWORD) {
                 /* key pressed image */
                 QString pressedImageFileName = xml.readElementText();
-                qDebug() << "-" << PRESSED_IMG_KEYWORD << ":" << pressedImageFileName;
+                QDEBUG_INDENT(depth + 1) <<
+                    PRESSED_IMG_KEYWORD << ": " << pressedImageFileName;
 
                 if (form->skinImg[LayoutForm::pressed].load(
                     xmlPath + QDir::separator() + pressedImageFileName) == false) {
-                    qWarning() << "failed to load pressed image";
+                    QWARN_INDENT(depth + 1) << "failed to load pressed image";
                 }
             }  else if (xml.name() == ROTARY_IMG_KEYWORD) {
                 /* rotary image */
                 QString rotaryImageFileName = xml.readElementText();
-                qDebug() << "-" << ROTARY_IMG_KEYWORD << ":" << rotaryImageFileName;
+                QDEBUG_INDENT(depth + 1) <<
+                    ROTARY_IMG_KEYWORD << ": " << rotaryImageFileName;
 
                 form->setRotaryImage(new QPixmap(
                     xmlPath + QDir::separator() + rotaryImageFileName));
                 if (form->getRotaryImage()->isNull() == true) {
-                    qWarning() << "failed to load rotary image";
+                    QWARN_INDENT(depth + 1) << "failed to load rotary image";
                 }
             } else if (xml.name() == KEYLIST_KEYWORD) {
                 /* HW keys */
-                int cnt = parseKeyList(xml, form->getKeyList());
-                qDebug() << "-" << KEYLIST_KEYWORD << ":" << cnt;
+                const int cnt = parseKeyList(xml, depth + 1, form->getKeyList());
+                QDEBUG_INDENT(depth + 1) << KEYLIST_KEYWORD << ": " << cnt;
             } else if (xml.name() == HOVER_KEYWORD) {
                 /* hover */
-                form->setHoverType(parseHover(xml));
+                form->setHoverType(parseHover(xml, depth + 1));
             } else {
-                qWarning() << "undefined element:" << xml.name();
+                QWARN_INDENT(depth + 1) << "undefined element: " << xml.name();
             }
         }
 
         token = xml.readNext();
     }
 
-    qDebug("}");
+    QDEBUG_INDENT(depth) << "}";
 
     return form;
 }
 
-int XmlLayoutParser::parseMainFormList(
-    QXmlStreamReader &xml, QList<MainForm *> &list)
+int XmlLayoutParser::parseMainFormList(QXmlStreamReader &xml,
+    int depth, QList<MainForm *> &list)
 {
     MainForm *form = NULL;
+
+    QDEBUG_INDENT(depth) << FORMLIST_KEYWORD << " {";
+
     QXmlStreamReader::TokenType token = xml.readNext();
 
     while (xml.atEnd() == false && (xml.name() == FORMLIST_KEYWORD &&
@@ -314,11 +346,11 @@ int XmlLayoutParser::parseMainFormList(
     {
         if (token == QXmlStreamReader::StartElement) {
             if (xml.name() == FORM_KEYWORD) {
-                form = parseMainForm(xml);
+                form = parseMainForm(xml, depth + 1);
                 if (form != NULL) {
                     /* image validation */
                     if (form->skinImg[LayoutForm::normal].size() == QSize(0, 0)) {
-                        qDebug("- general purpose skin form");
+                        QDEBUG_INDENT(depth + 1) << "(general purpose skin type)";
 
                         SkinPainter painter("main-skin",
                             uiInfo->getResolution(), form->getDpyType()->getAngle(),
@@ -332,26 +364,28 @@ int XmlLayoutParser::parseMainFormList(
                     list.append(form);
                 }
             } else {
-                qWarning() << "undefined element:" << xml.name();
+                QWARN_INDENT(depth + 1) << "undefined element: " << xml.name();
             }
         }
 
         token = xml.readNext();
     }
 
+    QDEBUG_INDENT(depth) << "}";
+
     return list.count();
 }
 
 /* menu */
-int XmlLayoutParser::parseFactorList(
-    QXmlStreamReader &xml, QMap<int, QString> &map, int *defaultFactor)
+int XmlLayoutParser::parseFactorList(QXmlStreamReader &xml,
+    int depth, QMap<int, QString> &map, int *defaultFactor)
 {
     QString defaultValue = xml.attributes().value(DEFAULT_ATTR_KEYWORD).toString();
     *defaultFactor = defaultValue.toInt();
 
     QXmlStreamReader::TokenType token = xml.readNext();
 
-    while (xml.atEnd() == false && (xml.name() == "factorList" &&
+    while (xml.atEnd() == false && (xml.name() == FACTORLIST_KEYWORD &&
         token == QXmlStreamReader::EndElement) == false) /* ~ </factorList> */
     {
         if (token == QXmlStreamReader::StartElement) {
@@ -359,7 +393,7 @@ int XmlLayoutParser::parseFactorList(
                 QString value = xml.attributes().value(NAME_ATTR_KEYWORD).toString();
                 map.insert(xml.readElementText().toInt(), value);
             } else {
-                qWarning() << "undefined element:" << xml.name();
+                QWARN_INDENT(depth + 1) << "undefined element: " << xml.name();
             }
         }
 
@@ -369,8 +403,8 @@ int XmlLayoutParser::parseFactorList(
     return map.count();
 }
 
-int XmlLayoutParser::parseShortcuts(
-    QXmlStreamReader &xml, QMap<QString, QKeySequence> &map)
+int XmlLayoutParser::parseShortcuts(QXmlStreamReader &xml,
+    int depth, QMap<QString, QKeySequence> &map)
 {
     QString key = xml.attributes().value(PROP_ATTR_KEYWORD).toString();
     map.insert(key, QKeySequence::fromString(xml.readElementText()));
@@ -378,67 +412,76 @@ int XmlLayoutParser::parseShortcuts(
     return map.count();
 }
 
-AdvancedMenuItem *XmlLayoutParser::parseAdvancedMenuItem(QXmlStreamReader &xml)
+AdvancedMenuItem *XmlLayoutParser::parseAdvancedMenuItem(QXmlStreamReader &xml, int depth)
 {
     /* attribute */
     QString menuName = xml.attributes().value(NAME_ATTR_KEYWORD).toString();
     AdvancedMenuItem *item = new AdvancedMenuItem(menuName);
 
+    QDEBUG_INDENT(depth) << ADVANCED_MENU_KEYWORD << " {";
+
     QXmlStreamReader::TokenType token = xml.readNext();
 
-    while (xml.atEnd() == false && (xml.name() == "advancedItem" &&
+    while (xml.atEnd() == false && (xml.name() == ADVANCED_MENU_KEYWORD &&
         token == QXmlStreamReader::EndElement) == false) /* ~ </advancedItem> */
     {
         if (token == QXmlStreamReader::StartElement) {
             if (xml.name() == SHORTCUT_KEYWORD) {
-                parseShortcuts(xml, item->getShortcuts());
+                parseShortcuts(xml, depth + 1, item->getShortcuts());
             } else if (xml.name() == MENULIST_KEYWORD) {
-                int cnt = parseMenuList(xml, item->getMenuList());
-                qDebug("- advanced menuList: %d", cnt);
+                const int cnt = parseMenuList(xml, depth + 1, item->getMenuList());
+                QDEBUG_INDENT(depth + 1) << MENULIST_KEYWORD << ": " << cnt;
             } else {
-                qWarning() << "undefined element:" << xml.name();
+                QWARN_INDENT(depth + 1) << "undefined element: " << xml.name();
             }
         }
 
         token = xml.readNext();
     }
 
+    QDEBUG_INDENT(depth) << "}";
+
     return item;
 }
 
-ScaleMenuItem *XmlLayoutParser::parseScaleMenuItem(QXmlStreamReader &xml)
+ScaleMenuItem *XmlLayoutParser::parseScaleMenuItem(QXmlStreamReader &xml, int depth)
 {
     /* attribute */
     QString menuName = xml.attributes().value(NAME_ATTR_KEYWORD).toString();
     ScaleMenuItem *item = new ScaleMenuItem(menuName);
 
+    QDEBUG_INDENT(depth) << SCALE_MENU_KEYWORD << " {";
+
     QXmlStreamReader::TokenType token = xml.readNext();
 
-    while (xml.atEnd() == false && (xml.name() == "scaleItem" &&
+    while (xml.atEnd() == false && (xml.name() == SCALE_MENU_KEYWORD &&
         token == QXmlStreamReader::EndElement) == false) /* ~ </scaleItem> */
     {
         if (token == QXmlStreamReader::StartElement) {
             if (xml.name() == SHORTCUT_KEYWORD) {
-                parseShortcuts(xml, item->getShortcuts());
+                parseShortcuts(xml, depth + 1, item->getShortcuts());
             } else if (xml.name() == FACTORLIST_KEYWORD) {
                 int defaultFactor = 0;
-                int cnt = parseFactorList(xml, item->getFactorMap(), &defaultFactor);
-                qDebug("- scale factorList: %d", cnt);
+                const int cnt = parseFactorList(xml, depth + 1,
+                    item->getFactorMap(), &defaultFactor);
+                QDEBUG_INDENT(depth + 1) << FACTORLIST_KEYWORD << ": " << cnt;
 
                 item->setDefaultScaleFactor(defaultFactor);
             } else {
-                qWarning() << "undefined element:" << xml.name();
+                QWARN_INDENT(depth + 1) << "undefined element: " << xml.name();
             }
         }
 
         token = xml.readNext();
     }
 
+    QDEBUG_INDENT(depth) << "}";
+
     return item;
 }
 
 MenuItem *XmlLayoutParser::parseGeneralMenuItem(
-    QXmlStreamReader &xml, int menuType)
+    QXmlStreamReader &xml, int depth, int menuType)
 {
     QString itemKeyword = xml.name().toString();
 
@@ -454,9 +497,9 @@ MenuItem *XmlLayoutParser::parseGeneralMenuItem(
     {
         if (token == QXmlStreamReader::StartElement) {
             if (xml.name() == SHORTCUT_KEYWORD) {
-                parseShortcuts(xml, item->getShortcuts());
+                parseShortcuts(xml, depth + 1, item->getShortcuts());
             } else {
-                qWarning() << "undefined element:" << xml.name();
+                QWARN_INDENT(depth + 1) << "undefined element: " << xml.name();
             }
         }
 
@@ -466,10 +509,14 @@ MenuItem *XmlLayoutParser::parseGeneralMenuItem(
     return item;
 }
 
-int XmlLayoutParser::parseMenuList(
-    QXmlStreamReader &xml, QList<MenuItem *> &list)
+int XmlLayoutParser::parseMenuList(QXmlStreamReader &xml,
+    int depth, QList<MenuItem *> &list)
 {
     MenuItem *item = NULL;
+
+    qDebug(LOG_LINE_HEAD_CHAR);
+    QDEBUG_INDENT(depth) << MENULIST_KEYWORD << " {";
+
     QXmlStreamReader::TokenType token = xml.readNext();
 
     while (xml.atEnd() == false && (xml.name() == MENULIST_KEYWORD &&
@@ -479,37 +526,50 @@ int XmlLayoutParser::parseMenuList(
             if (xml.name() == SEPARATOR_MENU_KEYWORD) {
                 item = new MenuItem(MenuItemType::separator, NULL);
             } else if (xml.name() == ADVANCED_MENU_KEYWORD) {
-                item = (MenuItem *)parseAdvancedMenuItem(xml);
+                item = (MenuItem *)parseAdvancedMenuItem(xml, depth + 1);
             } else if (xml.name() == INFO_MENU_KEYWORD) {
-                item = parseGeneralMenuItem(xml, MenuItemType::infoItem);
+                item = parseGeneralMenuItem(
+                    xml, depth + 1, MenuItemType::infoItem);
             } else if (xml.name() == ONTOP_MENU_KEYWORD) {
-                item = parseGeneralMenuItem(xml, MenuItemType::onTopItem);
+                item = parseGeneralMenuItem(
+                    xml, depth + 1, MenuItemType::onTopItem);
             } else if (xml.name() == MOVE_MENU_KEYWORD) {
-                item = parseGeneralMenuItem(xml, MenuItemType::moveItem);
+                item = parseGeneralMenuItem(
+                    xml, depth + 1, MenuItemType::moveItem);
             } else if (xml.name() == SWITCH_MENU_KEYWORD) {
-                item = parseGeneralMenuItem(xml, MenuItemType::switchItem);
+                item = parseGeneralMenuItem(
+                    xml, depth + 1, MenuItemType::switchItem);
             } else if (xml.name() == SCALE_MENU_KEYWORD) {
-                item = (MenuItem *)parseScaleMenuItem(xml);
+                item = (MenuItem *)parseScaleMenuItem(xml, depth + 1);
             } else if (xml.name() == CONTROLLER_MENU_KEYWORD) {
-                item = parseGeneralMenuItem(xml, MenuItemType::controllerItem);
+                item = parseGeneralMenuItem(
+                    xml, depth + 1, MenuItemType::controllerItem);
             } else if (xml.name() == HOSTKBD_MENU_KEYWORD) {
-                item = parseGeneralMenuItem(xml, MenuItemType::hostKeyboardItem);
+                item = parseGeneralMenuItem(
+                    xml, depth + 1, MenuItemType::hostKeyboardItem);
             } else if (xml.name() == SHELL_MENU_KEYWORD) {
-                item = parseGeneralMenuItem(xml, MenuItemType::shellItem);
+                item = parseGeneralMenuItem(
+                    xml, depth + 1, MenuItemType::shellItem);
             } else if (xml.name() == ECP_MENU_KEYWORD) {
-                item = parseGeneralMenuItem(xml, MenuItemType::controlPanelItem);
+                item = parseGeneralMenuItem(
+                    xml, depth + 1, MenuItemType::controlPanelItem);
             } else if (xml.name() == SCREENSHOT_MENU_KEYWORD) {
-                item = parseGeneralMenuItem(xml, MenuItemType::screenShotItem);
+                item = parseGeneralMenuItem(
+                    xml, depth + 1, MenuItemType::screenShotItem);
             } else if (xml.name() == ABOUT_MENU_KEYWORD) {
-                item = parseGeneralMenuItem(xml, MenuItemType::aboutItem);
+                item = parseGeneralMenuItem(
+                    xml, depth + 1, MenuItemType::aboutItem);
             } else if (xml.name() == SYSTEM_RESET_MENU_KEYWORD) {
-                item = parseGeneralMenuItem(xml, MenuItemType::systemResetItem);
+                item = parseGeneralMenuItem(
+                    xml, depth + 1, MenuItemType::systemResetItem);
             } else if (xml.name() == FORCECLOSE_MENU_KEYWORD) {
-                item = parseGeneralMenuItem(xml, MenuItemType::forceCloseItem);
+                item = parseGeneralMenuItem(
+                    xml, depth + 1, MenuItemType::forceCloseItem);
             } else if (xml.name() == CLOSE_MENU_KEYWORD) {
-                item = parseGeneralMenuItem(xml, MenuItemType::closeItem);
+                item = parseGeneralMenuItem(
+                    xml, depth + 1, MenuItemType::closeItem);
             } else {
-                qWarning() << "undefined element:" << xml.name();
+                QWARN_INDENT(depth + 1) << "undefined element: " << xml.name();
             }
 
             if (item != NULL) {
@@ -520,14 +580,20 @@ int XmlLayoutParser::parseMenuList(
         token = xml.readNext();
     }
 
+    QDEBUG_INDENT(depth) << "}";
+
     return list.count();
 }
 
 QString XmlLayoutParser::parseEmulatorUI(QXmlStreamReader &xml)
 {
     QString layoutVersion = GENERIC_TEXT_UNDEFINED;
+    int depth = 0;
+
+    qDebug(LOG_LINE_HEAD_CHAR);
+    QDEBUG_INDENT(depth) << EMULATOR_UI_KEYWORD << " {";
 
-    QXmlStreamReader::TokenType token;
+    QXmlStreamReader::TokenType token = QXmlStreamReader::NoToken;
 
     while (xml.atEnd() == false && xml.hasError() == false) {
         token = xml.readNext();
@@ -546,17 +612,23 @@ QString XmlLayoutParser::parseEmulatorUI(QXmlStreamReader &xml)
                 layoutVersion = xml.readElementText();
                 continue;
             } else if (xml.name() == FORMLIST_KEYWORD) {
-                int cnt = parseMainFormList(xml, uiInfo->getMainFormList());
-                qDebug() << FORMLIST_KEYWORD << ":" << cnt;
+                /* forms */
+                const int cnt = parseMainFormList(xml,
+                    depth + 1, uiInfo->getMainFormList());
+                QDEBUG_INDENT(depth + 1) << FORMLIST_KEYWORD << ": " << cnt;
             } else if (xml.name() == MENULIST_KEYWORD) {
-                int cnt = parseMenuList(xml, uiInfo->getMenuList());
-                qDebug() << MENULIST_KEYWORD << ":" << cnt;
+                /* menus */
+                const int cnt = parseMenuList(xml,
+                    depth + 1, uiInfo->getMenuList());
+                QDEBUG_INDENT(depth + 1) << MENULIST_KEYWORD << ": " << cnt;
             } else {
-                qWarning() << "undefined element:" << xml.name();
+                QWARN_INDENT(depth + 1) << "undefined element: " << xml.name();
             }
         }
     }
 
+    QDEBUG_INDENT(depth) << "}";
+
     if (xml.hasError() == true) {
         printError(xml.error());
     }
@@ -565,14 +637,14 @@ QString XmlLayoutParser::parseEmulatorUI(QXmlStreamReader &xml)
 }
 
 /* controller */
-ControllerForm *XmlLayoutParser::parseControllerForm(QXmlStreamReader &xml)
+ControllerForm *XmlLayoutParser::parseControllerForm(QXmlStreamReader &xml, int depth)
 {
     /* attribute */
     QString formName = xml.attributes().value(NAME_ATTR_KEYWORD).toString();
     ControllerForm *form = new ControllerForm(
         formName.isEmpty() ? xmlPath.section(QDir::separator(), -1) : formName);
 
-    qDebug() << '*' << form->getName() << "{";
+    QDEBUG_INDENT(depth) << form->getName() << " {";
 
     QXmlStreamReader::TokenType token = xml.readNext();
 
@@ -583,37 +655,39 @@ ControllerForm *XmlLayoutParser::parseControllerForm(QXmlStreamReader &xml)
             if (xml.name() == NORMAL_IMG_KEYWORD) {
                 /* normal image */
                 QString normalImageFileName = xml.readElementText();
-                qDebug() << "-" << NORMAL_IMG_KEYWORD << ":" <<  normalImageFileName;
+                QDEBUG_INDENT(depth + 1) <<
+                    NORMAL_IMG_KEYWORD << ": " <<  normalImageFileName;
 
                 if (form->skinImg[LayoutForm::normal].load(
                     xmlPath + QDir::separator() + normalImageFileName) == false) {
-                    qWarning() << "failed to load normal image";
+                    QWARN_INDENT(depth + 1) << "failed to load normal image";
                 }
             } else if (xml.name() == PRESSED_IMG_KEYWORD) {
                 /* key pressed image */
                 QString pressedImageFileName = xml.readElementText();
-                qDebug() << "-" << PRESSED_IMG_KEYWORD << ":" << pressedImageFileName;
+                QDEBUG_INDENT(depth + 1) <<
+                    PRESSED_IMG_KEYWORD << ": " << pressedImageFileName;
 
                 if (form->skinImg[LayoutForm::pressed].load(
                     xmlPath + QDir::separator() + pressedImageFileName) == false) {
-                    qWarning() << "failed to load pressed image";
+                    QWARN_INDENT(depth + 1) << "failed to load pressed image";
                 }
             } else if (xml.name() == KEYLIST_KEYWORD) {
                 /* HW keys */
-                int cnt = parseKeyList(xml, form->getKeyList());
-                qDebug() << "-" << KEYLIST_KEYWORD << ":" << cnt;
+                const int cnt = parseKeyList(xml, depth + 1, form->getKeyList());
+                QDEBUG_INDENT(depth + 1) << KEYLIST_KEYWORD << ": " << cnt;
             } else if (xml.name() == HOVER_KEYWORD) {
                 /* hover */
-                form->setHoverType(parseHover(xml));
+                form->setHoverType(parseHover(xml, depth + 1));
             } else {
-                qWarning() << "undefined element:" << xml.name();
+                QWARN_INDENT(depth + 1) << "undefined element: " << xml.name();
             }
         }
 
         token = xml.readNext();
     }
 
-    qDebug("}");
+    QDEBUG_INDENT(depth) << "}";
 
     return form;
 }
@@ -621,9 +695,13 @@ ControllerForm *XmlLayoutParser::parseControllerForm(QXmlStreamReader &xml)
 QString XmlLayoutParser::parseControllerUI(QXmlStreamReader &xml)
 {
     QString layoutVersion = GENERIC_TEXT_UNDEFINED;
+    int depth = 0;
+
+    qDebug(LOG_LINE_HEAD_CHAR);
+    QDEBUG_INDENT(depth) << CONTROLLER_UI_KEYWORD << " {";
 
     ControllerForm *form = NULL;
-    QXmlStreamReader::TokenType token;
+    QXmlStreamReader::TokenType token = QXmlStreamReader::NoToken;
 
     while (xml.atEnd() == false && xml.hasError() == false) {
         token = xml.readNext();
@@ -642,22 +720,24 @@ QString XmlLayoutParser::parseControllerUI(QXmlStreamReader &xml)
                 layoutVersion = xml.readElementText();
                 continue;
             } else if (xml.name() == FORM_KEYWORD) {
-                form = parseControllerForm(xml);
+                form = parseControllerForm(xml, depth + 1);
                 if (form != NULL) {
                     /* image validation */
                     if (form->skinImg[LayoutForm::normal].size() == QSize(0, 0)) {
-                        qDebug("- general purpose con form");
+                        QDEBUG_INDENT(depth + 1) << "(general purpose con type)";
                         makeGeneralCon(form);
                     }
 
                     uiInfo->getConFormList().append(form);
                 }
             } else {
-                qWarning() << "undefined element:" << xml.name();
+                QWARN_INDENT(depth + 1) << "undefined element: " << xml.name();
             }
         }
     }
 
+    QDEBUG_INDENT(depth) << "}";
+
     if (xml.hasError() == true) {
         printError(xml.error());
     }
@@ -700,7 +780,7 @@ void XmlLayoutParser::printError(QXmlStreamReader::Error err)
         qCritical("The parser encountered an element that was different to those it expected.");
         break;
     case QXmlStreamReader::CustomError:
-        qCritical("A custom error has been raised with raiseError()");
+        qCritical("A custom error has been raised with raiseError().");
         break;
     case QXmlStreamReader::NotWellFormedError:
         qCritical("The parser internally raised an error due to the read XML not being well-formed.");
index 1a8840a..96f1cdf 100644 (file)
@@ -46,28 +46,32 @@ class XmlLayoutParser
 public:
     XmlLayoutParser(const QString &path, UiInformation *uiInfo /* out */);
 
+    QString getIndenting(int depth);
     QString parseEmulatorUI(QXmlStreamReader &xml);
     QString parseControllerUI(QXmlStreamReader &xml);
 
 private:
-    QColor parseColor(QXmlStreamReader &xml);
-    HoverType parseHover(QXmlStreamReader &xml);
-    QRect parseRegion(QXmlStreamReader &xml);
-    DisplayType *parseDisplay(QXmlStreamReader &xml);
-    KeycodeType parseKeycode(QXmlStreamReader &xml);
-    HardwareKey *parseKey(QXmlStreamReader &xml);
-    int parseKeyList(QXmlStreamReader &xml, QList<HardwareKey *> &list);
-    MainForm *parseMainForm(QXmlStreamReader &xml);
-    int parseMainFormList(QXmlStreamReader &xml, QList<MainForm *> &list);
+    QColor parseColor(QXmlStreamReader &xml, int depth);
+    HoverType parseHover(QXmlStreamReader &xml, int depth);
+    QRect parseRegion(QXmlStreamReader &xml, int depth);
+    DisplayType *parseDisplay(QXmlStreamReader &xml, int depth);
+    KeycodeType parseKeycode(QXmlStreamReader &xml, int depth);
+    HardwareKey *parseKey(QXmlStreamReader &xml, int depth);
+    int parseKeyList(QXmlStreamReader &xml, int depth, QList<HardwareKey *> &list);
+    MainForm *parseMainForm(QXmlStreamReader &xml, int depth);
+    int parseMainFormList(QXmlStreamReader &xml,
+        int depth, QList<MainForm *> &list);
 
-    int parseFactorList(QXmlStreamReader &xml, QMap<int, QString> &map, int *defaultFactor);
-    int parseShortcuts(QXmlStreamReader &xml, QMap<QString, QKeySequence> &map);
-    AdvancedMenuItem *parseAdvancedMenuItem(QXmlStreamReader &xml);
-    ScaleMenuItem *parseScaleMenuItem(QXmlStreamReader &xml);
-    MenuItem *parseGeneralMenuItem(QXmlStreamReader &xml, int menuType);
-    int parseMenuList(QXmlStreamReader &xml, QList<MenuItem *> &list);
+    int parseFactorList(QXmlStreamReader &xml,
+        int depth, QMap<int, QString> &map, int *defaultFactor);
+    int parseShortcuts(QXmlStreamReader &xml,
+        int depth, QMap<QString, QKeySequence> &map);
+    AdvancedMenuItem *parseAdvancedMenuItem(QXmlStreamReader &xml, int depth);
+    ScaleMenuItem *parseScaleMenuItem(QXmlStreamReader &xml, int depth);
+    MenuItem *parseGeneralMenuItem(QXmlStreamReader &xml, int depth, int menuType);
+    int parseMenuList(QXmlStreamReader &xml, int depth, QList<MenuItem *> &list);
 
-    ControllerForm *parseControllerForm(QXmlStreamReader &xml);
+    ControllerForm *parseControllerForm(QXmlStreamReader &xml, int depth);
     void makeGeneralCon(ControllerForm *form);
 
     void printError(QXmlStreamReader::Error err);