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

List:       kde-commits
Subject:    [kdevplatform/5.0] /: Reduce duplicate code
From:       Aleix Pol <aleixpol () kde ! org>
Date:       2016-01-31 23:27:48
Message-ID: E1aQ1PI-0001o8-41 () scm ! kde ! org
[Download RAW message or body]

Git commit db49a7952a9da9076d91fa6f87a861daad786bb7 by Aleix Pol.
Committed on 31/01/2016 at 23:21.
Pushed by apol into branch '5.0'.

Reduce duplicate code

Playing with the "simian" tool, I found these matches, worked them out.
There's some others but they're a bit more complex to untangle.

M  +9    -15   outputview/outputfilteringstrategies.cpp
M  +5    -0    outputview/outputformats.cpp
M  +2    -0    outputview/outputformats.h
M  +1    -25   project/projectmodel.cpp
M  +15   -27   shell/mainwindow.cpp
M  +2    -0    shell/mainwindow.h
M  +6    -11   shell/partdocument.cpp
M  +12   -11   shell/workingsetcontroller.cpp
M  +2    -0    shell/workingsetcontroller.h
M  +11   -11   sublime/idealcontroller.cpp
M  +1    -0    sublime/idealcontroller.h
M  +9    -14   sublime/mainwindow.cpp
M  +2    -0    sublime/mainwindow.h
M  +13   -14   util/multilevellistview.cpp

http://commits.kde.org/kdevplatform/db49a7952a9da9076d91fa6f87a861daad786bb7

diff --git a/outputview/outputfilteringstrategies.cpp \
b/outputview/outputfilteringstrategies.cpp index b7ce5ba..117814e 100644
--- a/outputview/outputfilteringstrategies.cpp
+++ b/outputview/outputfilteringstrategies.cpp
@@ -29,6 +29,12 @@
 
 namespace KDevelop
 {
+void initializeFilteredItem(FilteredItem& item, const ErrorFormat& filter, const \
QRegularExpressionMatch& match) +{
+    item.lineNo = match.captured( filter.lineGroup ).toInt() - 1;
+    item.columnNo = filter.columnNumber(match);
+}
+
 
 template<typename ErrorFormats>
 FilteredItem match(const ErrorFormats& errorFormats, const QString& line)
@@ -37,15 +43,8 @@ FilteredItem match(const ErrorFormats& errorFormats, const \
QString& line)  for( const ErrorFormat& curErrFilter : errorFormats ) {
         const auto match = curErrFilter.expression.match(line);
         if( match.hasMatch() ) {
+            initializeFilteredItem(item, curErrFilter, match);
             item.url = QUrl::fromUserInput(match.captured( curErrFilter.fileGroup \
                ));
-            item.lineNo = match.captured( curErrFilter.lineGroup ).toInt() - 1;
-            if(curErrFilter.columnGroup >= 0) {
-                item.columnNo = match.captured( curErrFilter.columnGroup ).toInt() - \
                1;
-            } else {
-                item.columnNo = 0;
-            }
-
-            QString txt = match.captured(curErrFilter.textGroup);
 
             item.type = FilteredItem::ErrorItem;
 
@@ -313,14 +312,9 @@ FilteredItem CompilerFilterStrategy::errorInLine(const QString& \
line)  }
                 item.url = d->pathForFile( match.captured( curErrFilter.fileGroup ) \
).toUrl();  }
-            item.lineNo = match.captured( curErrFilter.lineGroup ).toInt() - 1;
-            if(curErrFilter.columnGroup >= 0) {
-                item.columnNo = match.captured( curErrFilter.columnGroup ).toInt() - \
                1;
-            } else {
-                item.columnNo = 0;
-            }
+            initializeFilteredItem(item, curErrFilter, match);
 
-            QString txt = match.captured(curErrFilter.textGroup);
+            const QString txt = match.captured(curErrFilter.textGroup);
 
             // Find the indicator which happens most early.
             int earliestIndicatorIdx = txt.length();
diff --git a/outputview/outputformats.cpp b/outputview/outputformats.cpp
index cc2a8d8..69b34f0 100644
--- a/outputview/outputformats.cpp
+++ b/outputview/outputformats.cpp
@@ -47,5 +47,10 @@ ActionFormat::ActionFormat(int file, const QString& regExp)
 {
 }
 
+int ErrorFormat::columnNumber(const QRegularExpressionMatch& match) const
+{
+    return columnGroup >= 0 ? match.captured( columnGroup ).toInt() - 1 : 0;
+}
+
 }
 
