-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmainwindow.h
More file actions
131 lines (118 loc) · 3.55 KB
/
mainwindow.h
File metadata and controls
131 lines (118 loc) · 3.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QListWidget>
#include <QTextEdit>
#include <QPushButton>
#include <QSpinBox>
#include <QCheckBox>
#include <QLabel>
#include <QTimer>
#include <QStringList>
#include <QElapsedTimer>
#include <QComboBox>
class BackendPool;
class ConversationBrowser;
class ConfigManager;
class ProxyServer;
class LicenseManager;
class ClaudeSettingsManager;
// Forward declare ProxyServer::Stats
#include "proxyserver.h"
QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(LicenseManager *licenseManager, QWidget *parent = nullptr);
~MainWindow();
protected:
void closeEvent(QCloseEvent *event) override;
private slots:
void onStartStopClicked();
void onAddUrlClicked();
void onRemoveUrlClicked();
void onAddKeyClicked();
void onRemoveKeyClicked();
void onGroupChanged(int index);
void onAddGroupClicked();
void onRemoveGroupClicked();
void onEditGroupClicked();
void onGroupSwitched(int index, const QString &name);
void onLogMessage(const QString &message);
void onServerStarted(quint16 port);
void onServerStopped();
void onUrlSwitched(int index, const QString &url);
void onKeySwitched(int index, const QString &label);
void refreshCooldowns();
void updateStatus();
void showAbout();
void showConversations();
void showClaudeSettings();
void flushLogBuffer();
void onStatsUpdated(const ProxyServer::Stats &stats);
void onUrlItemClicked(QListWidgetItem *item);
void onKeyItemClicked(QListWidgetItem *item);
private:
void setupUi();
void setupMenuBar();
void loadConfig();
void saveConfig();
void refreshUrlList();
void refreshKeyList();
void refreshGroupList();
void appendLog(const QString &message);
void scheduleListRefresh();
bool checkPermissions();
void showPermissionHelp();
void showStyledWarning(const QString &title, const QString &message);
bool showStyledConfirm(const QString &title, const QString &message, const QString &detail = QString());
void showEditGroupDialog();
void showSupportedPlatformsDialog(QWidget *parent);
void detectClaudeMode();
Ui::MainWindow *ui;
LicenseManager *m_licenseManager;
BackendPool *m_pool;
ConfigManager *m_config;
ProxyServer *m_server;
ClaudeSettingsManager *m_claudeSettings;
QTimer *m_cooldownTimer;
QTimer *m_logFlushTimer;
QTimer *m_listRefreshTimer;
QStringList m_logBuffer;
bool m_needRefreshUrlList = false;
bool m_needRefreshKeyList = false;
static const int MAX_LOG_LINES = 500;
static const int LOG_FLUSH_INTERVAL = 200; // ms
static const int LIST_REFRESH_INTERVAL = 500; // ms
// UI elements
QSpinBox *m_portSpinBox;
QSpinBox *m_retrySpinBox;
QSpinBox *m_cooldownSpinBox;
QSpinBox *m_timeoutSpinBox;
QCheckBox *m_correctionCheckBox;
QCheckBox *m_localTokenCountCheckBox;
QCheckBox *m_debugLogCheckBox;
QPushButton *m_startStopBtn;
QListWidget *m_urlList;
QPushButton *m_addUrlBtn;
QPushButton *m_removeUrlBtn;
QListWidget *m_keyList;
QPushButton *m_addKeyBtn;
QPushButton *m_removeKeyBtn;
QTextEdit *m_logView;
QLabel *m_statusLabel;
QLabel *m_currentUrlLabel;
QLabel *m_currentKeyLabel;
QLabel *m_statsLabel;
QComboBox *m_groupComboBox;
QPushButton *m_addGroupBtn;
QPushButton *m_removeGroupBtn;
QPushButton *m_editGroupBtn;
QLabel *m_claudeModeLabel;
};
#endif // MAINWINDOW_H