Skip to content

Commit 25053a6

Browse files
Kakueeendeepin-bot[bot]
authored andcommitted
feat: add package cache update functionality
Added package cache update feature to improve package information accuracy 1. Added new APT_UPDATE_CACHE display mode to show cache update progress 2. Implemented updatePackageCache() method to handle cache updates 3. Added slotUpdateCacheFinished() to handle update completion 4. Modified initialization logic to trigger cache update when no process is running 5. Added proper error handling and logging for cache update operations Log: Added package cache update feature with progress indication Influence: 1. Test cache update functionality when opening the application 2. Verify progress display shows "Updating package cache..." during update 3. Test error handling when backend or transaction creation fails 4. Verify cache reloads successfully after update completion 5. Check that application transitions properly to finished state after update 6. Test with both successful and failed cache update scenarios feat: 添加软件包缓存更新功能 新增软件包缓存更新功能以提高包信息准确性 1. 新增 APT_UPDATE_CACHE 显示模式用于展示缓存更新进度 2. 实现 updatePackageCache() 方法处理缓存更新 3. 添加 slotUpdateCacheFinished() 处理更新完成逻辑 4. 修改初始化逻辑,在无进程运行时触发缓存更新 5. 添加完善的错误处理和日志记录功能 Log: 新增软件包缓存更新功能及进度显示 Influence: 1. 测试应用启动时的缓存更新功能 2. 验证更新过程中正确显示"更新软件包缓存..."进度提示 3. 测试后端或事务创建失败时的错误处理 4. 验证缓存更新成功后正确重新加载缓存 5. 检查更新完成后应用是否正确切换到完成状态 6. 测试缓存更新成功和失败的不同场景 TASK: https://pms.uniontech.com/task-view-386389.html
1 parent c01f4c1 commit 25053a6

52 files changed

Lines changed: 2118 additions & 1825 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

src/deb-installer/view/pages/backendprocesspage.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ void BackendProcessPage::setDisplayPage(DisplayMode mode)
3535
qCDebug(appLog) << "Showing APT initialization view";
3636
allLayout->setCurrentWidget(noProcessWidget);
3737
noProcessWidget->start();
38+
} else if (mode == APT_UPDATE_CACHE) {
39+
noProcessWidget->setActionText(tr("Updating package cache..."));
3840
} else if (mode == READ_PKG) {
3941
qCDebug(appLog) << "Showing package loading view";
4042
allLayout->setCurrentWidget(processWidget);

src/deb-installer/view/pages/backendprocesspage.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ class BackendProcessPage : public QWidget
1717
public:
1818
enum DisplayMode {
1919
APT_INIT, // apt初始化
20+
APT_UPDATE_CACHE, // 更新缓存
2021
READ_PKG, // 读取包数据
2122
PROCESS_FIN // 处理结束
2223
};

src/deb-installer/view/pages/debinstaller.cpp

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,7 @@ void DebInstaller::initConnections()
200200
if (inProcess) {
201201
slotShowPkgProcessBlockPage(BackendProcessPage::APT_INIT, 0, 0);
202202
} else {
203-
slotShowPkgProcessBlockPage(BackendProcessPage::PROCESS_FIN, 0, 0);
203+
updatePackageCache();
204204
}
205205
});
206206

@@ -500,6 +500,26 @@ void DebInstaller::slotWorkerFinished()
500500
slotChangeDragFlag();
501501
}
502502

