Exemple #1
0
        public void Activate()
        {
            currentSong         = null;
            txtSongsSearch.Text = "";
            if (dvSongs.Table != null)
            {
                dvSongs.Sort = "Number ASC";
            }

            this.Height = this.Parent.Height - this.Location.Y - 40;
            this.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Bottom;
            Program.Presenter.ShowPopupWindow(this, this.PointToScreen(Point.Empty));
            this.Show();

            if (!Program.Presenter.bwSongsInit.IsBusy)
            {
                // Select the first song
                g.CurrentCell = new DataGridCell(0, 1);
                g.Select(0);
            }

            UpdateUI();
            txtSongsSearch.Focus();
            Program.Presenter.ActivateKeyClient(this);
        }
Exemple #2
0
        ///////////////////////////////////////////////////////
        public SongProject(PresenterDataset.SongsRow currentSong)
        {
            Program.ConfigHelper.SongDefaultsChanged += new EventHandler(ConfigHelper_SongDefaultsChanged);

            this.currentSong = currentSong;
            this.name        = currentSong.Number + ". " + currentSong.Title;
            LoadData(currentSong);
            PrepareForDisplay();
        }
Exemple #3
0
 private void g_Click(object sender, System.EventArgs e)
 {
     if (g.CurrentCell.RowNumber > -1 && dvSongs.Count != 0)
     {
         g.Select(g.CurrentCell.RowNumber);
         g_CurrentCellChanged(null, null);
     }
     else
     {
         currentSong = null;
     }
 }
Exemple #4
0
        private void UpdateSearchDisplayer(int autoNumber, int songNumber)
        {
            SongProject.LoadVerses(lSearchResultVerses, autoNumber, true);
            fullSongPreview.Init(lSearchResultVerses, songNumber, SearchHelper.BreakSearchTerms(txtFulltextSearch.Text));

            // Select the song behind the scenes
            dvSongs.RowFilter = "AutoNumber = " + autoNumber;
            if (dvSongs.Count > 0)
            {
                currentSong = (PresenterDataset.SongsRow)dvSongs[0].Row;
                UpdateUI();
            }
        }
Exemple #5
0
        public static void AddUpdateSong(PresenterDataset.SongsRow song)
        {
            using (FBirdTask t = new FBirdTask())
            {
                if (song.RowState == DataRowState.Added || song.RowState == DataRowState.Detached)
                {
                    t.CommandText = t.CommandText = "INSERT INTO [Songs] " +
                                                    "([AutoNumber], [Number], [Title], [Chorus], [Location], [DisplayDefault], [ImageId], [Overlay], [FontId]) VALUES " +
                                                    "(@AutoNumber, @Number, @Title, @Chorus, @Location, @DisplayDefault, @ImageId, @Overlay, @FontId)";
                }
                else
                {
                    t.CommandText = "UPDATE [Songs] SET " +
                                    "[Number] = @Number, " +
                                    "[Title] = @Title, " +
                                    "[Chorus] = @Chorus, " +
                                    "[Location] = @Location, " +
                                    "[DisplayDefault] = @DisplayDefault, " +
                                    "[ImageId] = @ImageId, " +
                                    "[Overlay] = @Overlay WHERE [AutoNumber] = @AutoNumber";
                }

                // HACK: M$ needs to fix up their parameters, regardless of name they are used in order
                if (t.CommandText.StartsWith("INSERT INTO"))
                {
                    t.AddParameter("@AutoNumber", song.AutoNumber);
                }

                t.AddParameter("@Number", song.Number);
                t.AddParameter("@Title", 256, song.Title);
                t.AddParameter("@Chorus", 256, song.Chorus);
                t.AddParameter("@Location", 1024, song.Location);
                t.AddParameter("@DisplayDefault", song.DisplayDefault);
                t.AddParameter("@ImageId", song.Image);
                t.AddParameter("@Overlay", song.Overlay);
                if (t.CommandText.StartsWith("INSERT INTO"))
                {
                    t.AddParameter("@FontId", -2);
                }

                // HACK: M$ needs to fix up their params
                if (t.CommandText.StartsWith("UPDATE"))
                {
                    t.AddParameter("@AutoNumber", song.AutoNumber);
                }

                t.ExecuteNonQuery();
            }
        }
Exemple #6
0
        private void txtSongsSearch_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == '*' || e.KeyChar == '%')
            {
                e.Handled = true;
            }
            if (e.KeyChar == (char)Keys.Enter)
            {
                e.Handled = true;

                if (dvSongs.Count > 0)
                {
                    currentSong = (PresenterDataset.SongsRow)dvSongs[g.CurrentCell.RowNumber].Row;
                }
                StartProject(true);
            }
        }