diff --git a/outputview/outputformats.h b/outputview/outputformats.h
index b28f3bf..64463f5 100644
--- a/outputview/outputformats.h
+++ b/outputview/outputformats.h
@@ -39,6 +39,8 @@ struct ErrorFormat
     int lineGroup, columnGroup;
     int textGroup;
     QString compiler;
+
+    int columnNumber(const QRegularExpressionMatch& match) const;
 };
 
 }
diff --git a/project/projectmodel.cpp b/project/projectmodel.cpp
index 7156a33..8ab754d 100644
--- a/project/projectmodel.cpp
+++ b/project/projectmodel.cpp
@@ -1108,30 +1108,7 @@ void ProjectVisitor::visit ( IProject* prj )
 
 void ProjectVisitor::visit ( ProjectBuildFolderItem* folder )
 {
-    foreach( ProjectFileItem* item, folder->fileList() )
-    {
-        visit( item );
-    }
-    foreach( ProjectTargetItem* item, folder->targetList() )
-    {
-        if( item->type() == ProjectBaseItem::LibraryTarget )
-        {
-            visit( dynamic_cast<ProjectLibraryTargetItem*>( item ) );
-        } else if( item->type() == ProjectBaseItem::ExecutableTarget )
-        {
-            visit( dynamic_cast<ProjectExecutableTargetItem*>( item ) );
-        }
-    }
-    foreach( ProjectFolderItem* item, folder->folderList() )
-    {
-        if( item->type() == ProjectBaseItem::BuildFolder )
-        {
-            visit( dynamic_cast<ProjectBuildFolderItem*>( item ) );
-        } else if( item->type() == ProjectBaseItem::Folder )
-        {
-            visit( dynamic_cast<ProjectFolderItem*>( item ) );
-        }
-    }
+    visit(static_cast<ProjectFolderItem*>(folder));
 }
 
 void ProjectVisitor::visit ( ProjectExecutableTargetItem* exec )
@@ -1170,7 +1147,6 @@ void ProjectVisitor::visit ( ProjectFolderItem* folder )
     }
 }
 
-
 void ProjectVisitor::visit ( ProjectFileItem* )
 {
 }
diff --git a/shell/mainwindow.cpp b/shell/mainwindow.cpp
index 2b2fe29..3465aa8 100644
--- a/shell/mainwindow.cpp
+++ b/shell/mainwindow.cpp
@@ -102,16 +102,11 @@ void MainWindow::createGUI(KParts::Part* part)
                this, SLOT(setCaption(QString)));
 }
 
