63 lines
		
	
	
	
		
			1.4 KiB
			
		
	
	
	
		
			C++
		
	
	
	
	
	
		
		
			
		
	
	
			63 lines
		
	
	
	
		
			1.4 KiB
			
		
	
	
	
		
			C++
		
	
	
	
	
	
| 
								 | 
							
								// Copyright (c) 2020 Slack Technologies, Inc.
							 | 
						||
| 
								 | 
							
								// Use of this source code is governed by the MIT license that can be
							 | 
						||
| 
								 | 
							
								// found in the LICENSE file.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Copyright (c) 2020 The Chromium Authors. All rights reserved.
							 | 
						||
| 
								 | 
							
								// Use of this source code is governed by a BSD-style license that can be
							 | 
						||
| 
								 | 
							
								// found in the LICENSE file.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include "shell/browser/ui/gtk/status_icon.h"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include <gtk/gtk.h>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include <memory>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include "base/strings/stringprintf.h"
							 | 
						||
| 
								 | 
							
								#include "shell/browser/ui/gtk/app_indicator_icon.h"
							 | 
						||
| 
								 | 
							
								#include "shell/browser/ui/gtk/gtk_status_icon.h"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace electron {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace gtkui {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								int indicators_count = 0;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								bool IsStatusIconSupported() {
							 | 
						||
| 
								 | 
							
								#if GTK_CHECK_VERSION(3, 90, 0)
							 | 
						||
| 
								 | 
							
								  NOTIMPLEMENTED();
							 | 
						||
| 
								 | 
							
								  return false;
							 | 
						||
| 
								 | 
							
								#else
							 | 
						||
| 
								 | 
							
								  return true;
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								std::unique_ptr<views::StatusIconLinux> CreateLinuxStatusIcon(
							 | 
						||
| 
								 | 
							
								    const gfx::ImageSkia& image,
							 | 
						||
| 
								 | 
							
								    const base::string16& tool_tip,
							 | 
						||
| 
								 | 
							
								    const char* id_prefix) {
							 | 
						||
| 
								 | 
							
								#if GTK_CHECK_VERSION(3, 90, 0)
							 | 
						||
| 
								 | 
							
								  NOTIMPLEMENTED();
							 | 
						||
| 
								 | 
							
								  return nullptr;
							 | 
						||
| 
								 | 
							
								#else
							 | 
						||
| 
								 | 
							
								  if (AppIndicatorIcon::CouldOpen()) {
							 | 
						||
| 
								 | 
							
								    ++indicators_count;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    return std::unique_ptr<views::StatusIconLinux>(new AppIndicatorIcon(
							 | 
						||
| 
								 | 
							
								        base::StringPrintf("%s%d", id_prefix, indicators_count), image,
							 | 
						||
| 
								 | 
							
								        tool_tip));
							 | 
						||
| 
								 | 
							
								  } else {
							 | 
						||
| 
								 | 
							
								    return std::unique_ptr<views::StatusIconLinux>(
							 | 
						||
| 
								 | 
							
								        new GtkStatusIcon(image, tool_tip));
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  return nullptr;
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								}  // namespace gtkui
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								}  // namespace electron
							 |