[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    branches/extragear/graphics/kipi-plugins/gpssync2
From:       Gabriel Voicu <ping.gabi () gmail ! com>
Date:       2010-05-11 21:18:09
Message-ID: 20100511211809.8AFAAAC8B3 () svn ! kde ! org
[Download RAW message or body]

SVN commit 1125636 by gvoicu:

Added tab collapsing into the Correlator2 Widget

 M  +0 -1      TODO  
 M  +124 -28   gpssyncdialog.cpp  


--- branches/extragear/graphics/kipi-plugins/gpssync2/TODO #1125635:1125636
@@ -3,7 +3,6 @@
 - read dilution of precision data and add warnings
 - add interpolation
 - add warnings when gpx files failed to load
-- make tabs collapsible
 - add undo/redo/thumbnail size buttons
 - make the coordinates of the images editable
 - add copy/paste of coordinates
--- branches/extragear/graphics/kipi-plugins/gpssync2/gpssyncdialog.cpp \
#1125635:1125636 @@ -9,6 +9,7 @@
  *
  * Copyright (C) 2006-2009 by Gilles Caulier <caulier dot gilles at gmail dot com>
  * Copyright (C) 2010 by Michael G. Hansen <mike at mghansen dot de>
+ * Copyright (C) 2010 by Gabriel Voicu <ping dot gabi at gmail dot com>
  *
  * This program is free software; you can redistribute it
  * and/or modify it under the terms of the GNU General
@@ -44,6 +45,9 @@
 #include <QSplitter>
 #include <QTreeView>
 #include <QUndoView>
+#include <QStackedLayout>
+#include <QStackedWidget>
+#include <QHBoxLayout>
 
 // KDE includes
 
@@ -120,7 +124,8 @@
     : interface(0),
       about(0),
       mapWidget(0),
-      uiEnabled(true)
+      uiEnabled(true),
+      splitterSize(0)
     {
     }
 
@@ -132,8 +137,8 @@
 
     KDialogButtonBox         *buttonBox;
     KTabWidget               *tabWidget;
-    QSplitter                *splitter1;
-    QSplitter                *splitter2;
+    QSplitter                *VSplitter;
+    QSplitter                *HSplitter;
     WMW2::WorldMapWidget2    *mapWidget;
     KipiImageList            *treeView;
     KIPIPlugins::PreviewManager *previewManager;
@@ -151,6 +156,10 @@
     QUndoView *undoView;
     QAction *sortActionOldestFirst;
     QAction *sortActionYoungestFirst;
+
+    QStackedWidget	     *stackedWidget;
+    QTabBar                  *tabBar;
+    int splitterSize;
 };
 
 GPSSyncDialog::GPSSyncDialog(KIPI::Interface* interface, QWidget* parent)
@@ -174,9 +183,13 @@
     KVBox* const vboxMain = new KVBox(this);
     setMainWidget(vboxMain);
     
-    d->splitter2 = new QSplitter(Qt::Horizontal, vboxMain);
-    d->splitter2->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
+    KHBox* const hboxMain = new KHBox(vboxMain);
+    hboxMain->layout()->setSpacing(spacingHint());
+    hboxMain->layout()->setMargin(marginHint());
 
+    d->HSplitter = new QSplitter(Qt::Horizontal, hboxMain);
+    d->HSplitter->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
+
     KHBox* const hboxBottom = new KHBox(vboxMain);
     hboxBottom->layout()->setSpacing(spacingHint());
     hboxBottom->layout()->setMargin(marginHint());
@@ -191,9 +204,9 @@
     d->buttonBox->addButton(KStandardGuiItem::apply(), QDialogButtonBox::AcceptRole, \
                this, SLOT(slotApplyClicked()));
     d->buttonBox->addButton(KStandardGuiItem::close(), QDialogButtonBox::RejectRole, \
this, SLOT(close()));  
-    d->splitter1 = new QSplitter(Qt::Vertical, d->splitter2);
-    d->splitter2->addWidget(d->splitter1);
-    d->splitter2->setStretchFactor(0, 10);
+    d->VSplitter = new QSplitter(Qt::Vertical, d->HSplitter);
+    d->HSplitter->addWidget(d->VSplitter);
+    d->HSplitter->setStretchFactor(0, 10);
 
     d->mapWidget = new WMW2::WorldMapWidget2(this);
     d->mapWidget->setRepresentativeChooser(d->representativeChooser);
