From bca652a75f8a497a69b1fbc1c7eaa353f6b4eef8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Lu=C3=ADs=20Pereira?= <luis.artur.pereira@gmail.com>
Date: Wed, 19 Apr 2017 12:56:45 +0100
Subject: [PATCH] Fixes a FTBFS with CMake v3.8

CMake v3.8 AUTOUIC changed the directory where the file is generated to:
<CMAKE_CURRENT_BINARY_DIR>/<TARGETNAME>_autogen/include. The changes makes
us fail.
The change is actually just an sympton and not a root cause. We shouldn't
include a ui generated file in public header.

Closes https://github.com/lxde/lxqt/issues/1277
---
 liblxqt-config-cursor/selectwnd.cpp | 64 ++++++++++++++++++++-----------------
 liblxqt-config-cursor/selectwnd.h   |  9 ++++--
 2 files changed, 41 insertions(+), 32 deletions(-)

diff --git a/liblxqt-config-cursor/selectwnd.cpp b/liblxqt-config-cursor/selectwnd.cpp
index e76840b..8a1fa18 100644
--- a/liblxqt-config-cursor/selectwnd.cpp
+++ b/liblxqt-config-cursor/selectwnd.cpp
@@ -13,6 +13,7 @@
 #include <QDebug>
 
 #include "selectwnd.h"
+#include "ui_selectwnd.h"
 
 #include <QKeyEvent>
 #include <QMessageBox>
@@ -37,22 +38,24 @@
 
 #define HOME_ICON_DIR QDir::homePath() + "/.icons"
 
