UI: change element's placement in SmartList

make SmartList row UI more readable

Change-Id: I2f802908214af7a44df09759e63561bf42131d00
Reviewed-by: Anthony Léonard <anthony.leonard@savoirfairelinux.com>
diff --git a/src/PersonsVC.mm b/src/PersonsVC.mm
index c84d73a..3553170 100644
--- a/src/PersonsVC.mm
+++ b/src/PersonsVC.mm
@@ -183,6 +183,7 @@
         [photoView setImage:QtMac::toNSImage(qvariant_cast<QPixmap>(qIdx.data(Qt::DecorationRole)))];
 
         [((ContextualTableCellView*) result) setContextualsControls:[NSMutableArray arrayWithObject:[result viewWithTag:CALL_BUTTON_TAG]]];
+        [((ContextualTableCellView*) result) setShouldBlurParentView:NO];
 
         NSTextField* details = [result viewWithTag:DETAILS_TAG];
         if (p && p->phoneNumbers().size() > 0)
diff --git a/src/SmartViewVC.mm b/src/SmartViewVC.mm
index 2d42005..f8e5a82 100644
--- a/src/SmartViewVC.mm
+++ b/src/SmartViewVC.mm
@@ -237,6 +237,7 @@
 
         NSMutableArray* controls = [NSMutableArray arrayWithObject:[result viewWithTag:CALL_BUTTON_TAG]];
         [((ContextualTableCellView*) result) setContextualsControls:controls];
+        [((ContextualTableCellView*) result) setShouldBlurParentView:YES];
 
         if (auto call = RecentModel::instance().getActiveCall(qIdx)) {
             [details setStringValue:call->roleData((int)Ring::Role::FormattedState).toString().toNSString()];
@@ -249,13 +250,13 @@
         NSTextField* unreadCount = [result viewWithTag:TXT_BUTTON_TAG];
         int unread = qIdx.data((int)Ring::Role::UnreadTextMessageCount).toInt();
         [unreadCount setHidden:(unread == 0)];
-        [unreadCount.layer setCornerRadius:5.0f];
         [unreadCount setStringValue:qIdx.data((int)Ring::Role::UnreadTextMessageCount).toString().toNSString()];
 
     } else {
         result = [outlineView makeViewWithIdentifier:@"CallCell" owner:outlineView];
         NSMutableArray* controls = [NSMutableArray arrayWithObject:[result viewWithTag:CANCEL_BUTTON_TAG]];
         [((ContextualTableCellView*) result) setContextualsControls:controls];
+        [((ContextualTableCellView*) result) setShouldBlurParentView:YES];
         [((ContextualTableCellView*) result) setActiveState:NO];
         NSTextField* details = [result viewWithTag:DETAILS_TAG];
 
diff --git a/src/views/ContextualTableCellView.h b/src/views/ContextualTableCellView.h
index 60a8823..38a962a 100644
--- a/src/views/ContextualTableCellView.h
+++ b/src/views/ContextualTableCellView.h
@@ -30,5 +30,9 @@
  * BOOL specifying if controls should be presented when mouse is hover
  */
 @property (nonatomic) BOOL activeState;
+/**
+ * BOOL specifying if background behind controls should be blured
+ */
+@property (nonatomic) BOOL shouldBlurParentView;
 
 @end
diff --git a/src/views/ContextualTableCellView.mm b/src/views/ContextualTableCellView.mm
index 91cab96..cf5aa03 100644
--- a/src/views/ContextualTableCellView.mm
+++ b/src/views/ContextualTableCellView.mm
@@ -19,6 +19,10 @@
 
 #import "ContextualTableCellView.h"
 
+@interface NSView (extension)
+@property NSVisualEffectView* vibrantView;
+@end;
+
 @interface ContextualTableCellView()
 
 @property NSTrackingArea *trackingArea;
@@ -49,6 +53,8 @@
 {
     for (NSView* item in self.contextualsControls) {
         [item setHidden:YES];
+        if(self.shouldBlurParentView && [item respondsToSelector:@selector(vibrantView)] && item.vibrantView)
+            [item.vibrantView setHidden:YES];
     }
 }
 
@@ -59,6 +65,30 @@
 
     for (NSView* item in self.contextualsControls) {
         [item setHidden:NO];
+        if(!self.shouldBlurParentView)
+        {
+            break;
+        }
+        if([item respondsToSelector:@selector(vibrantView)] && !item.vibrantView) {
+            NSRect frame = CGRectMake(item.frame.origin.x - 20 , item.frame.origin.y - 50, item.frame.size.width + 53, item.frame.size.height + 100);
+            NSVisualEffectView *vibrantView = [[NSVisualEffectView alloc]
+                                               initWithFrame:frame];
+            vibrantView.appearance = [NSAppearance
+                                      appearanceNamed:NSAppearanceNameVibrantLight];
+            vibrantView.material = NSVisualEffectMaterialAppearanceBased;
+            vibrantView.blendingMode = NSVisualEffectBlendingModeWithinWindow;
+            [vibrantView setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable];
+            vibrantView.alphaValue = 0.7;
+            if([item respondsToSelector:@selector(setVibrantView:)]) {
+                item.vibrantView = vibrantView;
+            }
+            [self addSubview: item.vibrantView];
+            [self addSubview:item];
+
+        }
+        if([item respondsToSelector:@selector(vibrantView)] && item.vibrantView) {
+            [item.vibrantView setHidden:NO];
+        }
     }
 }
 
