Skip to content

Commit db9927c

Browse files
committed
画像添付機能のリニューアル
おまけ: PushStringRowのdictがtupleになった
1 parent 5120a6a commit db9927c

7 files changed

+365
-67
lines changed

iMast.xcodeproj/project.pbxproj

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,8 @@
100100
CEE2542A2004B802005FEB6F /* MastodonApplication.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEE254292004B802005FEB6F /* MastodonApplication.swift */; };
101101
CEE2542E2004FA76005FEB6F /* MastodonNotification.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEE2542D2004FA76005FEB6F /* MastodonNotification.swift */; };
102102
CEE254302005C0EB005FEB6F /* WebSocketManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEE2542F2005C0EB005FEB6F /* WebSocketManager.swift */; };
103+
CEE2E7A1208B48E60020F86F /* NewPostMediaListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEE2E79F208B48E60020F86F /* NewPostMediaListViewController.swift */; };
104+
CEE2E7A2208B48E60020F86F /* NewPostMediaListViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = CEE2E7A0208B48E60020F86F /* NewPostMediaListViewController.xib */; };
103105
CEE357201FF5D7D300675DFC /* WebSocketWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEE3571F1FF5D7D300675DFC /* WebSocketWrapper.swift */; };
104106
CEE357221FF5E0B300675DFC /* EventListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEE357211FF5E0B300675DFC /* EventListener.swift */; };
105107
CEE357231FF6067F00675DFC /* EventListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEE357211FF5E0B300675DFC /* EventListener.swift */; };
@@ -250,6 +252,8 @@
250252
CEE254292004B802005FEB6F /* MastodonApplication.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonApplication.swift; sourceTree = "<group>"; };
251253
CEE2542D2004FA76005FEB6F /* MastodonNotification.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonNotification.swift; sourceTree = "<group>"; };
252254
CEE2542F2005C0EB005FEB6F /* WebSocketManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebSocketManager.swift; sourceTree = "<group>"; };
255+
CEE2E79F208B48E60020F86F /* NewPostMediaListViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NewPostMediaListViewController.swift; sourceTree = "<group>"; };
256+
CEE2E7A0208B48E60020F86F /* NewPostMediaListViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = NewPostMediaListViewController.xib; sourceTree = "<group>"; };
253257
CEE3571F1FF5D7D300675DFC /* WebSocketWrapper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebSocketWrapper.swift; sourceTree = "<group>"; };
254258
CEE357211FF5E0B300675DFC /* EventListener.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EventListener.swift; sourceTree = "<group>"; };
255259
CEE357251FF6410600675DFC /* OtherMenuSettingsTableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OtherMenuSettingsTableViewController.swift; sourceTree = "<group>"; };
@@ -483,6 +487,8 @@
483487
2A533F6E1ECCFE940062630F /* NewPost.storyboard */,
484488
2A492A7E1EB3584500F81E73 /* NewPostViewController.swift */,
485489
2AFC9FDA1EB5478900888A8B /* NewPostSetImageViewController.swift */,
490+
CEE2E79F208B48E60020F86F /* NewPostMediaListViewController.swift */,
491+
CEE2E7A0208B48E60020F86F /* NewPostMediaListViewController.xib */,
486492
);
487493
path = NewPost;
488494
sourceTree = "<group>";
@@ -742,6 +748,7 @@
742748
CE9B1AA21F9DA74D0044341A /* ProfileCard.storyboard in Resources */,
743749
2A533F6F1ECCFE940062630F /* NewPost.storyboard in Resources */,
744750
CEBB33DE1F2D8D6F00E4D3AB /* NotificationTab.storyboard in Resources */,
751+
CEE2E7A2208B48E60020F86F /* NewPostMediaListViewController.xib in Resources */,
745752
CE51AC0D1F42D73900E43607 /* TimeLineReadMoreCell.xib in Resources */,
746753
2AF352251EAB9C5600777C2E /* LaunchScreen.storyboard in Resources */,
747754
2AF352221EAB9C5600777C2E /* Assets.xcassets in Resources */,
@@ -1047,6 +1054,7 @@
10471054
CEE2542E2004FA76005FEB6F /* MastodonNotification.swift in Sources */,
10481055
CE1002C820065DA30041B636 /* MastodonSearchResult.swift in Sources */,
10491056
CEE2542A2004B802005FEB6F /* MastodonApplication.swift in Sources */,
1057+
CEE2E7A1208B48E60020F86F /* NewPostMediaListViewController.swift in Sources */,
10501058
CEBB33E01F2E119D00E4D3AB /* NotificationTableViewController.swift in Sources */,
10511059
2A66E7F81EAE27A000735081 /* AddAccountLoginViewController.swift in Sources */,
10521060
CEDEDC9E2007DEAF00CD2784 /* MastodonAccountRelationship.swift in Sources */,

