~ubuntu-branches/ubuntu/jaunty/kde4libs/jaunty-updates

« back to all changes in this revision

Viewing changes to plasma/widgets/meter.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Harald Sitter
  • Date: 2008-12-11 18:26:08 UTC
  • mfrom: (1.1.24 upstream)
  • Revision ID: james.westby@ubuntu.com-20081211182608-tsu6p8ncbw1gnqxt
Tags: 4:4.1.85-0ubuntu1
* New upstream release
* Patches:
  + Removed 15_kfreebsd_support.diff from patches/series (doesn't apply and
    has no use for Ubuntu)
  + Redid 20_use_dejavu_as_default_font.diff
  + Completely removed kubuntu_09_fix_application_menu.diff (applied upstream)
  + Refreshed kubuntu_54_use_xdg_menu_prefix.diff
  + Dropped plasma/widgets/toolbutton.cpp from kubuntu_qt_ftbfs.diff (applied
    upstream)
  + Global quilt refresh

Show diffs side-by-side

added added

removed removed

Lines of Context:
29
29
 
30
30
#include "plasma/animator.h"
31
31
#include "plasma/framesvg.h"
 
32
#include "plasma/theme.h"
32
33
 
33
34
namespace Plasma {
34
35
 
191
192
    {
192
193
        switch (meterType) {
193
194
            case Meter::BarMeterHorizontal:
194
 
                meter->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
 
195
                meter->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed);
195
196
                break;
196
197
            case Meter::BarMeterVertical:
197
 
                meter->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding);
 
198
                meter->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::MinimumExpanding);
198
199
                break;
199
200
            case Meter::AnalogMeter:
200
201
            default:
201
202
                meter->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
202
203
                break;
203
204
        }
 
205
 
204
206
        if (image) {
205
 
            meter->setPreferredSize(image->size());
 
207
            //set a sane preferredSize. We can't just use the svg's native size, since that way
 
208
            //letters get cut off if the user uses a font larger then usual. Check how many rows of
 
209
            //labels we have, add 1 (the progress bar), and multiply by the font height to get a
 
210
            //somewhat sane size height. This is not perfect but work well enough for 4.2. I suggest
 
211
            //we look into alternatives for 4.3.
 
212
            uint i = 0;
 
213
            uint rows = 0;
 
214
            qreal prevY = -1;
 
215
            QString labelName = "label0";
 
216
            while (image->hasElement(labelName)) {
 
217
                if (image->elementRect(labelName).y() > prevY) {
 
218
                    prevY = image->elementRect(labelName).y();
 
219
                    rows++;
 
220
                }
 
221
                i++;
 
222
                labelName = QString("label%0").arg(i);
 
223
            }
 
224
 
 
225
            Plasma::Theme *theme = Plasma::Theme::defaultTheme();
 
226
            QFont font = theme->font(Plasma::Theme::DefaultFont);
 
227
            QFontMetrics fm(font);
 
228
 
 
229
            meter->setPreferredHeight((rows + 1) * fm.height());
206
230
        } else {
207
231
            meter->setPreferredSize(QSizeF(30, 30));
208
232
        }