503+
void DebInstaller::slotUpdateCacheFinished()
504+
{
505+
Transaction *transaction = qobject_cast<Transaction *>(sender());
506+
if (!transaction) {
507+
slotShowPkgProcessBlockPage(BackendProcessPage::PROCESS_FIN, 0, 0);
508+
qCWarning(appLog) << "Update cache transaction is null";
509+
return;
510+
}
511+
512+
disconnect(transaction, &Transaction::finished, this, &DebInstaller::slotUpdateCacheFinished);
513+
slotShowPkgProcessBlockPage(BackendProcessPage::PROCESS_FIN, 0, 0);
514+
qCDebug(appLog) << (transaction->exitStatus() == QApt::ExitSuccess
515+
? "Package cache update succeeded"
516+
: QString("Package cache update failed: %1").arg(transaction->errorString()));
517+
518+
transaction->deleteLater();
519+
if (auto backend = PackageAnalyzer::instance().backendPtr())
520+
backend->reloadCache();
521+
}
522+
503523
void DebInstaller::disableCloseAndExit()
504524
{
505525
qCDebug(appLog) << "Disabling close and exit";
@@ -783,6 +803,29 @@ QStringList DebInstaller::pathTransform(const QStringList &pkgList)
783803
return pkgRealPathList;
784804
}
785805

