[Libreoffice-commits] core.git: include/svx svx/source svx/uiconfig

Tomaž Vajngerl tomaz.vajngerl at collabora.co.uk
Fri Nov 24 07:00:47 UTC 2017


 include/svx/ClassificationDialog.hxx         |    3 +
 include/svx/strings.hrc                      |    3 -
 svx/source/dialog/ClassificationDialog.cxx   |   51 ++++++++++-----------
 svx/source/dialog/ClassificationEditView.cxx |    9 ++-
 svx/uiconfig/ui/classificationdialog.ui      |   65 +++++++++++++++++++--------
 5 files changed, 82 insertions(+), 49 deletions(-)

New commits:
commit 66076a431e5db967eeeb3ba8004a06a1e54d9fac
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
Date:   Thu Nov 23 23:00:55 2017 +0900

    TSCP: Advanced dialog UI improvements
    
    - Change the height of TextEdit to ~5 lines (100px)
    - IPPart: single to double-click to add
    - IPPartNumber: change to ListBox, same behavior as IPPart
    - Markings: add on focus change
    - Category: remove messagebox when the category changed
    
    Change-Id: I9e695abc7caa702b2150a96ae15e6ce19fc2458a
    Reviewed-on: https://gerrit.libreoffice.org/45149
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>

diff --git a/include/svx/ClassificationDialog.hxx b/include/svx/ClassificationDialog.hxx
index d98f516d2015..a9ec24c99d45 100644
--- a/include/svx/ClassificationDialog.hxx
+++ b/include/svx/ClassificationDialog.hxx
@@ -60,11 +60,13 @@ private:
     const std::function<void()> m_aParagraphSignHandler;
 
     sal_Int32 m_nCurrentSelectedCategory;
+    sal_Int16 m_nInsertMarkings;
 
     DECL_LINK(ButtonClicked, Button*, void);
     DECL_LINK(SelectToolboxHdl, ToolBox*, void);
     DECL_LINK(SelectClassificationHdl, ListBox&, void);
     DECL_LINK(SelectMarkingHdl, ListBox&, void);
+    DECL_LINK(LoseFocusMarkingHdl, Control&, void);
     DECL_LINK(SelectIPPartNumbersHdl, ListBox&, void);
     DECL_LINK(SelectRecentlyUsedHdl, ListBox&, void);
     DECL_LINK(SelectIPPartHdl, ListBox&, void);
@@ -72,6 +74,7 @@ private:
     DECL_LINK(ExpandedHdl, VclExpander&, void);
 
     void insertField(ClassificationType eType, OUString const & rString, OUString const & rFullString, OUString const & rIdentifier = OUString());
+    void insertCategoryField(sal_Int32 nID);
 
     std::vector<std::vector<ClassificationResult>> m_aRecentlyUsedValuesCollection;
     std::vector<ClassificationResult> m_aInitialValues;
diff --git a/include/svx/strings.hrc b/include/svx/strings.hrc
index e4859d9ecd72..048cdc6c681e 100644
--- a/include/svx/strings.hrc
+++ b/include/svx/strings.hrc
@@ -1653,9 +1653,6 @@
 #define RID_SUBSETSTR_SYRIAC_SUPPLEMENT                     NC_("RID_SUBSETMAP", "Syriac Supplement")
 #define RID_SUBSETSTR_ZANABAZAR_SQUARE                      NC_("RID_SUBSETMAP", "Zanabazar Square")
 
