<ui version="4.0" >
 <comment>*********************************************************************
**
** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the Qt Designer of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** GNU Lesser General Public License Usage
** This file may be used under the terms of the GNU Lesser General Public
** License version 2.1 as published by the Free Software Foundation and
** appearing in the file LICENSE.LGPL included in the packaging of this
** file. Please review the following information to ensure the GNU Lesser
** General Public License version 2.1 requirements will be met:
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** In addition, as a special exception, Nokia gives you certain additional
** rights. These rights are described in the Nokia Qt LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU General
** Public License version 3.0 as published by the Free Software Foundation
** and appearing in the file LICENSE.GPL included in the packaging of this
** file. Please review the following information to ensure the GNU General
** Public License version 3.0 requirements will be met:
** http://www.gnu.org/copyleft/gpl.html.
**
** Other Usage
** Alternatively, this file may be used in accordance with the terms and
** conditions contained in a signed written agreement between you and Nokia.
**
**
**
**
**
** $QT_END_LICENSE$
**
*********************************************************************</comment>
 <class>qdesigner_internal::OrderDialog</class>
 <widget class="QDialog" name="qdesigner_internal::OrderDialog" >
  <property name="geometry" >
   <rect>
    <x>0</x>
    <y>0</y>
    <width>467</width>
    <height>310</height>
   </rect>
  </property>
  <property name="windowTitle" >
   <string>Change Page Order</string>
  </property>
  <layout class="QVBoxLayout" >
   <item>
    <widget class="QGroupBox" name="groupBox" >
     <property name="title" >
      <string>Page Order</string>
     </property>
     <layout class="QHBoxLayout" >
      <property name="spacing" >
       <number>6</number>
      </property>
      <property name="leftMargin" >
       <number>9</number>
      </property>
      <property name="topMargin" >
       <number>9</number>
      </property>
      <property name="rightMargin" >
       <number>9</number>
      </property>
      <property name="bottomMargin" >
       <number>9</number>
      </property>
      <item>
       <widget class="QListWidget" name="pageList" >
        <property name="minimumSize" >
         <size>
          <width>344</width>
          <height>0</height>
         </size>
        </property>
        <property name="dragDropMode" >
         <enum>QAbstractItemView::InternalMove</enum>
        </property>
        <property name="selectionMode" >
         <enum>QAbstractItemView::ContiguousSelection</enum>
        </property>
        <property name="movement" >
         <enum>QListView::Snap</enum>
        </property>
       </widget>
      </item>
      <item>
       <layout class="QVBoxLayout" >
        <property name="spacing" >
         <number>6</number>
        </property>
        <property name="leftMargin" >
         <number>0</number>
        </property>
        <property name="topMargin" >
         <number>0</number>
        </property>
        <property name="rightMargin" >
         <number>0</number>
        </property>
        <property name="bottomMargin" >
         <number>0</number>
        </property>
        <item>
         <widget class="QToolButton" name="upButton" >
          <property name="toolTip" >
           <string>Move page up</string>
          </property>
         </widget>
        </item>
        <item>
         <widget class="QToolButton" name="downButton" >
          <property name="toolTip" >
           <string>Move page down</string>
          </property>
         </widget>
        </item>
        <item>
         <spacer>
          <property name="sizePolicy" >
           <sizepolicy vsizetype="Expanding" hsizetype="Fixed" >
            <horstretch>0</horstretch>
            <verstretch>0</verstretch>
           </sizepolicy>
          </property>
          <property name="orientation" >
           <enum>Qt::Vertical</enum>
          </property>
          <property name="sizeHint" stdset="0" >
           <size>
            <width>20</width>
            <height>99</height>
           </size>
          </property>
         </spacer>
        </item>
       </layout>
      </item>
     </layout>
    </widget>
   </item>
   <item>
    <widget class="QDialogButtonBox" name="buttonBox" >
     <property name="orientation" >
      <enum>Qt::Horizontal</enum>
     </property>
     <property name="standardButtons" >
      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok|QDialogButtonBox::Reset</set>
     </property>
    </widget>
   </item>
  </layout>
 </widget>
 <resources/>
 <connections>
  <connection>
   <sender>buttonBox</sender>
   <signal>accepted()</signal>
   <receiver>qdesigner_internal::OrderDialog</receiver>
   <slot>accept()</slot>
   <hints>
    <hint type="sourcelabel" >
     <x>50</x>
     <y>163</y>
    </hint>
    <hint type="destinationlabel" >
     <x>6</x>
     <y>151</y>
    </hint>
   </hints>
  </connection>
  <connection>
   <sender>buttonBox</sender>
   <signal>rejected()</signal>
   <receiver>qdesigner_internal::OrderDialog</receiver>
   <slot>reject()</slot>
   <hints>
    <hint type="sourcelabel" >
     <x>300</x>
     <y>160</y>
    </hint>
    <hint type="destinationlabel" >
     <x>348</x>
     <y>148</y>
    </hint>
   </hints>
  </connection>
 </connections>
</ui>