806+
void DebInstaller::updatePackageCache()
807+
{
808+
slotShowPkgProcessBlockPage(BackendProcessPage::APT_UPDATE_CACHE, 0, 0);
809+
auto backend = PackageAnalyzer::instance().backendPtr();
810+
if (!backend) {
811+
qCWarning(appLog) << "Backend pointer is null, cannot update package cache";
812+
slotShowPkgProcessBlockPage(BackendProcessPage::PROCESS_FIN, 0, 0);
813+
return;
814+
}
815+
816+
auto transaction = backend->updateCache();
817+
if (!transaction) {
818+
qCWarning(appLog) << "Failed to create update cache transaction";
819+
slotShowPkgProcessBlockPage(BackendProcessPage::PROCESS_FIN, 0, 0);
820+
return;
821+
}
822+
823+
transaction->setLocale(".UTF-8");
824+
connect(transaction, &Transaction::finished, this, &DebInstaller::slotUpdateCacheFinished);
825+
826+
transaction->run();
827+
}
828+
786829
void DebInstaller::refreshMulti()
787830
{
788831
qCDebug(appLog) << "Refresh multi install page";

src/deb-installer/view/pages/debinstaller.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,8 @@ private slots:
246246
// install / unisntall finished
247247
void slotWorkerFinished();
248248

249+
void slotUpdateCacheFinished();
250+
249251
private:
250252
/**
251253
* @brief initUI
@@ -334,6 +336,11 @@ private slots:
334336
*/
335337
QStringList pathTransform(const QStringList &pkgList);
336338

339+
/**
340+
* @brief updatePackageCache 更新软件包缓存
341+
*/
342+
void updatePackageCache();
343+
337344
private:
338345
AbstractPackageListModel *m_fileListModel = nullptr; // model 类
339346
FileChooseWidget *m_fileChooseWidget = nullptr; // 文件选择的widget

translations/deepin-deb-installer.ts

Lines changed: 43 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,11 @@
3232
<source>Initializing...</source>
3333
<translation>Initializing...</translation>
3434
</message>
35+
<message>
36+
<location filename="../src/deb-installer/view/pages/backendprocesspage.cpp" line="39"/>
37+
<source>Updating package cache...</source>
38+
<translation type="unfinished"></translation>
39+
</message>
3540
</context>
3641
<context>
3742
<name>DdimErrorPage</name>
@@ -54,55 +59,55 @@
5459
<translation>Settings</translation>
5560
</message>
5661
<message>
57-
<location filename="../src/deb-installer/view/pages/debinstaller.cpp" line="695"/>
58-
<location filename="../src/deb-installer/view/pages/debinstaller.cpp" line="819"/>
62+
<location filename="../src/deb-installer/view/pages/debinstaller.cpp" line="715"/>
63+
<location filename="../src/deb-installer/view/pages/debinstaller.cpp" line="862"/>
5964
<source>Installing other packages... Please open it later.</source>
6065
<translation>Installing other packages... Please open it later.</translation>
6166
</message>
6267
<message>
63-
<location filename="../src/deb-installer/view/pages/debinstaller.cpp" line="700"/>
68+
<location filename="../src/deb-installer/view/pages/debinstaller.cpp" line="720"/>
6469
<source>Parsing failed: An illegal file structure was found in the manifest file!</source>
6570
<translation>Parsing failed: An illegal file structure was found in the manifest file!</translation>
6671
</message>
6772
<message>
68-
<location filename="../src/deb-installer/view/pages/debinstaller.cpp" line="702"/>
73+
<location filename="../src/deb-installer/view/pages/debinstaller.cpp" line="722"/>
6974
<source>Parsing failed: An illegal version number was found in the manifest file!</source>
7075
<translation>Parsing failed: An illegal version number was found in the manifest file!</translation>
7176
</message>
7277
<message>
73-
<location filename="../src/deb-installer/view/pages/debinstaller.cpp" line="704"/>
78+
<location filename="../src/deb-installer/view/pages/debinstaller.cpp" line="724"/>
7479
<source>No deb packages found. Please check the folder.</source>
7580
<translation>No deb packages found. Please check the folder.</translation>
7681
</message>
7782
<message>
78-
<location filename="../src/deb-installer/view/pages/debinstaller.cpp" line="842"/>
83+
<location filename="../src/deb-installer/view/pages/debinstaller.cpp" line="885"/>
7984
<source>The %1 package may be broken</source>
8085
<translation type="unfinished"></translation>
8186
</message>
8287
<message>
83-
<location filename="../src/deb-installer/view/pages/debinstaller.cpp" line="851"/>
88+
<location filename="../src/deb-installer/view/pages/debinstaller.cpp" line="894"/>
8489
<source>You can only install local %1 packages</source>
8590
<translation type="unfinished"></translation>
8691
</message>
8792
<message>
88-
<location filename="../src/deb-installer/view/pages/debinstaller.cpp" line="860"/>
93+
<location filename="../src/deb-installer/view/pages/debinstaller.cpp" line="903"/>
8994
<source>No permission to access this folder</source>
9095
<translation type="unfinished"></translation>
9196
</message>
9297
<message>
93-
<location filename="../src/deb-installer/view/pages/debinstaller.cpp" line="877"/>
98+
<location filename="../src/deb-installer/view/pages/debinstaller.cpp" line="920"/>
9499
<source>Already Added</source>
95100
<translation>Already Added</translation>
96101
</message>
97102
<message>
98-
<location filename="../src/deb-installer/view/pages/debinstaller.cpp" line="886"/>
103+
<location filename="../src/deb-installer/view/pages/debinstaller.cpp" line="929"/>
99104
<source>%1 does not exist, please reselect</source>
100105
<translation>%1 does not exist, please reselect</translation>
101106
</message>
102107
<message>
103108
<location filename="../src/deb-installer/view/pages/debinstaller.cpp" line="445"/>
104-
<location filename="../src/deb-installer/view/pages/debinstaller.cpp" line="894"/>
105-
<location filename="../src/deb-installer/view/pages/debinstaller.cpp" line="1047"/>
109+
<location filename="../src/deb-installer/view/pages/debinstaller.cpp" line="937"/>
110+
<location filename="../src/deb-installer/view/pages/debinstaller.cpp" line="1090"/>
106111
<source>Bulk Install</source>
107112
<translation>Bulk Install</translation>
108113
</message>
@@ -134,14 +139,14 @@
134139
</message>
135140
<message>
136141
<location filename="../src/deb-installer/model/deblistmodel.cpp" line="144"/>
137-
<location filename="../src/deb-installer/model/deblistmodel.cpp" line="895"/>
142+
<location filename="../src/deb-installer/model/deblistmodel.cpp" line="910"/>
138143
<source>Invalid digital signature</source>
139144
<translation>Invalid digital signature</translation>
140145
</message>
141146
<message>
142147
<location filename="../src/deb-installer/model/deblistmodel.cpp" line="152"/>
143-
<location filename="../src/deb-installer/model/deblistmodel.cpp" line="880"/>
144-
<location filename="../src/deb-installer/model/deblistmodel.cpp" line="1981"/>
148+
<location filename="../src/deb-installer/model/deblistmodel.cpp" line="895"/>
149+
<location filename="../src/deb-installer/model/deblistmodel.cpp" line="2009"/>
145150
<source>The administrator has set policies to prevent installation of this package</source>
146151
<translation>The administrator has set policies to prevent installation of this package</translation>
147152
</message>
@@ -151,96 +156,96 @@
151156
<translation>Installation Failed</translation>
152157
</message>
153158
<message>
154-
<location filename="../src/deb-installer/model/deblistmodel.cpp" line="863"/>
159+
<location filename="../src/deb-installer/model/deblistmodel.cpp" line="878"/>
155160
<source>current system</source>
156161
<translation type="unfinished"></translation>
157162
</message>
158163
<message>
159-
<location filename="../src/deb-installer/model/deblistmodel.cpp" line="866"/>
164+
<location filename="../src/deb-installer/model/deblistmodel.cpp" line="881"/>
160165
<source>%2 has been installed in %1, please uninstall this package before installing it</source>
161166
<translation type="unfinished"></translation>
162167
</message>
163168
<message>
164-
<location filename="../src/deb-installer/model/deblistmodel.cpp" line="873"/>
169+
<location filename="../src/deb-installer/model/deblistmodel.cpp" line="888"/>
165170
<source>Broken dependencies, try installing the app in compatibility mode</source>
166171
<translation type="unfinished"></translation>
167172
</message>
168173
<message>
169-
<location filename="../src/deb-installer/model/deblistmodel.cpp" line="876"/>
174+
<location filename="../src/deb-installer/model/deblistmodel.cpp" line="891"/>
170175
<source>Compatibility mode installation failed</source>
171176
<translation type="unfinished"></translation>
172177
</message>
173178
<message>
174-
<location filename="../src/deb-installer/model/deblistmodel.cpp" line="898"/>
179+
<location filename="../src/deb-installer/model/deblistmodel.cpp" line="913"/>
175180
<source>Failed to install %1</source>
176181
<translation>Failed to install %1</translation>
177182
</message>
178183
<message>
179-
<location filename="../src/deb-installer/model/deblistmodel.cpp" line="1328"/>
184+
<location filename="../src/deb-installer/model/deblistmodel.cpp" line="1356"/>
180185
<source>Unable to install - no digital signature</source>
181186
<translation>Unable to install - no digital signature</translation>
182187
</message>
183188
<message>
184-
<location filename="../src/deb-installer/model/deblistmodel.cpp" line="1329"/>
189+
<location filename="../src/deb-installer/model/deblistmodel.cpp" line="1357"/>
185190
<source>Please go to Control Center to enable developer mode and try again. Proceed?</source>
186191
<translation>Please go to Control Center to enable developer mode and try again. Proceed?</translation>
187192
</message>
188193
<message>
189-
<location filename="../src/deb-installer/model/deblistmodel.cpp" line="1332"/>
194+
<location filename="../src/deb-installer/model/deblistmodel.cpp" line="1360"/>
190195
<source>Cancel</source>
191196
<comment>button</comment>
192197
<translation>Cancel</translation>
193198
</message>
194199
<message>
195-
<location filename="../src/deb-installer/model/deblistmodel.cpp" line="1333"/>
200+
<location filename="../src/deb-installer/model/deblistmodel.cpp" line="1361"/>
196201
<source>Proceed</source>
197202
<comment>button</comment>
198203
<translation>Proceed</translation>
199204
</message>
200205
<message>
201-
<location filename="../src/deb-installer/model/deblistmodel.cpp" line="1280"/>
202-
<location filename="../src/deb-installer/model/deblistmodel.cpp" line="1394"/>
203-
<location filename="../src/deb-installer/model/deblistmodel.cpp" line="1983"/>
206+
<location filename="../src/deb-installer/model/deblistmodel.cpp" line="1308"/>
207+
<location filename="../src/deb-installer/model/deblistmodel.cpp" line="1422"/>
208+
<location filename="../src/deb-installer/model/deblistmodel.cpp" line="2011"/>
204209
<source>OK</source>
205210
<comment>button</comment>
206211
<translation>OK</translation>
207212
</message>
208213
<message>
209-
<location filename="../src/deb-installer/model/deblistmodel.cpp" line="1284"/>
214+
<location filename="../src/deb-installer/model/deblistmodel.cpp" line="1312"/>
210215
<source>Failed to install %1: no valid digital signature</source>
211216
<translation type="unfinished"></translation>
212217
</message>
213218
<message>
214-
<location filename="../src/deb-installer/model/deblistmodel.cpp" line="1435"/>
219+
<location filename="../src/deb-installer/model/deblistmodel.cpp" line="1463"/>
215220
<source>This package does not have a valid digital signature. Continue with the installation?</source>
216221
<translation>This package does not have a valid digital signature. Continue with the installation?</translation>
217222
</message>
218223
<message>
219-
<location filename="../src/deb-installer/model/deblistmodel.cpp" line="1437"/>
224+
<location filename="../src/deb-installer/model/deblistmodel.cpp" line="1465"/>
220225
<source>Cancel</source>
221226
<translation>Cancel</translation>
222227
</message>
223228
<message>
224-
<location filename="../src/deb-installer/model/deblistmodel.cpp" line="1438"/>
229+
<location filename="../src/deb-installer/model/deblistmodel.cpp" line="1466"/>
225230
<source>Continue</source>
226231
<comment>button</comment>
227232
<translation>Continue</translation>
228233
</message>
229234
<message>
230-
<location filename="../src/deb-installer/model/deblistmodel.cpp" line="1278"/>
231-
<location filename="../src/deb-installer/model/deblistmodel.cpp" line="1391"/>
232-
<location filename="../src/deb-installer/model/deblistmodel.cpp" line="1980"/>
235+
<location filename="../src/deb-installer/model/deblistmodel.cpp" line="1306"/>
236+
<location filename="../src/deb-installer/model/deblistmodel.cpp" line="1419"/>
237+
<location filename="../src/deb-installer/model/deblistmodel.cpp" line="2008"/>
233238
<source>Unable to install</source>
234239
<translation>Unable to install</translation>
235240
</message>
236241
<message>
237-
<location filename="../src/deb-installer/model/deblistmodel.cpp" line="1392"/>
242+
<location filename="../src/deb-installer/model/deblistmodel.cpp" line="1420"/>
238243
<source>This package does not have a valid digital signature</source>
239244
<translation>This package does not have a valid digital signature</translation>
240245
</message>
241246
<message>
242-
<location filename="../src/deb-installer/model/deblistmodel.cpp" line="902"/>
243-
<location filename="../src/deb-installer/model/deblistmodel.cpp" line="908"/>
247+
<location filename="../src/deb-installer/model/deblistmodel.cpp" line="917"/>
248+
<location filename="../src/deb-installer/model/deblistmodel.cpp" line="923"/>
244249
<source>Broken dependencies: %1</source>
245250
<translation>Broken dependencies: %1</translation>
246251
</message>
@@ -250,7 +255,7 @@
250255
<translation>Authentication failed</translation>
251256
</message>
252257
<message>
253-
<location filename="../src/deb-installer/model/deblistmodel.cpp" line="834"/>
258+
<location filename="../src/deb-installer/model/deblistmodel.cpp" line="849"/>
254259
<source>Unmatched package architecture</source>
255260
<translation>Unmatched package architecture</translation>
256261
</message>

0 commit comments

Comments
 (0)