ecp: new ECP move to tools path
authorSeokYeon Hwang <syeon.hwang@samsung.com>
Mon, 18 Jul 2016 05:51:31 +0000 (14:51 +0900)
committerSeokYeon Hwang <syeon.hwang@samsung.com>
Mon, 18 Jul 2016 14:45:45 +0000 (23:45 +0900)
Change-Id: I50a60f1fd4382094a4aa72d79068383c8b09df76
Signed-off-by: SeokYeon Hwang <syeon.hwang@samsung.com>
tizen/src/emul_state.c
tizen/src/emul_state.h
tizen/src/ui/menu/contextmenu.cpp
tizen/src/ui/menu/contextmenu.h
tizen/src/ui/resource/ui_strings.h

index baef305..8a2ddf4 100644 (file)
@@ -393,6 +393,11 @@ const char *get_profile_name(void)
     return get_variable("profile");
 }
 
+const char *get_platform_version(void)
+{
+    return get_variable("platform_version");
+}
+
 // host directory sharing path
 const char* get_host_directory_sharing_path(void)
 {
index 62ccd78..b360e88 100644 (file)
@@ -131,6 +131,7 @@ const char *get_kernel_file(void);
 const char *get_http_proxy_addr(void);
 const char *get_vm_name(void);
 const char *get_profile_name(void);
+const char *get_platform_version(void);
 const char *get_vm_data_path(void);
 const char *get_sdcard_image_path(void);
 const char* get_host_directory_sharing_path(void);
index 8673aff..2811019 100644 (file)
@@ -934,28 +934,77 @@ void ContextMenu::slotShell()
     sdbHelper->openShell(vmName);
 }
 