-SelectWnd::SelectWnd(LXQt::Settings* settings, QWidget *parent) : QWidget(parent), mSettings(settings)
+SelectWnd::SelectWnd(LXQt::Settings* settings, QWidget *parent)
+    : QWidget(parent),
+      mSettings(settings),
+      ui(new Ui::SelectWnd)
 {
-    setupUi(this);
-
-    warningLabel->hide();
+    ui->setupUi(this);
+    ui->warningLabel->hide();
 
     mModel = new XCursorThemeModel(this);
 
     int size = style()->pixelMetric(QStyle::PM_LargeIconSize);
-    lbThemes->setModel(mModel);
-    lbThemes->setItemDelegate(new ItemDelegate(this));
-    lbThemes->setIconSize(QSize(size, size));
-    lbThemes->setSelectionMode(QAbstractItemView::SingleSelection);
+    ui->lbThemes->setModel(mModel);
+    ui->lbThemes->setItemDelegate(new ItemDelegate(this));
+    ui->lbThemes->setIconSize(QSize(size, size));
+    ui->lbThemes->setSelectionMode(QAbstractItemView::SingleSelection);
 
     // Make sure we find out about selection changes
-    connect(lbThemes->selectionModel(), SIGNAL(currentChanged(const QModelIndex &, const QModelIndex &)),
+    connect(ui->lbThemes->selectionModel(), SIGNAL(currentChanged(const QModelIndex &, const QModelIndex &)),
             SLOT(currentChanged(const QModelIndex &, const QModelIndex &)));
     // display/hide warning label
     connect(mModel, SIGNAL(modelReset()),
@@ -62,15 +65,15 @@ SelectWnd::SelectWnd(LXQt::Settings* settings, QWidget *parent) : QWidget(parent
     connect(mModel, SIGNAL(rowsRemoved(const QModelIndex&, int, int)),
                     this, SLOT(handleWarning()));
 
-    connect(warningLabel, SIGNAL(showDirInfo()),
+    connect(ui->warningLabel, SIGNAL(showDirInfo()),
                     this, SLOT(showDirInfo()));
 
     // Disable the install button if we can't install new themes to ~/.icons,
     // or Xcursor isn't set up to look for cursor themes there
-    btInstall->setEnabled(mModel->searchPaths().contains(HOME_ICON_DIR) && iconsIsWritable());
+    ui->btInstall->setEnabled(mModel->searchPaths().contains(HOME_ICON_DIR) && iconsIsWritable());
     // TODO/FIXME: btInstall functionality
-    btInstall->hide();
-    btRemove->hide();
+    ui->btInstall->hide();
+    ui->btRemove->hide();
 
     //QTimer::singleShot(0, this, SLOT(setCurrent()));
 
@@ -80,11 +83,12 @@ SelectWnd::SelectWnd(LXQt::Settings* settings, QWidget *parent) : QWidget(parent
 
 SelectWnd::~SelectWnd()
 {
+    delete ui;
 }
 
 void SelectWnd::setCurrent()
 {
-    lbThemes->selectionModel()->clear();
+    ui->lbThemes->selectionModel()->clear();
 
     QString ct = getCurrentTheme();
     mAppliedIndex = mModel->defaultIndex();
@@ -97,9 +101,9 @@ void SelectWnd::setCurrent()
         const XCursorThemeData *theme = mModel->theme(mAppliedIndex);
         // Select the current theme
         selectRow(mAppliedIndex);
-        lbThemes->scrollTo(mAppliedIndex, QListView::PositionAtCenter);
+        ui->lbThemes->scrollTo(mAppliedIndex, QListView::PositionAtCenter);
         // Update the preview widget as well
-        if (theme) preview->setTheme(*theme);// else preview->clearTheme();
+        if (theme) ui->preview->setTheme(*theme);// else ui->preview->clearTheme();
     }
 }
 
@@ -123,8 +127,8 @@ void SelectWnd::selectRow(int row) const
     QModelIndex from = mModel->index(row, 0);
     QModelIndex to = mModel->index(row, mModel->columnCount()-1);
     QItemSelection selection(from, to);
-    lbThemes->selectionModel()->select(selection, QItemSelectionModel::Select);
-    lbThemes->selectionModel()->setCurrentIndex(mAppliedIndex, QItemSelectionModel::NoUpdate);
+    ui->lbThemes->selectionModel()->select(selection, QItemSelectionModel::Select);
+    ui->lbThemes->selectionModel()->setCurrentIndex(mAppliedIndex, QItemSelectionModel::NoUpdate);
 }
 
 void SelectWnd::currentChanged(const QModelIndex &current, const QModelIndex &previous)
@@ -133,16 +137,16 @@ void SelectWnd::currentChanged(const QModelIndex &current, const QModelIndex &pr
     if (current.isValid()) {
         const XCursorThemeData *theme = mModel->theme(current);
         if (theme) {
-            preview->setTheme(*theme);
-            btRemove->setEnabled(theme->isWritable());
+            ui->preview->setTheme(*theme);
+            ui->btRemove->setEnabled(theme->isWritable());
         } else {
-            preview->clearTheme();
+            ui->preview->clearTheme();
         }
 
         // directly apply the current settings
         applyCurrent();
     } else {
-        preview->clearTheme();
+        ui->preview->clearTheme();
     }
    //emit changed(mAppliedIndex != current);
 }
@@ -155,7 +159,7 @@ void SelectWnd::on_btInstall_clicked()
 void SelectWnd::applyCurrent()
 {
     //qDebug() << "'set' clicked";
-    const XCursorThemeData *theme = mModel->theme(lbThemes->currentIndex());
+    const XCursorThemeData *theme = mModel->theme(ui->lbThemes->currentIndex());
     if (!theme) return;
     applyTheme(*theme);
     fixXDefaults(theme->name());
@@ -200,7 +204,7 @@ void SelectWnd::applyCurrent()
 void SelectWnd::on_btRemove_clicked()
 {
     qDebug() << "'remove' clicked";
-    const XCursorThemeData *theme = mModel->theme(lbThemes->currentIndex());
+    const XCursorThemeData *theme = mModel->theme(ui->lbThemes->currentIndex());
     if (!theme) return;
     QString ct = getCurrentTheme();
     if (ct == theme->name())
@@ -210,20 +214,20 @@ void SelectWnd::on_btRemove_clicked()
         return;
     }
     QDir d(theme->path());
-    preview->clearTheme();
-    mModel->removeTheme(lbThemes->currentIndex());
+    ui->preview->clearTheme();
+    mModel->removeTheme(ui->lbThemes->currentIndex());
     removeXCursorTheme(d);
 }
 
 void SelectWnd::handleWarning()
 {
         bool empty = mModel->rowCount();
-        warningLabel->setVisible(!empty);
-        preview->setVisible(empty);
-        infoLabel->setVisible(empty);
+        ui->warningLabel->setVisible(!empty);
+        ui->preview->setVisible(empty);
+        ui->infoLabel->setVisible(empty);
 }
 
 void SelectWnd::showDirInfo()
 {
-        QToolTip::showText(mapToGlobal(warningLabel->buttonPos()), mModel->searchPaths().join("\n"));
+        QToolTip::showText(mapToGlobal(ui->warningLabel->buttonPos()), mModel->searchPaths().join("\n"));
 }
diff --git a/liblxqt-config-cursor/selectwnd.h b/liblxqt-config-cursor/selectwnd.h
index c9bc428..200cfa0 100644
--- a/liblxqt-config-cursor/selectwnd.h
+++ b/liblxqt-config-cursor/selectwnd.h
@@ -15,16 +15,20 @@
 
 #include <QObject>
 #include <QWidget>
+#include <QPersistentModelIndex>
 #include <lxqtglobals.h>
 
 namespace LXQt {
   class Settings;
 }
 
+namespace Ui {
+class SelectWnd;
+}
+
 class XCursorThemeModel;
 
-#include "ui_selectwnd.h"
-class LXQT_API SelectWnd : public QWidget, private Ui_SelectWnd
+class LXQT_API SelectWnd : public QWidget
 {
     Q_OBJECT
 
@@ -55,6 +59,7 @@ private slots:
     XCursorThemeModel *mModel;
     QPersistentModelIndex mAppliedIndex;
     LXQt::Settings* mSettings;
+    Ui::SelectWnd *ui;
 };
 
 #endif