@@ -66,6 +96,9 @@
 {
     for (NSView* item in self.contextualsControls) {
         [item setHidden:YES];
+        if(self.shouldBlurParentView && [item respondsToSelector:@selector(vibrantView)] && item.vibrantView) {
+            [item.vibrantView setHidden:YES];
+        }
     }
 }
 
diff --git a/src/views/IconButton.h b/src/views/IconButton.h
index 92e8f2d..6af785a 100644
--- a/src/views/IconButton.h
+++ b/src/views/IconButton.h
@@ -56,5 +56,11 @@
  */
 @property CGFloat imageInsets;
 
+/*
+ * Add bluer effect behind button
+ */
+
+@property NSVisualEffectView* vibrantView;
+
 
 @end
diff --git a/ui/Base.lproj/RingWindow.xib b/ui/Base.lproj/RingWindow.xib
index adcc91d..90b1f05 100644
--- a/ui/Base.lproj/RingWindow.xib
+++ b/ui/Base.lproj/RingWindow.xib
@@ -77,8 +77,8 @@
                                                                                 <rect key="frame" x="1" y="1" width="321" height="60"/>
                                                                                 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                                                                                 <subviews>
-                                                                                    <textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" tag="200" translatesAutoresizingMaskIntoConstraints="NO" id="epa-Ih-aKF">
-                                                                                        <rect key="frame" x="57" y="31" width="89" height="23"/>
+                                                                                    <textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" tag="200" translatesAutoresizingMaskIntoConstraints="NO" id="epa-Ih-aKF" userLabel="name">
+                                                                                        <rect key="frame" x="57" y="34" width="89" height="23"/>
                                                                                         <textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" placeholderString="Display Role" id="uSw-g5-kte">
                                                                                             <font key="font" size="16" name="HelveticaNeue-Light"/>
                                                                                             <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
@@ -93,20 +93,53 @@
                                                                                         </constraints>
                                                                                         <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="NSUser" id="bqQ-Jp-DPH"/>
                                                                                     </imageView>
-                                                                                    <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" tag="300" translatesAutoresizingMaskIntoConstraints="NO" id="epi-ZP-as5">
-                                                                                        <rect key="frame" x="57" y="10" width="177" height="20"/>
-                                                                                        <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" placeholderString="details" id="BfK-c5-B1l">
+                                                                                    <textField hidden="YES" horizontalHuggingPriority="251" verticalHuggingPriority="750" tag="500" translatesAutoresizingMaskIntoConstraints="NO" id="MYe-rn-qOP" userLabel="UnreadMsgCount" customClass="RoundedTextField">
+                                                                                        <rect key="frame" x="301" y="14" width="15" height="14"/>
+                                                                                        <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="center" placeholderString="n" drawsBackground="YES" id="sGB-x7-gig">
+                                                                                            <font key="font" metaFont="smallSystem"/>
+                                                                                            <color key="textColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                                                                            <color key="backgroundColor" red="0.98431372549019602" green="0.28627450980392155" blue="0.28235294117647058" alpha="0.90000000000000002" colorSpace="calibratedRGB"/>
+                                                                                        </textFieldCell>
+                                                                                        <userDefinedRuntimeAttributes>
+                                                                                            <userDefinedRuntimeAttribute type="color" keyPath="bgColor">
+                                                                                                <color key="value" red="0.83734809027777779" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
+                                                                                            </userDefinedRuntimeAttribute>
+                                                                                            <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                                                                                                <integer key="value" value="2"/>
+                                                                                            </userDefinedRuntimeAttribute>
+                                                                                        </userDefinedRuntimeAttributes>
+                                                                                    </textField>
+                                                                                    <textField verticalHuggingPriority="750" tag="700" allowsCharacterPickerTouchBarItem="NO" translatesAutoresizingMaskIntoConstraints="NO" id="bZ6-1S-zx2" userLabel="ringId">
+                                                                                        <rect key="frame" x="57" y="11" width="37" height="20"/>
+                                                                                        <textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" state="on" placeholderString="ringID" id="zp2-mv-NHW">
                                                                                             <font key="font" size="13" name="HelveticaNeue-Light"/>
                                                                                             <color key="textColor" name="windowFrameColor" catalog="System" colorSpace="catalog"/>
                                                                                             <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
                                                                                         </textFieldCell>
                                                                                     </textField>
