AlbumShaper
1.0a3
|
#include <qwidget.h>
#include <qapplication.h>
#include <qstring.h>
#include <qstringlist.h>
#include <qpixmap.h>
#include "guiTools.h"
Go to the source code of this file.
Defines | |
#define | SUBALBUM_TEXT_LENGTH 35 |
#define | PHOTO_TEXT_LENGTH 35 |
Functions | |
void | centerWindow (QWidget *window) |
QString | clipText (QString string, int lines, int lineWidth) |
clip text to fit within numer of lines and max width | |
QString | clipPhotoText (const QString in) |
clip photo text |
#define PHOTO_TEXT_LENGTH 35 |
Definition at line 22 of file guiTools.cpp.
Referenced by clipPhotoText().
#define SUBALBUM_TEXT_LENGTH 35 |
Definition at line 21 of file guiTools.cpp.
void centerWindow | ( | QWidget * | window | ) |
Definition at line 25 of file guiTools.cpp.
Referenced by TitleWidget::aboutProgram(), TitleWidget::albumStatistics(), TitleWidget::help(), main(), and TitleWidget::settings().
{ //--------------------------------------------------------- //get size and location of application window QRect appRec = qApp->mainWidget()->frameGeometry(); QRect windowRec = window->frameGeometry(); //--------------------------------------------------------- //if new window smaller then application window then center window //over application window, otherwise align left/top with application window int x, y; //horizontal alignment if(windowRec.width() < appRec.width()) { x = appRec.x() + ((appRec.width() - windowRec.width())/2); } else { x = appRec.x(); } //vertical alignment if(windowRec.height() < appRec.height()) { y = appRec.y() + ((appRec.height() - windowRec.height())/2); } else { y = appRec.y(); } //--------------------------------------------------------- //ensure window is not off screen, favor top/left sides of window is bigger than screen! QRect screen = QApplication::desktop()->availableGeometry(); //right if(x + windowRec.width() > screen.width() ) x = screen.width() - windowRec.width(); //left if(x < 0) x = 0; //bottom if(y + windowRec.height() > screen.height() ) y = screen.height() - windowRec.height(); //top if(y < 0) y = 0; //--------------------------------------------------------- //place window window->move( QPoint( x, y) ); }
QString clipPhotoText | ( | const QString | in | ) |
clip photo text
Definition at line 151 of file guiTools.cpp.
References PHOTO_TEXT_LENGTH.
{ if(in.length() > PHOTO_TEXT_LENGTH) { QString res = in; res.truncate(PHOTO_TEXT_LENGTH-3); res = res + "..."; return res; } else return in; }
QString clipText | ( | QString | string, |
int | lines, | ||
int | lineWidth | ||
) |
clip text to fit within numer of lines and max width
Definition at line 71 of file guiTools.cpp.
Referenced by SubalbumPreviewWidget::setText(), and PhotoPreviewWidget::setText().
{ if(lineWidth == 0) { // cout << "ERROR: given 0 width when clipping: " << string << endl; return ""; } QString result = ""; QString building = ""; QFontMetrics fm( qApp->font() ); //decrement characters off head of string for each line while(string.length() > 0 && lines > 0) { bool spaceFound = false; QString line = ""; //while there are character to be popped up while(string.length() > 0) { //if we can afford to add this character, add it to the building string //then update the character found, and space found strings if(fm.width( QString(line + building + string.at(0) ) ) < lineWidth ) { building = building + string.at(0); //found a space, add this space and all built up words to the text for this line, no need //to wrap what has been found so far if(string.at(0) == ' ') // QChar::Separator_Space) { line = line + building; building = ""; spaceFound = true; string = string.remove(0, 1); continue; } string = string.remove(0, 1); if(string.length() == 0) { line = line + building; building = ""; } } //uh oh, can't add this character? move to next line else { //if no spaces found up to this point, suck up character so far, we're breaking on this one if(!spaceFound || lines == 1) { if(lines == 1) building = building + string; //if this is the last line then make sure we have enough space for the ... line = line + building; if(fm.width( line ) > lineWidth ) { while( fm.width(line + "...") > lineWidth ) { line.truncate( line.length() - 1); } line = line + "..."; } building = ""; } break; } } //move on to next line result = result + line; line = ""; lines--; } return result; }