-// TSCP Classification
-#define RID_CLASSIFICATION_CHANGE_CATEGORY                  NC_("RID_CLASSIFICATION_CHANGE_CATEGORY", "Do you really want to change the classification category?")
-
 #endif
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/source/dialog/ClassificationDialog.cxx b/svx/source/dialog/ClassificationDialog.cxx
index 6ff28786ea50..a7b1469100f5 100644
--- a/svx/source/dialog/ClassificationDialog.cxx
+++ b/svx/source/dialog/ClassificationDialog.cxx
@@ -170,6 +170,7 @@ ClassificationDialog::ClassificationDialog(vcl::Window* pParent, const bool bPer
     , m_bPerParagraph(bPerParagraph)
     , m_aParagraphSignHandler(rParagraphSignHandler)
     , m_nCurrentSelectedCategory(-1)
+    , m_nInsertMarkings(-1)
 {
     get(m_pOkButton, "ok");
     get(m_pEditWindow, "classificationEditWindow");
@@ -180,11 +181,10 @@ ClassificationDialog::ClassificationDialog(vcl::Window* pParent, const bool bPer
     get(m_pInternationalClassificationListBox, "internationalClassificationCB");
     get(m_pMarkingLabel, "markingLabel");
     get(m_pMarkingListBox, "markingCB");
-    get(m_pIntellectualPropertyPartNumberListBox, "intellectualPropertyPartNumberCB");
+    get(m_pIntellectualPropertyPartNumberListBox, "intellectualPropertyPartNumberLB");
     get(m_pIntellectualPropertyPartListBox, "intellectualPropertyPartLB");
     get(m_pIntellectualPropertyPartAddButton, "intellectualPropertyPartAddButton");
     get(m_pIntellectualPropertyPartEdit, "intellectualPropertyPartEntry");
-
     get(m_pIntellectualPropertyExpander, "intellectualPropertyExpander");
 
     m_pSignButton->SetClickHdl(LINK(this, ClassificationDialog, ButtonClicked));
@@ -197,19 +197,18 @@ ClassificationDialog::ClassificationDialog(vcl::Window* pParent, const bool bPer
     m_pClassificationListBox->SetSelectHdl(LINK(this, ClassificationDialog, SelectClassificationHdl));
     for (const OUString& rName : maHelper.GetBACNames())
         m_pClassificationListBox->InsertEntry(rName);
-    m_pClassificationListBox->EnableAutoSize(true);
 
     m_pInternationalClassificationListBox->SetSelectHdl(LINK(this, ClassificationDialog, SelectClassificationHdl));
     for (const OUString& rName : maInternationalHelper.GetBACNames())
         m_pInternationalClassificationListBox->InsertEntry(rName);
-    m_pInternationalClassificationListBox->EnableAutoSize(true);
 
     if (!maHelper.GetMarkings().empty())
     {
         m_pMarkingListBox->SetSelectHdl(LINK(this, ClassificationDialog, SelectMarkingHdl));
+        m_pMarkingListBox->SetLoseFocusHdl(LINK(this, ClassificationDialog, LoseFocusMarkingHdl));
+
         for (const OUString& rName : maHelper.GetMarkings())
             m_pMarkingListBox->InsertEntry(rName);
-        m_pMarkingListBox->EnableAutoSize(true);
     }
     else
     {
@@ -217,15 +216,13 @@ ClassificationDialog::ClassificationDialog(vcl::Window* pParent, const bool bPer
         m_pMarkingLabel->Show(false);
     }
 
-    m_pIntellectualPropertyPartNumberListBox->SetSelectHdl(LINK(this, ClassificationDialog, SelectIPPartNumbersHdl));
+    m_pIntellectualPropertyPartNumberListBox->SetDoubleClickHdl(LINK(this, ClassificationDialog, SelectIPPartNumbersHdl));
     for (const OUString& rName : maHelper.GetIntellectualPropertyPartNumbers())
         m_pIntellectualPropertyPartNumberListBox->InsertEntry(rName);
-    m_pIntellectualPropertyPartNumberListBox->EnableAutoSize(true);
 
-    m_pIntellectualPropertyPartListBox->SetSelectHdl(LINK(this, ClassificationDialog, SelectIPPartHdl));
+    m_pIntellectualPropertyPartListBox->SetDoubleClickHdl(LINK(this, ClassificationDialog, SelectIPPartHdl));
     for (const OUString& rName : maHelper.GetIntellectualPropertyParts())
         m_pIntellectualPropertyPartListBox->InsertEntry(rName);
-    m_pIntellectualPropertyPartListBox->EnableAutoSize(true);
 
     m_pRecentlyUsedListBox->SetSelectHdl(LINK(this, ClassificationDialog, SelectRecentlyUsedHdl));
 
@@ -291,6 +288,14 @@ short ClassificationDialog::Execute()
     return nResult;
 }
 
+void ClassificationDialog::insertCategoryField(sal_Int32 nID)
+{
+    const OUString aFullString = maHelper.GetBACNames()[nID];
+    const OUString aAbbreviatedString = maHelper.GetAbbreviatedBACNames()[nID];
+    const OUString aIdentifierString = maHelper.GetBACIdentifiers()[nID];
+    insertField(ClassificationType::CATEGORY, aAbbreviatedString, aFullString, aIdentifierString);
+}
+
 void ClassificationDialog::insertField(ClassificationType eType, OUString const & rString, OUString const & rFullString, OUString const & rIdentifier)
 {
     ClassificationField aField(eType, rString, rFullString, rIdentifier);
@@ -598,22 +603,9 @@ IMPL_LINK(ClassificationDialog, SelectClassificationHdl, ListBox&, rBox, void)
     }
 
     if (bReplaceExisting)
-    {
-        ScopedVclPtrInstance<QueryBox> aQueryBox(this, MessBoxStyle::YesNo | MessBoxStyle::DefaultYes, SvxResId(RID_CLASSIFICATION_CHANGE_CATEGORY));
-        if (aQueryBox->Execute() == RET_NO)
-        {
-            // Revert to previosuly selected
-            m_pInternationalClassificationListBox->SelectEntryPos(m_nCurrentSelectedCategory);
-            m_pClassificationListBox->SelectEntryPos(m_nCurrentSelectedCategory);
-            return;
-        }
         m_pEditWindow->pEdView->SetSelection(aExistingFieldSelection);
-    }
 
-    const OUString aFullString = maHelper.GetBACNames()[nSelected];
-    const OUString aAbbreviatedString = maHelper.GetAbbreviatedBACNames()[nSelected];
-    const OUString aIdentifierString = maHelper.GetBACIdentifiers()[nSelected];
-    insertField(ClassificationType::CATEGORY, aAbbreviatedString, aFullString, aIdentifierString);
+    insertCategoryField(nSelected);
 
     // Change category to the new selection
     m_pInternationalClassificationListBox->SelectEntryPos(nSelected);
@@ -621,13 +613,22 @@ IMPL_LINK(ClassificationDialog, SelectClassificationHdl, ListBox&, rBox, void)
     m_nCurrentSelectedCategory = nSelected;
 }
 
+IMPL_LINK_NOARG(ClassificationDialog, LoseFocusMarkingHdl, Control&, void)
+{
+    if (m_nInsertMarkings >= 0)
+    {
+        const OUString aString = maHelper.GetMarkings()[m_nInsertMarkings];
+        insertField(ClassificationType::MARKING, aString, aString);
+        m_nInsertMarkings = -1;
+    }
+}
+
 IMPL_LINK(ClassificationDialog, SelectMarkingHdl, ListBox&, rBox, void)
 {
     sal_Int32 nSelected = rBox.GetSelectedEntryPos();
     if (nSelected >= 0)
     {
-        const OUString aString = maHelper.GetMarkings()[nSelected];
-        insertField(ClassificationType::MARKING, aString, aString);
+        m_nInsertMarkings = nSelected;
     }
 }
 
diff --git a/svx/source/dialog/ClassificationEditView.cxx b/svx/source/dialog/ClassificationEditView.cxx
index a992dc0aedf2..76b778303bc2 100644
--- a/svx/source/dialog/ClassificationEditView.cxx
+++ b/svx/source/dialog/ClassificationEditView.cxx
@@ -48,11 +48,16 @@ ClassificationEditView::ClassificationEditView(vcl::Window* pParent, WinBits nBi
     const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings();
     Color aBgColor = rStyleSettings.GetWindowColor();
 
+    float fScaleFactor = GetDPIScaleFactor();
+    set_width_request(600 * fScaleFactor);
+    set_height_request(100 * fScaleFactor);
+
     SetMapMode(MapMode(MapUnit::MapTwip));
     SetPointer(PointerStyle::Text);
     SetBackground(aBgColor);
 
-    Size aSize(GetOutputSize());
+    Size aOutputSize(GetOutputSize());
+    Size aSize(aOutputSize);
     aSize.Height() *= 4;
 
     pEdEngine.reset(new ClassificationEditEngine(EditEngine::CreatePool()));
@@ -62,7 +67,7 @@ ClassificationEditView::ClassificationEditView(vcl::Window* pParent, WinBits nBi
     pEdEngine->SetControlWord(pEdEngine->GetControlWord() | EEControlBits::MARKFIELDS);
 
     pEdView.reset(new EditView(pEdEngine.get(), this));
-    pEdView->SetOutputArea(tools::Rectangle(Point(0,0), GetOutputSize()));
+    pEdView->SetOutputArea(tools::Rectangle(Point(0,0), aOutputSize));
 
     pEdView->SetBackgroundColor(aBgColor);
     pEdEngine->InsertView(pEdView.get());
diff --git a/svx/uiconfig/ui/classificationdialog.ui b/svx/uiconfig/ui/classificationdialog.ui
index a4469611c80c..911363016f25 100644
--- a/svx/uiconfig/ui/classificationdialog.ui
+++ b/svx/uiconfig/ui/classificationdialog.ui
@@ -78,12 +78,9 @@
             <property name="column_spacing">12</property>
             <child>
               <object class="svxlo-ClassificationEditView" id="classificationEditWindow">
-                <property name="width_request">400</property>
-                <property name="height_request">250</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="hexpand">True</property>
-                <property name="vexpand">True</property>
               </object>
               <packing>
                 <property name="left_attach">0</property>
@@ -125,7 +122,7 @@
                   <object class="GtkLabel">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
-                    <property name="label" translatable="yes" context="classificationdialog|label-InternationalClassification">International Classification:</property>
+                    <property name="label" translatable="yes" context="classificationdialog|label-InternationalClassification">International:</property>
                     <property name="xalign">0</property>
                   </object>
                   <packing>
@@ -271,7 +268,7 @@
               <packing>
                 <property name="left_attach">1</property>
                 <property name="top_attach">0</property>
-                <property name="height">2</property>
+                <property name="height">3</property>
               </packing>
             </child>
             <child>
@@ -285,17 +282,6 @@
                     <property name="row_spacing">6</property>
                     <property name="column_spacing">6</property>
                     <child>
-                      <object class="GtkComboBoxText" id="intellectualPropertyPartNumberCB">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="active">0</property>
-                      </object>
-                      <packing>
-                        <property name="left_attach">2</property>
-                        <property name="top_attach">0</property>
-                      </packing>
-                    </child>
-                    <child>
                       <object class="GtkLabel">
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
@@ -330,8 +316,7 @@
                       </object>
                       <packing>
                         <property name="left_attach">0</property>
-                        <property name="top_attach">0</property>
-                        <property name="height">2</property>
+                        <property name="top_attach">1</property>
                       </packing>
                     </child>
                     <child>
@@ -343,6 +328,33 @@
                       </object>
                       <packing>
                         <property name="left_attach">2</property>
+                        <property name="top_attach">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes" context="classificationdialog|label-PartNumber">Part:</property>
+                        <property name="xalign">0</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkTreeView" id="intellectualPropertyPartNumberLB">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="hexpand">True</property>
+                        <property name="vexpand">True</property>
+                        <child internal-child="selection">
+                          <object class="GtkTreeSelection"/>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
                         <property name="top_attach">1</property>
                       </packing>
                     </child>
@@ -364,10 +376,25 @@
               </object>
               <packing>
                 <property name="left_attach">0</property>
-                <property name="top_attach">2</property>
+                <property name="top_attach">3</property>
                 <property name="width">2</property>
               </packing>
             </child>
+            <child>
+              <object class="GtkGrid">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="hexpand">True</property>
+                <property name="vexpand">True</property>
+                <child>
+                  <placeholder/>
+                </child>
+              </object>
+              <packing>
+                <property name="left_attach">0</property>
+                <property name="top_attach">2</property>
+              </packing>
+            </child>
           </object>
           <packing>
             <property name="expand">True</property>


More information about the Libreoffice-commits mailing list