-                                                                                    <textField hidden="YES" horizontalHuggingPriority="251" verticalHuggingPriority="750" tag="500" translatesAutoresizingMaskIntoConstraints="NO" id="MYe-rn-qOP">
-                                                                                        <rect key="frame" x="36" y="6" width="15" height="14"/>
-                                                                                        <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="center" placeholderString="n" drawsBackground="YES" id="sGB-x7-gig">
-                                                                                            <font key="font" metaFont="smallSystem"/>
-                                                                                            <color key="textColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
-                                                                                            <color key="backgroundColor" red="0.98431372549019602" green="0.28627450980392155" blue="0.28235294117647058" alpha="0.90000000000000002" colorSpace="calibratedRGB"/>
+                                                                                    <textField horizontalHuggingPriority="750" verticalHuggingPriority="750" tag="800" allowsCharacterPickerTouchBarItem="NO" translatesAutoresizingMaskIntoConstraints="NO" id="YkV-D4-ddd" userLabel="PresenceIndicator" customClass="RoundedTextField">
+                                                                                        <rect key="frame" x="39" y="6" width="14" height="14"/>
+                                                                                        <constraints>
+                                                                                            <constraint firstAttribute="width" constant="10" id="IdR-WT-Pvg"/>
+                                                                                            <constraint firstAttribute="height" constant="14" id="dO4-wg-jEC"/>
+                                                                                        </constraints>
+                                                                                        <textFieldCell key="cell" enabled="NO" sendsActionOnEndEditing="YES" alignment="center" id="1DZ-7a-3Qp">
+                                                                                            <font key="font" metaFont="system"/>
+                                                                                            <color key="textColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                                                                            <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+                                                                                        </textFieldCell>
+                                                                                        <userDefinedRuntimeAttributes>
+                                                                                            <userDefinedRuntimeAttribute type="color" keyPath="bgColor">
+                                                                                                <color key="value" red="0.61246744791666663" green="0.85419379340277779" blue="0.37386067708333331" alpha="1" colorSpace="calibratedRGB"/>
+                                                                                            </userDefinedRuntimeAttribute>
+                                                                                        </userDefinedRuntimeAttributes>
+                                                                                    </textField>
+                                                                                    <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" tag="300" translatesAutoresizingMaskIntoConstraints="NO" id="epi-ZP-as5" userLabel="date">
+                                                                                        <rect key="frame" x="278" y="36" width="40" height="20"/>
+                                                                                        <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" placeholderString="details" id="BfK-c5-B1l">
+                                                                                            <font key="font" size="13" name="HelveticaNeue-Light"/>
+                                                                                            <color key="textColor" name="windowFrameColor" catalog="System" colorSpace="catalog"/>
+                                                                                            <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
                                                                                         </textFieldCell>
                                                                                     </textField>
                                                                                     <button hidden="YES" verticalHuggingPriority="750" tag="400" translatesAutoresizingMaskIntoConstraints="NO" id="DAd-lc-L62" userLabel="Call Button" customClass="IconButton">
@@ -128,53 +161,24 @@
                                                                                             <action selector="callClickedAtRow:" target="-1" id="zew-Rw-kFH"/>
                                                                                         </connections>
                                                                                     </button>
