예제 #1
0
        private void OnNewPreset(object o, EventArgs args)
        {
            EqualizerSetting eq = new EqualizerSetting(Catalog.GetString("New Preset"));

            EqualizerManager.Instance.Add(eq);
            eq_preset_combo.ActiveEqualizer = eq;
            eq_preset_combo.Entry.SelectRegion(0, eq_preset_combo.Entry.Text.Length);
        }
        private bool GetIterForEqualizerSetting(EqualizerSetting eq, out TreeIter iter)
        {
            for (int i = 0, n = store.IterNChildren(); i < n; i++)
            {
                if (store.IterNthChild(out iter, i) && store.GetValue(iter, 1) == eq)
                {
                    return(true);
                }
            }

            iter = TreeIter.Zero;
            return(false);
        }
예제 #3
0
        private void HandleStateChange(PlayerEventStateChangeArgs args)
        {
            if (args.Current == PlayerState.Loaded && CurrentTrack != null)
            {
                active_engine.Volume = (ushort)VolumeSchema.Get();
                MetadataService.Instance.Lookup(CurrentTrack);
            }
            else if (args.Current == PlayerState.Ready)
            {
                // Enable our preferred equalizer if it exists and was enabled last time.
                if (SupportsEqualizer && EqualizerSetting.EnabledSchema.Get())
                {
                    string name = EqualizerSetting.PresetSchema.Get();
                    if (!String.IsNullOrEmpty(name))
                    {
                        // Don't use EqualizerManager.Instance - used by the eq dialog window.
                        EqualizerManager manager = new EqualizerManager(EqualizerManager.Instance.Path);
                        manager.Load();
                        EqualizerSetting equalizer = null;
                        foreach (EqualizerSetting eq in manager)
                        {
                            if (eq.Name == name)
                            {
                                equalizer = eq;
                                break;
                            }
                        }

                        if (equalizer != null)
                        {
                            Log.DebugFormat("Enabling equalizer preset: {0}", equalizer.Name);
                            manager.Enable(equalizer);
                        }
                    }
                }

                if (pending_playback_for_not_ready != null)
                {
                    OpenCheck(pending_playback_for_not_ready, pending_playback_for_not_ready_play);
                    pending_playback_for_not_ready      = null;
                    pending_playback_for_not_ready_play = false;
                }
            }

            DBusPlayerStateHandler dbus_handler = dbus_state_changed;

            if (dbus_handler != null)
            {
                dbus_handler(args.Current.ToString().ToLower());
            }
        }
        private void RemoveEqualizerSetting(EqualizerSetting eq)
        {
            TreeIter iter;

            if (GetIterForEqualizerSetting(eq, out iter))
            {
                store.Remove(ref iter);
            }

            if (!ActivateFirstEqualizer())
            {
                active_eq = null;
                if (Entry != null)
                {
                    Entry.Text = String.Empty;
                }
            }
        }
예제 #5
0
        private void AddEqualizerSetting(EqualizerSetting eq)
        {
            if (!eq.IsReadOnly)
            {
                user_count++;
                if (separator_iter.Equals(TreeIter.Zero))
                {
                    // FIXME: Very strange bug if (null, null) is stored
                    // here regarding RowSeparatorFunc - not sure where the
                    // bug might be, but I'm 99% sure this is a bug in GTK+
                    // or Gtk#. I demand answers! Thanks to Sandy Armstrong
                    // for thinking outside of his box.
                    separator_iter = store.AppendValues(String.Empty, null);
                }
            }

            store.AppendValues(eq.Name, eq);
        }
        protected override void OnChanged()
        {
            EqualizerSetting eq = ActiveEqualizer;

            if (eq != null)
            {
                active_eq = eq;
            }
            else if (eq == null && active_eq == null)
            {
                base.OnChanged();
                return;
            }
            else if (eq == null)
            {
                eq = active_eq;
            }

            if (Entry == null)
            {
                return;
            }

            eq.Name = Entry.Text;

            TreeIter iter;

            if (GetIterForEqualizerSetting(eq, out iter))
            {
                store.SetValue(iter, 0, eq.Name);
            }

            if (eq != ActiveEqualizer)
            {
                ActiveEqualizer = eq;
                base.OnChanged();
            }
        }
예제 #7
0
        private void RemoveEqualizerSetting(EqualizerSetting eq)
        {
            TreeIter iter;

            if (GetIterForEqualizerSetting(eq, out iter))
            {
                if (!eq.IsReadOnly && --user_count <= 0)
                {
                    user_count = 0;
                    store.Remove(ref separator_iter);
                    separator_iter = TreeIter.Zero;
                }
                store.Remove(ref iter);
            }

            if (!ActivateFirstEqualizer())
            {
                active_eq = null;
                if (Entry != null)
                {
                    Entry.Text = String.Empty;
                }
            }
        }
 private void AddEqualizerSetting(EqualizerSetting eq)
 {
     store.AppendValues(eq.Name, eq);
 }
        public bool ActivateFirstEqualizer()
        {
            TreeIter iter;

            if (store.IterNthChild (out iter, 0)) {
                ActiveEqualizer = GetEqualizerSettingForIter (iter);
                return true;
            }

            return false;
        }
예제 #10
0
        private void RemoveEqualizerSetting(EqualizerSetting eq)
        {
            TreeIter iter;
            if (GetIterForEqualizerSetting (eq, out iter)) {
                if (!eq.IsReadOnly && --user_count <= 0) {
                    user_count = 0;
                    store.Remove (ref separator_iter);
                    separator_iter = TreeIter.Zero;
                }
                store.Remove (ref iter);
            }

            if (!ActivateFirstEqualizer ()) {
                active_eq = null;
                if (Entry != null) {
                    Entry.Text = String.Empty;
                }
            }
        }
예제 #11
0
        private bool GetIterForEqualizerSetting(EqualizerSetting eq, out TreeIter iter)
        {
            for (int i = 0, n = store.IterNChildren (); i < n; i++) {
                if (store.IterNthChild (out iter, i) && store.GetValue (iter, 1) == eq) {
                    return true;
                }
            }

            iter = TreeIter.Zero;
            return false;
        }
예제 #12
0
        private void AddEqualizerSetting(EqualizerSetting eq)
        {
            if (!eq.IsReadOnly) {
                user_count++;
                if (separator_iter.Equals (TreeIter.Zero)) {
                    // FIXME: Very strange bug if (null, null) is stored
                    // here regarding RowSeparatorFunc - not sure where the
                    // bug might be, but I'm 99% sure this is a bug in GTK+
                    // or Gtk#. I demand answers! Thanks to Sandy Armstrong
                    // for thinking outside of his box.
                    separator_iter = store.AppendValues (String.Empty, null);
                }
            }

            store.AppendValues (eq.Name, eq);
        }
예제 #13
0
        protected override void OnChanged()
        {
            EqualizerSetting eq = ActiveEqualizer;
            if (eq != null) {
                active_eq = eq;
            } else if (eq == null && active_eq == null) {
                base.OnChanged ();
                return;
            } else if (eq == null) {
                eq = active_eq;
            }

            if (Entry == null || eq.IsReadOnly) {
                return;
            }

            eq.Name = Entry.Text;

            TreeIter iter;
            if (GetIterForEqualizerSetting (eq, out iter)) {
                store.SetValue (iter, 0, eq.Name);
            }

            if (eq != ActiveEqualizer) {
                ActiveEqualizer = eq;
                base.OnChanged ();
            }
        }