iMast/EurekaExtension.swift

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,13 @@
99
import Eureka
1010

1111
final class PushStringRow: _PushRow<PushSelectorCell<String>>, RowType {
12-
func userDefaultsConnect(_ key:DefaultsKey<String>, map: [String: String], userDefaults: UserDefaults = UserDefaultsAppGroup) {
13-
self.options = map.keys.map { (name) -> String in
14-
return map[name]!
15-
}
12+
func userDefaultsConnect<T: Equatable>(_ key:DefaultsKey<T>, map: [(key: T, value: String)], userDefaults: UserDefaults = UserDefaultsAppGroup) {
13+
self.options = map.map { $0.value }
1614
let userDefaultsValue = Defaults[key]
17-
self.value = map[userDefaultsValue] ?? userDefaultsValue
15+
self.value = map.filter { arg -> Bool in
16+
let (key, _) = arg
17+
return key == userDefaultsValue
18+
}.first?.value ?? "\(userDefaultsValue)"
1819
self.cellUpdate { (cell, row) in
1920
map.forEach({ (key_, value) in
2021
if(value == row.value) {

iMast/NewPost/NewPost.storyboard

Lines changed: 42 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
<?xml version="1.0" encoding="UTF-8"?>
2-
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13529" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="6D6-or-cv4">
2+
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13771" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="6D6-or-cv4">
33
<device id="retina5_9" orientation="landscape">
44
<adaptation id="fullscreen"/>
55
</device>
66
<dependencies>
77
<deployment identifier="iOS"/>
8-
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13527"/>
8+
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13772"/>
99
<capability name="Constraints to layout margins" minToolsVersion="6.0"/>
1010
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
1111
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
@@ -19,26 +19,41 @@
1919
<rect key="frame" x="0.0" y="0.0" width="812" height="375"/>
2020
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
2121
<subviews>
22-
<imageView userInteractionEnabled="NO" alpha="0.5" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="fsf-uM-oWf">
22+
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" translatesAutoresizingMaskIntoConstraints="NO" id="m1w-xO-o8W">
2323
<rect key="frame" x="44" y="32" width="724" height="246"/>
24-
</imageView>
25-
<textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="0I0-hy-lHq">
26-
<rect key="frame" x="44" y="32" width="724" height="246"/>
27-
<fontDescription key="fontDescription" type="system" pointSize="14"/>
28-
<textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
29-
</textView>
30-
<toolbar opaque="NO" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" ambiguous="YES" translatesAutoresizingMaskIntoConstraints="NO" id="098-t9-MpK">
31-
<rect key="frame" x="44" y="278" width="724" height="44"/>
24+
<subviews>
25+
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="CW説明文" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="8NC-Ka-Jwd">
26+
<rect key="frame" x="0.0" y="0.0" width="724" height="30"/>
27+
<constraints>
28+
<constraint firstAttribute="height" constant="30" id="YrX-KY-8P2"/>
29+
</constraints>
30+
<nil key="textColor"/>
31+
<fontDescription key="fontDescription" type="system" pointSize="14"/>
32+
<textInputTraits key="textInputTraits"/>
33+
</textField>
34+
<textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="0I0-hy-lHq">
35+
<rect key="frame" x="0.0" y="30" width="724" height="216"/>
36+
<fontDescription key="fontDescription" type="system" pointSize="14"/>
37+
<textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
38+
</textView>
39+
</subviews>
40+
</stackView>
41+
<toolbar opaque="NO" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="098-t9-MpK">
42+
<rect key="frame" x="0.0" y="278" width="812" height="44"/>
3243
<constraints>
3344
<constraint firstAttribute="height" constant="44" id="4ob-a4-G1n"/>
3445
</constraints>
3546
<items>
36-
<barButtonItem systemItem="camera" id="xmb-d1-u6i">
37-
<connections>
38-
<segue destination="94k-R7-Uju" kind="show" id="Bdj-v3-Flc">
39-
<nil key="action"/>
40-
</segue>
41-
</connections>
47+
<barButtonItem style="plain" id="VYb-zD-0Bt">
48+
<button key="customView" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="9zg-4V-9GJ">
49+
<rect key="frame" x="64" y="6" width="48" height="32"/>
50+
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
51+
<fontDescription key="fontDescription" type="system" pointSize="18"/>
52+
<state key="normal" title=" 0" image="Camera"/>
53+
<connections>
54+
<action selector="imageSelectButtonTapped:" destination="6D6-or-cv4" eventType="touchUpInside" id="9Z1-wj-9dm"/>
55+
</connections>
56+
</button>
4257
</barButtonItem>
4358
<barButtonItem title="NSFW" id="PDD-NQ-dha">
4459
<connections>
@@ -68,17 +83,8 @@
6883
</barButtonItem>
6984
</items>
7085
</toolbar>
71-
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="CW説明文" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="8NC-Ka-Jwd">
72-
<rect key="frame" x="44" y="32" width="724" height="30"/>
73-
<constraints>
74-
<constraint firstAttribute="height" constant="30" id="YrX-KY-8P2"/>
75-
</constraints>
76-
<nil key="textColor"/>
77-
<fontDescription key="fontDescription" type="system" pointSize="14"/>
78-
<textInputTraits key="textInputTraits"/>
79-
</textField>
8086
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" textAlignment="right" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="3JX-ia-k2a">
81-
<rect key="frame" x="52" y="236.66666666666666" width="704" height="33.333333333333343"/>
87+
<rect key="frame" x="52" y="236.33333333333334" width="708" height="33.666666666666657"/>
8288
<string key="text">rin@mastodon.example.com
8389
返信先: @uzuki: 凛ちゃんとデートです♪</string>
8490
<fontDescription key="fontDescription" name=".AppleSystemUIFont" family=".AppleSystemUIFont" pointSize="14"/>
@@ -88,23 +94,16 @@
8894
</subviews>
8995
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
9096
<constraints>
91-
<constraint firstItem="fsf-uM-oWf" firstAttribute="top" secondItem="cLF-D1-GNS" secondAttribute="top" id="6ql-hQ-xgj"/>
92-
<constraint firstItem="098-t9-MpK" firstAttribute="top" secondItem="0I0-hy-lHq" secondAttribute="bottom" id="F22-Io-OTS"/>
93-
<constraint firstItem="098-t9-MpK" firstAttribute="top" secondItem="3JX-ia-k2a" secondAttribute="bottom" constant="8" id="I0J-hg-8Hq"/>
94-
<constraint firstItem="8NC-Ka-Jwd" firstAttribute="leading" secondItem="cLF-D1-GNS" secondAttribute="leading" id="ICi-UX-tpr"/>
95-
<constraint firstItem="0I0-hy-lHq" firstAttribute="top" secondItem="cLF-D1-GNS" secondAttribute="top" id="MpX-2G-dFo"/>
96-
<constraint firstItem="0I0-hy-lHq" firstAttribute="leading" secondItem="cLF-D1-GNS" secondAttribute="leading" id="PcE-lX-f1W"/>
97-
<constraint firstItem="8NC-Ka-Jwd" firstAttribute="top" secondItem="cLF-D1-GNS" secondAttribute="top" id="ZIM-ou-NgY"/>
98-
<constraint firstAttribute="trailingMargin" secondItem="3JX-ia-k2a" secondAttribute="trailing" constant="-8" id="Zk7-QW-BA2"/>
99-
<constraint firstItem="098-t9-MpK" firstAttribute="top" secondItem="fsf-uM-oWf" secondAttribute="bottom" id="bdS-VQ-1k2"/>
100-
<constraint firstItem="cLF-D1-GNS" firstAttribute="trailing" secondItem="fsf-uM-oWf" secondAttribute="trailing" id="dYe-Db-1f6"/>
101-
<constraint firstItem="cLF-D1-GNS" firstAttribute="trailing" secondItem="0I0-hy-lHq" secondAttribute="trailing" id="h6W-Ro-eCk"/>
97+
<constraint firstItem="3JX-ia-k2a" firstAttribute="leading" secondItem="0I0-hy-lHq" secondAttribute="leading" constant="8" id="AN4-xQ-U9P"/>
98+
<constraint firstItem="m1w-xO-o8W" firstAttribute="top" secondItem="cLF-D1-GNS" secondAttribute="top" id="XM0-CR-SUr"/>
99+
<constraint firstItem="m1w-xO-o8W" firstAttribute="width" secondItem="cLF-D1-GNS" secondAttribute="width" id="XpC-yG-KUl"/>
100+
<constraint firstItem="0I0-hy-lHq" firstAttribute="bottom" secondItem="3JX-ia-k2a" secondAttribute="bottom" constant="8" id="bHs-44-xId"/>
101+
<constraint firstItem="m1w-xO-o8W" firstAttribute="bottom" secondItem="098-t9-MpK" secondAttribute="top" id="bcv-Pt-lac"/>
102+
<constraint firstItem="m1w-xO-o8W" firstAttribute="leading" secondItem="cLF-D1-GNS" secondAttribute="leading" id="kic-8K-mHU"/>
102103
<constraint firstItem="cLF-D1-GNS" firstAttribute="bottom" secondItem="098-t9-MpK" secondAttribute="bottom" id="lmD-MS-qXf"/>
103-
<constraint firstItem="3JX-ia-k2a" firstAttribute="leading" secondItem="cLF-D1-GNS" secondAttribute="leading" constant="8" id="n57-Da-ubJ"/>
104104
<constraint firstItem="098-t9-MpK" firstAttribute="leading" secondItem="9dQ-cY-Tqg" secondAttribute="leading" id="s9q-5s-xYC"/>
105+
<constraint firstItem="0I0-hy-lHq" firstAttribute="trailing" secondItem="3JX-ia-k2a" secondAttribute="trailing" constant="8" id="t4P-Sr-Con"/>
105106
<constraint firstItem="098-t9-MpK" firstAttribute="trailing" secondItem="9dQ-cY-Tqg" secondAttribute="trailing" id="vvr-US-CBC"/>
106-
<constraint firstItem="fsf-uM-oWf" firstAttribute="leading" secondItem="cLF-D1-GNS" secondAttribute="leading" id="wu8-ay-9q5"/>
107-
<constraint firstItem="cLF-D1-GNS" firstAttribute="trailing" secondItem="8NC-Ka-Jwd" secondAttribute="trailing" id="zca-pY-D63"/>
108107
</constraints>
109108
<viewLayoutGuide key="safeArea" id="cLF-D1-GNS"/>
110109
</view>
@@ -121,9 +120,9 @@
121120
<connections>
122121
<outlet property="CWButton" destination="pax-Ye-0d9" id="TFt-KA-NCm"/>
123122
<outlet property="NSFWButton" destination="PDD-NQ-dha" id="LRD-PN-I8a"/>
124-
<outlet property="backgroundImage" destination="fsf-uM-oWf" id="UHx-wq-i0z"/>
125123
<outlet property="bottomLayout" destination="lmD-MS-qXf" id="ZOU-sg-Dyx"/>
126124
<outlet property="cwInput" destination="8NC-Ka-Jwd" id="8ZJ-zU-d29"/>
125+
<outlet property="imageSelectButton" destination="9zg-4V-9GJ" id="6hp-AJ-AWh"/>
127126
<outlet property="keyboardUpOrDown" destination="SEL-MN-vEt" id="dsw-Wc-7ui"/>
128127
<outlet property="nowAccountLabel" destination="3JX-ia-k2a" id="Wuh-0k-jIG"/>
129128
<outlet property="scopeSelectButton" destination="Y3a-nK-Avh" id="cJE-0h-VC1"/>
@@ -275,6 +274,7 @@
275274
</scenes>
276275
<resources>
277276
<image name="ArrowUp" width="25" height="25"/>
277+
<image name="Camera" width="32" height="32"/>
278278
<image name="NowPlaying" width="32" height="32"/>
279279
<image name="visibility-public" width="32" height="32"/>
280280
</resources>

0 commit comments

Comments
 (0)