@@ -223,7 +236,7 @@
     QVBoxLayout* const vbox = new QVBoxLayout(dummyWidget);
     vbox->addWidget(d->mapWidget);
     vbox->addWidget(d->mapWidget->getControlWidget());
-    d->splitter1->addWidget(dummyWidget);
+    d->VSplitter->addWidget(dummyWidget);
 
     d->treeView = new KipiImageList(d->interface, this);
     d->treeView->setModel(d->imageModel, d->selectionModel);
@@ -234,26 +247,46 @@
     d->treeView->view()->setDragEnabled(true);
     d->treeView->view()->setDragDropMode(QAbstractItemView::DragOnly);
     d->treeView->view()->setSelectionMode(QAbstractItemView::ExtendedSelection);
-    d->splitter1->addWidget(d->treeView);
+    d->VSplitter->addWidget(d->treeView);
 
-    d->tabWidget = new KTabWidget(d->splitter2);
-    d->tabWidget->setTabPosition(KTabWidget::East);
-    d->splitter2->setCollapsible(1, true);
+    d->HSplitter->setCollapsible(1, true);
 
-    d->previewManager = new KIPIPlugins::PreviewManager(d->tabWidget);
+    d->stackedWidget = new QStackedWidget(d->HSplitter);
+    d->HSplitter->addWidget(d->stackedWidget);          
+    d->splitterSize = 0;
+
+    KVBox* vboxTabBar = new KVBox(hboxMain);
+    vboxTabBar->layout()->setSpacing(0);
+    vboxTabBar->layout()->setMargin(0);
+    d->tabBar = new QTabBar(vboxTabBar);
+    d->tabBar->setShape(QTabBar::RoundedEast);
+
+    dynamic_cast<QVBoxLayout*>(vboxTabBar->layout())->addStretch(200);
+
+
+    d->tabBar->addTab("Image viewer");                
+    d->tabBar->addTab("GPS Correlator");
+    d->tabBar->addTab("Settings");
+    d->tabBar->addTab("Undo/Redo");                  
+    
+    d->tabBar->installEventFilter(this);       
+
+    d->previewManager = new KIPIPlugins::PreviewManager(d->stackedWidget);
     // TODO: why is the minimum size hardcoded to 400x300???
+    
     d->previewManager->setMinimumSize(QSize(200, 200));
-    d->tabWidget->addTab(d->previewManager, i18n("Image viewer"));
+    d->stackedWidget->addWidget(d->previewManager);           
 
-    d->correlatorWidget = new GPSCorrelatorWidget(d->tabWidget, d->imageModel, \
                marginHint(), spacingHint());
-    d->tabWidget->addTab(d->correlatorWidget, i18n("GPS Correlator"));
+    d->correlatorWidget = new GPSCorrelatorWidget(d->stackedWidget, d->imageModel, \
marginHint(), spacingHint()); +    d->stackedWidget->addWidget(d->correlatorWidget);  \
  
-    d->settingsWidget = new GPSSettingsWidget(d->tabWidget);
-    d->tabWidget->addTab(d->settingsWidget, i18n("Settings"));
+    d->settingsWidget = new GPSSettingsWidget(d->stackedWidget);
+    d->stackedWidget->addWidget(d->settingsWidget);              
 
-    d->undoView = new QUndoView(d->undoStack, d->tabWidget);
-    d->tabWidget->addTab(d->undoView, i18n("Undo/Redo"));
+    d->undoView = new QUndoView(d->undoStack, d->stackedWidget);
+    d->stackedWidget->addWidget(d->undoView);                     
 
+
     // ---------------------------------------------------------------
     // About data and help button.
 
@@ -292,10 +325,11 @@
     connect(d->correlatorWidget, SIGNAL(signalUndoCommand(GPSUndoCommand*)),
             this, SLOT(slotGPSUndoCommand(GPSUndoCommand*)));
 
-//     connect(this, SIGNAL(applyClicked()),
-//             this, SLOT(slotApplyClicked()));
+     connect(this, SIGNAL(applyClicked()),
+             this, SLOT(slotApplyClicked()));
 
     readSettings();
+
 }
 
 GPSSyncDialog::~GPSSyncDialog()
@@ -304,6 +338,56 @@
     delete d;
 }
 
