[Libreoffice-commits] core.git: cui/uiconfig vcl/inc vcl/source

Caolán McNamara caolanm at redhat.com
Thu Feb 21 03:56:55 PST 2013


 cui/uiconfig/ui/optmemorypage.ui |    8 +----
 vcl/inc/vcl/builder.hxx          |    4 ++
 vcl/source/window/builder.cxx    |   60 ++++++++++++++++++++++++++++++++++++---
 3 files changed, 63 insertions(+), 9 deletions(-)

New commits:
commit fc2f3ce3c1beb845368a29ebaa29b1c90f4d1469
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Thu Feb 21 11:55:01 2013 +0000

    add a mechanism to load date fields from .ui files
    
    Change-Id: If546e2f5c0f4b58d1306c737bf69799e8033c5c0

diff --git a/cui/uiconfig/ui/optmemorypage.ui b/cui/uiconfig/ui/optmemorypage.ui
index e3be9b6..3675e6c 100644
--- a/cui/uiconfig/ui/optmemorypage.ui
+++ b/cui/uiconfig/ui/optmemorypage.ui
@@ -23,11 +23,9 @@
     <property name="page_increment">10</property>
   </object>
   <object class="GtkAdjustment" id="adjustment4">
-    <property name="lower">1</property>
-    <property name="upper">1439</property>
-    <property name="value">10</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
+    <property name="lower">10000</property>
+    <property name="upper">23590000</property>
+    <property name="value">100000</property>
   </object>
   <object class="GtkBox" id="OptMemoryPage">
     <property name="visible">True</property>
diff --git a/vcl/inc/vcl/builder.hxx b/vcl/inc/vcl/builder.hxx
index 41178ed..11693a3 100644
--- a/vcl/inc/vcl/builder.hxx
+++ b/vcl/inc/vcl/builder.hxx
@@ -23,6 +23,7 @@ class ListBox;
 class NumericFormatter;
 class PopupMenu;
 class ScrollBar;
+class DateField;
 class TimeField;
 class VclMultiLineEdit;
 
@@ -129,6 +130,7 @@ private:
     typedef stringmap Adjustment;
     const Adjustment *get_adjustment_by_name(OString sID) const;
     static void mungeAdjustment(NumericFormatter &rTarget, const Adjustment &rAdjustment);
+    static void mungeAdjustment(DateField &rTarget, const Adjustment &rAdjustment);
     static void mungeAdjustment(TimeField &rTarget, const Adjustment &rAdjustment);
     static void mungeAdjustment(ScrollBar &rTarget, const Adjustment &rAdjustment);
 
@@ -169,6 +171,7 @@ private:
 
         std::vector<WidgetAdjustmentMap> m_aNumericFormatterAdjustmentMaps;
         std::vector<WidgetAdjustmentMap> m_aTimeFormatterAdjustmentMaps;
+        std::vector<WidgetAdjustmentMap> m_aDateFormatterAdjustmentMaps;
         std::vector<WidgetAdjustmentMap> m_aScrollAdjustmentMaps;
         std::map<OString, Adjustment> m_aAdjustments;
 
@@ -263,6 +266,7 @@ private:
 
     void connectNumericFormatterAdjustment(const OString &id, const OString &rAdjustment);
     void connectTimeFormatterAdjustment(const OString &id, const OString &rAdjustment);
+    void connectDateFormatterAdjustment(const OString &id, const OString &rAdjustment);
 
     bool extractGroup(const OString &id, stringmap &rVec);
     bool extractModel(const OString &id, stringmap &rVec);
diff --git a/vcl/source/window/builder.cxx b/vcl/source/window/builder.cxx
index dc25339..264bf92 100644
--- a/vcl/source/window/builder.cxx
+++ b/vcl/source/window/builder.cxx
@@ -256,6 +256,16 @@ VclBuilder::VclBuilder(Window *pParent, OUString sUIDir, OUString sUIFile, OStri
             mungeAdjustment(*pTarget, *pAdjustment);
     }
 
+    for (std::vector<WidgetAdjustmentMap>::iterator aI = m_pParserState->m_aDateFormatterAdjustmentMaps.begin(),
+         aEnd = m_pParserState->m_aDateFormatterAdjustmentMaps.end(); aI != aEnd; ++aI)
+    {
+        DateField *pTarget = dynamic_cast<DateField*>(get<Window>(aI->m_sID));
+        const Adjustment *pAdjustment = get_adjustment_by_name(aI->m_sValue);
+        SAL_WARN_IF(!pTarget || !pAdjustment, "vcl", "missing elements of spinbutton/adjustment");
+        if (pTarget && pAdjustment)
+            mungeAdjustment(*pTarget, *pAdjustment);
+    }
+
     //Set ScrollBar adjustments when everything has been imported
     for (std::vector<WidgetAdjustmentMap>::iterator aI = m_pParserState->m_aScrollAdjustmentMaps.begin(),
          aEnd = m_pParserState->m_aScrollAdjustmentMaps.end(); aI != aEnd; ++aI)
