[Swift] 10 自製ヘルスケアapp / DatePickerからの日付取得

DatePickerから日付を取得しつつ画面遷移するところでうまくいかなくなったので、段階を踏んで進めていくことにしました。

まずは日付の取得です。画面に取得日を仮表示させました。

次は画面遷移になります。

このコードはGitでtest branchに分岐させており、完成したらmainと合体させる予定です。Gitの練習も兼ねています。

C++ – Java – Pythonという進化の系譜とは異なる言語なので違和感が強いままですが、先を急がずだらだら進めていきます。

import SwiftUI
import CoreData

struct ContentView: View {
    @State private var selectedDate_from = Date()
    @State private var selectedDate_to = Date()
    @State private var selection = 1
    @State private var shouldShowSecondView_HR: Bool = false
    @State private var shouldShowSecondView_HRV: Bool = false
    
    var body: some View {
        NavigationView {
            VStack {
                Text("Health Manager Test")
                    .foregroundColor(Color(red:70/255,green:14/255,blue:68/255))
                    .font(.system(size: 32))
                    .padding()
                
                DatePicker("From", selection: $selectedDate_from, displayedComponents: .date)
                    .frame(width: 180, height: 50)
                    .scaleEffect(x: 1.5, y: 1.5)
                    .font(.system(size: 20))

                
                DatePicker("To", selection: $selectedDate_to, displayedComponents: .date)
                    .frame(width: 180, height: 50)
                    .scaleEffect(x: 1.5, y: 1.5)
                    .font(.system(size: 20))
                    .padding()
                
                Menu {
                    Picker(selection: $selection, label: Text("")) {
                        Text("グラフ").tag(1)
                        Text("リスト").tag(2)
                    }
                } label: {
                    Text("データタイプ")
                        .font(.system(size: 20))
                }
                .padding()
                
                Text("Date Picker From \(selectedDate_from)")
                    .font(.system(size: 20))
                
                Text("Date Picker To \(selectedDate_to)")
                    .font(.system(size: 20))
                
                Text("データタイプ \(selection)")
                    .font(.system(size: 20))
 
                Button {
                    shouldShowSecondView_HR = true
                } label: {
                    Text("心拍数")
                        .foregroundColor(Color.white)
                }
                    .frame(width: 200, height: 100)
                    .background(Color(red:61/255,green:110/255,blue:218/255))
                    .font(.system(size: 24))
                    .cornerRadius(24)
                    .padding()

                Button {
                    shouldShowSecondView_HRV = true
                } label: {
                    Text("心拍変動")
                        .foregroundColor(Color.white)
                }
                    .frame(width: 200, height: 100)
                    .background(Color(red:61/255,green:110/255,blue:218/255))
                    .font(.system(size: 24))
                    .cornerRadius(24)
                
                Spacer()
                
            }
        }
    }
}

struct ContentView_Previews: PreviewProvider {
   static var previews: some View {
       ContentView()
    }
}

[C++] 50 FLTK : findコマンド生成アプリ/ 濁音かなの判定

[M1 Mac, Monterey 12.3, FLTK 1.3.8]

macOSではfindコマンドの検索語に濁音・半濁音のかなを使えないため、これらを判定する関数を実装しました。イテレータを使えるケースですが、今回は不使用です。

正規表現が使えないようなので地道に配列を作成しました。検出するとダイアログが表示されます。

std::vector<string> dakuon = {"が","ぎ","ぐ","げ","ご","ざ","じ","ず","ぜ","ぞ","だ","ぢ","づ","で","ど","ば","び","ぶ","べ","ぼ" \
                                "ガ","ギ","グ","ゲ","ゴ","ザ","ジ","ズ","ゼ","ゾ","ダ","ヂ","ヅ","デ","ド","バ","ビ","ブ","ベ","ボ" \
                                "ぱ","ぴ","ぷ","ぺ","ぽ","パ","ピ","プ","ペ","ポ"};

bool dakuon_detection(const char* name_char) {
    string name_str = string(name_char);

    for (size_t i = 0; i < dakuon.size(); ++i) {
        if (name_str.find(dakuon[i]) != std::string::npos) {
            const char* msg = "検索不可\n濁音・半濁音の平仮名・片仮名が\n含まれています";
            dlg = new modalDialog(400, 200, "Attention", msg);
            dlg->hotspot(window);
            int x = dlg->x_root();
            int y = dlg->y_root();
            dlg->resize(x+20,y+120,250,150);
            dlg->set_modal();
            dlg->show();

            cout << msg << endl;

            return true;
        }
    }
    return false;
}

bool judge = dakuon_detection(name_char);

if (judge){
    <濁音かな検出時の処理>
}else{
    <濁音かな非検出時の処理>
}