+
+bool GPSSyncDialog::eventFilter( QObject* o, QEvent* e)
+{
+    if ( ( o == d->tabBar ) && ( e->type() == QEvent::MouseButtonPress ) )
+    {
+        QMouseEvent const *m = static_cast<QMouseEvent *>(e);           
+
+        QPoint p (m->x(), m->y());
+        const int var = d->tabBar->tabAt(p);
+
+        QList<int> sizes = d->HSplitter->sizes();
+        if (d->splitterSize == 0)
+        {
+            if (d->tabBar->currentIndex() == var)
+            {
+                d->splitterSize = sizes[1];
+                sizes[1] = 0;
+            }
+        }
+        else
+        {
+            sizes[1] = d->splitterSize;
+            d->splitterSize = 0;
+        }
+
+        d->tabBar->setCurrentIndex(var);
+        d->stackedWidget->setCurrentIndex(var);
+        d->HSplitter->setSizes(sizes);
+
+        return true;                        
+    }
+
+    return QWidget::eventFilter(o,e);
+}
+
+void GPSSyncDialog::setCurrentTab(int index)
+{
+
+    d->tabBar->setCurrentIndex(index);
+    d->stackedWidget->setCurrentIndex(index);
+
+    QList<int> sizes = d->HSplitter->sizes();
+    if (d->splitterSize != 0)
+    {
+        sizes[1] = d->splitterSize;
+        d->splitterSize = 0;
+    }
+    d->HSplitter->setSizes(sizes);
+}
+
 void GPSSyncDialog::setImages( const KUrl::List& images )
 {
     for( KUrl::List::ConstIterator it = images.begin(); it != images.end(); ++it )
@@ -322,8 +406,9 @@
     d->mapWidget->readSettingsFromGroup(&group);
     d->correlatorWidget->readSettingsFromGroup(&group);
     d->treeView->readSettingsFromGroup(&group);
-    d->tabWidget->setCurrentIndex(group.readEntry("Current Tab", 0));
+    setCurrentTab(group.readEntry("Current Tab", 0));
     const bool showOldestFirst = group.readEntry("Show oldest images first", false);
+
     if (showOldestFirst)
     {
         d->sortActionOldestFirst->setChecked(true);
@@ -338,9 +423,18 @@
         const QByteArray splitterState = \
QByteArray::fromBase64(group.readEntry(QString("SplitterState V1"), QByteArray()));  \
if (!splitterState.isEmpty())  {
-            d->splitter1->restoreState(splitterState);
+            d->VSplitter->restoreState(splitterState);
         }
     }
+    if (group.hasKey("SplitterState H1"))
+    {
+        const QByteArray splitterState = \
QByteArray::fromBase64(group.readEntry(QString("SplitterState H1"), QByteArray())); + \
if (!splitterState.isEmpty()) +        {
+            d->HSplitter->restoreState(splitterState);
+        }
+    }
+    d->splitterSize = group.readEntry("Splitter H1 CollapsedSize", 0);
 
     KConfigGroup group2 = config.group(QString("GPS Sync 2 Dialog"));
     restoreDialogSize(group2);
@@ -350,14 +444,15 @@
 {
     KConfig config("kipirc");
     KConfigGroup group = config.group(QString("GPS Sync 2 Settings"));
-    group.writeEntry(QString("SplitterState V1"), \
d->splitter1->saveState().toBase64()); +    group.writeEntry(QString("SplitterState \
V1"), d->VSplitter->saveState().toBase64()); +    \
group.writeEntry(QString("SplitterState H1"), d->HSplitter->saveState().toBase64()); \
+    group.writeEntry("Splitter H1 CollapsedSize", d->splitterSize);  
     d->mapWidget->saveSettingsToGroup(&group);
     d->correlatorWidget->saveSettingsToGroup(&group);
     d->treeView->saveSettingsToGroup(&group);
-    group.writeEntry("Current Tab", d->tabWidget->currentIndex());
+    group.writeEntry("Current Tab", d->tabBar->currentIndex());
     group.writeEntry("Show oldest images first", \
                d->sortActionOldestFirst->isChecked());
-
     KConfigGroup group2 = config.group(QString("GPS Sync 2 Dialog"));
     saveDialogSize(group2);
 
@@ -472,6 +567,7 @@
 
 void GPSSyncDialog::slotSetUIEnabled(const bool enabledState)
 {
+
     slotSetUIEnabled(enabledState, 0, QString());
 }
 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic