1 #include "picture_view.h" 2 #include "ui_picture_view.h" 3 #include "picturewidget.h" 4 #include "ui_picturewidget.h" 5 #include <QGridLayout> 6 #include <QFontDatabase> 7 #include <QDesktopWidget> 8 #include "main_desktop.h" 9 #include "frmmessagebox.h" 10 #include <QStackedLayout> 11 #include <QTextCodec> 12 extern QFileInfo fileInfo_to_show; 13 extern main_desktop *g_pStaticMaindesktop; 14 #if defined(Q_OS_LINUX) 15 extern int is_dir_exist(const char *dir_path); 16 #endif 17 Picture_view(QWidget * parent)18Picture_view::Picture_view(QWidget *parent) : 19 QDialog(parent), 20 ui(new Ui::Picture_view),pic_view(0) 21 { 22 ui->setupUi(this); 23 FormInCenter(); 24 show_title(); 25 current_pic=0; 26 pic_view=new CProjectionPicture(ui->widget); 27 pic_view->setParent(ui->widget); 28 pic_view->resize(ui->widget->size()); 29 ui->widget_2->raise(); 30 ui->widget_2->setWindowFlags(Qt::WindowStaysOnTopHint); 31 pic_view->setWindowFlags(Qt::WindowStaysOnBottomHint); 32 qDebug()<<"the filename will play is"<<fileInfo_to_show.completeBaseName(); 33 current_path=fileInfo_to_show.absolutePath(); 34 qDebug()<<"current path is:"<<current_path; 35 #if defined(Q_OS_LINUX) 36 if(!is_dir_exist((char*)current_path.toStdString().c_str())) 37 { 38 dir.setPath(current_path); 39 file_list=GetFileList(dir); 40 for(int i=0;i<file_list.size();i++) 41 { 42 if(file_list[i]==fileInfo_to_show){ 43 current_pic=i; 44 break; 45 } 46 } 47 }else{ 48 qDebug()<<"path is not exist"; 49 } 50 #else 51 if(current_path==""){ 52 qDebug()<<"the wrong path"; 53 }else{ 54 dir.setPath(current_path); 55 file_list=GetFileList(dir); 56 for(int i=0;i<file_list.size();i++) 57 { 58 if(file_list[i]==fileInfo_to_show){ 59 current_pic=i; 60 break; 61 } 62 } 63 } 64 #endif 65 QDesktopWidget w; 66 int deskWidth = w.width(); 67 int deskHeight = w.height(); 68 QImage pic; 69 pic.load(fileInfo_to_show.absoluteFilePath()); 70 qDebug()<<"show_image---file_name:"<<fileInfo_to_show.completeBaseName(); 71 pic_view->show(); 72 pic_view->setPicture(pic); 73 pic_view->resize(deskWidth,deskHeight-33); 74 QString file_name=fileInfo_to_show.completeBaseName(); 75 QByteArray ba=file_name.toLocal8Bit(); 76 QTextCodec *codec = QTextCodec::codecForName("GBK"); 77 QString str = codec->toUnicode(ba); 78 ui->label->setText(str); 79 qDebug()<<"in pic_view:"<<ui->widget->size(); 80 } 81 ~Picture_view()82Picture_view::~Picture_view() 83 { 84 delete ui; 85 } show_title()86void Picture_view::show_title() 87 { 88 int fontId = QFontDatabase::addApplicationFont(":/font/fontawesome-webfont.ttf"); 89 QString fontName = QFontDatabase::applicationFontFamilies(fontId).at(0); 90 QFont iconFont = QFont(fontName); 91 iconFont.setPointSize(10); 92 ui->btnMenu_Close->setFont(iconFont); 93 ui->btnMenu_Close->setText(QChar(0xf00d)); 94 ui->btnMenu_Max->setFont(iconFont); 95 ui->btnMenu_Max->setText( QChar(0xf096)); 96 ui->btnMenu_Min->setFont(iconFont); 97 ui->btnMenu_Min->setText( QChar(0xf068)); 98 iconFont.setPointSize(12); 99 ui->lab_Ico->setFont(iconFont); 100 ui->lab_Ico->setText( QChar(0xf015)); 101 #if !defined(Q_OS_LINUX) 102 ui->label->setFont(iconFont); 103 ui->nowTimeLabel->setFont(iconFont); 104 #endif 105 } 106 GetFileList(QDir dir)107QFileInfoList Picture_view::GetFileList(QDir dir) 108 { 109 qDebug()<<"get all pic file name"; 110 QStringList filters; 111 filters << "*.bmp"<<"*.jpg"<<"*.jpeg"<<"*.png"<<"*.BMP"; 112 dir.setNameFilters(filters); 113 QFileInfoList file_list=dir.entryInfoList(); 114 for(int i=0;i<file_list.size();i++) 115 { 116 QFileInfo fileInfo=file_list.at(i); 117 fileInfo.absoluteFilePath(); 118 qDebug()<<fileInfo.fileName(); 119 } 120 return file_list; 121 } 122 show_image(QFileInfo fileInfo_to_show)123void Picture_view::show_image(QFileInfo fileInfo_to_show) 124 { 125 printf("-------------------------------open pic ing\n"); 126 QImage pic; 127 pic.load(fileInfo_to_show.absoluteFilePath()); 128 qDebug()<<"show_image---file_name:"<<fileInfo_to_show.completeBaseName(); 129 if(pic.isNull()) 130 { 131 QByteArray ba=fileInfo_to_show.completeBaseName().toLocal8Bit(); 132 QTextCodec *codec = QTextCodec::codecForName("GBK"); 133 QString str = codec->toUnicode(ba); 134 ui->label->setText(""); 135 pic_view->hide(); 136 frmMessageBox *msg=new frmMessageBox(this); 137 msg->SetMessage(QString(tr("this image format can't attach!")),0); 138 QTimer::singleShot(1000, msg, SLOT(close())); 139 msg->exec(); 140 }else{ 141 pic_view->show(); 142 pic_view->setPicture(pic); 143 qDebug()<<"show_image:"<<ui->widget->size(); 144 pic_view->resize(ui->widget->width(),ui->widget->height()); 145 QString file_name=fileInfo_to_show.fileName(); 146 QByteArray ba=file_name.toLocal8Bit(); 147 QTextCodec *codec = QTextCodec::codecForName("GBK"); 148 QString str = codec->toUnicode(ba); 149 ui->label->setText(QString(tr("now play:"))+QString(str)); 150 } 151 } 152 FormInCenter()153void Picture_view::FormInCenter() 154 { 155 QDesktopWidget w; 156 int deskWidth = w.width(); 157 int deskHeight = w.height(); 158 this->resize(deskWidth,deskHeight); 159 } on_btnMenu_Min_clicked()160void Picture_view::on_btnMenu_Min_clicked() 161 { 162 this->close(); 163 g_pStaticMaindesktop->on_main_desktop_visible(); 164 } 165 on_btnMenu_Max_clicked()166void Picture_view::on_btnMenu_Max_clicked() 167 { 168 this->close(); 169 g_pStaticMaindesktop->on_main_desktop_visible(); 170 } 171 on_btnMenu_Close_clicked()172void Picture_view::on_btnMenu_Close_clicked() 173 { 174 this->close(); 175 g_pStaticMaindesktop->on_main_desktop_visible(); 176 } 177 on_prePicButton_clicked()178void Picture_view::on_prePicButton_clicked() 179 { 180 if(current_pic-1>=0) 181 { 182 183 show_image(file_list.at(--current_pic)); 184 }else{ 185 qDebug()<<"no more pic"; 186 return ; 187 } 188 } 189 on_nextPicButton_clicked()190void Picture_view::on_nextPicButton_clicked() 191 { 192 if(current_pic+1<file_list.size()) 193 { 194 show_image(file_list.at(++current_pic)); 195 }else{ 196 qDebug()<<"no more pic"; 197 return ; 198 } 199 } 200 on_largerButton_clicked()201void Picture_view::on_largerButton_clicked() 202 { 203 pic_view->zoomIn(); 204 } 205 on_smallerButton_clicked()206void Picture_view::on_smallerButton_clicked() 207 { 208 pic_view->zoomOut(); 209 } 210