From 7c4422fe1d7c401249974a22a715599c5ca12acd Mon Sep 17 00:00:00 2001
From: Kubat <mael.martin31@gmail.com>
Date: Wed, 14 Jul 2021 19:38:18 +0200
Subject: [PATCH] UI: Small tweaks on the ASS line display

---
 src/UI/DocumentViews/AssLinesModel.cc | 18 +-----------
 src/UI/DocumentViews/AssLinesModel.hh |  4 +--
 src/UI/DocumentViews/AssLinesView.cc  | 42 ++++++++++++++++++++++-----
 src/VivyApplication.cc                |  3 ++
 4 files changed, 39 insertions(+), 28 deletions(-)

diff --git a/src/UI/DocumentViews/AssLinesModel.cc b/src/UI/DocumentViews/AssLinesModel.cc
index bf44811c..99cbc42e 100644
--- a/src/UI/DocumentViews/AssLinesModel.cc
+++ b/src/UI/DocumentViews/AssLinesModel.cc
@@ -68,25 +68,9 @@ AssLinesModel::data(const QModelIndex &index, int role) const noexcept
     const Item *line         = static_cast<const Item *>(index.internalPointer());
     const Item::Field column = static_cast<Item::Field>(index.column());
 
-    // Check state only for the IsComment
-    if (role == Qt::CheckStateRole && column == Item::Field::IsComment) {
-        return line->getIsComment() ? Qt::Checked : Qt::Unchecked;
-    }
-
-    // Is comment is centered
-    else if (role == Qt::TextAlignmentRole && column == Item::Field::IsComment) {
-        return Qt::AlignCenter;
-    }
-
     // Display role
-    else if (Qt::DisplayRole == role) {
+    if (Qt::DisplayRole == role) {
         switch (column) {
-        case Item::Field::Style:
-            return line->getLineStyle();
-
-        case Item::Field::IsComment:
-            return QVariant();
-
         case Item::Field::Text:
             return line->getLineText();
 
diff --git a/src/UI/DocumentViews/AssLinesModel.hh b/src/UI/DocumentViews/AssLinesModel.hh
index 8f7f0a8e..2dfdbcd1 100644
--- a/src/UI/DocumentViews/AssLinesModel.hh
+++ b/src/UI/DocumentViews/AssLinesModel.hh
@@ -20,8 +20,6 @@ private:
         ~Item() noexcept = default;
 
         enum class Field : int {
-            IsComment,
-            Style,
             Text,
 
             // Last, the count
@@ -37,7 +35,7 @@ private:
         Ass::LineWeakPtr line;
     };
 
-    static inline const QStringList headers{ "", "Actor", "Text" };
+    static inline const QStringList headers{ "", "Style", "Text" };
 
 public:
     explicit AssLinesModel(const QVector<Ass::LinePtr> &) noexcept;
diff --git a/src/UI/DocumentViews/AssLinesView.cc b/src/UI/DocumentViews/AssLinesView.cc
index 2872b4de..a29245be 100644
--- a/src/UI/DocumentViews/AssLinesView.cc
+++ b/src/UI/DocumentViews/AssLinesView.cc
@@ -9,9 +9,12 @@ AssLinesView::AssLinesView(QAbstractItemModel *model, QWidget *parent) noexcept
     : QTableView(parent)
     , delegate(new Delegate(this))
 {
-    QFont f = font();
-    f.setPointSize(9); // Force the 9pt for now
-    setFont(f);
+    // Force the 9pt font size for now
+    {
+        QFont f = font();
+        f.setPointSize(9);
+        setFont(f);
+    }
 
     setMouseTracking(true);
     setItemDelegate(delegate);
@@ -21,10 +24,38 @@ AssLinesView::AssLinesView(QAbstractItemModel *model, QWidget *parent) noexcept
     horizontalHeader()->setHighlightSections(false);
     horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
     horizontalHeader()->setStretchLastSection(true);
+    horizontalHeader()->hide();
     verticalHeader()->setVisible(true);
     setSelectionMode(QAbstractItemView::ExtendedSelection);
     setSelectionBehavior(QAbstractItemView::SelectRows);
+    setShowGrid(false);
+
+    // Also set the 9pt font size for the headers
+    {
+        QFont f = horizontalHeader()->font();
+        f.setPointSize(9);
+        horizontalHeader()->setFont(f);
+        verticalHeader()->setFont(f);
+    }
 
+    static const QString style = "QTableView::item:selected {"
+                                 "  border-top:1px solid #1394B4;"
+                                 "  border-bottom:1px solid #1394B4;"
+                                 "  border-right:1px solid #1394B4;"
+                                 "  border-left:1px solid #1394B4;"
+                                 "  background-color: #002B36;"
+                                 "}"
+                                 "QTableView::item {"
+                                 "  border: 1px solid #474747;"
+                                 "};"
+                                 "QTableView::item:last:selected {"
+                                 "  border-top:1px solid #1394B4;"
+                                 "  border-bottom:1px solid #1394B4;"
+                                 "  border-right:1px solid #1394B4;"
+                                 "  border-left:1px solid #1394B4;"
+                                 "  background-color: #002B36;"
+                                 "}";
+    setStyleSheet(style);
     setModel(model);
 }
 
@@ -92,9 +123,4 @@ AssLinesView::Delegate::initStyleOption(QStyleOptionViewItem *option,
                                         const QModelIndex &index) const noexcept
 {
     QStyledItemDelegate::initStyleOption(option, index);
-
-    // The first column is the IsComment column
-    // XXX This is hardcoded
-    if (index.column() == 0)
-        option->displayAlignment = Qt::AlignCenter;
 }
diff --git a/src/VivyApplication.cc b/src/VivyApplication.cc
index 5b231213..0b08c801 100644
--- a/src/VivyApplication.cc
+++ b/src/VivyApplication.cc
@@ -11,7 +11,10 @@ VivyApplication::VivyApplication(int argc, char **argv)
 int
 VivyApplication::exec() noexcept
 {
+    // Show the main window
     MainWindow mainWindow;
     mainWindow.show();
+
+    // Main loop
     return QApplication::exec();
 }
-- 
GitLab