-MainWindow::MainWindow( Sublime::Controller *parent, Qt::WindowFlags flags )
-        : Sublime::MainWindow( parent, flags )
+void MainWindow::initializeCorners()
 {
-    QDBusConnection::sessionBus().registerObject( \
                QStringLiteral("/kdevelop/MainWindow"),
-        this, QDBusConnection::ExportScriptableSlots );
-
-    setAcceptDrops( true );
-    KConfigGroup cg = KSharedConfig::openConfig()->group( "UiSettings" );
-    int bottomleft = cg.readEntry( "BottomLeftCornerOwner", 0 );
-    int bottomright = cg.readEntry( "BottomRightCornerOwner", 0 );
+    const KConfigGroup cg = KSharedConfig::openConfig()->group( "UiSettings" );
+    const int bottomleft = cg.readEntry( "BottomLeftCornerOwner", 0 );
+    const int bottomright = cg.readEntry( "BottomRightCornerOwner", 0 );
     qCDebug(SHELL) << "Bottom Left:" << bottomleft;
     qCDebug(SHELL) << "Bottom Right:" << bottomright;
 
@@ -125,6 +120,16 @@ MainWindow::MainWindow( Sublime::Controller *parent, \
Qt::WindowFlags flags )  setCorner( Qt::BottomRightCorner, Qt::RightDockWidgetArea );
     else if( bottomright == 1 )
         setCorner( Qt::BottomRightCorner, Qt::BottomDockWidgetArea );
+}
+
+MainWindow::MainWindow( Sublime::Controller *parent, Qt::WindowFlags flags )
+        : Sublime::MainWindow( parent, flags )
+{
+    QDBusConnection::sessionBus().registerObject( \
QStringLiteral("/kdevelop/MainWindow"), +        this, \
QDBusConnection::ExportScriptableSlots ); +
+    setAcceptDrops( true );
+    initializeCorners();
 
     setObjectName( QStringLiteral("MainWindow") );
     d = new MainWindowPrivate(this);
@@ -213,24 +218,7 @@ void MainWindow::dropEvent( QDropEvent* ev )
 void MainWindow::loadSettings()
 {
     qCDebug(SHELL) << "Loading Settings";
-    KConfigGroup cg = KSharedConfig::openConfig()->group( "UiSettings" );
-
-    // dock widget corner layout
-    int bottomleft = cg.readEntry( "BottomLeftCornerOwner", 0 );
-    int bottomright = cg.readEntry( "BottomRightCornerOwner", 0 );
-    qCDebug(SHELL) << "Bottom Left:" << bottomleft;
-    qCDebug(SHELL) << "Bottom Right:" << bottomright;
-
-    // 0 means vertical dock (left, right), 1 means horizontal dock( top, bottom )
-    if( bottomleft == 0 )
-        setCorner( Qt::BottomLeftCorner, Qt::LeftDockWidgetArea );
-    else if( bottomleft == 1 )
-        setCorner( Qt::BottomLeftCorner, Qt::BottomDockWidgetArea );
-
-    if( bottomright == 0 )
-        setCorner( Qt::BottomRightCorner, Qt::RightDockWidgetArea );
-    else if( bottomright == 1 )
-        setCorner( Qt::BottomRightCorner, Qt::BottomDockWidgetArea );
+    initializeCorners();
 
     updateAllTabColors();
 
diff --git a/shell/mainwindow.h b/shell/mainwindow.h
index 35a6a61..f58ed98 100644
--- a/shell/mainwindow.h
+++ b/shell/mainwindow.h
@@ -106,6 +106,8 @@ private Q_SLOTS:
     void shortcutsChanged();
 
 private:
+    void initializeCorners();
+
     class MainWindowPrivate *d;
     friend class MainWindowPrivate;
 };
diff --git a/shell/partdocument.cpp b/shell/partdocument.cpp
index 96cca90..132aad4 100644
--- a/shell/partdocument.cpp
+++ b/shell/partdocument.cpp
@@ -98,28 +98,23 @@ bool PartDocument::save(DocumentSaveMode /*mode*/)
 
 bool PartDocument::askForCloseFeedback()
 {
+    int code = -1;
     if (state() == IDocument::Modified) {
-        int code = KMessageBox::warningYesNoCancel(
+        code = KMessageBox::warningYesNoCancel(
             Core::self()->uiController()->activeMainWindow(),
             i18n("The document \"%1\" has unsaved changes. Would you like to save \
them?", url().toLocalFile()),  i18n("Close Document"));
 
-        if (code == KMessageBox::Yes) {
-            if (!save(Default))
-                return false;
-
-        } else if (code == KMessageBox::Cancel) {
-            return false;
-        }
-
     /// @todo Is this behavior right?
     } else if (state() == IDocument::DirtyAndModified) {
-        int code = KMessageBox::warningYesNoCancel(
+        code = KMessageBox::warningYesNoCancel(
             Core::self()->uiController()->activeMainWindow(),
             i18n("The document \"%1\" has unsaved changes and was modified by an \
                external process.\n"
                  "Do you want to override the external changes?", \
url().toLocalFile()),  i18n("Close Document"));
+    }
 
+    if (code >= 0) {
         if (code == KMessageBox::Yes) {
             if (!save(Default))
                 return false;
@@ -127,8 +122,8 @@ bool PartDocument::askForCloseFeedback()
         } else if (code == KMessageBox::Cancel) {
             return false;
         }
-
     }
+
     return true;
 }
 
diff --git a/shell/workingsetcontroller.cpp b/shell/workingsetcontroller.cpp
index 22495a4..235e312 100644
--- a/shell/workingsetcontroller.cpp
+++ b/shell/workingsetcontroller.cpp
@@ -213,7 +213,7 @@ void WorkingSetController::showGlobalToolTip()
     connect(m_tooltip.data(), &ActiveToolTip::mouseOut, m_hideToolTipTimer, \
static_cast<void(QTimer::*)()>(&QTimer::start));  }
 
-void WorkingSetController::nextDocument()
+WorkingSetToolTipWidget* WorkingSetController::workingSetToolTip()
 {
     if(!m_tooltip)
         showGlobalToolTip();
@@ -225,22 +225,23 @@ void WorkingSetController::nextDocument()
     {
         WorkingSetToolTipWidget* widget = \
m_tooltip->findChild<WorkingSetToolTipWidget*>();  Q_ASSERT(widget);
+        return widget;
+    }
+    return nullptr;
+}
+
+void WorkingSetController::nextDocument()
+{
+    auto widget = workingSetToolTip();
+    if (widget) {
         widget->nextDocument();
     }
 }
 
 void WorkingSetController::previousDocument()
 {
-    if(!m_tooltip)
-        showGlobalToolTip();
-
-    m_hideToolTipTimer->stop();
-    m_hideToolTipTimer->start(toolTipTimeout);
-
-    if(m_tooltip)
-    {
-        WorkingSetToolTipWidget* widget = \
                m_tooltip->findChild<WorkingSetToolTipWidget*>();
-        Q_ASSERT(widget);
+    auto widget = workingSetToolTip();
+    if (widget) {
         widget->previousDocument();
     }
 }
diff --git a/shell/workingsetcontroller.h b/shell/workingsetcontroller.h
index 4511cc3..22e4309 100644
--- a/shell/workingsetcontroller.h
+++ b/shell/workingsetcontroller.h
@@ -42,6 +42,7 @@ class MainWindow;
 class Core;
 
 class WorkingSet;
+class WorkingSetToolTipWidget;
 
 class WorkingSetController : public QObject
 {
@@ -107,6 +108,7 @@ private slots:
     void clearWorkingSet(Sublime::Area* area);
 
 private:
+    WorkingSetToolTipWidget* workingSetToolTip();
     void setupActions();
     const QString makeSetId(const QString& prefix) const;
 
diff --git a/sublime/idealcontroller.cpp b/sublime/idealcontroller.cpp
index 64b2191..f14b9a0 100644
--- a/sublime/idealcontroller.cpp
+++ b/sublime/idealcontroller.cpp
@@ -366,6 +366,15 @@ void IdealController::showRightDock(bool show)
     showDock(Qt::RightDockWidgetArea, show);
 }
 
+void IdealController::hideDocks(IdealButtonBarWidget *bar)
+{
+    foreach (QAction *action, bar->actions()) {
+        if (action->isChecked())
+            action->setChecked(false);
+    }
+    focusEditor();
+}
+
 void IdealController::showDock(Qt::DockWidgetArea area, bool show)
 {
     IdealButtonBarWidget *bar = barForDockArea(area);
@@ -385,12 +394,7 @@ void IdealController::showDock(Qt::DockWidgetArea area, bool \
show)  }
 
     if (!show) {
-        // close all toolviews
-        foreach (QAction *action, bar->actions()) {
-            if (action->isChecked())
-                action->setChecked(false);
-        }
-        focusEditor();
+        hideDocks(bar);
     } else {
         // open the last opened toolview (or the first one) and focus it
         if (lastDock) {
@@ -471,11 +475,7 @@ void IdealController::toggleDocksShown()
 void IdealController::toggleDocksShown(IdealButtonBarWidget* bar, bool show)
 {
     if (!show) {
-        foreach (QAction *action, bar->actions()) {
-            if (action->isChecked())
-                action->setChecked(false);
-        }
-        focusEditor();
+        hideDocks(bar);
     } else {
         IdealDockWidget *lastDock = lastDockWidget[bar->area()].data();
         if (lastDock)
diff --git a/sublime/idealcontroller.h b/sublime/idealcontroller.h
index 143057f..7ffdf1a 100644
--- a/sublime/idealcontroller.h
+++ b/sublime/idealcontroller.h
@@ -106,6 +106,7 @@ private Q_SLOTS:
     void loadSettings();
 
 private:
+    void hideDocks(IdealButtonBarWidget *bar);
     void showDock(Qt::DockWidgetArea area, bool show);
     void toggleDocksShown(IdealButtonBarWidget *bar, bool show);
 
diff --git a/sublime/mainwindow.cpp b/sublime/mainwindow.cpp
index 731f98d..44e9a4f 100644
--- a/sublime/mainwindow.cpp
+++ b/sublime/mainwindow.cpp
@@ -338,18 +338,22 @@ bool MainWindow::queryClose()
     return KParts::MainWindow::queryClose();
 }
 
-void MainWindow::saveGeometry(KConfigGroup &config)
+QString MainWindow::screenKey() const
 {
-    int scnum = QApplication::desktop()->screenNumber(parentWidget());
+    const int scnum = QApplication::desktop()->screenNumber(parentWidget());
     QRect desk = QApplication::desktop()->screenGeometry(scnum);
 
     // if the desktop is virtual then use virtual screen size
     if (QApplication::desktop()->isVirtualDesktop())
         desk = QApplication::desktop()->screenGeometry(QApplication::desktop()->screen());
  
-    QString key = QStringLiteral("Desktop %1 %2")
+    return QStringLiteral("Desktop %1 %2")
         .arg(desk.width()).arg(desk.height());
-    config.writeEntry(key, geometry());
+}
+
+void MainWindow::saveGeometry(KConfigGroup &config)
+{
+    config.writeEntry(screenKey(), geometry());
 
 }
 void MainWindow::loadGeometry(const KConfigGroup &config)
@@ -359,16 +363,7 @@ void MainWindow::loadGeometry(const KConfigGroup &config)
     // as per http://permalink.gmane.org/gmane.comp.kde.devel.core/52423
     // so we implement a less theoretically correct, but working, version
     // below
-    const int scnum = QApplication::desktop()->screenNumber(parentWidget());
-    QRect desk = QApplication::desktop()->screenGeometry(scnum);
-
-    // if the desktop is virtual then use virtual screen size
-    if (QApplication::desktop()->isVirtualDesktop())
-        desk = QApplication::desktop()->screenGeometry(QApplication::desktop()->screen());
                
-
-    QString key = QStringLiteral("Desktop %1 %2")
-        .arg(desk.width()).arg(desk.height());
-    QRect g = config.readEntry(key, QRect());
+    QRect g = config.readEntry(screenKey(), QRect());
     if (!g.isEmpty())
         setGeometry(g);
 }
diff --git a/sublime/mainwindow.h b/sublime/mainwindow.h
index 4c13a7b..46fdaae 100644
--- a/sublime/mainwindow.h
+++ b/sublime/mainwindow.h
@@ -164,6 +164,8 @@ private:
     Q_PRIVATE_SLOT(d, void aboutToRemoveToolView(Sublime::View*, Sublime::Position))
     Q_PRIVATE_SLOT(d, void toolViewMoved(Sublime::View*, Sublime::Position))
 
+    QString screenKey() const;
+
     //Inherit MainWindowOperator to access four methods below
     /**Unsets the area clearing main window.*/
     void clearArea();
diff --git a/util/multilevellistview.cpp b/util/multilevellistview.cpp
index 1c507b6..127f25d 100644
--- a/util/multilevellistview.cpp
+++ b/util/multilevellistview.cpp
@@ -39,6 +39,15 @@ public:
     {
         m_label = label;
     }
+
+    QVariant header(QAbstractItemModel* model, int section, Qt::Orientation \
orientation, int role) const +    {
+        if (model && section == 0 && orientation == Qt::Horizontal && role == \
Qt::DisplayRole) { +            return m_label;
+        } else {
+            return QVariant();
+        }
+    }
 protected:
     QString m_label;
 };
@@ -59,14 +68,9 @@ public:
     {
         return !source_parent.isValid();
     }
-    QVariant headerData( int section, Qt::Orientation orientation,
-                                 int role = Qt::DisplayRole ) const override
+    QVariant headerData( int section, Qt::Orientation orientation, int role ) const \
override  {
-        if (sourceModel() && section == 0 && orientation == Qt::Horizontal && role \
                == Qt::DisplayRole) {
-            return m_label;
-        } else {
-            return QVariant();
-        }
+        return header(sourceModel(), section, orientation, role);
     }
 };
 
@@ -81,14 +85,9 @@ public:
     explicit SubTreeProxyModel( QItemSelectionModel* selectionModel, QObject* parent \
= 0 )  : KSelectionProxyModel( selectionModel, parent )
     {}
-    QVariant headerData( int section, Qt::Orientation orientation,
-                                 int role = Qt::DisplayRole ) const override
+    QVariant headerData( int section, Qt::Orientation orientation, int role ) const \
override  {
-        if (sourceModel() && section == 0 && orientation == Qt::Horizontal && role \
                == Qt::DisplayRole) {
-            return m_label;
-        } else {
-            return QVariant();
-        }
+        return header(sourceModel(), section, orientation, role);
     }
     Qt::ItemFlags flags(const QModelIndex& index) const override
     {


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

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