Exemple #7
0
        private void llNewSong_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            int newAutoNumber = Data.Songs.GetNextAutoNumber();

            PresenterDataset.SongsRow newSong = Program.SongsDS.Songs.NewSongsRow();
            newSong.Image      = -2;
            newSong.AutoNumber = newAutoNumber;
            newSong.Number     = -1;
            newSong.FontId     = -2;
            newSong.Title      = "";
            newSong.Chorus     = "";
            newSong.Overlay    = 777;

            SongEditorForm sef = new SongEditorForm(newSong);

            sef.Show();
        }
Exemple #8
0
        private void g_CurrentCellChanged(object sender, EventArgs e)
        {
            if (g.CurrentCell.RowNumber > -1 && dvSongs.Count != 0)
            {
                if (currentSong != (PresenterDataset.SongsRow)dvSongs[g.CurrentCell.RowNumber].Row)
                {
                    g.Select(g.CurrentCell.RowNumber);
                    currentSong = (PresenterDataset.SongsRow)dvSongs[g.CurrentCell.RowNumber].Row;
                }
            }
            else
            {
                currentSong = null;
            }
            g.Refresh();

            UpdateUI();
        }
Exemple #9
0
        private void lbSearchResults_DoubleClick(object sender, EventArgs e)
        {
            if (lbSearchResults.SelectedIndex == -1)
            {
                return;
            }

            // Start the song
            SongSearchResult ssr = (SongSearchResult)lbSearchResults.SelectedItem;
            int autoNumber       = ssr.autoNumber;

            dvSongs.RowFilter = "AutoNumber = " + autoNumber;
            if (dvSongs.Count > 0)
            {
                currentSong = (PresenterDataset.SongsRow)dvSongs[0].Row;
                StartProject(true);
            }
        }
Exemple #10
0
        private void InternalLoadSongFromDB(PresenterDataset.SongsRow row, bool isNew)
        {
            dt = new PresenterDataset.SongVersesDataTable();
            dt.Columns["AutoNumber"].DefaultValue = row.AutoNumber;
            if (!isNew)
            {
                using (FBirdTask t = new FBirdTask())
                {
                    t.CommandText =
                        "SELECT [AutoNumber], [IsChorus], [Verse], [OrderNum] " +
                        "FROM [SongVerses] " +
                        "WHERE [AutoNumber] = @AutoNumber " +
                        "ORDER BY [OrderNum]";
                    t.Parameters.Add("@AutoNumber", FbDbType.Integer);
                    t.Parameters["@AutoNumber"].Value = row.AutoNumber;

                    PresenterDataset.SongVersesRow r;
                    t.ExecuteReader();
                    while (t.DR.Read())
                    {
                        r            = dt.NewSongVersesRow();
                        r.AutoNumber = t.GetInt32(0);
                        r.IsChorus   = t.GetInt32(1) == 1 ? true : false;
                        r.Verse      = t.GetString(2).Replace("\r\n", "\n").Replace("\n", "\r\n");
                        r.OrderNum   = t.GetInt32(3);
                        dt.AddSongVersesRow(r);
                    }
                }
            }

            dt.AcceptChanges();

            if (dt.Count == 0)
            {
                btnSave.Enabled = false;
            }

            dataView1.BeginInit();
            dataView1.Table = dt;
            dataView1.EndInit();
            dataGrid1.TableStyles[0].MappingName = dt.TableName;
        }
Exemple #11
0
        //////////////////////////////////////////////////////////////////////
        public SongEditorForm(PresenterDataset.SongsRow row)
        {
            if (row == null)
            {
                throw new ArgumentNullException("row");
            }

            InitializeComponent();

            LoadSong(row);

            dataGridTextBoxColumn1.TextBox.AcceptsReturn = true;
            dataGridTextBoxColumn1.TextBox.Multiline     = true;
            dataGridTextBoxColumn1.TextBox.ScrollBars    = ScrollBars.Vertical;
            dataGrid1.KeyEnter      += new ProcessKeyPreviewMsgEventHandler(dataGrid1_KeyEnter);
            dt.SongVersesRowChanged += new EmpowerPresenter.PresenterDataset.SongVersesRowChangeEventHandler(dt_SongVersesRowChanged);
            dt.SongVersesRowDeleted += new EmpowerPresenter.PresenterDataset.SongVersesRowChangeEventHandler(dt_SongVersesRowDeleted);

            Program.Presenter.RegisterExKeyOwnerForm(this);
        }
