summaryrefslogtreecommitdiffstats
path: root/pictureviewer2.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'pictureviewer2.cpp')
-rw-r--r--pictureviewer2.cpp79
1 files changed, 68 insertions, 11 deletions
diff --git a/pictureviewer2.cpp b/pictureviewer2.cpp
index 1251c6f..cc7357f 100644
--- a/pictureviewer2.cpp
+++ b/pictureviewer2.cpp
@@ -41,7 +41,7 @@
const QString PictureViewer2::mDefaultFile = ":/picgone.png";
-PictureViewer2::PictureViewer2(QWidget *parent) : QGraphicsView(parent), mCur(0), mCurPos(0), mFnItem(0), mMappingItem(0), mShowInfoItem(true), mShowMappingItem(true) {
+PictureViewer2::PictureViewer2(QWidget *parent) : QGraphicsView(parent), mCur(0), mCurPos(0), mFnItem(0), mMappingItem(0), mShowInfoItem(true), mShowMappingItem(true), mShowMarkItem(false) {
//behave like QDialog, but don't be one...
setWindowFlags(QFlags<Qt::WindowType>(0x1|0x2|0x1000|0x2000|0x10000|0x8000000));
setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
@@ -81,7 +81,6 @@ void PictureViewer2::addFiles(const PicDataList &files, bool clear){
QVariant curMd5 = mFiles.at(mCurPos).at(PicFilesModel::Md5Sum);
if(clear){
mFiles = files;
-
}else{
foreach(const PicData &f, files){
if(!mFiles.contains(f)){
@@ -103,6 +102,17 @@ void PictureViewer2::addFiles(const PicDataList &files, bool clear){
}
}
+void PictureViewer2::addFiles(const QStringList &files, bool clear){
+ if(files.isEmpty()){
+ return;
+ }
+ PicDataList pd;
+ foreach(QString f, files){
+ pd << picData(f);
+ }
+ addFiles(pd, clear);
+}
+
void PictureViewer2::addFiles(const QString &dir, bool clear){
QFileInfo fi(dir);
if(!fi.isDir()){
@@ -165,6 +175,7 @@ void PictureViewer2::next(){
}else{
++mCurPos;
}
+ mMarkA->setChecked(mMarkedFiles.contains(mFiles.at(mCurPos)));
showFile(mFiles.at(mCurPos));
}
@@ -174,6 +185,7 @@ void PictureViewer2::previous(){
}else{
--mCurPos;
}
+ mMarkA->setChecked(mMarkedFiles.contains(mFiles.at(mCurPos)));
showFile(mFiles.at(mCurPos));
}
@@ -238,6 +250,9 @@ void PictureViewer2::initActions(){
if(a->data().toInt() == SlideAction){
mSlideA = a;
}
+ if(a->data().toInt() == MarkAction){
+ mMarkA = a;
+ }
}
}
@@ -267,6 +282,23 @@ void PictureViewer2::addToNewPics(){
mNewPicsDlg->setFile(mCurPicData.at(PicFilesModel::FullPath).toString());
}
+void PictureViewer2::markCurrent(){
+ if(!mMarkedFiles.contains(mCurPicData)){
+ mMarkedFiles << mCurPicData;
+ mMarkA->setChecked(true);
+ next();
+ }else{
+ mMarkedFiles.removeAll(mCurPicData);
+ mMarkA->setChecked(false);
+ }
+ constructInfoItem(mCurPicData, QSize());
+}
+
+void PictureViewer2::clearMarks(){
+ mMarkedFiles.clear();
+ constructInfoItem(mCurPicData, QSize());
+}
+
void PictureViewer2::wheelEvent(QWheelEvent *event){
int steps = event->delta() / 8 / 15;
if(steps < 0){
@@ -291,6 +323,15 @@ void PictureViewer2::keyPressEvent(QKeyEvent *e){
if(e->key() == Qt::Key_Space){
mSlideA->toggle();
}
+ if(e->key() == Qt::Key_M){
+ markCurrent();
+ }
+ if(e->key() == Qt::Key_N){
+ next();
+ }
+ if(e->key() == Qt::Key_P){
+ previous();
+ }
e->accept();
}
@@ -361,7 +402,18 @@ void PictureViewer2::constructInfoItem(const PicData &data, QSize picSize){
mScene->removeItem(mFnItem);
delete mFnItem;
}
+ if(!picSize.isValid()){
+ QPixmap pm = QPixmap(data.at(PicFilesModel::FullPath).toString());
+ picSize = pm.size();
+ }
mFnItem = new PictureViewer2Item(data, mFiles.size(), picSize);
+ if(mShowMarkItem){
+ if(mMarkedFiles.contains(data)){
+ mFnItem->appendText("<span style=\"color:green\">marked</span>");
+ }else{
+ mFnItem->appendText("<span style=\"color:red\">not marked</span>");
+ }
+ }
mFnItem->setPos(getPos(mFnItem, mConfigInfoPos, mInfoPos));
mScene->addItem(mFnItem);
}
@@ -468,14 +520,13 @@ PictureViewer2Item::PictureViewer2Item(const PicData &data, const int numSelecte
QStringList textList;
//prevent QStaticText from wrapping filesnames with spaces
//we shouldn't allow this in the first place
- textList << data.at(PicFilesModel::FileName).toString().replace(' ', '_');
- textList << QString("%1x%2").arg(QString::number(picSize.width())).arg(QString::number(picSize.height()));
+ mTextList << data.at(PicFilesModel::FileName).toString().replace(' ', '_');
+ mTextList << QString("%1x%2").arg(QString::number(picSize.width())).arg(QString::number(picSize.height()));
QLocale l;
- textList << QString(QObject::tr("%1 bytes")).arg(l.toString(data.at(PicFilesModel::Size).toInt()));
- textList << l.toString(data.at(PicFilesModel::Added).toDate());
- textList << data.at(PicFilesModel::MimeType).toString();
- textList << QString(QObject::tr("%1 files selected")).arg(QString::number(numSelected));
- mText = QStaticText(textList.join("<br/>"));
+ mTextList << QString(QObject::tr("%1 bytes")).arg(l.toString(data.at(PicFilesModel::Size).toInt()));
+ mTextList << l.toString(data.at(PicFilesModel::Added).toDate());
+ mTextList << data.at(PicFilesModel::MimeType).toString();
+ mTextList << QString(QObject::tr("%1 files selected")).arg(QString::number(numSelected));
setZValue(1);
}
@@ -492,7 +543,8 @@ QRectF PictureViewer2Item::boundingRect() const {
if(mDoc){
size = mDoc->size();
}else{
- size = mText.size();
+ QStaticText text = QStaticText(mTextList.join("<br/>"));
+ size = text.size();
size += QSize(10, 10);
}
QRectF retval;
@@ -501,6 +553,10 @@ QRectF PictureViewer2Item::boundingRect() const {
return retval;
}
+void PictureViewer2Item::appendText(const QString &text){
+ mTextList << text;
+}
+
void PictureViewer2Item::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget){
Q_UNUSED(option);
Q_UNUSED(widget);
@@ -518,7 +574,8 @@ void PictureViewer2Item::paint(QPainter *painter, const QStyleOptionGraphicsItem
if(mDoc){
mDoc->drawContents(painter);
}else{
- painter->drawStaticText(5, 5, mText);
+ QStaticText text = QStaticText(mTextList.join("<br/>"));
+ painter->drawStaticText(5, 5, text);
}
painter->restore();
}