From 348fc365fa640c1fcfcdb9d80ed425bb253b29b0 Mon Sep 17 00:00:00 2001 From: kangfenmao Date: Tue, 12 Nov 2024 11:16:55 +0800 Subject: [PATCH] feat: update system tray icon functionality and ui --- src/renderer/src/i18n/locales/en-us.json | 2 +- src/renderer/src/i18n/locales/zh-cn.json | 2 +- src/renderer/src/i18n/locales/zh-tw.json | 2 +- .../src/pages/settings/AssistantSettings.tsx | 66 +++++++++++++++++-- .../src/pages/settings/ModelSettings.tsx | 25 ++++--- .../src/pages/settings/SettingsPage.tsx | 17 +---- 6 files changed, 78 insertions(+), 36 deletions(-) diff --git a/src/renderer/src/i18n/locales/en-us.json b/src/renderer/src/i18n/locales/en-us.json index ddf8fcc1..2f3481fe 100644 --- a/src/renderer/src/i18n/locales/en-us.json +++ b/src/renderer/src/i18n/locales/en-us.json @@ -332,7 +332,7 @@ "about.license.button": "License", "about.contact.button": "Email", "proxy.title": "Proxy Address", - "tray.title": "Tray Icon", + "tray.title": "Enable System Tray Icon", "theme.title": "Theme", "theme.dark": "Dark", "theme.light": "Light", diff --git a/src/renderer/src/i18n/locales/zh-cn.json b/src/renderer/src/i18n/locales/zh-cn.json index 85c5b195..993af504 100644 --- a/src/renderer/src/i18n/locales/zh-cn.json +++ b/src/renderer/src/i18n/locales/zh-cn.json @@ -320,7 +320,7 @@ "about.license.button": "查看", "about.contact.button": "邮件", "proxy.title": "代理地址", - "tray.title": "任务栏图标", + "tray.title": "启用系统托盘图标", "theme.title": "主题", "theme.dark": "深色主题", "theme.light": "浅色主题", diff --git a/src/renderer/src/i18n/locales/zh-tw.json b/src/renderer/src/i18n/locales/zh-tw.json index d835a93a..a8bc6f4b 100644 --- a/src/renderer/src/i18n/locales/zh-tw.json +++ b/src/renderer/src/i18n/locales/zh-tw.json @@ -320,7 +320,7 @@ "about.license.button": "查看", "about.contact.button": "郵件", "proxy.title": "代理地址", - "tray.title": "工作列圖示", + "tray.title": "啟用系統托盤圖標", "theme.title": "主題", "theme.dark": "深色主題", "theme.light": "淺色主題", diff --git a/src/renderer/src/pages/settings/AssistantSettings.tsx b/src/renderer/src/pages/settings/AssistantSettings.tsx index f2f3b189..6e4325bd 100644 --- a/src/renderer/src/pages/settings/AssistantSettings.tsx +++ b/src/renderer/src/pages/settings/AssistantSettings.tsx @@ -1,15 +1,16 @@ import { QuestionCircleOutlined } from '@ant-design/icons' import { HStack } from '@renderer/components/Layout' +import { TopView } from '@renderer/components/TopView' import { DEFAULT_CONTEXTCOUNT, DEFAULT_MAX_TOKENS, DEFAULT_TEMPERATURE } from '@renderer/config/constant' import { useDefaultAssistant } from '@renderer/hooks/useAssistant' import { AssistantSettings as AssistantSettingsType } from '@renderer/types' -import { Button, Col, Input, InputNumber, Row, Slider, Switch, Tooltip } from 'antd' +import { Button, Col, Input, InputNumber, Modal, Row, Slider, Switch, Tooltip } from 'antd' import TextArea from 'antd/es/input/TextArea' import { Dispatch, FC, SetStateAction, useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' -import { SettingContainer, SettingDivider, SettingSubtitle, SettingTitle } from '.' +import { SettingContainer, SettingSubtitle } from '.' const AssistantSettings: FC = () => { const { defaultAssistant, updateDefaultAssistant } = useDefaultAssistant() @@ -66,9 +67,7 @@ const AssistantSettings: FC = () => { } return ( - - {t('settings.assistant.title')} - + {t('common.name')} { ) } +interface Props { + resolve: (data: any) => void +} + +const PopupContainer: React.FC = ({ resolve }) => { + const [open, setOpen] = useState(true) + const { t } = useTranslation() + + const onOk = () => { + setOpen(false) + } + + const onCancel = () => { + setOpen(false) + } + + const onClose = () => { + resolve({}) + } + + return ( + + + + ) +} + +export default class AssistantSettingsPopup { + static topviewId = 0 + static hide() { + TopView.hide('AssistantSettingsPopup') + } + static show() { + return new Promise((resolve) => { + TopView.show( + { + resolve(v) + this.hide() + }} + />, + 'AssistantSettingsPopup' + ) + }) + } +} + const Label = styled.p` margin: 0; font-size: 14px; @@ -213,5 +267,3 @@ const QuestionIcon = styled(QuestionCircleOutlined)` cursor: pointer; color: var(--color-text-3); ` - -export default AssistantSettings diff --git a/src/renderer/src/pages/settings/ModelSettings.tsx b/src/renderer/src/pages/settings/ModelSettings.tsx index 6f29c3f9..413c3408 100644 --- a/src/renderer/src/pages/settings/ModelSettings.tsx +++ b/src/renderer/src/pages/settings/ModelSettings.tsx @@ -1,14 +1,16 @@ -import { EditOutlined, MessageOutlined, TranslationOutlined } from '@ant-design/icons' +import { EditOutlined, MessageOutlined, SettingOutlined, TranslationOutlined } from '@ant-design/icons' +import { HStack } from '@renderer/components/Layout' import { useDefaultModel } from '@renderer/hooks/useAssistant' import { useProviders } from '@renderer/hooks/useProvider' import { getModelUniqId, hasModel } from '@renderer/services/ModelService' import { Model } from '@renderer/types' -import { Select } from 'antd' +import { Button, Select } from 'antd' import { find, sortBy } from 'lodash' import { FC, useMemo } from 'react' import { useTranslation } from 'react-i18next' import { SettingContainer, SettingDivider, SettingTitle } from '.' +import AssistantSettingsPopup from './AssistantSettings' const ModelSettings: FC = () => { const { defaultModel, topicNamingModel, translateModel, setDefaultModel, setTopicNamingModel, setTranslateModel } = @@ -52,14 +54,17 @@ const ModelSettings: FC = () => { - setDefaultModel(find(allModels, JSON.parse(value)) as Model)} + options={selectOptions} + placeholder={t('settings.models.empty')} + /> +