package com.keyboard.keyboardtheme.skin.utils;

import com.keyboard.keyboardtheme.skin.datamanager.resourceconfig.KeyBean;
import com.keyboard.keyboardtheme.skin.datamanager.resourceconfig.ServiceKey;
import com.keyboard.keyboardtheme.skin.datamanager.resourceconfig.ConfigP;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.LinkedHashMap;
import java.util.Map;

public class SuperTheme {

    public static ServiceKey initConfig(String path)  {
        String filePath = "keyboard.conf"; // 文件路径
        ServiceKey config = parseConfig(path);

        return config;
    }

    public static ServiceKey parseConfig(String filePath)   {
//        InputStream open = MyApp.myAppInstance.getAssets().open(filePath);
        ServiceKey config = new ServiceKey();
        try (BufferedReader br = new BufferedReader(new FileReader(filePath))) {
            String line;
            ConfigP currentLayout = null;
            while ((line = br.readLine()) != null) {
                line = line.trim();
                if (line.isEmpty()) {
                    continue; // 跳过空行
                }
                if (line.startsWith("Version:")) {
                    config.setVersion(line.split(":")[1].trim());
                } else if (line.startsWith("SupportLayouts:")) {
                    config.setSupportLayouts(line.split(":")[1].trim());
                } else if (line.startsWith("HideHint:")) {
                    config.setHideHint(Integer.parseInt(line.split(":")[1].trim()));
                } else if (line.startsWith("LayoutStyle:")) {
                    config.setLayoutStyle(line.split(":")[1].trim());
                } else if (line.equals("KeyDefault") || line.equals("KeyMarkDefault") || line.equals("KeyFuncDefault")) {
                    LinkedHashMap<String, String> maps = config.getMaps();
                    maps.put(line, "");
                } else if (line.contains(":") && currentLayout == null) {
                    String[] parts = line.split(":");
                    String keyName = parts[0].trim();
                    String keyValue = parts[1].trim();

                    String latestKey = null;
                    LinkedHashMap<String, String> maps = config.getMaps();
                    for (Map.Entry<String, String> entry : maps.entrySet()) {
                        latestKey = entry.getKey();
                    }
                    if (latestKey != null) {
                        maps.put(latestKey, keyValue);
                    }
                } else if (line.startsWith("Row")) {
                    currentLayout = new ConfigP(line.split(":")[0].trim());
                    config.addLayout(currentLayout);
                } else if (currentLayout != null) {
                    if (line.equals("Key")) {
                        String[] parts = line.split(":");
                        String keyName = parts[0].trim();
                        KeyBean keyBean = new KeyBean(keyName);
                        currentLayout.addKey(keyBean);
                    } else if (line.contains(":") && currentLayout.getLastKey().getBackground() == null) {
                        // 解析按键的其他属性（如 Label）
                        String[] parts = line.split(":");
                        String keyName = parts[0].trim();
                        String keyValue = parts[1].trim();
                        KeyBean keyBean = currentLayout.getLastKey();
                        if (keyName.equals("Label")) {
                            keyBean.setLabel(keyValue);
                        }
                        if (keyName.equals("Background")) {
                            keyBean.setBackground(keyValue);
                        }
                    } else {
                        if (line.equals("KeyShift") || line.equals("KeyDelete") || line.equals("KeyAlphaSymbol") || line.equals("KeyEmoji")
                                || line.equals("KeyMark")
                                || line.equals("KeySpace")
                                || line.equals("KeyEnter")) {
                            KeyBean funcationKeyBean = new KeyBean(line);
                            config.addKey(funcationKeyBean);
                        } else if (line.contains(":")) {
                            String[] parts = line.split(":");
                            String keyName = parts[0].trim();
                            String keyValue = parts[1].trim();
                            KeyBean lastKeyBean = config.getLastKeyList();
                            if (keyName.equals("Label")) {
                                lastKeyBean.setLabel(keyValue);
                            }
                            if (keyName.equals("Background")) {
                                lastKeyBean.setBackground(keyValue);
                            }
                        }
                    }
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return config;
    }
}