@@ -715,6 +725,12 @@ void VclBuilder::connectTimeFormatterAdjustment(const OString &id, const OString
         m_pParserState->m_aTimeFormatterAdjustmentMaps.push_back(WidgetAdjustmentMap(id, rAdjustment));
 }
 
+void VclBuilder::connectDateFormatterAdjustment(const OString &id, const OString &rAdjustment)
+{
+    if (!rAdjustment.isEmpty())
+        m_pParserState->m_aDateFormatterAdjustmentMaps.push_back(WidgetAdjustmentMap(id, rAdjustment));
+}
+
 bool VclBuilder::extractScrollAdjustment(const OString &id, VclBuilder::stringmap &rMap)
 {
     VclBuilder::stringmap::iterator aFind = rMap.find(OString("adjustment"));
@@ -1024,6 +1040,13 @@ Window *VclBuilder::makeObject(Window *pParent, const OString &name, const OStri
                 TimeField *pField = new TimeField(pParent, nBits);
                 pWindow = pField;
             }
+            else if (sPattern == "yy:mm:dd")
+            {
+                connectDateFormatterAdjustment(id, sAdjustment);
+                SAL_INFO("vcl.layout", "making date field for " << name.getStr() << " " << sUnit.getStr());
+                DateField *pField = new DateField(pParent, nBits);
+                pWindow = pField;
+            }
             else
             {
                 connectNumericFormatterAdjustment(id, sAdjustment);
@@ -2540,7 +2563,6 @@ void VclBuilder::mungeAdjustment(NumericFormatter &rTarget, const Adjustment &rA
     }
 }
 
-//assume all in minutes for the moment
 void VclBuilder::mungeAdjustment(TimeField &rTarget, const Adjustment &rAdjustment)
 {
     for (stringmap::const_iterator aI = rAdjustment.begin(), aEnd = rAdjustment.end(); aI != aEnd; ++aI)
@@ -2550,19 +2572,19 @@ void VclBuilder::mungeAdjustment(TimeField &rTarget, const Adjustment &rAdjustme
 
         if (rKey == "upper")
         {
-            Time aUpper(0, rValue.toInt32());
+            Time aUpper(rValue.toInt32());
             rTarget.SetMax(aUpper);
             rTarget.SetLast(aUpper);
         }
         else if (rKey == "lower")
         {
-            Time aLower(0, rValue.toInt32());
+            Time aLower(rValue.toInt32());
             rTarget.SetMin(aLower);
             rTarget.SetFirst(aLower);
         }
         else if (rKey == "value")
         {
-            Time aValue(0, rValue.toInt32());
+            Time aValue(rValue.toInt32());
             rTarget.SetTime(aValue);
         }
         else
@@ -2572,6 +2594,36 @@ void VclBuilder::mungeAdjustment(TimeField &rTarget, const Adjustment &rAdjustme
     }
 }
 
+void VclBuilder::mungeAdjustment(DateField &rTarget, const Adjustment &rAdjustment)
+{
+    for (stringmap::const_iterator aI = rAdjustment.begin(), aEnd = rAdjustment.end(); aI != aEnd; ++aI)
+    {
+        const OString &rKey = aI->first;
+        const OString &rValue = aI->second;
+
+        if (rKey == "upper")
+        {
+            Date aUpper(rValue.toInt32());
+            rTarget.SetMax(aUpper);
+            rTarget.SetLast(aUpper);
+        }
+        else if (rKey == "lower")
+        {
+            Date aLower(rValue.toInt32());
+            rTarget.SetMin(aLower);
+            rTarget.SetFirst(aLower);
+        }
+        else if (rKey == "value")
+        {
+            Date aValue(rValue.toInt32());
+            rTarget.SetDate(aValue);
+        }
+        else
+        {
+            SAL_INFO("vcl.layout", "unhandled property :" << rKey.getStr());
+        }
+    }
+}
 
 void VclBuilder::mungeAdjustment(ScrollBar &rTarget, const Adjustment &rAdjustment)
 {


More information about the Libreoffice-commits mailing list