Move Elsewhen into Omarchy as omarchy.elsewhen (#13429)
* Move Elsewhen into Omarchy as omarchy.elsewhen The world clock ships in the shell tree instead of its own package. A migration renames existing bar entries with their settings and removes the retired package. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Remove Elsewhen's shelved Earth row, overlap band and sky tint Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Tidy Elsewhen's models, data helper and docs, and drop currency Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Restructure Elsewhen's panel and globe on the shared shell components Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Show Elsewhen's bar globe upright Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Use the shared city search for Elsewhen's globe jump bar Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Keep legacy Elsewhen entries single and retry offline geocodes Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Fetch Elsewhen's weather with curl instead of a Python helper Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
5c7cef1e78
commit
e7218e36f2
37 files changed
+6780
-155
No files matched your search
@@ -0,0 +1,86 @@
|
||||
import QtQuick
|
||||
import qs.Commons
|
||||
import qs.Ui
|
||||
|
||||
// The matches for a CitySearch; hosts that overlay results place this themselves.
|
||||
Column {
|
||||
id: list
|
||||
|
||||
required property var citySearch
|
||||
|
||||
spacing: Style.space(2)
|
||||
|
||||
Repeater {
|
||||
model: list.citySearch.matches
|
||||
|
||||
CursorSurface {
|
||||
id: match
|
||||
required property var modelData
|
||||
required property int index
|
||||
|
||||
width: parent.width
|
||||
implicitHeight: Style.spacing.popupRowHeight
|
||||
foreground: list.citySearch.foreground
|
||||
hasCursor: list.citySearch.selectedIndex === index
|
||||
|
||||
Text {
|
||||
anchors.left: parent.left
|
||||
anchors.leftMargin: Style.spacing.xl
|
||||
anchors.right: matchZone.left
|
||||
anchors.rightMargin: Style.spacing.lg
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
textFormat: Text.PlainText
|
||||
text: match.modelData.label
|
||||
color: list.citySearch.foreground
|
||||
font.family: list.citySearch.fontFamily
|
||||
font.pixelSize: list.citySearch.fontSize
|
||||
elide: Text.ElideRight
|
||||
}
|
||||
|
||||
// Two cities in one zone differ by name, two zones with one name by offset.
|
||||
Row {
|
||||
id: matchZone
|
||||
anchors.right: parent.right
|
||||
anchors.rightMargin: Style.spacing.xl
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
spacing: Style.spacing.md
|
||||
|
||||
Caption {
|
||||
text: match.modelData.value
|
||||
color: list.citySearch.fainter
|
||||
}
|
||||
|
||||
Caption {
|
||||
text: list.citySearch.offsetLabel(match.modelData.value)
|
||||
visible: text !== ""
|
||||
}
|
||||
}
|
||||
|
||||
// Only movement moves the selection, so a resting pointer cannot
|
||||
// steal it from the arrow keys as the list rebuilds.
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
hoverEnabled: true
|
||||
cursorShape: Qt.PointingHandCursor
|
||||
onPositionChanged: list.citySearch.selectedIndex = match.index
|
||||
onClicked: list.citySearch.pick(match.modelData)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Caption {
|
||||
visible: list.citySearch.matches.length === 0
|
||||
width: parent.width
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
topPadding: Style.spacing.md
|
||||
text: list.citySearch.loading ? list.citySearch.loadingText : "No matches"
|
||||
color: list.citySearch.fainter
|
||||
}
|
||||
|
||||
component Caption: Text {
|
||||
textFormat: Text.PlainText
|
||||
color: list.citySearch.dim
|
||||
font.family: list.citySearch.fontFamily
|
||||
font.pixelSize: Style.font.caption
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user