@@ -57,6 +57,12 @@ public EventWindow(EventWindow template)
5757 {
5858 selection . Add ( item ) ;
5959 }
60+
61+ // Copy timestamp column visibility settings from template
62+ ShowTimeStampColumnsMenuItem . IsChecked = template . ShowTimeStampColumnsMenuItem . IsChecked ;
63+ ShowLocalTimeMenuItem . IsChecked = template . ShowLocalTimeMenuItem . IsChecked ;
64+ ShowLocalTimeMenuItem . IsEnabled = template . ShowLocalTimeMenuItem . IsEnabled ;
65+
6066 Update ( ) ;
6167 }
6268 public EventWindow ( Window parent , PerfViewEventSource data )
@@ -167,6 +173,26 @@ public EventWindow(Window parent, PerfViewEventSource data)
167173 } ;
168174
169175 MultiLineViewPaneHidden = ( App . UserConfigData [ "MultiLineViewPaneHidden" ] == "true" ) ;
176+
177+ // Initialize timestamp column visibility based on user preference
178+ bool showTimeStampColumns = App . UserConfigData [ "EventWindowShowTimeStampColumns" ] != "false" ; // Default to true
179+ ShowTimeStampColumnsMenuItem . IsChecked = showTimeStampColumns ;
180+ if ( ! showTimeStampColumns )
181+ {
182+ // Hide both timestamp columns and disable the timezone menu
183+ foreach ( var column in Grid . Columns )
184+ {
185+ if ( column == OriginTimeStampColumn || column == LocalTimeStampColumn )
186+ {
187+ column . Visibility = Visibility . Hidden ;
188+ }
189+ }
190+ ShowLocalTimeMenuItem . IsEnabled = false ;
191+ }
192+ else
193+ {
194+ ShowLocalTimeMenuItem . IsEnabled = true ;
195+ }
170196 }
171197
172198 public PerfViewEventSource DataSource { get ; private set ; }
@@ -1893,32 +1919,87 @@ private void Add(ObservableCollection<EventRecord> events, EventRecord event_)
18931919
18941920 private void DoUseLocalTime ( object sender , RoutedEventArgs e )
18951921 {
1896- foreach ( var i in Grid . Columns )
1922+ // Only change visibility if timestamp columns are enabled
1923+ if ( ShowTimeStampColumnsMenuItem . IsChecked )
18971924 {
1898- if ( i == OriginTimeStampColumn )
1925+ foreach ( var i in Grid . Columns )
18991926 {
1900- i . Visibility = Visibility . Hidden ;
1927+ if ( i == OriginTimeStampColumn )
1928+ {
1929+ i . Visibility = Visibility . Hidden ;
1930+ }
1931+ else if ( i == LocalTimeStampColumn )
1932+ {
1933+ i . Visibility = Visibility . Visible ;
1934+ }
19011935 }
1902- else if ( i == LocalTimeStampColumn )
1936+ }
1937+ }
1938+
1939+ private void DoUseOriginTime ( object sender , RoutedEventArgs e )
1940+ {
1941+ // Only change visibility if timestamp columns are enabled
1942+ if ( ShowTimeStampColumnsMenuItem . IsChecked )
1943+ {
1944+ foreach ( var i in Grid . Columns )
19031945 {
1904- i . Visibility = Visibility . Visible ;
1946+ if ( i == OriginTimeStampColumn )
1947+ {
1948+ i . Visibility = Visibility . Visible ;
1949+ }
1950+ else if ( i == LocalTimeStampColumn )
1951+ {
1952+ i . Visibility = Visibility . Hidden ;
1953+ }
19051954 }
19061955 }
19071956 }
19081957
1909- private void DoUseOriginTime ( object sender , RoutedEventArgs e )
1958+ private void DoShowTimeStampColumns ( object sender , RoutedEventArgs e )
19101959 {
1960+ // Check if UI elements are initialized to avoid null reference during XAML construction
1961+ if ( ShowLocalTimeMenuItem == null || Grid ? . Columns == null )
1962+ return ;
1963+
1964+ // Show the appropriate timestamp column based on current preference
1965+ bool useLocalTime = ShowLocalTimeMenuItem . IsChecked ;
19111966 foreach ( var i in Grid . Columns )
19121967 {
19131968 if ( i == OriginTimeStampColumn )
19141969 {
1915- i . Visibility = Visibility . Visible ;
1970+ i . Visibility = useLocalTime ? Visibility . Hidden : Visibility . Visible ;
19161971 }
19171972 else if ( i == LocalTimeStampColumn )
1973+ {
1974+ i . Visibility = useLocalTime ? Visibility . Visible : Visibility . Hidden ;
1975+ }
1976+ }
1977+ // Enable the Show Local Time menu item
1978+ ShowLocalTimeMenuItem . IsEnabled = true ;
1979+
1980+ // Save preference
1981+ App . UserConfigData [ "EventWindowShowTimeStampColumns" ] = "true" ;
1982+ }
1983+
1984+ private void DoHideTimeStampColumns ( object sender , RoutedEventArgs e )
1985+ {
1986+ // Check if UI elements are initialized to avoid null reference during XAML construction
1987+ if ( ShowLocalTimeMenuItem == null || Grid ? . Columns == null )
1988+ return ;
1989+
1990+ // Hide both timestamp columns
1991+ foreach ( var i in Grid . Columns )
1992+ {
1993+ if ( i == OriginTimeStampColumn || i == LocalTimeStampColumn )
19181994 {
19191995 i . Visibility = Visibility . Hidden ;
19201996 }
19211997 }
1998+ // Gray out (disable) the Show Local Time menu item
1999+ ShowLocalTimeMenuItem . IsEnabled = false ;
2000+
2001+ // Save preference
2002+ App . UserConfigData [ "EventWindowShowTimeStampColumns" ] = "false" ;
19222003 }
19232004 }
19242005}
0 commit comments