Silence some unused parameter warnings
[kworship.git] / kworship / songdb / KwSongdbPlugin.cpp
blob04e1d694f6785609b69354ca579ceb10d449cced
1 /***************************************************************************
2 * This file is part of KWorship. *
3 * Copyright 2008 James Hogan <james@albanarts.com> *
4 * *
5 * KWorship is free software: you can redistribute it and/or modify *
6 * it under the terms of the GNU General Public License as published by *
7 * the Free Software Foundation, either version 2 of the License, or *
8 * (at your option) any later version. *
9 * *
10 * KWorship is distributed in the hope that it will be useful, *
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
13 * GNU General Public License for more details. *
14 * *
15 * You should have received a copy of the GNU General Public License *
16 * along with KWorship. If not, write to the Free Software Foundation, *
17 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
18 ***************************************************************************/
20 /**
21 * @file KwSongdbPlugin.cpp
22 * @brief Song database plugin.
23 * @author James Hogan <james@albanarts.com>
26 #include "KwSongdbPlugin.h"
27 #include "KwSongdbTree.h"
28 #include "KwSongdb.h"
29 #include "KwSongdbSongEditDialog.h"
30 #include "KwSongdbSong.h"
31 #include "KwSongdbSongBooksEditWidget.h"
32 #include <KwApplication.h>
33 #include <kworship.h>
35 #include <KAction>
36 #include <KActionMenu>
37 #include <KActionCollection>
38 #include <KGenericFactory>
39 #include <KMenu>
40 #include <KMessageBox>
42 #include <QToolBar>
43 #include <QDockWidget>
44 #include <QVBoxLayout>
45 #include <QSqlError>
47 K_EXPORT_COMPONENT_FACTORY( kworship_songdb, KGenericFactory<KwSongdbPlugin>("kworship_songdb") )
50 * Constructors + destructor
53 /// Default constructor.
54 KwSongdbPlugin::KwSongdbPlugin(QObject* parent, const QStringList& params)
55 : KwPlugin(parent, "songdb",
56 i18n("Songdb"),
57 i18n("The song database plugin allows for the management and display of song lyrics."))
58 , m_songDbTree(0)
59 , m_unlockSongDbAction(0)
60 , m_lockSongDbAction(0)
61 , m_groupSongsByAction(0)
62 , m_addSongAction(0)
63 , m_editSongAction(0)
64 , m_editSongBooksAction(0)
66 Q_UNUSED(params);
68 setXMLFile("songdb/kworship_songdbui.rc");
70 // Set up actions
72 m_unlockSongDbAction = new KAction(KIcon("document-decrypt"), i18n("Unlock Song Database"), this);
73 actionCollection()->addAction( QLatin1String("unlock_song_database"), m_unlockSongDbAction);
74 connect(m_unlockSongDbAction, SIGNAL(triggered(bool)), this, SLOT(songdbUnlock()));
76 m_lockSongDbAction = new KAction(KIcon("document-encrypt"), i18n("Lock Song Database"), this);
77 m_lockSongDbAction->setVisible(false);
78 actionCollection()->addAction( QLatin1String("lock_song_database"), m_lockSongDbAction);
79 connect(m_lockSongDbAction, SIGNAL(triggered(bool)), this, SLOT(songdbLock()));
81 m_groupSongsByAction = new KActionMenu(KIcon("view-filter"), i18n("Group By"), this);
82 m_groupSongsByAction->setDelayed(false);
83 actionCollection()->addAction( QLatin1String("group_songs_by"), m_groupSongsByAction);
85 m_addSongAction = new KAction(KIcon("list-add"), i18n("Add Song"), this);
86 actionCollection()->addAction( QLatin1String("add_song"), m_addSongAction);
87 connect(m_addSongAction, SIGNAL(triggered(bool)), this, SLOT(songdbAdd()));
89 m_editSongAction = new KAction(KIcon("view-media-lyrics"), i18n("Edit Song"), this);
90 actionCollection()->addAction( QLatin1String("edit_song"), m_editSongAction);
91 connect(m_editSongAction, SIGNAL(triggered(bool)), this, SLOT(songdbEdit()));
93 m_editSongBooksAction = new KAction(KIcon("format-list-ordered"), i18n("Edit Song Books"), this);
94 actionCollection()->addAction( QLatin1String("edit_song_books"), m_editSongBooksAction);
95 connect(m_editSongBooksAction, SIGNAL(triggered(bool)), this, SLOT(songdbEditSongBooks()));
97 // Set up the docker
98 m_docker = new QDockWidget(i18n("Song DB"));
99 m_docker->setObjectName("dockSongdb");
100 QWidget* mainDockWidget = new QWidget(/*m_docker*/);
101 QVBoxLayout* dockLayout = new QVBoxLayout(mainDockWidget);
102 m_docker->setWidget(mainDockWidget);
104 // Ensure database is connected
105 KwApplication* app = KwApplication::self();
106 if (app->database().isOpen())
108 new KwSongdb(app->database());
110 // Toolbar widget
111 QWidget* toolbarWidget = new QWidget(mainDockWidget);
112 dockLayout->addWidget(toolbarWidget);
113 QHBoxLayout* toolbarLayout = new QHBoxLayout(toolbarWidget);
115 // Small toolbar for group by action
116 QToolBar* songTextToolBar = new QToolBar("Songs");
117 songTextToolBar->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
118 songTextToolBar->setSizePolicy(QSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum));
119 toolbarLayout->addWidget(songTextToolBar);
121 songTextToolBar->addAction(m_groupSongsByAction);
123 // Rest of the toolbar
124 QToolBar* songToolBar = new QToolBar("Songs");
125 songToolBar->setSizePolicy(QSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum));
126 toolbarLayout->addWidget(songToolBar);
128 songToolBar->addAction(m_addSongAction);
129 songToolBar->addAction(m_editSongAction);
130 songToolBar->addAction(m_editSongBooksAction);
131 KAction* insertIntoPlaylistAction = new KAction(KIcon("player_playlist"), i18n("Insert Into Playlist"), songToolBar);
132 songToolBar->addAction(insertIntoPlaylistAction);
134 KMenu* groupByMenu = new KMenu(songToolBar);
135 m_groupSongsByAction->setMenu(groupByMenu);
137 m_songDbTree = new KwSongdbTree(mainDockWidget);
138 dockLayout->addWidget(m_songDbTree);
139 groupByMenu->addActions(m_songDbTree->groupByActions()->actions());
141 else
143 QLabel* labelNoDb = new QLabel(i18n("Song database not connected: %1", app->database().lastError().text()), mainDockWidget);
144 dockLayout->addWidget(labelNoDb);
147 app->mainWindow()->addDockWidget(Qt::LeftDockWidgetArea, m_docker);
150 /// Destructor.
151 KwSongdbPlugin::~KwSongdbPlugin()
153 delete KwSongdb::self();
157 * Slots
160 void KwSongdbPlugin::songdbUnlock()
162 m_unlockSongDbAction->setVisible(false);
163 m_lockSongDbAction->setVisible(true);
166 void KwSongdbPlugin::songdbLock()
168 m_unlockSongDbAction->setVisible(true);
169 m_lockSongDbAction->setVisible(false);
172 void KwSongdbPlugin::songdbAdd()
174 KwSongdbSongEditDialog* dialog = new KwSongdbSongEditDialog(0);
175 dialog->setCaption(i18n("Add Song"));
176 dialog->setAttribute(Qt::WA_DeleteOnClose, true);
177 dialog->show();
180 void KwSongdbPlugin::songdbEdit()
182 /// @todo Ensure the same song isn't open twice
183 KwSongdbSong* song = m_songDbTree->currentSong();
184 if (0 != song)
186 KwSongdbVersion* version = m_songDbTree->currentSongVersion();
187 // version may be 0
188 KwSongdbSongEditDialog* dialog = new KwSongdbSongEditDialog(song, version);
189 dialog->setCaption(i18n("Edit Song - %1", song->name()));
190 dialog->setAttribute(Qt::WA_DeleteOnClose, true);
191 dialog->show();
193 else
195 KMessageBox::information(KwApplication::self()->mainWindow(), i18n("Please select a song."));
199 void KwSongdbPlugin::songdbEditSongBooks()
201 KwSongdbSongBooksEditWidget::showDialog();
205 * Loading and unloading virtual interface
208 void KwSongdbPlugin::_load()
212 void KwSongdbPlugin::_unload()