-void ContextMenu::slotControlPanel()
+void ContextMenu::launchControlPanel(QString& command,
+        QStringList& arguments)
 {
-    qDebug("Control Panel");
+    QString httpProxyAddr;
+    QString httpProxyPort;
+    const char *http_proxy_addr = get_http_proxy_addr();
+    if (http_proxy_addr) {
+        char **proxy = g_strsplit(http_proxy_addr, ":", 2);
+        if (proxy[0] && proxy[1]) {
+            httpProxyAddr = "-Dhttp.proxyHost=" + QString(proxy[0]);
+            httpProxyPort = "-Dhttp.proxyPort=" + QString(proxy[1]);
+        }
+        g_strfreev(proxy);
+    }
+
+    if (httpProxyAddr != NULL && httpProxyPort != NULL) {
+        arguments << httpProxyAddr << httpProxyPort;
+    }
 
-    QString jar = QDir(QCoreApplication::applicationDirPath() +
-        QDir::separator() + SDK_EMULATOR_BIN_PATH +
-        SDK_ECP_FILE_JAR).absolutePath();
-    if (!QFileInfo(jar).exists()) {
-        // check ecp jar
-        showMsgBox(QMessageBox::Warning,
-            MSG_ECP_NOT_EXIST + jar);
+    QString loggingCommand = QString("staring ecp: \"" + command + "\"");
+    for (int i = 0; i < arguments.size(); ++i) {
+        loggingCommand += " \"" + arguments.at(i) + "\"";
+    }
+    qInfo() << qPrintable(loggingCommand);
+
+    QString workingDir = QFileInfo(command).canonicalPath();
+    try {
+        QProcess::startDetached(command, arguments, workingDir);
+    } catch (QString &error) {
+        showMsgBox(QMessageBox::Warning, MSG_INVALID_ECP_OPEN + error);
         return;
     }
+}
+
+void ContextMenu::slotControlPanel()
+{
+    qDebug("Control Panel");
 
-    QString command = QDir(QCoreApplication::applicationDirPath() +
-        QDir::separator() + SDK_EMULATOR_BIN_PATH +
-        SDK_ECP_FILE).absolutePath();
+    QString command;
     QStringList arguments;
-    if (QFileInfo(command).exists()) {
+
+    // check for new ECP
+    QString newCommand = QDir(QCoreApplication::applicationDirPath() +
+            QDir::separator() + SDK_EMULATOR_TOOLS_BIN_PATH +
+            SDK_ECP_FILE).absolutePath();
+    if (QFileInfo(newCommand).exists()) {
+        command = newCommand;
+
+        QString vmNameOpt = "vm_name=" + parent->getUiInfo()->getVmName();
+        QString platformVersionOpt = "platform_version=" +
+            QString::fromLocal8Bit(get_platform_version());
+        QString profileOpt = "profile=" +
+            QString::fromLocal8Bit(get_profile_name());
+        QString basePortOpt =
+            "base_port=" + QString::number(parent->getUiInfo()->getBasePort());
+
+        arguments << vmNameOpt << platformVersionOpt << profileOpt
+            << basePortOpt;
+
         // we have standalone command for ECP
         // we respect standalone command, so nothing to do
-    } else {
+        launchControlPanel(command, arguments);
+
+        return;
+    }
+
+    // check for old ECP
+    QString oldJar = QDir(QCoreApplication::applicationDirPath() +
+            QDir::separator() + SDK_EMULATOR_BIN_PATH +
+            SDK_ECP_FILE_JAR).absolutePath();
+    if (QFileInfo(oldJar).exists()) {
         // we do not have standalone command for ECP
         // we may have SWT based ECP
 
@@ -978,43 +1027,25 @@ void ContextMenu::slotControlPanel()
         /* SWT Display must be created on main thread due to Cocoa restrictions */
         arguments << "-XstartOnFirstThread";
 #endif
-        arguments << "-jar" << jar;
-    }
+        arguments << "-jar" << oldJar;
 
-    QString basePortOpt =
-        "base.port=" + QString::number(parent->getUiInfo()->getBasePort());
-    QString vmNameOpt = "vmname=" + parent->getUiInfo()->getVmName();
-    QString vmProfileOpt = "profile=" + QString::fromLocal8Bit(get_profile_name());
+        QString vmNameOpt = "vmname=" + parent->getUiInfo()->getVmName();
+        QString profileOpt = "profile=" +
+            QString::fromLocal8Bit(get_profile_name());
+        QString basePortOpt = "base.port=" +
+            QString::number(parent->getUiInfo()->getBasePort());
 
-    QString httpProxyAddr;
-    QString httpProxyPort;
-    const char *http_proxy_addr = get_http_proxy_addr();
-    if (http_proxy_addr) {
-        char **proxy = g_strsplit(http_proxy_addr, ":", 2);
-        if (proxy[0] && proxy[1]) {
-            httpProxyAddr = "-Dhttp.proxyHost=" + QString(proxy[0]);
-            httpProxyPort = "-Dhttp.proxyPort=" + QString(proxy[1]);
-        }
-        g_strfreev(proxy);
-    }
-
-    if (httpProxyAddr != NULL && httpProxyPort != NULL) {
-        arguments << httpProxyAddr << httpProxyPort;
-    }
+        arguments << vmNameOpt << profileOpt << basePortOpt;
 
-    arguments << vmNameOpt << basePortOpt << vmProfileOpt;
-    QString loggingCommand = QString("staring ecp: \"" + command + "\"");
-    for (int i = 0; i < arguments.size(); ++i) {
-        loggingCommand += " \"" + arguments.at(i) + "\"";
-    }
-    qInfo() << qPrintable(loggingCommand);
+        launchControlPanel(command, arguments);
 
-    try {
-        QProcess::startDetached(command, arguments);
-    } catch (QString &error) {
-        showMsgBox(QMessageBox::Warning, MSG_INVALID_ECP_OPEN + error);
         return;
     }
+
+    // we can not launch ControlPanel
+    showMsgBox(QMessageBox::Warning, MSG_ECP_NOT_EXIST);
+
+    return;
 }
 
 void ContextMenu::slotRequestScreenshot()
index 7dad213..88370a4 100644 (file)
@@ -123,6 +123,7 @@ protected:
     bool eventFilter(QObject *obj, QEvent *event);
 
 private:
+    void launchControlPanel(QString &, QStringList &);
     QAction *addGeneralAction(QMenu *menu, const QIcon &icon,
         const QString &text, QShortcut *shortcut, const char *slot);
     void attachShortcut(QAction *action, QShortcut *shortcut, const char *slot);
index eb95f4a..97f4942 100644 (file)
@@ -40,6 +40,7 @@
 
 /* SDK path */
 #define SDK_ROOT_PATH "../../../../../"
+#define SDK_EMULATOR_TOOLS_BIN_PATH SDK_ROOT_PATH"/tools/emulator/bin/"
 #define SDK_EMULATOR_BIN_PATH "../../../common/emulator/bin/"
 #define SDK_EMULATOR_IMAGES_PATH "../images/"
 #define SDK_EMULATOR_ICONS_PATH "../icons/"
 /* messages */
 #define MSG_SDB_NOT_READY "SDB is not ready.\nPlease wait until the emulator is completely boot up."
 #define MSG_SDB_NOT_EXIST "SDB file does not exist in the following path.\n"
-#define MSG_ECP_NOT_EXIST "Control Panel file does not exist in the following path.\n"
+#define MSG_ECP_NOT_EXIST "Control Panel binary file does not exist.\n"
 #define MSG_INVALID_JAVA_PATH "Failed to get java path."
 #define MSG_INVALID_ECP_OPEN "Failed to open Control Panel : "
 #define MSG_SYSTEM_RESET_POPUP "If you force the emulator to reboot, it may cause problems.\n"\