internal static void Main(string[] args) { bool showTitles = true; if (args != null && args.Length != 0) { if (args[0] == "notitles") { showTitles = false; } } try { SpotifyStatusApplet ssa = new SpotifyStatusApplet(showTitles); ssa.setupSpotify(); ssa.setupTrayIcon(); LcdApplet applet = new LcdApplet("Spotify Status Applet", LcdAppletCapabilities.Both); // Register to events to know when a device arrives, then connects the applet to the LCD Manager applet.Configure += appletConfigure; applet.DeviceArrival += ssa.appletDeviceArrival; applet.DeviceRemoval += ssa.appletDeviceRemoval; applet.IsEnabledChanged += ssa.appletIsEnabledChanged; applet.Connect(); // We are waiting for the handler thread to warn us for device arrival LcdDeviceMonochrome monoDevice = null; ssa.m_waitAutoResetEvent.WaitOne(); do { // A monochrome device is connected: creates a monochrome device or reopens an old one if (true == ssa.m_monoArrived) { if (null == monoDevice) { monoDevice = (LcdDeviceMonochrome)applet.OpenDeviceByType(LcdDeviceType.Monochrome); monoDevice.SoftButtonsChanged += ssa.monoDeviceSoftButtonsChanged; ssa.m_lcdGraphics = new LcdGraphics(); ssa.m_lcdGraphics.createMonochromeGdiPages(monoDevice); monoDevice.SetAsForegroundApplet = true; } else { monoDevice.ReOpen(); } // serviced the last device connection so reset the arrival flag ssa.m_monoArrived = false; } if (ssa.m_qvgaArrived) { // TODO add the implementation as a future project ssa.m_qvgaArrived = false; } // DoUpdateAndDraw only occurs at the framerate specified by LcdPage.DesiredFrameRate, which is 30 by default. if (true == applet.IsEnabled && null != monoDevice && false == monoDevice.IsDisposed) { ssa.m_lcdGraphics.setMediaPlayerDetails(ssa.getCurrentSpotifyDetails()); ssa.m_lcdGraphics.setShowTitles(ssa.m_showTitles); monoDevice.DoUpdateAndDraw(); } Thread.Sleep(33); }while (true == ssa.m_keepRunning); } catch (Exception e) { Console.WriteLine("Caught exception, application exited " + e.ToString()); } }
internal static int Main(string[] args) { bool showTitles = true; if (args != null && args.Length != 0) { if (args[0] == "notitles") { showTitles = false; } } try { SpotifyStatusApplet ssa = new SpotifyStatusApplet(showTitles); a_ConnectionStatus = ssa.SetupSpotify(); if (a_ConnectionStatus != 0) { Trace.TraceError("Critical Error: Spotify couldn't start.\n\tTerminating SpotifyStatusApplet.\t\nReturn Value of SetupSpotify(): " + a_ConnectionStatus); //Applet cannot function if Spotify or SpotifyWebHelper is unable to open. Return from Main thread with error 1. return(1); } StatusResponse spotify_Status = ssa.s_spotify.GetStatus(); //The applet crashes when having to wait for the Spotify song information (When the app is completely exited). //This waits until it loads in and has a 2 second timeout. for (int i = 0; (spotify_Status.Track == null); i++) { Thread.Sleep(1); if (i > 2000) { break; } if (i > 1998) { a_SongLoadTimeoutExpired = true; } } if (a_SongLoadTimeoutExpired == true) { Trace.TraceWarning("Couldn't load track information. \n\tTerminating SpotifyStatusApplet."); return(1); } ssa.setupTrayIcon(); LcdApplet applet = new LcdApplet("Spotify Status Applet", LcdAppletCapabilities.Both); // Register to events to know when a device arrives, then connects the applet to the LCD Manager applet.Configure += appletConfigure; applet.DeviceArrival += ssa.appletDeviceArrival; applet.DeviceRemoval += ssa.appletDeviceRemoval; applet.IsEnabledChanged += ssa.appletIsEnabledChanged; applet.Connect(); // We are waiting for the handler thread to warn us for device arrival LcdDeviceMonochrome monoDevice = null; ssa.m_waitAutoResetEvent.WaitOne(); do { // A monochrome device is connected: creates a monochrome device or reopens an old one if (true == ssa.m_monoArrived) { if (null == monoDevice) { monoDevice = (LcdDeviceMonochrome)applet.OpenDeviceByType(LcdDeviceType.Monochrome); monoDevice.SoftButtonsChanged += ssa.monoDeviceSoftButtonsChanged; ssa.m_lcdGraphics = new LcdGraphics(); ssa.m_lcdGraphics.createMonochromeGdiPages(monoDevice); monoDevice.SetAsForegroundApplet = true; } else { monoDevice.ReOpen(); } // serviced the last device connection so reset the arrival flag ssa.m_monoArrived = false; } if (ssa.m_qvgaArrived) { // TODO add the implementation as a future project ssa.m_qvgaArrived = false; } // DoUpdateAndDraw only occurs at the framerate specified by LcdPage.DesiredFrameRate, which is 30 by default. if (true == applet.IsEnabled && null != monoDevice && false == monoDevice.IsDisposed) { ssa.m_lcdGraphics.setMediaPlayerDetails(ssa.getCurrentSpotifyDetails()); ssa.m_lcdGraphics.setShowTitles(ssa.m_showTitles); monoDevice.DoUpdateAndDraw(); } Thread.Sleep(33); }while (true == ssa.m_keepRunning); } catch (Exception e) { Trace.TraceError("Caught exception, application exited " + e.ToString()); } return(0); }
public AppTrayIcon(SpotifyStatusApplet ssa) { m_ni = new NotifyIcon(); m_ssa = ssa; }
internal static void Main(string[] args) { bool showTitles = true; if (args != null && args.Length !=0) { if (args[0] == "notitles") { showTitles = false; } } try { SpotifyStatusApplet ssa = new SpotifyStatusApplet(showTitles); ssa.setupSpotify(); ssa.setupTrayIcon(); LcdApplet applet = new LcdApplet("Spotify Status Applet", LcdAppletCapabilities.Both); // Register to events to know when a device arrives, then connects the applet to the LCD Manager applet.Configure += appletConfigure; applet.DeviceArrival += ssa.appletDeviceArrival; applet.DeviceRemoval += ssa.appletDeviceRemoval; applet.IsEnabledChanged += ssa.appletIsEnabledChanged; applet.Connect(); // We are waiting for the handler thread to warn us for device arrival LcdDeviceMonochrome monoDevice = null; ssa.m_waitAutoResetEvent.WaitOne(); do { // A monochrome device is connected: creates a monochrome device or reopens an old one if (true == ssa.m_monoArrived) { if (null == monoDevice) { monoDevice = (LcdDeviceMonochrome)applet.OpenDeviceByType(LcdDeviceType.Monochrome); monoDevice.SoftButtonsChanged += ssa.monoDeviceSoftButtonsChanged; ssa.m_lcdGraphics = new LcdGraphics(); ssa.m_lcdGraphics.createMonochromeGdiPages(monoDevice); monoDevice.SetAsForegroundApplet = true; } else { monoDevice.ReOpen(); } // serviced the last device connection so reset the arrival flag ssa.m_monoArrived = false; } if (ssa.m_qvgaArrived) { // TODO add the implementation as a future project ssa.m_qvgaArrived = false; } // DoUpdateAndDraw only occurs at the framerate specified by LcdPage.DesiredFrameRate, which is 30 by default. if (true == applet.IsEnabled && null != monoDevice && false == monoDevice.IsDisposed) { ssa.m_lcdGraphics.setMediaPlayerDetails(ssa.getCurrentSpotifyDetails()); ssa.m_lcdGraphics.setShowTitles(ssa.m_showTitles); monoDevice.DoUpdateAndDraw(); } Thread.Sleep(33); } while (true == ssa.m_keepRunning); } catch (Exception e) { Console.WriteLine("Caught exception, application exited " + e.ToString()); } }
public AppTrayIcon(SpotifyStatusApplet ssa) { m_ni = new NotifyIcon(); m_ssa = ssa; }