Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
a92bc73
add download language list and download button
catreedle Jan 5, 2026
1f96c26
add confirmation dialog on clicking download language
catreedle Jan 6, 2026
9a37e4a
Fix translation source language display by setting parentSection befo…
catreedle Jan 7, 2026
e832cbb
Use saved translation source language in download confirmation
catreedle Jan 7, 2026
56794c6
localizing source language
catreedle Jan 7, 2026
719b42f
replace {source_language} with actual localize source language in set…
catreedle Jan 7, 2026
ebeb144
add navigation to translation source language from Download screen
catreedle Jan 7, 2026
52de7f9
update selection language title and back button label
catreedle Jan 7, 2026
85d7182
navigate to download screen on confirming translation source language
catreedle Jan 7, 2026
bd0e9a3
remove pop up button from InstallationVC
catreedle Jan 7, 2026
6428490
fix: handling tapping Installation tab bar in Download screen
catreedle Jan 7, 2026
5eff6c5
add DownloadStateManager and handle download in DownloadDataScreen
catreedle Jan 8, 2026
73bfb20
handle download from translation source settings
catreedle Jan 8, 2026
8b44d71
add color for download button dark mode
catreedle Jan 8, 2026
dd86a78
add view for no installed keyboards state
catreedle Jan 8, 2026
d0d0e78
open settings on clicking Install keyboards
catreedle Jan 9, 2026
b0da2e3
Fix tab bar appearance on iOS < 26 (#577)
prince-0408 Jan 8, 2026
e5d10a7
Updated scri.be website link in About tab (#575)
prince-0408 Jan 8, 2026
09ca792
Add changelog entries
andrewtavis Jan 8, 2026
1580304
Merge branch 'main' into download-language-list
andrewtavis Jan 10, 2026
9ee3260
Minor updates of comments in changes
andrewtavis Jan 11, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion Scribe.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -869,6 +869,7 @@
D1E3851B2C977FD200DCE538 /* TranslationData.sqlite in Resources */ = {isa = PBXBuildFile; fileRef = D1E3850F2C977FD100DCE538 /* TranslationData.sqlite */; };
D1F0367227AAE12200CD7921 /* InterfaceVariables.swift in Sources */ = {isa = PBXBuildFile; fileRef = D190B2492741B31F00705659 /* InterfaceVariables.swift */; };
D1F0367327AAE1B400CD7921 /* CommandVariables.swift in Sources */ = {isa = PBXBuildFile; fileRef = D190B2462741B24F00705659 /* CommandVariables.swift */; };
E9202DF02F0FAA0C001590FC /* DownloadStateManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9202DEF2F0FAA0C001590FC /* DownloadStateManager.swift */; };
E93179A42F03AE78002ED334 /* Localizable.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = E93179A32F03AE77002ED334 /* Localizable.xcstrings */; };
E937C5CF2E9FF94E00F94F99 /* TranslationData.sqlite in Resources */ = {isa = PBXBuildFile; fileRef = D1E3850F2C977FD100DCE538 /* TranslationData.sqlite */; };
E96111482F04EC6B001E4F95 /* InstallationDownload.swift in Sources */ = {isa = PBXBuildFile; fileRef = E96111472F04EC62001E4F95 /* InstallationDownload.swift */; };
Expand Down Expand Up @@ -1216,7 +1217,7 @@
D1D8B23D2AE408C50070B817 /* French.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = French.entitlements; sourceTree = "<group>"; };
D1E3850F2C977FD100DCE538 /* TranslationData.sqlite */ = {isa = PBXFileReference; lastKnownFileType = file; path = TranslationData.sqlite; sourceTree = "<group>"; };
D1FF8ED12C6C282500EF50AC /* English.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = English.entitlements; sourceTree = "<group>"; };
E96111472F04EC62001E4F95 /* InstallationDownload.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstallationDownload.swift; sourceTree = "<group>"; };
E9202DEF2F0FAA0C001590FC /* DownloadStateManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DownloadStateManager.swift; sourceTree = "<group>"; };
E93179A32F03AE77002ED334 /* Localizable.xcstrings */ = {isa = PBXFileReference; lastKnownFileType = text.json.xcstrings; name = Localizable.xcstrings; path = i18n/i18n/Localizable.xcstrings; sourceTree = "<group>"; };
E96111472F04EC62001E4F95 /* InstallationDownload.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstallationDownload.swift; sourceTree = "<group>"; };
E9CE5EA72F063D870068A930 /* DownloadDataScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DownloadDataScreen.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -1384,6 +1385,7 @@
isa = PBXGroup;
children = (
E96111472F04EC62001E4F95 /* InstallationDownload.swift */,
E9202DEF2F0FAA0C001590FC /* DownloadStateManager.swift */,
E9CE5EA72F063D870068A930 /* DownloadDataScreen.swift */,
38BD213522D5907F00C6795D /* InstallationVC.swift */,
);
Expand Down Expand Up @@ -2564,6 +2566,7 @@
D171946527AF31770038660B /* Conjugate.swift in Sources */,
147797B52A2CFB490044A53E /* SettingsViewController.swift in Sources */,
1406B7872A2DFCDD001DF45B /* AboutTableData.swift in Sources */,
E9202DF02F0FAA0C001590FC /* DownloadStateManager.swift in Sources */,
E996498A2E98AC6000200F53 /* IDInterfaceVariables.swift in Sources */,
D171940827AECCE50038660B /* PTCommandVariables.swift in Sources */,
3045396D293B9DDC003AE55B /* ToolTipViewDatasource.swift in Sources */,
Expand Down
38 changes: 38 additions & 0 deletions Scribe/Assets.xcassets/Colors/buttonGreen.colorset/Contents.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
{
"colors": [
{
"color": {
"color-space": "srgb",
"components": {
"alpha": "1.000",
"blue": "0x3D",
"green": "0xC5",
"red": "0x9B"
}
},
"idiom": "universal"
},
{
"appearances": [
{
"appearance": "luminosity",
"value": "dark"
}
],
"color": {
"color-space": "srgb",
"components": {
"alpha": "0.260",
"blue": "0x45",
"green": "0xA0",
"red": "0x08"
}
},
"idiom": "universal"
}
],
"info": {
"author": "xcode",
"version": 1
}
}
38 changes: 38 additions & 0 deletions Scribe/Assets.xcassets/Colors/buttonOrange.colorset/Contents.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
{
"colors": [
{
"color": {
"color-space": "srgb",
"components": {
"alpha": "1.000",
"blue": "0x0D",
"green": "0xAD",
"red": "0xFD"
}
},
"idiom": "universal"
},
{
"appearances": [
{
"appearance": "luminosity",
"value": "dark"
}
],
"color": {
"color-space": "srgb",
"components": {
"alpha": "1.000",
"blue": "0x03",
"green": "0x19",
"red": "0x2A"
}
},
"idiom": "universal"
}
],
"info": {
"author": "xcode",
"version": 1
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
{
"colors": [
{
"color": {
"color-space": "srgb",
"components": {
"alpha": "1.000",
"blue": "0x00",
"green": "0x00",
"red": "0x00"
}
},
"idiom": "universal"
},
{
"appearances": [
{
"appearance": "luminosity",
"value": "dark"
}
],
"color": {
"color-space": "srgb",
"components": {
"alpha": "1.000",
"blue": "0x45",
"green": "0xA0",
"red": "0x08"
}
},
"idiom": "universal"
}
],
"info": {
"author": "xcode",
"version": 1
}
}
106 changes: 106 additions & 0 deletions Scribe/Button/DownloadButton.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
// SPDX-License-Identifier: GPL-3.0-or-later

/**
* Download Button for making calls for updated data for each language.
*/

import SwiftUI

enum ButtonState {
case ready
case downloading
case updated
case update

var config: ButtonConfig {
switch self {
case .ready:
return ButtonConfig(
text: NSLocalizedString(
"i18n.app._global.download_data",
value: "Download data",
comment: ""
),
icon: "icloud.and.arrow.down",
backgroundColor: Color("buttonOrange"),
foregroundColor: Color("lightTextDarkCTA")
)
case .downloading:
return ButtonConfig(
text: NSLocalizedString(
"i18n.app.download.menu_ui.download_data.downloading",
value: "Downloading",
comment: ""
),
icon: "arrow.clockwise.circle.fill",
backgroundColor: Color("buttonOrange"),
foregroundColor: Color("lightTextDarkCTA")
)
case .updated:
return ButtonConfig(
text: NSLocalizedString(
"i18n.app.download.menu_ui.download_data.up_to_date",
value: "Up to date",
comment: ""
),
icon: "checkmark.circle.fill",
backgroundColor: Color("buttonGreen"),
foregroundColor: Color("lightTextDarkGreen")
)
case .update:
return ButtonConfig(
text: NSLocalizedString(
"i18n.app.download.menu_ui.update_data",
value: "Update data",
comment: ""
),
icon: "icloud.and.arrow.down",
backgroundColor: Color("buttonOrange"),
foregroundColor: Color("lightTextDarkCTA")
)
}
}
}

struct ButtonConfig {
let text: String
let icon: String
let backgroundColor: Color
let foregroundColor: Color
}

struct DownloadButton: View {
let state: ButtonState
let action: () -> Void
@Environment(\.colorScheme) var colorScheme

var body: some View {
Button(action: action) {
HStack(spacing: 8) {
Text(state.config.text)
if state == .downloading {
ProgressView()
.tint(state.config.foregroundColor)
.scaleEffect(0.8)
} else {
Image(systemName: state.config.icon)
}
}
.font(.system(size: 12, weight: .semibold))
.foregroundColor(state.config.foregroundColor)
.frame(width: 120, height: 20)
.padding(.vertical, 6)
.padding(.horizontal, 10)
.background(state.config.backgroundColor)
.cornerRadius(6)
.overlay(
RoundedRectangle(cornerRadius: 6)
.stroke(
colorScheme == .dark ? state.config.foregroundColor : Color.clear,
lineWidth: 1
)
)
}
.animation(.easeInOut(duration: 0.2), value: state)
}
}
Loading
Loading