Skip to content

Commit 68add4d

Browse files
authored
Merge pull request #735 from Astinator/main
feat(arch-updater): v2.0.0 - new settings UI and launcher updates search
2 parents 2f64828 + 49e3cd1 commit 68add4d

12 files changed

Lines changed: 1000 additions & 477 deletions

File tree

arch-updater/BarWidget.qml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -205,15 +205,15 @@ Item {
205205

206206
// Handle actions
207207
if (action === "refresh") {
208-
Logger.d("Update Widget", "Refreshing from context menu...")
208+
Logger.d("Arch Updater", "Refreshing from context menu...")
209209
root.pluginApi.mainInstance.refresh() // Refresh available updates
210210
}
211211
else if (action === "update") {
212-
Logger.d("Update Widget", "Updating from context menu...")
212+
Logger.d("Arch Updater", "Updating from context menu...")
213213
root.pluginApi.mainInstance.update() // Update
214214
}
215215
else if (action === "settings") {
216-
Logger.d("Update Widget", "Opening settings from context menu...")
216+
Logger.d("Arch Updater", "Opening settings from context menu...")
217217
BarService.openPluginSettings(screen, pluginApi.manifest) // Open plugin settings
218218
}
219219
}
@@ -228,15 +228,15 @@ Item {
228228

229229
onClicked: (mouse) => {
230230
if (mouse.button === Qt.LeftButton) {
231-
Logger.d("Update Widget", "Opening panel from bar...")
231+
Logger.d("Arch Updater", "Opening panel from bar...")
232232
pluginApi.openPanel(root.screen, root) // Open panel
233233
}
234234
else if (mouse.button === Qt.RightButton) {
235-
Logger.d("Update Widget", "Opening context menu from bar...")
235+
Logger.d("Arch Updater", "Opening context menu from bar...")
236236
PanelService.showContextMenu(contextMenu, root, screen) // Open context menu
237237
}
238238
else if (mouse.button === Qt.MiddleButton) {
239-
Logger.d("Update Widget", "Refreshing from bar...")
239+
Logger.d("Arch Updater", "Refreshing from bar...")
240240
root.pluginApi.mainInstance.refresh() // Refresh available updates
241241
}
242242
}

arch-updater/DesktopWidget.qml

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -96,15 +96,15 @@ DraggableDesktopWidget {
9696
Layout.preferredWidth: 0.4 * root.tableContentWidth
9797
text: modelData.name
9898
pointSize: Style.fontSizeM
99-
color: modelData.isFlatpak ? Color.mTertiary : Color.mSecondary
99+
color: (modelData.source == "flatpak") ? Color.mTertiary : (modelData.source == "system") ? Color.mSecondary : Color.mPrimary
100100
elide: Text.ElideRight
101101
maximumLineCount: 1
102102
}
103103
NText { // Old Version
104104
Layout.preferredWidth: 0.3 * root.tableContentWidth
105105
text: modelData.oldVer
106106
pointSize: Style.fontSizeM
107-
color: modelData.isFlatpak ? Color.mTertiary : Color.mSecondary
107+
color: (modelData.source == "flatpak") ? Color.mTertiary : (modelData.source == "system") ? Color.mSecondary : Color.mPrimary
108108
horizontalAlignment: Text.AlignHCenter
109109
elide: Text.ElideRight
110110
maximumLineCount: 1
@@ -113,8 +113,8 @@ DraggableDesktopWidget {
113113
Layout.preferredWidth: 0.3 * root.tableContentWidth
114114
text: modelData.newVer
115115
pointSize: Style.fontSizeM
116-
font.weight: (pluginApi.pluginSettings.boldVer ?? pluginApi.manifest.metadata.defaultSettings.boldVer) ? Font.Bold : Font.Normal
117-
color: modelData.isFlatpak ? Color.mTertiary : Color.mSecondary
116+
font.weight: (pluginApi.pluginSettings.boldVerDesktop ?? pluginApi.manifest.metadata.defaultSettings.boldVerDesktop) ? Font.Bold : Font.Normal
117+
color: (modelData.source == "flatpak") ? Color.mTertiary : (modelData.source == "system") ? Color.mSecondary : Color.mPrimary
118118
horizontalAlignment: Text.AlignHCenter
119119
elide: Text.ElideRight
120120
maximumLineCount: 1
@@ -162,16 +162,16 @@ DraggableDesktopWidget {
162162

163163
onClicked: (mouse) => {
164164
if (mouse.button === Qt.LeftButton) {
165-
Logger.d("Update Widget", "Refreshing from desktop widget...")
166-
mouseArea.visible = false
165+
Logger.d("Arch Updater", "Refreshing from desktop widget...")
166+
hoverTip.visible = false
167167
root.pluginApi.mainInstance.refresh()
168168
}
169169
else if (mouse.button === Qt.MiddleButton) {
170-
Logger.d("Update Widget", "Updating from desktop widget...")
170+
Logger.d("Arch Updater", "Updating from desktop widget...")
171171
root.pluginApi.mainInstance.update()
172172
}
173173
else if (mouse.button === Qt.RightButton) {
174-
Logger.d("Update Widget", "Opening settings from desktop widget...")
174+
Logger.d("Arch Updater", "Opening settings from desktop widget...")
175175
BarService.openPluginSettings(screen, pluginApi.manifest)
176176
}
177177
}
@@ -182,21 +182,21 @@ DraggableDesktopWidget {
182182
running: false
183183
repeat: false
184184
onTriggered: {
185-
Logger.d("Update Widget", "Showing hover tip...")
185+
Logger.d("Arch Updater", "Showing hover tip...")
186186
hoverTip.opacity = 0.85
187187
hoverTip.visible = true
188188
}
189189
}
190190

191191
onEntered: {
192192
if (pluginApi.pluginSettings.desktopTip) {
193-
Logger.d("Update Widget", "Starting hover tip timer...")
193+
Logger.d("Arch Updater", "Starting hover tip timer...")
194194
hoverTimer.restart()
195195
}
196196
}
197197

198198
onExited: {
199-
Logger.d("Update Widget", "Hover tip timer stopped!")
199+
Logger.d("Arch Updater", "Hover tip timer stopped!")
200200
hoverTimer.stop()
201201
hoverTip.opacity = 0
202202
hoverTip.visible = false

arch-updater/LauncherProvider.qml

Lines changed: 79 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,32 @@ Item {
77
// Required properties
88
property var pluginApi: null
99
property var launcher: null
10-
property string name: "Update Widget"
10+
property string name: "Arch Updater"
11+
12+
function handleCommand(searchText) {
13+
return searchText.startsWith(">au-search")
14+
}
15+
16+
function getURL(source, id) {
17+
// Returns the url for the package
18+
switch(source) {
19+
case "system":
20+
return "https://archlinux.org/packages/extra/x86_64/" + id
21+
case "aur":
22+
return "https://aur.archlinux.org/packages/" + id
23+
case "flatpak":
24+
return "https://flathub.org/en/apps/" + id
25+
default:
26+
return ""
27+
}
28+
}
1129

1230
// Return available commands when user types ">"
1331
function commands() {
1432
return [
1533
{
1634
"name": ">au-refresh",
17-
"description": pluginApi.tr("launcher.refreshDesc"),
35+
"description": pluginApi.tr("launcher.refresh"),
1836
"icon": "refresh",
1937
"isTablerIcon": true,
2038
"onActivate": function() {
@@ -23,13 +41,71 @@ Item {
2341
},
2442
{
2543
"name": ">au-update",
26-
"description": pluginApi.tr("launcher.updateDesc"),
44+
"description": pluginApi.tr("launcher.update"),
2745
"icon": "arrow-big-down-lines",
2846
"isTablerIcon": true,
2947
"onActivate": function() {
3048
root.pluginApi.mainInstance.update()
3149
}
50+
},
51+
{
52+
"name": ">au-search",
53+
"description": pluginApi.tr("launcher.search"),
54+
"icon": "search",
55+
"isTablerIcon": true,
56+
"onActivate": function() {
57+
launcher.setSearchText(">au-search ")
58+
}
3259
}
3360
]
3461
}
62+
63+
// Get search results
64+
function getResults(searchText) {
65+
if (!searchText.startsWith(">au-search")) {
66+
return []
67+
}
68+
69+
var query = searchText.slice(11).trim() // Remove ">au-search"
70+
var updates = root.pluginApi?.mainInstance?.updates
71+
var formatted = []
72+
73+
for (const i in updates) {
74+
// Sets the icon for each entry
75+
switch(updates[i].source) {
76+
case "system":
77+
var icon = pluginApi.pluginDir + "/icons/arch.svg"
78+
var isTabler = false
79+
break
80+
case "aur":
81+
var icon = pluginApi.pluginDir + "/icons/aur.svg"
82+
var isTabler = false
83+
break
84+
case "flatpak":
85+
var icon = pluginApi.pluginDir + "/icons/flatpak.svg"
86+
var isTabler = false
87+
break
88+
default:
89+
var icon = "package"
90+
var isTabler = true
91+
}
92+
93+
// Formats the entry
94+
formatted.push({
95+
"name": updates[i].name,
96+
"description": updates[i].oldVer + " -> " + updates[i].newVer,
97+
"icon": icon,
98+
"isTablerIcon": isTabler,
99+
"onActivate": function() {
100+
// Open url to the package
101+
var url = getURL(updates[i].source, updates[i].id)
102+
Logger.i("Arch Updater", "Opening " + url)
103+
Qt.openUrlExternally(url)
104+
}
105+
})
106+
}
107+
108+
// Return formatted results
109+
return formatted
110+
}
35111
}

0 commit comments

Comments
 (0)