@@ -119,16 +119,54 @@ filter_status_source::statusview_fields()
119119 break ;
120120 }
121121
122+ size_t error_count = 0 ;
123+
124+ auto & fc = lnav_data.ld_active_files ;
125+ {
126+ auto stub_map = fc.fc_name_to_stubs ->readAccess ();
127+
128+ for (const auto & stub : *stub_map) {
129+ switch (stub.second .fsi_description .um_level ) {
130+ case lnav::console::user_message::level::raw:
131+ case lnav::console::user_message::level::ok:
132+ case lnav::console::user_message::level::info:
133+ case lnav::console::user_message::level::warning:
134+ break ;
135+ case lnav::console::user_message::level::error:
136+ error_count += 1 ;
137+ break ;
138+ }
139+ }
140+ }
141+
142+ if (error_count == 0 ) {
143+ this ->tss_error .clear ();
144+ } else if (error_count == 1 ) {
145+ this ->tss_error .set_value (" error: a file cannot be opened " _frag);
146+ } else if (error_count > 1 ) {
147+ this ->tss_error .set_value (" error: %zu files cannot be opened " ,
148+ error_count);
149+ }
150+
122151 if (lnav_data.ld_mode == ln_mode_t ::FILES
123152 || lnav_data.ld_mode == ln_mode_t ::FILE_DETAILS
124153 || lnav_data.ld_mode == ln_mode_t ::SEARCH_FILES )
125154 {
126155 this ->tss_fields [TSF_FILES_TITLE ].set_value (
127156 " " ANSI_ROLE (" F" ) " iles " , role_t ::VCR_STATUS_TITLE_HOTKEY );
128- this ->tss_fields [TSF_FILES_TITLE ].set_role (role_t ::VCR_STATUS_TITLE );
129- this ->tss_fields [TSF_FILES_RIGHT_STITCH ].set_stitch_value (
130- role_t ::VCR_STATUS_STITCH_TITLE_TO_NORMAL ,
131- role_t ::VCR_STATUS_STITCH_NORMAL_TO_TITLE );
157+ if (error_count > 0 ) {
158+ this ->tss_fields [TSF_FILES_TITLE ].set_role (
159+ role_t ::VCR_ALERT_STATUS_TITLE );
160+ this ->tss_fields [TSF_FILES_RIGHT_STITCH ].set_stitch_value (
161+ role_t ::VCR_STATUS_STITCH_ALERT_TITLE_TO_NORMAL ,
162+ role_t ::VCR_STATUS_STITCH_NORMAL_TO_ALERT_TITLE );
163+ } else {
164+ this ->tss_fields [TSF_FILES_TITLE ].set_role (
165+ role_t ::VCR_STATUS_TITLE );
166+ this ->tss_fields [TSF_FILES_RIGHT_STITCH ].set_stitch_value (
167+ role_t ::VCR_STATUS_STITCH_TITLE_TO_NORMAL ,
168+ role_t ::VCR_STATUS_STITCH_NORMAL_TO_TITLE );
169+ }
132170 this ->tss_fields [TSF_TITLE ].set_value (" " ANSI_ROLE (" T" ) " ext Filters " ,
133171 role_t ::VCR_STATUS_HOTKEY );
134172 this ->tss_fields [TSF_TITLE ].set_role (role_t ::VCR_STATUS_DISABLED_TITLE );
@@ -137,43 +175,12 @@ filter_status_source::statusview_fields()
137175 } else {
138176 this ->tss_fields [TSF_FILES_TITLE ].set_value (" " ANSI_ROLE (" F" ) " iles " ,
139177 role_t ::VCR_STATUS_HOTKEY );
140- if (lnav_data. ld_active_files . fc_name_to_stubs -> readAccess ()-> empty () ) {
178+ if (error_count > 0 ) {
141179 this ->tss_fields [TSF_FILES_TITLE ].set_role (
142- role_t ::VCR_STATUS_DISABLED_TITLE );
180+ role_t ::VCR_ALERT_STATUS );
143181 } else {
144- size_t error_count = 0 ;
145- size_t other_count = 0 ;
146-
147- auto & fc = lnav_data.ld_active_files ;
148- {
149- auto stub_map = fc.fc_name_to_stubs ->readAccess ();
150-
151- for (const auto & stub : *stub_map) {
152- switch (stub.second .fsi_description .um_level ) {
153- case lnav::console::user_message::level::raw:
154- case lnav::console::user_message::level::ok:
155- case lnav::console::user_message::level::info:
156- case lnav::console::user_message::level::warning:
157- other_count += 1 ;
158- break ;
159- case lnav::console::user_message::level::error:
160- error_count += 1 ;
161- break ;
162- }
163- }
164- }
165-
166- if (error_count > 0 ) {
167- this ->tss_fields [TSF_FILES_TITLE ].set_role (
168- role_t ::VCR_ALERT_STATUS );
169- }
170- if (error_count == 1 ) {
171- this ->tss_error .set_value (
172- " error: a file cannot be opened " _frag);
173- } else if (error_count > 1 ) {
174- this ->tss_error .set_value (" error: %zu files cannot be opened " ,
175- error_count);
176- }
182+ this ->tss_fields [TSF_FILES_TITLE ].set_role (
183+ role_t ::VCR_STATUS_DISABLED_TITLE );
177184 }
178185 this ->tss_fields [TSF_FILES_RIGHT_STITCH ].set_stitch_value (
179186 role_t ::VCR_STATUS_STITCH_NORMAL_TO_TITLE ,
0 commit comments