From 263b32f108c15cd1c55a8f4eb4704fac6553f1ac Mon Sep 17 00:00:00 2001 From: Maia Kozheva Date: Fri, 20 Nov 2009 18:22:19 +0600 Subject: Imported Upstream version 0.6.8 --- src/toolbareditor.cpp | 94 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 src/toolbareditor.cpp (limited to 'src/toolbareditor.cpp') diff --git a/src/toolbareditor.cpp b/src/toolbareditor.cpp new file mode 100644 index 0000000..95bcb90 --- /dev/null +++ b/src/toolbareditor.cpp @@ -0,0 +1,94 @@ +/* smplayer, GUI front-end for mplayer. + Copyright (C) 2006-2009 Ricardo Villalba + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#include "toolbareditor.h" + +#include +#include + +QStringList ToolbarEditor::save(QWidget * w) { + qDebug("ToolbarEditor::save: '%s'", w->objectName().toUtf8().data()); + + QList list = w->actions(); + QStringList o; + QAction * action; + + for (int n = 0; n < list.count(); n++) { + action = static_cast (list[n]); + if (action->isSeparator()) { + o << "separator"; + } + else + if (!action->objectName().isEmpty()) { + o << action->objectName(); + } + else + qWarning("ToolbarEditor::save: unknown action at pos %d", n); + } + + return o; +} + +void ToolbarEditor::load(QWidget *w, QStringList l, QList actions_list) +{ + qDebug("ToolbarEditor::load: '%s'", w->objectName().toUtf8().data()); + + QAction * action; + + for (int n = 0; n < l.count(); n++) { + qDebug("ToolbarEditor::load: loading action %s", l[n].toUtf8().data()); + + if (l[n] == "separator") { + qDebug("ToolbarEditor::load: adding separator"); + QAction * sep = new QAction(w); + sep->setSeparator(true); + w->addAction(sep); + } else { + action = findAction(l[n], actions_list); + if (action) { + w->addAction(action); + if (action->objectName().endsWith("_menu")) { + // If the action is a menu and is in a toolbar, as a toolbutton, change some of its properties + QToolBar * toolbar = qobject_cast(w); + if (toolbar) { + QToolButton * button = qobject_cast(toolbar->widgetForAction(action)); + if (button) { + //qDebug("ToolbarEditor::load: action %s is a toolbutton", action->objectName().toUtf8().constData()); + button->setPopupMode(QToolButton::InstantPopup); + //button->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); + } + } + } + } else { + qWarning("ToolbarEditor::load: action %s not found", l[n].toUtf8().data()); + } + } + } +} + +QAction * ToolbarEditor::findAction(QString s, QList actions_list) { + QAction * action; + + for (int n = 0; n < actions_list.count(); n++) { + action = static_cast (actions_list[n]); + if (action->objectName() == s) return action; + } + + return 0; +} + -- cgit v1.2.3