[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