Exemple #12
0
        private void deleteToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (currentSong == null)
            {
                return;
            }

            DialogResult result = MessageBox.Show(this,
                                                  Loc.Get("Are you sure you want to delete") + " " + currentSong.Number + " - " + currentSong.Title + "?",
                                                  Loc.Get("Confirm Deletion"), MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question,
                                                  MessageBoxDefaultButton.Button2);

            if (result == DialogResult.Yes)
            {
                Data.Songs.DeleteSong(currentSong.AutoNumber);
                currentSong.Delete();
                currentSong.AcceptChanges();
                currentSong = null;
            }
        }
Exemple #13
0
        private void LoadData(PresenterDataset.SongsRow currentSong)
        {
            // Clear
            songVerses.Clear();

            // Populate songVerses
            LoadVerses(songVerses, currentSong.AutoNumber, false);

            // Load other data
            currentSong.Image       = Data.Songs.GetSongBackground(currentSong.AutoNumber);
            copyright               = EmpowerPresenter.Data.Songs.GetSongCopyright(currentSong.AutoNumber);
            songFont                = PresenterFont.GetFontFromDatabase(currentSong.FontId);
            graphicsContext.opacity = currentSong.Overlay;
            if (graphicsContext.opacity == 777)
            {
                graphicsContext.opacity = Program.ConfigHelper.SongDefaultOpacity;
            }

            // Load img into context
            if (graphicsContext.img == null)
            {
                PhotoInfo pi = new PhotoInfo();
                pi.ImageId          = currentSong.Image;
                graphicsContext.img = pi.FullSizeImage;
            }

            // Load formatting settings
            string settings = currentSong.Settings;

            if (settings == null || settings == "")
            {
                settings = Program.ConfigHelper.SongDefaultFormat;
            }
            string[] sparts = settings.Split("|".ToCharArray());
            if (sparts.Length == 2)
            {
                stripFormatting     = bool.Parse(sparts[0]);
                includeVerseNumbers = bool.Parse(sparts[1]);
            }
        }
Exemple #14
0
        public void Deactivate()
        {
            this.Hide();

            // NOTE: it would be a good time to cancel the bg worker for search
            // Not impl currently

            // Clear search section
            ClearSearchResults();
            lbSearchResults.Visible = false;
            fullSongPreview.Visible = false;
            lblSort.Visible         = false;
            rNoSort.Visible         = false;
            rRelevent.Visible       = false;
            txtFulltextSearch.Text  = "";
            pnlSearchSelection.SendToBack();
            pnlInitTumbler.Visible = false;

            // Clear grid selection and update button/link states
            currentSong = null;
            if (!Program.Presenter.bwSongsInit.IsBusy)
            {
                g.UnSelect(g.CurrentCell.RowNumber);
            }
            UpdateUI();

#if DEMO
            if (searchExpired)
            {
                txtSongsSearch.Enabled = false;
            }
#endif

            Program.Presenter.ClearNavList();
            Program.Presenter.UnregisterPopupWindow(this);
            Program.Presenter.DeactivateKeyClient(this);
            Program.Presenter.DeactiveSearcher();
        }
Exemple #15
0
        // Song Information
        public void LoadSong(PresenterDataset.SongsRow row)
        {
            if (row == null)
            {
                this.Close();
                return;
            }

            currentRow = row;

            // Accept changes if not new
            if (row.RowState == DataRowState.Detached)
            {
                this.Text         = Loc.Get("Add a new song");
                this.btnSave.Text = Loc.Get("Add");

                // setup datatable
                InternalLoadSongFromDB(row, true);
            }
            else
            {
                this.btnSave.Text = Loc.Get("Save");
                row.AcceptChanges();

                // Load song verses from database
                InternalLoadSongFromDB(row, false);
            }



            // Set textboxes
            if (currentRow.Number != -1)
            {
                txtNumber.Text = currentRow.Number.ToString();
            }
            else
            {
                txtNumber.Text = "";
            }
            txtTitle.Text  = currentRow.Title;
            txtChorus.Text = currentRow.Chorus;

            // Image and properties
            currentImage = new PhotoInfo();
            if (currentRow.Image == -2)
            {
                currentImage.ImageId = Program.ConfigHelper.SongDefaultImage;
            }
            else
            {
                currentImage.ImageId = currentRow.Image;
            }
            sliderSuspendUpdate++;
            if (currentRow.Overlay == 777)
            {
                sliderOpacity.Value = 50;
            }
            else
            {
                sliderOpacity.Value = (int)(((double)currentRow.Overlay + 255) * 100 / 512);
            }
            sliderSuspendUpdate--;

            txtCopyright.Text = Data.Songs.GetSongCopyright(currentRow.AutoNumber);
        }