Ticket #2204: mythgallery.patch

File mythgallery.patch, 15.4 KB (added by Daniel Sherwood, 14 years ago)
  • mythgallery/mythgallery/glsingleview.cpp

     
    243243
    244244    bool wasInfo = m_info_show;
    245245    m_info_show = false;
     246    bool wasInfoShort = m_info_show_short;
     247    m_info_show_short = false;
    246248
    247249    QStringList actions;
    248250    gContext->GetMainWindow()->TranslateKeyPress("Gallery", e, actions);
     
    250252    float scrollX = 0.02f;
    251253    float scrollY = 0.02f;
    252254
     255    if( actions.size() == 0 ) {
     256        handled = false;
     257        m_info_show = wasInfo;
     258        m_info_show_short = true;
     259        m_slideshow_running = wasRunning;
     260    }
     261
    253262    for (unsigned int i = 0; i < actions.size() && !handled; i++)
    254263    {
    255264        QString action = actions[i];
     
    257266
    258267        if (action == "LEFT" || action == "UP")
    259268        {
     269            m_info_show = wasInfo;
     270            m_slideshow_running = wasRunning;
    260271            DisplayPrev(true, true);
    261272        }
    262273        else if (action == "RIGHT" || action == "DOWN")
    263274        {
     275            m_info_show = wasInfo;
     276            m_slideshow_running = wasRunning;
    264277            DisplayNext(true, true);
    265278        }
    266279        else if (action == "ZOOMOUT")
     
    380393                item->SetPixmap(NULL);
    381394                DisplayNext(true, true);
    382395            }
     396            m_info_show = wasInfo;
     397            m_slideshow_running = wasRunning;
    383398        }
    384399        else if (action == "PLAY" || action == "SLIDESHOW" ||
    385400                 action == "RANDOMSHOW")
     
    387402            m_source_x   = 0;
    388403            m_source_y   = 0;
    389404            SetZoom(1.0f);
     405            m_info_show = wasInfo;
     406            m_info_show_short = true;
    390407            m_slideshow_running = !wasRunning;
    391408        }
    392409        else if (action == "INFO")
    393410        {
    394             m_info_show = !wasInfo;
     411            m_info_show = !wasInfo && !wasInfoShort;
     412            m_slideshow_running = wasRunning;
    395413        }
    396414        else
     415        {
    397416            handled = false;
     417            m_info_show = wasInfo;
     418            m_info_show_short = true;
     419            m_slideshow_running = wasRunning;
     420        }
    398421    }
    399422
     423    if (m_slideshow_running || m_info_show_short)
     424    {
     425        m_slideshow_timer->start(m_slideshow_frame_delay_state, true);
     426    }
    400427    if (m_slideshow_running)
    401428    {
    402         m_slideshow_timer->start(m_slideshow_frame_delay_state, true);
    403429        gContext->DisableScreensaver();
    404430    }
    405431
     432    updateGL();
    406433    if (handled)
    407434    {
    408         updateGL();
    409435        e->accept();
    410436    }
    411437    else {
     
    423449
    424450    m_texItem[m_texCur].MakeQuad();
    425451
    426     if (m_info_show)
     452    if (m_info_show || m_info_show_short)
    427453    {
    428454        createTexInfo();
    429455
     
    11501176            // timed out after showing current image
    11511177            // load next image and start effect
    11521178
    1153             if (m_effect_random)
    1154                 m_effect_method = GetRandomEffect();
     1179            if (m_slideshow_running)
     1180            {
     1181                if (m_effect_random)
     1182                    m_effect_method = GetRandomEffect();
    11551183
    1156             DisplayNext(false, false);
     1184                DisplayNext(false, false);
    11571185
    1158             wasMovie = m_movieState > 0;
    1159             LoadImage();
    1160             isMovie = m_movieState > 0;
    1161             // If transitioning to/from a movie, don't do an effect,
    1162             // and shorten timeout
    1163             if (wasMovie || isMovie)
    1164             {
    1165                 m_slideshow_frame_delay_state = 1;
     1186                wasMovie = m_movieState > 0;
     1187                LoadImage();
     1188                isMovie = m_movieState > 0;
     1189                // If transitioning to/from a movie, don't do an effect,
     1190                // and shorten timeout
     1191                if (wasMovie || isMovie)
     1192                {
     1193                    m_slideshow_frame_delay_state = 1;
     1194                }
     1195                else
     1196                {
     1197                    m_slideshow_frame_delay_state = 10;
     1198                    m_effect_running = true;
     1199                    m_effect_current_frame = 0;
     1200                }
     1201                m_effect_frame_time.restart();
    11661202            }
    1167             else
    1168             {
    1169                 m_slideshow_frame_delay_state = 10;
    1170                 m_effect_running = true;
    1171                 m_effect_current_frame = 0;
    1172             }
    1173             m_effect_frame_time.restart();
     1203            m_info_show_short = false;
    11741204        }
    11751205    }
    11761206
    11771207    updateGL();
    1178     m_slideshow_timer->start(m_slideshow_frame_delay_state, true);
     1208    if (m_slideshow_running)
     1209    {
     1210        m_slideshow_timer->start(m_slideshow_frame_delay_state, true);
    11791211
    1180     // If transitioning to/from a movie, no effect is running so
    1181     // next timeout should trigger proper immage delay.
    1182     if (wasMovie || isMovie)
    1183     {
    1184         m_slideshow_frame_delay_state = -1;
     1212        // If transitioning to/from a movie, no effect is running so
     1213        // next timeout should trigger proper immage delay.
     1214        if (wasMovie || isMovie)
     1215        {
     1216            m_slideshow_frame_delay_state = -1;
     1217        }
    11851218    }
    11861219}
    11871220
     
    11901223    if (m_texInfo)
    11911224        glDeleteTextures(1, &m_texInfo);
    11921225
    1193     QString info = m_texItem[m_texCur].GetDescription();
     1226    QString info = m_texItem[m_texCur].GetDescription(GetDescriptionStatus());
    11941227    if (info.isEmpty())
    11951228        return;
    11961229
  • mythgallery/mythgallery/thumbview.cpp

     
    9090    return GalleryUtil::GetNaturalRotation(m_path);
    9191}
    9292
    93 QString ThumbItem::GetDescription(const QSize &sz, int angle) const
     93QString ThumbItem::GetDescription(const QString status, const QSize &sz, int angle) const
    9494{
    9595    QFileInfo fi(GetPath());
    9696
    9797    QString info = GetName();
     98    info += status;
    9899    info += "\n\n" + QObject::tr("Folder: ") + fi.dir().dirName();
    99100    info += "\n" + QObject::tr("Created: ") + fi.created().toString();
    100101    info += "\n" + QObject::tr("Modified: ") +
  • mythgallery/mythgallery/singleview.cpp

     
    239239                p.end();
    240240            }
    241241
    242             if (m_info_show)
     242            if (m_info_show || m_info_show_short)
    243243            {
    244244                if (!m_info_pixmap)
    245245                {
     
    255255                ThumbItem *item = m_itemList.at(m_pos);
    256256                QString info = QString::null;
    257257                if (item)
    258                     info = item->GetDescription(m_image.size(), m_angle);
     258                    info = item->GetDescription(GetDescriptionStatus(), m_image.size(), m_angle);
    259259
    260260                if (!info.isEmpty())
    261261                {
     
    292292
    293293    bool wasInfo = m_info_show;
    294294    m_info_show = false;
     295    bool wasInfoShort = m_info_show_short;
     296    m_info_show_short = false;
    295297   
    296298    QStringList actions;
    297299    gContext->GetMainWindow()->TranslateKeyPress("Gallery", e, actions);
     
    299301    int scrollX = (int)(10*wmult);
    300302    int scrollY = (int)(10*hmult);
    301303   
     304    if( actions.size() == 0 ) {
     305        handled = false;
     306        m_info_show = wasInfo;
     307        m_info_show_short = true;
     308        m_slideshow_running = wasRunning;
     309    }
     310
    302311    for (unsigned int i = 0; i < actions.size() && !handled; i++)
    303312    {
    304313        QString action = actions[i];
     
    306315
    307316        if (action == "LEFT" || action == "UP")
    308317        {
     318            m_info_show = wasInfo;
     319            m_slideshow_running = wasRunning;
    309320            DisplayPrev(true, true);
    310321        }
    311322        else if (action == "RIGHT" || action == "DOWN")
    312323        {
     324            m_info_show = wasInfo;
     325            m_slideshow_running = wasRunning;
    313326            DisplayNext(true, true);
    314327        }
    315328        else if (action == "ZOOMOUT")
     
    431444                item->SetPixmap(NULL);
    432445                DisplayNext(true, true);
    433446            }
     447            m_info_show = wasInfo;
     448            m_slideshow_running = wasRunning;
    434449        }
    435450        else if (action == "PLAY" || action == "SLIDESHOW" ||
    436451                 action == "RANDOMSHOW")
     
    438453            m_source_loc = QPoint(0, 0);
    439454            m_zoom = 1.0f;
    440455            m_angle = 0;
     456            m_info_show = wasInfo;
     457            m_info_show_short = true;
    441458            m_slideshow_running = !wasRunning;
    442459        }
    443460        else if (action == "INFO")
    444461        {
    445             m_info_show = !wasInfo;
     462            m_info_show = !wasInfo && !wasInfoShort;
     463            m_slideshow_running = wasRunning;
    446464        }
    447465        else
     466        {
    448467            handled = false;
     468            m_info_show = wasInfo;
     469            m_info_show_short = true;
     470            m_slideshow_running = wasRunning;
     471        }
    449472    }
    450473
     474    if (m_slideshow_running || m_info_show_short)
     475    {
     476        m_slideshow_timer->start(m_slideshow_frame_delay_state, true);
     477    }
    451478    if (m_slideshow_running)
    452479    {
    453         m_slideshow_timer->start(m_slideshow_frame_delay_state, true);
    454480        gContext->DisableScreensaver();
    455481    }
    456482
     483    update();
    457484    if (handled)
    458485    {
    459         update();
    460486    }
    461487    else
    462488    {
     
    13151341        {
    13161342            // timed out after showing current image
    13171343            // load next image and start effect
    1318             if (m_effect_random)
    1319                 m_effect_method = GetRandomEffect();
     1344            if (m_slideshow_running)
     1345            {
     1346                if (m_effect_random)
     1347                    m_effect_method = GetRandomEffect();
    13201348
    1321             DisplayNext(false, false);
     1349                DisplayNext(false, false);
    13221350
    1323             wasMovie = m_movieState > 0;
    1324             LoadImage();
    1325             isMovie = m_movieState > 0;
    1326             // If transitioning to/from a movie, don't do an effect,
    1327             // and shorten timeout
    1328             if (wasMovie || isMovie)
    1329             {
    1330                 m_slideshow_frame_delay_state = 1;
    1331             }
    1332             else
    1333             {
    1334                 CreateEffectPixmap();
    1335                 m_effect_running = true;
    1336                 m_slideshow_frame_delay_state = 10;
    1337                 m_effect_current_frame = 0;
    1338             }
    1339         }   
     1351                wasMovie = m_movieState > 0;
     1352                LoadImage();
     1353                isMovie = m_movieState > 0;
     1354                // If transitioning to/from a movie, don't do an effect,
     1355                // and shorten timeout
     1356                if (wasMovie || isMovie)
     1357                {
     1358                    m_slideshow_frame_delay_state = 1;
     1359                }
     1360                else
     1361                {
     1362                    CreateEffectPixmap();
     1363                    m_effect_running = true;
     1364                    m_slideshow_frame_delay_state = 10;
     1365                    m_effect_current_frame = 0;
     1366                }
     1367            }   
     1368            m_info_show_short = false;
     1369        }
    13401370    }
    13411371
    13421372    update();
    1343     m_slideshow_timer->start(m_slideshow_frame_delay_state, true);
     1373    if (m_slideshow_running)
     1374    {
     1375        m_slideshow_timer->start(m_slideshow_frame_delay_state, true);
    13441376
    1345     // If transitioning to/from a movie, no effect is running so
    1346     // next timeout should trigger proper immage delay.
    1347     if (wasMovie || isMovie)
    1348     {
    1349         m_slideshow_frame_delay_state = -1;
     1377        // If transitioning to/from a movie, no effect is running so
     1378        // next timeout should trigger proper immage delay.
     1379        if (wasMovie || isMovie)
     1380        {
     1381            m_slideshow_frame_delay_state = -1;
     1382        }
    13501383    }
    13511384}
    13521385
  • mythgallery/mythgallery/imageview.cpp

     
    4141
    4242      // Info variables
    4343      m_info_show(false),
     44      m_info_show_short(false),
    4445
    4546      // Common slideshow variables
    4647      m_slideshow_running(false),
     
    108109    if (slideShow > 1)
    109110    {
    110111        m_slideshow_sequence = new SequenceShuffle(m_itemList.count());
     112        m_slideshow_mode = "Random Slideshow";
    111113        m_pos = 0;
    112114    }
    113115    else
    114116    {
    115117        m_slideshow_sequence = new SequenceInc(m_itemList.count());
     118        m_slideshow_mode = "Slideshow";
    116119    }
    117120
    118121    m_pos = m_slideshow_sequence->index(m_pos);
     
    163166
    164167    lcd->switchToGeneric(&textItems);
    165168}
     169
     170const QString ImageView::GetDescriptionStatus(void)
     171{
     172    QString info;
     173
     174    if( m_slideshow_running ) {
     175            info = " [" + QObject::tr(m_slideshow_mode) + "]";
     176    } else {
     177            info = " [" + QObject::tr("Paused") + "]";
     178    }
     179
     180    return info;
     181}
  • mythgallery/mythgallery/thumbview.h

     
    4949    QString GetCaption(void) const { return m_caption;            }
    5050    QString GetPath(void)    const { return m_path;               }
    5151    bool    IsDir(void)      const { return m_isDir;              }
    52     QString GetDescription(const QSize &sz, int angle) const;
     52    QString GetDescription(const QString status, const QSize &sz, int angle) const;
    5353
    5454    // non-const gets
    5555    QPixmap         *GetPixmap(void)      { return m_pixmap;      }
  • mythgallery/mythgallery/imageview.h

     
    5858    virtual void RunEffect(const QString &effect) = 0;
    5959
    6060    void UpdateLCD(const ThumbItem *item);
     61    const QString GetDescriptionStatus(void);
    6162  protected:
    6263    QSize                  m_screenSize;
    6364    float                  m_wmult;
     
    6869    float                  m_zoom;
    6970
    7071    bool                   m_info_show;
     72    bool                   m_info_show_short;
    7173
    7274    // Common slideshow variables
    7375    bool                   m_slideshow_running;
     
    7779    int                    m_slideshow_frame_delay;
    7880    int                    m_slideshow_frame_delay_state;
    7981    QTimer                *m_slideshow_timer;
     82    const char            *m_slideshow_mode;
    8083
    8184    // Common effect state variables
    8285    bool                   m_effect_running;
  • mythgallery/mythgallery/gltexture.cpp

     
    104104    }
    105105}
    106106
    107 QString GLTexture::GetDescription(void) const
     107QString GLTexture::GetDescription(const QString status) const
    108108{
    109109    if (item)
    110         return item->GetDescription(GetSize(), angle);
     110        return item->GetDescription(status, GetSize(), angle);
    111111
    112112    return QString::null;
    113113}
  • mythgallery/mythgallery/gltexture.h

     
    5959    float   GetTextureX(void)    const { return cx; }
    6060    float   GetTextureY(void)    const { return cy; }
    6161    int     GetAngle(void)       const { return angle; }
    62     QString GetDescription(void) const;
     62    QString GetDescription(const QString status) const;
    6363
    6464  private:
    6565    GLuint     tex;