-                                                                                    <textField verticalHuggingPriority="750" tag="700" allowsCharacterPickerTouchBarItem="NO" translatesAutoresizingMaskIntoConstraints="NO" id="bZ6-1S-zx2">
-                                                                                        <rect key="frame" x="147" y="32" width="138" height="21"/>
-                                                                                        <textFieldCell key="cell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" title="ringID" id="zp2-mv-NHW">
-                                                                                            <font key="font" size="14" name="HelveticaNeue-Light"/>
-                                                                                            <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
-                                                                                            <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
-                                                                                        </textFieldCell>
-                                                                                    </textField>
-                                                                                    <textField horizontalHuggingPriority="750" verticalHuggingPriority="750" tag="800" allowsCharacterPickerTouchBarItem="NO" translatesAutoresizingMaskIntoConstraints="NO" id="YkV-D4-ddd" userLabel="PresenceIndicator" customClass="RoundedTextField">
-                                                                                        <rect key="frame" x="1" y="40" width="14" height="14"/>
-                                                                                        <constraints>
-                                                                                            <constraint firstAttribute="height" constant="14" id="5eQ-PD-Kp7"/>
-                                                                                            <constraint firstAttribute="width" constant="10" id="ZIX-dc-Wn9"/>
-                                                                                        </constraints>
-                                                                                        <textFieldCell key="cell" enabled="NO" sendsActionOnEndEditing="YES" alignment="center" id="1DZ-7a-3Qp">
-                                                                                            <font key="font" metaFont="system"/>
-                                                                                            <color key="textColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
-                                                                                            <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
-                                                                                        </textFieldCell>
-                                                                                        <userDefinedRuntimeAttributes>
-                                                                                            <userDefinedRuntimeAttribute type="color" keyPath="bgColor">
-                                                                                                <color key="value" red="0.5" green="1" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
-                                                                                            </userDefinedRuntimeAttribute>
-                                                                                            <userDefinedRuntimeAttribute type="color" keyPath="borderColor">
-                                                                                                <color key="value" red="0.0" green="0.77454969618055558" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
-                                                                                            </userDefinedRuntimeAttribute>
-                                                                                        </userDefinedRuntimeAttributes>
-                                                                                    </textField>
                                                                                 </subviews>
                                                                                 <constraints>
-                                                                                    <constraint firstItem="MYe-rn-qOP" firstAttribute="trailing" secondItem="sHH-wj-oHs" secondAttribute="trailing" id="1nI-oe-P2F"/>
-                                                                                    <constraint firstItem="bZ6-1S-zx2" firstAttribute="leading" secondItem="epa-Ih-aKF" secondAttribute="trailing" constant="5" id="4rt-nn-zK6"/>
-                                                                                    <constraint firstItem="bZ6-1S-zx2" firstAttribute="baseline" secondItem="epa-Ih-aKF" secondAttribute="baseline" id="CBk-k6-mZY"/>
+                                                                                    <constraint firstItem="epa-Ih-aKF" firstAttribute="top" secondItem="Z6G-mQ-L3J" secondAttribute="top" constant="3" id="34y-lV-vl2"/>
                                                                                     <constraint firstItem="sHH-wj-oHs" firstAttribute="leading" secondItem="Z6G-mQ-L3J" secondAttribute="leading" constant="3" id="CGt-hN-ulS"/>
-                                                                                    <constraint firstItem="epa-Ih-aKF" firstAttribute="top" secondItem="sHH-wj-oHs" secondAttribute="top" id="Jzr-F8-Ysa"/>
+                                                                                    <constraint firstItem="bZ6-1S-zx2" firstAttribute="leading" secondItem="epa-Ih-aKF" secondAttribute="leading" id="Ffs-rJ-b8V"/>
+                                                                                    <constraint firstItem="YkV-D4-ddd" firstAttribute="trailing" secondItem="sHH-wj-oHs" secondAttribute="trailing" id="HSa-sm-3vp"/>
                                                                                     <constraint firstItem="sHH-wj-oHs" firstAttribute="top" secondItem="Z6G-mQ-L3J" secondAttribute="top" constant="6" id="KMX-Ru-AEa"/>
