feat(wallets): segmented sort control (like the Receive all/z/t toggle)
Replace the sort dropdown with a material::SegmentedControl — Created / Addresses / Txs / Size — matching the Receive tab's address-type toggle, with the asc/desc arrow beside it. Shorten the four sort labels to fit the segments (updated across all eight languages + the back-fill script). The direction arrow is positioned explicitly on the segment's baseline (the control is draw-list based and doesn't advance the layout cursor). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1359,13 +1359,13 @@
|
||||
"wallets_new_label": "Eine neue Wallet erstellen:",
|
||||
"wallets_open": "Öffnen",
|
||||
"wallets_reveal": "Ordner anzeigen",
|
||||
"wallets_sort_addresses": "Adressanzahl",
|
||||
"wallets_sort_addresses": "Adressen",
|
||||
"wallets_sort_asc": "Aufsteigend (ältestes / wenigste / kleinstes zuerst)",
|
||||
"wallets_sort_by": "Sortieren:",
|
||||
"wallets_sort_created": "Erstellungsdatum",
|
||||
"wallets_sort_created": "Erstellt",
|
||||
"wallets_sort_desc": "Absteigend (neuestes / meiste / größtes zuerst)",
|
||||
"wallets_sort_size": "Wallet-Größe",
|
||||
"wallets_sort_txs": "Transaktionsanzahl",
|
||||
"wallets_sort_size": "Größe",
|
||||
"wallets_sort_txs": "Txs",
|
||||
"wallets_title": "Wallets",
|
||||
"warning": "Warnung",
|
||||
"warning_upper": "WARNUNG!",
|
||||
|
||||
@@ -1359,13 +1359,13 @@
|
||||
"wallets_new_label": "Crear una nueva cartera:",
|
||||
"wallets_open": "Abrir",
|
||||
"wallets_reveal": "Mostrar carpeta",
|
||||
"wallets_sort_addresses": "Número de direcciones",
|
||||
"wallets_sort_addresses": "Direcciones",
|
||||
"wallets_sort_asc": "Ascendente (más antiguo / menos / más pequeño primero)",
|
||||
"wallets_sort_by": "Ordenar:",
|
||||
"wallets_sort_created": "Fecha de creación",
|
||||
"wallets_sort_created": "Creado",
|
||||
"wallets_sort_desc": "Descendente (más reciente / más / más grande primero)",
|
||||
"wallets_sort_size": "Tamaño de billetera",
|
||||
"wallets_sort_txs": "Número de transacciones",
|
||||
"wallets_sort_size": "Tamaño",
|
||||
"wallets_sort_txs": "Txs",
|
||||
"wallets_title": "Carteras",
|
||||
"warning": "Advertencia",
|
||||
"warning_upper": "¡ADVERTENCIA!",
|
||||
|
||||
@@ -1359,13 +1359,13 @@
|
||||
"wallets_new_label": "Créer un nouveau portefeuille :",
|
||||
"wallets_open": "Ouvrir",
|
||||
"wallets_reveal": "Afficher le dossier",
|
||||
"wallets_sort_addresses": "Nombre d'adresses",
|
||||
"wallets_sort_addresses": "Adresses",
|
||||
"wallets_sort_asc": "Croissant (plus ancien / moins / plus petit d'abord)",
|
||||
"wallets_sort_by": "Trier :",
|
||||
"wallets_sort_created": "Date de création",
|
||||
"wallets_sort_created": "Créé",
|
||||
"wallets_sort_desc": "Décroissant (plus récent / plus / plus grand d'abord)",
|
||||
"wallets_sort_size": "Taille du portefeuille",
|
||||
"wallets_sort_txs": "Nombre de transactions",
|
||||
"wallets_sort_size": "Taille",
|
||||
"wallets_sort_txs": "Txs",
|
||||
"wallets_title": "Portefeuilles",
|
||||
"warning": "Attention",
|
||||
"warning_upper": "ATTENTION !",
|
||||
|
||||
@@ -1359,13 +1359,13 @@
|
||||
"wallets_new_label": "新しいウォレットを作成:",
|
||||
"wallets_open": "開く",
|
||||
"wallets_reveal": "フォルダを開く",
|
||||
"wallets_sort_addresses": "アドレス数",
|
||||
"wallets_sort_addresses": "アドレス",
|
||||
"wallets_sort_asc": "昇順(古い/少ない/小さい順)",
|
||||
"wallets_sort_by": "並べ替え:",
|
||||
"wallets_sort_created": "作成日",
|
||||
"wallets_sort_created": "作成",
|
||||
"wallets_sort_desc": "降順(新しい/多い/大きい順)",
|
||||
"wallets_sort_size": "ウォレットサイズ",
|
||||
"wallets_sort_txs": "取引数",
|
||||
"wallets_sort_size": "サイズ",
|
||||
"wallets_sort_txs": "取引",
|
||||
"wallets_title": "ウォレット",
|
||||
"warning": "警告",
|
||||
"warning_upper": "警告!",
|
||||
|
||||
@@ -1359,13 +1359,13 @@
|
||||
"wallets_new_label": "새 지갑 만들기:",
|
||||
"wallets_open": "열기",
|
||||
"wallets_reveal": "폴더 열기",
|
||||
"wallets_sort_addresses": "주소 수",
|
||||
"wallets_sort_addresses": "주소",
|
||||
"wallets_sort_asc": "오름차순 (오래된/적은/작은 순)",
|
||||
"wallets_sort_by": "정렬:",
|
||||
"wallets_sort_created": "생성 날짜",
|
||||
"wallets_sort_created": "생성",
|
||||
"wallets_sort_desc": "내림차순 (최신/많은/큰 순)",
|
||||
"wallets_sort_size": "지갑 크기",
|
||||
"wallets_sort_txs": "거래 수",
|
||||
"wallets_sort_size": "크기",
|
||||
"wallets_sort_txs": "거래",
|
||||
"wallets_title": "지갑",
|
||||
"warning": "경고",
|
||||
"warning_upper": "경고!",
|
||||
|
||||
@@ -1359,13 +1359,13 @@
|
||||
"wallets_new_label": "Criar uma nova carteira:",
|
||||
"wallets_open": "Abrir",
|
||||
"wallets_reveal": "Mostrar pasta",
|
||||
"wallets_sort_addresses": "Número de endereços",
|
||||
"wallets_sort_addresses": "Endereços",
|
||||
"wallets_sort_asc": "Crescente (mais antigo / menos / menor primeiro)",
|
||||
"wallets_sort_by": "Ordenar:",
|
||||
"wallets_sort_created": "Data de criação",
|
||||
"wallets_sort_created": "Criado",
|
||||
"wallets_sort_desc": "Decrescente (mais recente / mais / maior primeiro)",
|
||||
"wallets_sort_size": "Tamanho da carteira",
|
||||
"wallets_sort_txs": "Número de transações",
|
||||
"wallets_sort_size": "Tamanho",
|
||||
"wallets_sort_txs": "Txs",
|
||||
"wallets_title": "Carteiras",
|
||||
"warning": "Aviso",
|
||||
"warning_upper": "AVISO!",
|
||||
|
||||
@@ -1359,13 +1359,13 @@
|
||||
"wallets_new_label": "Создать новый кошелёк:",
|
||||
"wallets_open": "Открыть",
|
||||
"wallets_reveal": "Открыть папку",
|
||||
"wallets_sort_addresses": "Число адресов",
|
||||
"wallets_sort_addresses": "Адреса",
|
||||
"wallets_sort_asc": "По возрастанию (сначала старые / меньше / меньший)",
|
||||
"wallets_sort_by": "Сортировка:",
|
||||
"wallets_sort_created": "Дата создания",
|
||||
"wallets_sort_created": "Создан",
|
||||
"wallets_sort_desc": "По убыванию (сначала новые / больше / больший)",
|
||||
"wallets_sort_size": "Размер кошелька",
|
||||
"wallets_sort_txs": "Число транзакций",
|
||||
"wallets_sort_size": "Размер",
|
||||
"wallets_sort_txs": "Транз.",
|
||||
"wallets_title": "Кошельки",
|
||||
"warning": "Предупреждение",
|
||||
"warning_upper": "ПРЕДУПРЕЖДЕНИЕ!",
|
||||
|
||||
@@ -1359,13 +1359,13 @@
|
||||
"wallets_new_label": "创建新钱包:",
|
||||
"wallets_open": "打开",
|
||||
"wallets_reveal": "打开文件夹",
|
||||
"wallets_sort_addresses": "地址数量",
|
||||
"wallets_sort_addresses": "地址",
|
||||
"wallets_sort_asc": "升序(最早/最少/最小优先)",
|
||||
"wallets_sort_by": "排序:",
|
||||
"wallets_sort_created": "创建日期",
|
||||
"wallets_sort_created": "创建",
|
||||
"wallets_sort_desc": "降序(最新/最多/最大优先)",
|
||||
"wallets_sort_size": "钱包大小",
|
||||
"wallets_sort_txs": "交易数量",
|
||||
"wallets_sort_size": "大小",
|
||||
"wallets_sort_txs": "交易",
|
||||
"wallets_title": "钱包",
|
||||
"warning": "警告",
|
||||
"warning_upper": "警告!",
|
||||
|
||||
@@ -2165,20 +2165,20 @@ TRANSLATIONS = {
|
||||
"ru": "Сортировка:", "zh": "排序:", "ja": "並べ替え:", "ko": "정렬:"
|
||||
},
|
||||
"wallets_sort_created": {
|
||||
"es": "Fecha de creación", "de": "Erstellungsdatum", "fr": "Date de création", "pt": "Data de criação",
|
||||
"ru": "Дата создания", "zh": "创建日期", "ja": "作成日", "ko": "생성 날짜"
|
||||
"es": "Creado", "de": "Erstellt", "fr": "Créé", "pt": "Criado",
|
||||
"ru": "Создан", "zh": "创建", "ja": "作成", "ko": "생성"
|
||||
},
|
||||
"wallets_sort_addresses": {
|
||||
"es": "Número de direcciones", "de": "Adressanzahl", "fr": "Nombre d'adresses", "pt": "Número de endereços",
|
||||
"ru": "Число адресов", "zh": "地址数量", "ja": "アドレス数", "ko": "주소 수"
|
||||
"es": "Direcciones", "de": "Adressen", "fr": "Adresses", "pt": "Endereços",
|
||||
"ru": "Адреса", "zh": "地址", "ja": "アドレス", "ko": "주소"
|
||||
},
|
||||
"wallets_sort_txs": {
|
||||
"es": "Número de transacciones", "de": "Transaktionsanzahl", "fr": "Nombre de transactions",
|
||||
"pt": "Número de transações", "ru": "Число транзакций", "zh": "交易数量", "ja": "取引数", "ko": "거래 수"
|
||||
"es": "Txs", "de": "Txs", "fr": "Txs", "pt": "Txs",
|
||||
"ru": "Транз.", "zh": "交易", "ja": "取引", "ko": "거래"
|
||||
},
|
||||
"wallets_sort_size": {
|
||||
"es": "Tamaño de billetera", "de": "Wallet-Größe", "fr": "Taille du portefeuille", "pt": "Tamanho da carteira",
|
||||
"ru": "Размер кошелька", "zh": "钱包大小", "ja": "ウォレットサイズ", "ko": "지갑 크기"
|
||||
"es": "Tamaño", "de": "Größe", "fr": "Taille", "pt": "Tamanho",
|
||||
"ru": "Размер", "zh": "大小", "ja": "サイズ", "ko": "크기"
|
||||
},
|
||||
"wallets_sort_asc": {
|
||||
"es": "Ascendente (más antiguo / menos / más pequeño primero)",
|
||||
|
||||
@@ -120,19 +120,29 @@ public:
|
||||
return idx < probeSnap.size() ? probeSnap[idx] : ProbeResult{};
|
||||
};
|
||||
|
||||
// ---- Sort controls: pick the key; the arrow flips ascending/descending -----------------
|
||||
// ---- Sort controls: a segmented key picker + an arrow that flips ascending/descending ----
|
||||
{
|
||||
ImGui::AlignTextToFramePadding();
|
||||
Type().textColored(TypeStyle::Caption, OnSurfaceMedium(), TR("wallets_sort_by"));
|
||||
ImGui::SameLine();
|
||||
const char* items[] = { TR("wallets_sort_created"), TR("wallets_sort_addresses"),
|
||||
TR("wallets_sort_txs"), TR("wallets_sort_size") };
|
||||
ImGui::SetNextItemWidth(190.0f * dp);
|
||||
ImGui::Combo("##walletSort", &s_sortMode, items, IM_ARRAYSIZE(items));
|
||||
ImGui::SameLine();
|
||||
const float dbH = ImGui::GetFrameHeight();
|
||||
ImFont* segFont = Type().caption();
|
||||
const char* segLabels[] = { TR("wallets_sort_created"), TR("wallets_sort_addresses"),
|
||||
TR("wallets_sort_txs"), TR("wallets_sort_size") };
|
||||
float maxLW = 0.0f;
|
||||
for (const char* l : segLabels)
|
||||
maxLW = std::max(maxLW, segFont->CalcTextSizeA(segFont->LegacySize, FLT_MAX, 0, l).x);
|
||||
const float segH = ImGui::GetFrameHeight();
|
||||
const float segTW = (maxLW + 20.0f * dp) * 4.0f;
|
||||
const ImVec2 segOrigin = ImGui::GetCursorScreenPos();
|
||||
const int clk = material::SegmentedControl(ImGui::GetWindowDrawList(), segOrigin, segTW, segH,
|
||||
segLabels, 4, s_sortMode, segFont, "##walletSortSeg", dp);
|
||||
if (clk >= 0) s_sortMode = clk;
|
||||
// SegmentedControl is draw-list based and doesn't move the layout cursor, so place the
|
||||
// direction arrow explicitly just to its right on the same baseline (a real item advances
|
||||
// the cursor past this row for the list below).
|
||||
ImGui::SetCursorScreenPos(ImVec2(segOrigin.x + segTW + Layout::spacingSm(), segOrigin.y));
|
||||
if (StyledButton(s_sortDesc ? ICON_MD_ARROW_DOWNWARD : ICON_MD_ARROW_UPWARD,
|
||||
ImVec2(dbH, dbH), Type().iconSmall()))
|
||||
ImVec2(segH, segH), Type().iconSmall()))
|
||||
s_sortDesc = !s_sortDesc;
|
||||
if (ImGui::IsItemHovered()) Tooltip("%s", TR(s_sortDesc ? "wallets_sort_desc" : "wallets_sort_asc"));
|
||||
}
|
||||
|
||||
@@ -262,10 +262,10 @@ void I18n::loadBuiltinEnglish()
|
||||
strings_["wallets_col_keys"] = "keys";
|
||||
strings_["wallets_created"] = "created";
|
||||
strings_["wallets_sort_by"] = "Sort:";
|
||||
strings_["wallets_sort_created"] = "Date created";
|
||||
strings_["wallets_sort_addresses"] = "Address count";
|
||||
strings_["wallets_sort_txs"] = "Transaction count";
|
||||
strings_["wallets_sort_size"] = "Wallet size";
|
||||
strings_["wallets_sort_created"] = "Created";
|
||||
strings_["wallets_sort_addresses"] = "Addresses";
|
||||
strings_["wallets_sort_txs"] = "Txs";
|
||||
strings_["wallets_sort_size"] = "Size";
|
||||
strings_["wallets_sort_asc"] = "Ascending (oldest / fewest / smallest first)";
|
||||
strings_["wallets_sort_desc"] = "Descending (newest / most / largest first)";
|
||||
strings_["wallets_col_balance"] = "Balance";
|
||||
|
||||
Reference in New Issue
Block a user