47#include "viewModeWidget.hh"
58 connect(viewModeList, SIGNAL(itemSelectionChanged()),
this, SLOT(
slotSetAllWidgets()));
64 connect(viewModeList, SIGNAL(currentTextChanged (QString)),
this, SLOT(
slotModeChanged(QString)) );
65 connect(viewModeList, SIGNAL(clicked (QModelIndex)),
this, SLOT(
slotModeClicked(QModelIndex)) );
70 connect(removeButton, SIGNAL(clicked()),
this, SLOT(
slotRemoveMode()));
71 connect(copyButton, SIGNAL(clicked()),
this, SLOT(
slotCopyMode()));
72 connect(addButton, SIGNAL(clicked()),
this, SLOT(
slotAddMode()));
75 viewModeList->setContextMenuPolicy(Qt::CustomContextMenu);
76 connect(viewModeList ,SIGNAL(customContextMenuRequested (
const QPoint & ) ),
81 toolbarList->setContextMenuPolicy(Qt::CustomContextMenu);
82 availableToolbars->setContextMenuPolicy(Qt::CustomContextMenu);
83 connect(toolbarList ,SIGNAL(customContextMenuRequested (
const QPoint & ) ),
85 connect(availableToolbars ,SIGNAL(customContextMenuRequested (
const QPoint & ) ),
90 toolboxList->setContextMenuPolicy(Qt::CustomContextMenu);
91 availableToolboxes->setContextMenuPolicy(Qt::CustomContextMenu);
92 connect(toolboxList ,SIGNAL(customContextMenuRequested (
const QPoint & ) ),
94 connect(availableToolboxes ,SIGNAL(customContextMenuRequested (
const QPoint & ) ),
99 contextMenuList->setContextMenuPolicy(Qt::CustomContextMenu);
100 availableContextMenus->setContextMenuPolicy(Qt::CustomContextMenu);
101 connect(contextMenuList ,SIGNAL(customContextMenuRequested (
const QPoint & ) ),
103 connect(availableContextMenus ,SIGNAL(customContextMenuRequested (
const QPoint & ) ),
109 rightArrowToolbar->setIcon( QIcon(OpenFlipper::Options::iconDirStr() + OpenFlipper::Options::dirSeparator() +
"arrow-right.png" ) );
111 leftArrowToolbar->setIcon( QIcon(OpenFlipper::Options::iconDirStr() + OpenFlipper::Options::dirSeparator() +
"arrow-left.png" ) );
116 rightArrowToolbox->setIcon( QIcon(OpenFlipper::Options::iconDirStr() + OpenFlipper::Options::dirSeparator() +
"arrow-right.png" ) );
118 leftArrowToolbox->setIcon( QIcon(OpenFlipper::Options::iconDirStr() + OpenFlipper::Options::dirSeparator() +
"arrow-left.png" ) );
121 upButtonToolbox->setIcon( QIcon(OpenFlipper::Options::iconDirStr() + OpenFlipper::Options::dirSeparator() +
"arrow-up.png" ) );
123 downButtonToolbox->setIcon( QIcon(OpenFlipper::Options::iconDirStr() + OpenFlipper::Options::dirSeparator() +
"arrow-down.png" ) );
128 rightArrowContextMenu->setIcon( QIcon(OpenFlipper::Options::iconDirStr() + OpenFlipper::Options::dirSeparator() +
"arrow-right.png" ) );
130 leftArrowContextMenu->setIcon( QIcon(OpenFlipper::Options::iconDirStr() + OpenFlipper::Options::dirSeparator() +
"arrow-left.png" ) );
133 upButtonContextMenu->setIcon( QIcon(OpenFlipper::Options::iconDirStr() + OpenFlipper::Options::dirSeparator() +
"arrow-up.png" ) );
135 downButtonContextMenu->setIcon( QIcon(OpenFlipper::Options::iconDirStr() + OpenFlipper::Options::dirSeparator() +
"arrow-down.png" ) );
141 connect(okButton, SIGNAL(clicked()),
this, SLOT(
slotChangeView()));
142 connect(cancelButton, SIGNAL(clicked()),
this, SLOT(close()));
143 connect(saveButton, SIGNAL(clicked()),
this, SLOT(
slotSaveMode()));
151 emit
removeMode( viewModeList->currentItem()->text() );
152 QListWidgetItem* item = viewModeList->takeItem( viewModeList->currentRow() );
160 if ( viewModeList->selectedItems().count() > 0)
161 for (
int i=0; i < modes_.size(); i++)
162 if (modes_[i]->name == viewModeList->currentItem()->text()){
168 std::cerr <<
"Currently selected Mode not found?!" << std::endl;
174 QString name = QInputDialog::getText(
this, tr(
"Copy View Mode"),
175 tr(
"Please enter a name for the new View Mode"), QLineEdit::Normal,
179 if (!ok || name.isEmpty()) {
180 QMessageBox::warning(
this, tr(
"Copy View Mode"), tr(
"Please enter a Name"), QMessageBox::Ok);
185 for (
int i=0; i < modes_.size(); i++)
186 if (modes_[i]->name == name){
187 QMessageBox::warning(
this, tr(
"Copy View Mode"), tr(
"Cannot Copy ViewMode. \nNew Name already in use for a different mode."), QMessageBox::Ok);
191 emit
saveMode(name,
true, modes_[
id]->visibleToolboxes, modes_[
id]->visibleToolbars, modes_[
id]->visibleContextMenus);
193 QListWidgetItem *item =
new QListWidgetItem(viewModeList);
194 item->setTextAlignment(Qt::AlignHCenter);
195 item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
196 item->setIcon(QIcon(OpenFlipper::Options::iconDirStr() + QDir::separator () +
"Unknown.png"));
199 item->setForeground( QBrush(QColor(0,0,150) ) );
208 QString name = QInputDialog::getText(
this, tr(
"Add View Mode"),
209 tr(
"Please enter a name for the new View Mode"), QLineEdit::Normal,
213 if (!ok || name.isEmpty()) {
214 QMessageBox::warning(
this, tr(
"Add View Mode"), tr(
"Please enter a Name"), QMessageBox::Ok);
219 for (
int i=0; i < modes_.size(); i++)
220 if (modes_[i]->name == name){
221 QMessageBox::warning(
this, tr(
"Add View Mode"), tr(
"Cannot Add ViewMode. \nNew Name already in use for a different mode."), QMessageBox::Ok);
225 emit
saveMode(name,
true, QStringList(), QStringList(), modes_[0]->visibleContextMenus);
227 QListWidgetItem *item =
new QListWidgetItem(viewModeList);
228 item->setTextAlignment(Qt::AlignHCenter);
229 item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
230 item->setIcon(QIcon(OpenFlipper::Options::iconDirStr() + QDir::separator () +
"Unknown.png"));
233 item->setForeground( QBrush(QColor(0,0,150) ) );
243 if (viewModeList->itemAt(_pos)){
247 menu.addAction(tr(
"Remove Mode"),
this, SLOT (
slotRemoveMode() ));
248 menu.addAction(tr(
"Copy Mode"),
this, SLOT (
slotCopyMode() ));
249 menu.addAction(tr(
"Change Icon"),
this, SLOT (
slotSetIcon() ));
252 for (
int i=0; i < modes_.size(); i++)
253 if (modes_[i]->name == viewModeList->currentItem()->text()){
254 menu.actions()[0]->setEnabled(modes_[i]->custom);
255 menu.actions()[2]->setEnabled(modes_[i]->custom);
259 menu.exec(viewModeList->mapToGlobal( _pos) );
266 for (
int i=0; i < modes_.size(); i++)
267 if (modes_[i]->name == viewModeList->currentItem()->text()){
273 std::cerr <<
"Unable to find Mode viewModeWidget::slotSetIcon()" << std::endl;
278 QString fileName = QFileDialog::getOpenFileName (
this, tr(
"Select Image for view Mode ( best size : 150x150px )"), QString(), tr(
"Images (*.png *.xpm *.jpg)") );
280 QFile file(fileName);
281 QFileInfo fileInfo(file);
283 if ( ! file.exists() )
287 file.copy(OpenFlipper::Options::configDirStr() + QDir::separator() +
"Icons" + QDir::separator() +
"viewMode_" + fileInfo.fileName() );
289 modes_[id]->icon =
"viewMode_" + fileInfo.fileName();
291 show(modes_[
id]->name);
298 toolboxList->clear();
299 toolbarList->clear();
300 contextMenuList->clear();
301 availableToolboxes->clear();
302 availableToolbars->clear();
303 availableContextMenus->clear();
305 QStringList toolboxes;
306 QStringList toolbars;
307 QStringList contextmenus;
310 for (
int m=0; m < viewModeList->selectedItems().size(); m++) {
313 for (
int i=0; i < modes_.size(); i++) {
314 if ( modes_[i]->name == (viewModeList->selectedItems()[m])->text() ) {
315 toolboxes = modes_[i]->visibleToolboxes;
316 toolbars = modes_[i]->visibleToolbars;
317 contextmenus = modes_[i]->visibleContextMenus;
319 if (contextmenus.contains(
"ALL_THAT_EXIST"))
320 contextmenus = modes_[0]->visibleContextMenus;
323 for (
int j = 0; j < toolboxes.size(); j++)
325 QListWidgetItem* toolbox =
new QListWidgetItem(modes_[0]->toolboxIconMap[toolboxes[j]], toolboxes[j]);
326 toolboxList->addItem(toolbox);
329 toolbarList->addItems(toolbars);
330 contextMenuList->addItems(contextmenus);
337 if ( !modes_.empty() ) {
338 QStringList allToolboxes = modes_[0]->visibleToolboxes;
339 QStringList allToolbars = modes_[0]->visibleToolbars;
340 QStringList allContextMenus = modes_[0]->visibleContextMenus;
342 QStringList availableToolboxList;
343 QStringList availableToolbarList;
344 QStringList availableContextMenuList;
346 for (
int i = 0; i < allToolboxes.size(); ++i ) {
347 if ( ! toolboxes.contains(allToolboxes[i]) )
348 availableToolboxList.push_back(allToolboxes[i]);
351 for (
int i = 0; i < allToolbars.size(); ++i ) {
352 if ( ! toolbars.contains(allToolbars[i]) )
353 availableToolbarList.push_back(allToolbars[i]);
356 for (
int i = 0; i < allContextMenus.size(); ++i ) {
357 if ( ! contextmenus.contains(allContextMenus[i]) )
358 availableContextMenuList.push_back(allContextMenus[i]);
361 for (
int i = 0; i < availableToolboxList.size(); i++)
363 QListWidgetItem* availableToolbox =
new QListWidgetItem(modes_[0]->toolboxIconMap[availableToolboxList[i]], availableToolboxList[i]);
364 availableToolboxes->addItem(availableToolbox);
367 availableToolbars->addItems(availableToolbarList);
368 availableContextMenus->addItems(availableContextMenuList);
371 std::cerr <<
"Mode not found!" << std::endl;
384 if (toolboxList->itemAt(_pos)){
388 if ( toolbarList->selectedItems().count() != 0 )
391 menu.exec(toolbarList->mapToGlobal( _pos) );
398 if (availableToolbars->itemAt(_pos)){
402 if ( availableToolbars->selectedItems().count() != 0 )
405 menu.exec(availableToolbars->mapToGlobal( _pos) );
416 if (toolboxList->itemAt(_pos)){
420 if (toolboxList->selectedItems().count() == 1){
426 if ( toolboxList->selectedItems().count() != 0 )
429 menu.exec(toolboxList->mapToGlobal( _pos) );
436 if (availableToolboxes->itemAt(_pos)){
440 if ( availableToolboxes->selectedItems().count() != 0 )
443 menu.exec(availableToolboxes->mapToGlobal( _pos) );
454 if (contextMenuList->itemAt(_pos)){
458 if (contextMenuList->selectedItems().count() == 1){
464 if ( contextMenuList->selectedItems().count() != 0 )
467 menu.exec(contextMenuList->mapToGlobal( _pos) );
474 if (availableContextMenus->itemAt(_pos)){
478 if ( availableContextMenus->selectedItems().count() != 0 )
481 menu.exec(availableContextMenus->mapToGlobal( _pos) );
490 QList<QListWidgetItem *> selectedItems = toolbarList->selectedItems ();
491 for (
int i = 0 ; i < selectedItems.size(); ++i )
492 availableToolbars->addItem(selectedItems[i]->text());
494 qDeleteAll(selectedItems);
498 QList<QListWidgetItem *> selectedItems = availableToolbars->selectedItems ();
499 for (
int i = 0 ; i < selectedItems.size(); ++i )
500 toolbarList->addItem(selectedItems[i]->text());
502 qDeleteAll(selectedItems);
510 QList<QListWidgetItem *> selectedItems = toolboxList->selectedItems ();
511 for (
int i = 0 ; i < selectedItems.size(); ++i )
512 availableToolboxes->addItem(selectedItems[i]->text());
514 qDeleteAll(selectedItems);
518 QList<QListWidgetItem *> selectedItems = availableToolboxes->selectedItems ();
519 for (
int i = 0 ; i < selectedItems.size(); ++i )
520 toolboxList->addItem(selectedItems[i]->text());
522 qDeleteAll(selectedItems);
528 if (toolboxList->selectedItems().count() == 1){
529 if (toolboxList->currentRow() == 0)
return;
531 QString item = toolboxList->currentItem()->text();
532 int oldRow = toolboxList->currentRow();
534 for (
int i=0; i < toolboxList->count(); i++)
535 widgets << toolboxList->item(i)->text();
538 QString last = widgets[0];
539 for (
int i=1; i < widgets.size(); i++){
540 if (widgets[i] == item){
547 toolboxList->clear();
548 toolboxList->addItems(widgets);
550 toolboxList->setCurrentRow(oldRow-1);
556 if (toolboxList->selectedItems().count() == 1){
557 if (toolboxList->currentRow() == toolboxList->count()-1)
return;
559 QString item = toolboxList->currentItem()->text();
560 int oldRow = toolboxList->currentRow();
562 for (
int i=0; i < toolboxList->count(); i++)
563 widgets << toolboxList->item(i)->text();
566 QString last = widgets[widgets.size()-1];
567 for (
int i=widgets.size()-2; i >= 0; i--){
568 if (widgets[i] == item){
575 toolboxList->clear();
576 toolboxList->addItems(widgets);
578 toolboxList->setCurrentRow(oldRow+1);
587 QList<QListWidgetItem *> selectedItems = contextMenuList->selectedItems ();
588 for (
int i = 0 ; i < selectedItems.size(); ++i )
589 availableContextMenus->addItem(selectedItems[i]->text());
591 qDeleteAll(selectedItems);
595 QList<QListWidgetItem *> selectedItems = availableContextMenus->selectedItems ();
596 for (
int i = 0 ; i < selectedItems.size(); ++i )
597 contextMenuList->addItem(selectedItems[i]->text());
599 qDeleteAll(selectedItems);
605 if (contextMenuList->selectedItems().count() == 1){
606 if (contextMenuList->currentRow() == 0)
return;
608 QString item = contextMenuList->currentItem()->text();
609 int oldRow = contextMenuList->currentRow();
611 for (
int i=0; i < contextMenuList->count(); i++)
612 widgets << contextMenuList->item(i)->text();
615 QString last = widgets[0];
616 for (
int i=1; i < widgets.size(); i++){
617 if (widgets[i] == item){
624 contextMenuList->clear();
625 contextMenuList->addItems(widgets);
627 contextMenuList->setCurrentRow(oldRow-1);
633 if (contextMenuList->selectedItems().count() == 1){
634 if (contextMenuList->currentRow() == contextMenuList->count()-1)
return;
636 QString item = contextMenuList->currentItem()->text();
637 int oldRow = contextMenuList->currentRow();
639 for (
int i=0; i < contextMenuList->count(); i++)
640 widgets << contextMenuList->item(i)->text();
643 QString last = widgets[widgets.size()-1];
644 for (
int i=widgets.size()-2; i >= 0; i--){
645 if (widgets[i] == item){
652 contextMenuList->clear();
653 contextMenuList->addItems(widgets);
655 contextMenuList->setCurrentRow(oldRow+1);
668 QStringList toolboxes;
669 for (
int i=0; i < toolboxList->count(); i++)
670 toolboxes << toolboxList->item(i)->text();
673 QStringList toolbars;
674 for (
int i=0; i < toolbarList->count(); i++)
675 toolbars << toolbarList->item(i)->text();
678 QStringList contextmenus;
679 for (
int i=0; i < contextMenuList->count(); i++)
680 contextmenus << contextMenuList->item(i)->text();
684 if (viewModeList->selectedItems().size() > 0)
685 mode = viewModeList->selectedItems()[0]->text();
692 if ( viewModeList->selectedItems().count() > 0)
693 for (
int i=0; i < modes_.size(); i++)
694 if (modes_[i]->name == viewModeList->currentItem()->text()){
700 std::cerr <<
"Currently selected Mode not found?!" << std::endl;
704 bool matching =
true;
706 if ( modes_[
id]->visibleToolboxes.size() == toolboxes.size() ) {
707 for (
int i = 0 ; i < modes_[id]->visibleToolboxes.size(); ++i )
708 if ( modes_[
id]->visibleToolboxes[i] != toolboxes[i] )
715 if ( modes_[
id]->visibleToolbars.size() == toolbars.size() ) {
716 for (
int i = 0 ; i < modes_[id]->visibleToolbars.size(); ++i )
717 if ( modes_[
id]->visibleToolbars[i] != toolbars[i] )
724 if ( modes_[
id]->visibleContextMenus.size() == contextmenus.size() ) {
725 for (
int i = 0 ; i < modes_[id]->visibleContextMenus.size(); ++i )
726 if ( modes_[
id]->visibleContextMenus[i] != contextmenus[i] )
733 int ret = QMessageBox::warning(
this,
734 tr(
"Mode has been changed!"),
735 tr(
"You changed the view mode configuration. Do you want to save it?"),
736 QMessageBox::Yes|QMessageBox::No,
738 if (ret == QMessageBox::Yes)
743 emit
changeView(mode,toolboxes,toolbars,contextmenus);
751 if ( viewModeList->selectedItems().count() > 0)
752 for (
int i=0; i < modes_.size(); i++)
753 if (modes_[i]->name == viewModeList->currentItem()->text()){
759 std::cerr <<
"Mode Not found in slotSaveMode" << std::endl;
764 QStringList toolboxes;
765 for (
int i=0; i < toolboxList->count(); i++)
766 toolboxes << toolboxList->item(i)->text();
769 QStringList toolbars;
770 for (
int i=0; i < toolbarList->count(); i++)
771 toolbars << toolbarList->item(i)->text();
774 QStringList contextmenus;
775 for (
int i=0; i < contextMenuList->count(); i++)
776 contextmenus << contextMenuList->item(i)->text();
778 bool createNewMode =
false;
780 QString message = tr(
"You cannot change predefined modes.\n"
781 "Please enter a new Name for the mode.");
784 if ( ! modes_[
id]->custom ) {
785 createNewMode =
true;
788 int ret = QMessageBox::warning(
this,
789 tr(
"View Mode exists"),
790 tr(
"View Mode already exists. Do you want to overwrite it?"),
791 QMessageBox::Yes|QMessageBox::No,
793 if (ret == QMessageBox::No) {
794 message = tr(
"New name for view mode:");
795 createNewMode =
true;
800 if ( createNewMode ) {
804 QString name = QInputDialog::getText(
this, tr(
"Save view Mode"),
805 message, QLineEdit::Normal,
809 if (!ok || name.isEmpty()) {
810 std::cerr <<
"Illegal or no name given!" << std::endl;
815 for (
int i=0; i < modes_.size(); i++)
816 if (modes_[i]->name == name){
817 QMessageBox::warning(
this, tr(
"Save View Mode"), tr(
"Cannot Save ViewMode.\nName already taken by a different mode."), QMessageBox::Ok);
821 emit
saveMode(name,
true, toolboxes, toolbars, contextmenus);
824 emit
saveMode(modes_[
id]->name,
true, toolboxes, toolbars, contextmenus);
825 show(modes_[
id]->name);
854 viewModeList->clear();
855 for (
int i=0; i < modes_.size(); i++){
856 QListWidgetItem *item =
new QListWidgetItem(viewModeList);
857 item->setTextAlignment(Qt::AlignHCenter);
858 item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
860 QFile iconFile( OpenFlipper::Options::iconDirStr() + QDir::separator () + modes_[i]->icon );
862 if ( iconFile.exists() )
863 item->setIcon( QIcon(iconFile.fileName()) );
865 iconFile.setFileName( OpenFlipper::Options::configDirStr() + QDir::separator() +
"Icons" + QDir::separator() + modes_[i]->icon );
866 if ( iconFile.exists() )
867 item->setIcon( QIcon(iconFile.fileName()) );
869 item->setIcon( QIcon(OpenFlipper::Options::iconDirStr() + QDir::separator () +
"Unknown.png") );
870 std::cerr <<
"Unable to find icon file! " << iconFile.fileName().toStdString() << std::endl;
874 item->setText(modes_[i]->name);
876 if (modes_[i]->custom)
877 viewModeList->item(i)->setForeground( QBrush(QColor(0,0,150) ) );
879 viewModeList->item(i)->setForeground( QBrush(QColor(0,0,0) ) );
883 viewModeList->setCurrentRow(0);
885 for (
int i=0; i < viewModeList->count(); i++)
886 if (viewModeList->item(i)->text() == _lastMode)
887 viewModeList->setCurrentRow(i);
889 removeButton->setEnabled(
false);
901 if (viewModeList->selectedItems().count() > 0){
902 for (
int i=0; i < modes_.size(); i++)
903 if (modes_[i]->name == viewModeList->currentItem()->text()){
904 removeButton->setEnabled(modes_[i]->custom);