-                                                                                    <constraint firstItem="YkV-D4-ddd" firstAttribute="leading" secondItem="sHH-wj-oHs" secondAttribute="leading" id="MpR-B5-MBz"/>
-                                                                                    <constraint firstItem="MYe-rn-qOP" firstAttribute="bottom" secondItem="sHH-wj-oHs" secondAttribute="bottom" id="QV9-5r-9us"/>
+                                                                                    <constraint firstItem="epi-ZP-as5" firstAttribute="centerY" secondItem="epa-Ih-aKF" secondAttribute="centerY" id="L49-TZ-Pju"/>
+                                                                                    <constraint firstItem="bZ6-1S-zx2" firstAttribute="top" secondItem="epa-Ih-aKF" secondAttribute="bottom" constant="3" id="NnZ-fX-wbG"/>
                                                                                     <constraint firstAttribute="bottom" secondItem="sHH-wj-oHs" secondAttribute="bottom" constant="6" id="SJ6-9t-r0l"/>
-                                                                                    <constraint firstAttribute="trailing" secondItem="DAd-lc-L62" secondAttribute="trailing" constant="3" id="Zsb-GR-rRN"/>
-                                                                                    <constraint firstItem="DAd-lc-L62" firstAttribute="centerY" secondItem="Z6G-mQ-L3J" secondAttribute="centerY" id="amg-Ei-hAd"/>
-                                                                                    <constraint firstItem="DAd-lc-L62" firstAttribute="leading" secondItem="epi-ZP-as5" secondAttribute="trailing" constant="56" id="bds-RX-Cy1"/>
-                                                                                    <constraint firstItem="epi-ZP-as5" firstAttribute="top" secondItem="epa-Ih-aKF" secondAttribute="bottom" constant="1" id="fRe-jg-u4e"/>
-                                                                                    <constraint firstItem="YkV-D4-ddd" firstAttribute="top" secondItem="sHH-wj-oHs" secondAttribute="top" id="ii8-rc-4Jt"/>
-                                                                                    <constraint firstItem="DAd-lc-L62" firstAttribute="leading" secondItem="bZ6-1S-zx2" secondAttribute="trailing" constant="5" id="nBC-JZ-zqv"/>
-                                                                                    <constraint firstItem="epa-Ih-aKF" firstAttribute="leading" secondItem="epi-ZP-as5" secondAttribute="leading" id="qhg-du-Idh"/>
+                                                                                    <constraint firstItem="YkV-D4-ddd" firstAttribute="bottom" secondItem="sHH-wj-oHs" secondAttribute="bottom" id="TGB-Iw-hdK"/>
+                                                                                    <constraint firstItem="epi-ZP-as5" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="bZ6-1S-zx2" secondAttribute="trailing" constant="5" id="Tn4-iJ-hWx"/>
+                                                                                    <constraint firstAttribute="trailing" secondItem="epi-ZP-as5" secondAttribute="trailing" constant="5" id="XEf-2m-loK"/>
+                                                                                    <constraint firstItem="MYe-rn-qOP" firstAttribute="centerY" secondItem="bZ6-1S-zx2" secondAttribute="centerY" id="Zeb-OX-Jds"/>
+                                                                                    <constraint firstAttribute="trailing" secondItem="DAd-lc-L62" secondAttribute="trailing" constant="3" id="jOb-x2-6OF"/>
                                                                                     <constraint firstItem="epa-Ih-aKF" firstAttribute="leading" secondItem="sHH-wj-oHs" secondAttribute="trailing" constant="8" symbolic="YES" id="sdS-XG-xRu"/>
+                                                                                    <constraint firstAttribute="trailing" secondItem="MYe-rn-qOP" secondAttribute="trailing" constant="5" id="yFn-ZR-eEJ"/>
+                                                                                    <constraint firstItem="DAd-lc-L62" firstAttribute="centerY" secondItem="Z6G-mQ-L3J" secondAttribute="centerY" id="zYF-8x-jeD"/>
                                                                                 </constraints>
                                                                                 <connections>
                                                                                     <outlet property="textField" destination="epa-Ih-aKF" id="ISN-G3-Hxj"/>
@@ -826,6 +830,10 @@
             </connections>
         </viewController>
         <userDefaultsController representsSharedInstance="YES" id="nz5-E9-8bl"/>
+        <visualEffectView appearanceType="vibrantDark" blendingMode="behindWindow" material="appearanceBased" state="followsWindowActiveState" id="COh-Af-P4a">
+            <rect key="frame" x="0.0" y="0.0" width="128" height="128"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+        </visualEffectView>
     </objects>
     <resources>
         <image name="NSShareTemplate" width="11" height="16"/>